From 4bb7f03ec1b636fdacd16d5ff050f7ca8493ff23 Mon Sep 17 00:00:00 2001 From: Raphael Martin Date: Mon, 4 Dec 2023 16:44:09 +0100 Subject: [PATCH] inital commit --- LICENSE | 9 + README.md | 247 ++++++ data/countries.geojson | 184 +++++ data/fells_loop.gpx | 1077 +++++++++++++++++++++++++ data/geojson/photovoltaic.json | 343 ++++++++ data/geojson/travel.json | 3 + data/icons/frog.svg | 172 ++++ data/icons/logo-slim.svg | 177 ++++ data/icons/markerSolid.svg | 139 ++++ data/layerConfig.json | 219 +++++ dist/assets/index.2f260c05.css | 1 + dist/assets/index.4e9346ea.js | 10 + dist/assets/index.4e9346ea.js.map | 1 + dist/index.html | 134 +++ index.html | 132 +++ main.js | 1021 +++++++++++++++++++++++ package-lock.json | 1256 +++++++++++++++++++++++++++++ package.json | 15 + resources/external-map-map.html | 30 + style.css | 92 +++ vite.config.js | 5 + 21 files changed, 5267 insertions(+) create mode 100755 LICENSE create mode 100755 README.md create mode 100755 data/countries.geojson create mode 100755 data/fells_loop.gpx create mode 100755 data/geojson/photovoltaic.json create mode 100755 data/geojson/travel.json create mode 100755 data/icons/frog.svg create mode 100755 data/icons/logo-slim.svg create mode 100755 data/icons/markerSolid.svg create mode 100755 data/layerConfig.json create mode 100755 dist/assets/index.2f260c05.css create mode 100755 dist/assets/index.4e9346ea.js create mode 100755 dist/assets/index.4e9346ea.js.map create mode 100755 dist/index.html create mode 100755 index.html create mode 100755 main.js create mode 100755 package-lock.json create mode 100755 package.json create mode 100755 resources/external-map-map.html create mode 100755 style.css create mode 100755 vite.config.js diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..2071b23 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100755 index 0000000..206b540 --- /dev/null +++ b/README.md @@ -0,0 +1,247 @@ +# a2g_openlayers +## build withOpenLayers + Vite + +This package uses the `ol` packages with [Vite](https://vitejs.dev/). + +(requires Node 12+) + +To get started change into your `a2g_openlayers` directory and start a development server (available at http://localhost:3000): + + cd a2g_openlayers + npm start + +To generate a build ready for production: + + npm run build + +Then deploy the contents of the `dist` directory to your server. You can also run `npm run serve` to serve the results of the `dist` directory for preview. + +## suportet map layers + data-map-layers = ' + [ + { + "layer": "stamen", + "config": { + "layer": "terrain" + }, + "label": "stamen terrain (free)", + "active": false + }, + { + "layer": "stamen", + "config": { + "layer": "watercolor" + }, + "label": "stamen watercolor (free)", + "active": true + }, + { + "layer": "osm", + "config":[], + "label": "osm (free)", + "active": true + }, + { + "layer": "stamen", + "config": { + "layer": "toner" + }, + "label": "stamen toner (free)", + "active": false + }, + + { + "layer": "thunderforest", + "config": { + "layer": "cycle" + }, + "label": "thunderforest openCycleMap (cycle)", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "transport" + }, + "label": "thunderforest transport", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "landscape" + }, + "label": "thunderforest landscape", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "outdoors" + }, + "label": "thunderforest outdoors", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "atlas" + }, + "label": "thunderforest atlas", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "transport-dark" + }, + "label": "thunderforest transport-dark", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "spinal-map" + }, + "label": "thunderforest spinal-map", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "pioneer" + }, + "label": "thunderforest pioneer", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "neighbourhood" + }, + "label": "thunderforest neighbourhood", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "mobile-atlas" + }, + "label": "thunderforest mobile-atlas", + "active": false + }, + + { + "layer": "maptiler", + "config": { + "layer": "basic" + }, + "label": "maptiler basic", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "basic-4326" + }, + "label": "maptiler basic (EPSG:4326)", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "bright" + }, + "label": "maptiler bright", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "openstreetmap" + }, + "label": "maptiler openstreetmap", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "bright" + }, + "label": "maptiler bright", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "outdoor" + }, + "label": "maptiler outdoor", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "pastel" + }, + "label": "maptiler pastel", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "hybrid" + }, + "label": "maptiler satelite hybrid", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "streets" + }, + "label": "maptiler streets", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "toner" + }, + "label": "maptiler toner", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "topo" + }, + "label": "maptiler topo", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "topographique" + }, + "label": "maptiler topographique", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "voyager" + }, + "label": "maptiler voyager", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "winter" + }, + "label": "maptiler winter", + "active": false + } + ] + ' \ No newline at end of file diff --git a/data/countries.geojson b/data/countries.geojson new file mode 100755 index 0000000..ecaeec8 --- /dev/null +++ b/data/countries.geojson @@ -0,0 +1,184 @@ +{ +"type": "FeatureCollection", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, + +"features": [ +{ "type": "Feature", "properties": { "name": "Afghanistan", "iso_a2": "AF" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 61.210817091725744, 35.650072333309225 ], [ 62.230651483005886, 35.270663967422294 ], [ 62.98466230657661, 35.404040839167621 ], [ 63.193538445900352, 35.857165635718914 ], [ 63.98289594915871, 36.007957465146603 ], [ 64.546479119733903, 36.312073269184268 ], [ 64.746105177677407, 37.111817735333304 ], [ 65.588947788357842, 37.305216783185642 ], [ 65.745630731066825, 37.661164048812068 ], [ 66.217384881459338, 37.39379018813392 ], [ 66.51860680528867, 37.362784328758792 ], [ 67.075782098259623, 37.356143907209287 ], [ 67.829999627559516, 37.144994004864685 ], [ 68.135562371701383, 37.023115139304309 ], [ 68.859445835245936, 37.344335842430596 ], [ 69.196272820924378, 37.151143500307427 ], [ 69.518785434857961, 37.60899669041342 ], [ 70.116578403610333, 37.588222764632093 ], [ 70.270574171840138, 37.735164699854025 ], [ 70.376304152309302, 38.138395901027522 ], [ 70.806820509732887, 38.486281643216415 ], [ 71.348131137990265, 38.258905341132163 ], [ 71.239403924448169, 37.953265082341886 ], [ 71.541917759084782, 37.905774441065645 ], [ 71.448693475230243, 37.06564484308052 ], [ 71.844638299450594, 36.738171291646921 ], [ 72.193040805962397, 36.948287665345674 ], [ 72.636889682917285, 37.047558091778356 ], [ 73.260055779925011, 37.495256862939002 ], [ 73.9486959166465, 37.4215662704908 ], [ 74.980002475895418, 37.419990139305895 ], [ 75.158027785140916, 37.133030910789117 ], [ 74.575892775372978, 37.020841376283457 ], [ 74.067551710917826, 36.836175645488453 ], [ 72.920024855444467, 36.720007025696319 ], [ 71.846291945283923, 36.509942328429858 ], [ 71.26234826038575, 36.074387518857804 ], [ 71.498767938121091, 35.650563259416003 ], [ 71.613076206350712, 35.153203436822864 ], [ 71.115018751921639, 34.733125718722235 ], [ 71.156773309213463, 34.348911444632151 ], [ 70.881803012988399, 33.98885590263852 ], [ 69.930543247359594, 34.02012014417511 ], [ 70.323594191371598, 33.358532619758392 ], [ 69.687147251264861, 33.105498969041236 ], [ 69.262522007122556, 32.5019440780883 ], [ 69.317764113242561, 31.901412258424443 ], [ 68.926676873657669, 31.620189113892067 ], [ 68.556932000609322, 31.713310044882018 ], [ 67.792689243444784, 31.582930406209631 ], [ 67.683393589147471, 31.303154201781421 ], [ 66.938891229118468, 31.304911200479353 ], [ 66.381457553986024, 30.738899237586452 ], [ 66.346472609324422, 29.887943427036177 ], [ 65.046862013616106, 29.472180691031905 ], [ 64.350418735618518, 29.560030625928093 ], [ 64.148002150331251, 29.340819200145972 ], [ 63.550260858011171, 29.468330796826166 ], [ 62.549856805272782, 29.318572496044311 ], [ 60.874248488208792, 29.829238999952608 ], [ 61.781221551363444, 30.735850328081238 ], [ 61.699314406180832, 31.379506130492672 ], [ 60.941944614511129, 31.548074652628753 ], [ 60.863654819588966, 32.182919623334428 ], [ 60.536077915290775, 32.981268825811568 ], [ 60.963700392506006, 33.528832302376259 ], [ 60.528429803311582, 33.676446031218006 ], [ 60.803193393807447, 34.404101874319863 ], [ 61.210817091725744, 35.650072333309225 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Angola", "iso_a2": "AO" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 16.326528354567046, -5.877470391466218 ], [ 16.573179965896145, -6.622644545115094 ], [ 16.86019087084523, -7.222297865429979 ], [ 17.089995965247169, -7.545688978712477 ], [ 17.472970004962292, -8.068551120641658 ], [ 18.134221632569052, -7.987677504104866 ], [ 18.464175652752687, -7.847014255406478 ], [ 19.016751743249671, -7.98824594486014 ], [ 19.166613396896082, -7.738183688999726 ], [ 19.417502475673217, -7.155428562044278 ], [ 20.037723016040218, -7.11636117923166 ], [ 20.09162153492062, -6.943090101756951 ], [ 20.601822950938327, -6.939317722199689 ], [ 20.51474816252653, -7.299605808138665 ], [ 21.728110792739756, -7.290872491081316 ], [ 21.746455926203367, -7.920084730667114 ], [ 21.94913089365204, -8.305900974158305 ], [ 21.801801385187957, -8.908706556842986 ], [ 21.875181919042404, -9.523707777548566 ], [ 22.208753289486424, -9.89479623783653 ], [ 22.155268182064333, -11.084801120653779 ], [ 22.402798292742432, -10.993075453335692 ], [ 22.837345411884769, -11.017621758674338 ], [ 23.456790805767469, -10.867863457892483 ], [ 23.912215203555746, -10.926826267137542 ], [ 24.017893507592618, -11.237298272347118 ], [ 23.904153680118242, -11.722281589406336 ], [ 24.079905226342902, -12.191296888887308 ], [ 23.930922072045377, -12.565847670138822 ], [ 24.016136508894704, -12.911046237848552 ], [ 21.933886346125945, -12.898437188369357 ], [ 21.887842644953878, -16.080310153876894 ], [ 22.56247846852429, -16.898451429921835 ], [ 23.215048455506093, -17.523116143465955 ], [ 21.377176141045595, -17.93063648851971 ], [ 18.956186964603631, -17.789094740472237 ], [ 18.263309360434221, -17.309950860262006 ], [ 14.209706658595053, -17.353100681225712 ], [ 14.058501417709039, -17.423380629142656 ], [ 13.462362094789967, -16.971211846588744 ], [ 12.814081251688407, -16.941342868724078 ], [ 12.215461460019384, -17.111668389558062 ], [ 11.73419884608515, -17.301889336824502 ], [ 11.640096062881611, -16.673142185129208 ], [ 11.778537224991567, -15.793816013250691 ], [ 12.123580763404448, -14.878316338767931 ], [ 12.175618930722266, -14.449143568583892 ], [ 12.500095249083017, -13.547699883684402 ], [ 12.738478631245442, -13.137905775609937 ], [ 13.312913852601838, -12.483630466362513 ], [ 13.633721144269828, -12.038644707897191 ], [ 13.738727654686926, -11.297863050993143 ], [ 13.686379428775297, -10.731075941615842 ], [ 13.387327915102162, -10.373578383020728 ], [ 13.120987583069876, -9.766897067914115 ], [ 12.875369500386569, -9.166933689005489 ], [ 12.929061313537801, -8.959091078327575 ], [ 13.236432732809874, -8.562629489784342 ], [ 12.933040398824318, -7.596538588087753 ], [ 12.72829837408392, -6.927122084178805 ], [ 12.227347039446443, -6.294447523629373 ], [ 12.322431674863566, -6.100092461779653 ], [ 12.735171339578699, -5.965682061388478 ], [ 13.02486941900699, -5.984388929878108 ], [ 13.375597364971895, -5.864241224799557 ], [ 16.326528354567046, -5.877470391466218 ] ] ], [ [ [ 12.436688266660923, -5.684303887559224 ], [ 12.182336866920281, -5.789930515163803 ], [ 11.914963006242118, -5.037986748884734 ], [ 12.318607618873926, -4.606230157086159 ], [ 12.62075971848455, -4.438023369976122 ], [ 12.995517205465205, -4.781103203961919 ], [ 12.631611769265845, -4.991271254092936 ], [ 12.468004184629763, -5.248361504744992 ], [ 12.436688266660923, -5.684303887559224 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Albania", "iso_a2": "AL" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 20.59024743010491, 41.855404161133606 ], [ 20.463175083099202, 41.51508901627534 ], [ 20.605181919037364, 41.086226304685226 ], [ 21.020040317476401, 40.84272695572588 ], [ 20.999989861747224, 40.580003973953978 ], [ 20.674996779063633, 40.434999904943027 ], [ 20.615000441172754, 40.110006822259379 ], [ 20.15001590341052, 39.624997666983973 ], [ 19.980000441170148, 39.694993394523408 ], [ 19.960001661873207, 39.915005805006047 ], [ 19.406081984136733, 40.250773423822466 ], [ 19.319058872157143, 40.727230129553561 ], [ 19.403549838954291, 41.409565741535459 ], [ 19.540027296637106, 41.719986070312757 ], [ 19.371768833094961, 41.877547512370654 ], [ 19.304486118250793, 42.19574514420782 ], [ 19.738051385179631, 42.688247382165571 ], [ 19.801613396898688, 42.500093492190842 ], [ 20.0707, 42.58863 ], [ 20.283754510181893, 42.320259507815081 ], [ 20.52295, 42.21787 ], [ 20.59024743010491, 41.855404161133606 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "United Arab Emirates", "iso_a2": "AE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 51.579518670463273, 24.245497137951105 ], [ 51.757440626844186, 24.294072984305469 ], [ 51.794389275932872, 24.019826158132506 ], [ 52.577080519425607, 24.177439276622707 ], [ 53.404006788960146, 24.15131684009917 ], [ 54.008000929587581, 24.121757920828216 ], [ 54.693023716048629, 24.797892360935091 ], [ 55.43902469261414, 25.439145209244941 ], [ 56.070820753814559, 26.055464178973981 ], [ 56.261041701080956, 25.714606431576769 ], [ 56.396847365144005, 24.924732163995486 ], [ 55.886232537668008, 24.920830593357447 ], [ 55.804118686756226, 24.269604193615265 ], [ 55.981213820220461, 24.130542914317829 ], [ 55.528631626208238, 23.933604030853502 ], [ 55.525841098864475, 23.524869289640932 ], [ 55.234489373602884, 23.110992743415324 ], [ 55.208341098863194, 22.708329982997046 ], [ 55.006803012924905, 22.496947536707136 ], [ 52.000733270074335, 23.00115448657894 ], [ 51.617707553926977, 24.014219265228832 ], [ 51.579518670463273, 24.245497137951105 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Argentina", "iso_a2": "AR" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -65.5, -55.2 ], [ -66.45, -55.25 ], [ -66.95992, -54.89681 ], [ -67.56244, -54.87001 ], [ -68.63335, -54.8695 ], [ -68.634010227583161, -52.63637045887446 ], [ -68.25, -53.1 ], [ -67.75, -53.85 ], [ -66.45, -54.45 ], [ -65.05, -54.7 ], [ -65.5, -55.2 ] ] ], [ [ [ -64.964892137294584, -22.075861504812352 ], [ -64.377021043542271, -22.798091322523547 ], [ -63.986838141522469, -21.993644301035957 ], [ -62.846468471921554, -22.034985446869456 ], [ -62.6850571356579, -22.249029229422405 ], [ -60.84656470400995, -23.880712579038303 ], [ -60.028966030503994, -24.032796319273245 ], [ -58.807128465394953, -24.771459242453275 ], [ -57.777217169817959, -25.16233977630904 ], [ -57.633660040911138, -25.60365650808167 ], [ -58.618173590719721, -27.123718763947124 ], [ -57.609759690976148, -27.395898532828426 ], [ -56.486701626192996, -27.54849903738625 ], [ -55.6958455063982, -27.387837009390822 ], [ -54.788794928595053, -26.621785577096091 ], [ -54.625290696823555, -25.739255466415486 ], [ -54.130049607954419, -25.54763925547725 ], [ -53.62834896504873, -26.124865004177437 ], [ -53.648735317587892, -26.923472588816111 ], [ -54.490725267135531, -27.47475676850577 ], [ -55.162286342984601, -27.881915378533421 ], [ -56.290899624239103, -28.852760512000856 ], [ -57.625133429582917, -30.216294854454247 ], [ -57.874937303281911, -31.016556084926165 ], [ -58.142440355040748, -32.044503676076189 ], [ -58.132647671121418, -33.040566908502015 ], [ -58.349611172098832, -33.263188978815435 ], [ -58.427074144104381, -33.909454441057548 ], [ -58.495442064026548, -34.431489760070107 ], [ -57.225829637263644, -35.288026625307893 ], [ -57.362358771378751, -35.977390232081504 ], [ -56.737487352105461, -36.413125909166581 ], [ -56.788285285048346, -36.901571547189334 ], [ -57.749156867083428, -38.183870538079915 ], [ -59.231857062401872, -38.720220228837206 ], [ -61.237445237865614, -38.928424574541154 ], [ -62.335956997310149, -38.827707208004369 ], [ -62.125763108962929, -39.424104913084875 ], [ -62.330530971919444, -40.172586358400324 ], [ -62.145994432205242, -40.676896661136738 ], [ -62.745802781816991, -41.028761488612091 ], [ -63.770494757732536, -41.166789239263665 ], [ -64.732089809819712, -40.802677097335135 ], [ -65.118035244391592, -41.064314874028881 ], [ -64.978560553635845, -42.058000990569326 ], [ -64.30340796574248, -42.359016208669502 ], [ -63.75594784204236, -42.043686618824509 ], [ -63.45805904809589, -42.563138116222362 ], [ -64.378803880456303, -42.873558444999645 ], [ -65.181803961839705, -43.495380954767796 ], [ -65.328823411710147, -44.501366062193696 ], [ -65.565268927661606, -45.036785577169795 ], [ -66.509965786389358, -45.03962778094585 ], [ -67.293793911392441, -45.551896254255198 ], [ -67.580546434180093, -46.301772963242541 ], [ -66.597066413017274, -47.033924655953811 ], [ -65.641026577401448, -47.236134535511894 ], [ -65.985088263600744, -48.133289076531142 ], [ -67.166178961847663, -48.697337334996945 ], [ -67.816087612566463, -49.869668877970419 ], [ -68.728745083273168, -50.264218438518867 ], [ -69.138539191347803, -50.732510267947802 ], [ -68.815561489523532, -51.771104011594105 ], [ -68.149994879820412, -52.349983406127706 ], [ -68.571545376241346, -52.299443855346262 ], [ -69.49836218939609, -52.14276091263725 ], [ -71.914803839796349, -52.009022305865926 ], [ -72.329403856074038, -51.425956312872408 ], [ -72.30997351753237, -50.677009779666356 ], [ -72.975746832964631, -50.741450290734313 ], [ -73.328050910114484, -50.378785088909872 ], [ -73.415435757120036, -49.318436374712959 ], [ -72.648247443314943, -48.878618259476788 ], [ -72.331160854771952, -48.244238376661826 ], [ -72.447355312780275, -47.738532810253531 ], [ -71.917258470330211, -46.8848381487918 ], [ -71.552009446891248, -45.560732924177131 ], [ -71.65931555854533, -44.973688653341441 ], [ -71.222778896759735, -44.784242852559416 ], [ -71.329800788036209, -44.407521661151691 ], [ -71.793622606071949, -44.207172133156106 ], [ -71.464056159130507, -43.787611179378331 ], [ -71.915423956983915, -43.408564548517418 ], [ -72.148898078078531, -42.254888197601389 ], [ -71.746803758415467, -42.051386407235995 ], [ -71.915734015577556, -40.832339369470731 ], [ -71.680761277946459, -39.808164157878068 ], [ -71.413516608349056, -38.916022230791114 ], [ -70.814664272734717, -38.552995293940739 ], [ -71.118625047475433, -37.576827487947199 ], [ -71.121880662709799, -36.658123874662337 ], [ -70.364769253201672, -36.005088799789945 ], [ -70.388049485949097, -35.169687595359449 ], [ -69.817309129501467, -34.193571465798286 ], [ -69.814776984319224, -33.273886000299854 ], [ -70.074399380153636, -33.091209812148037 ], [ -70.535068935819453, -31.365010267870289 ], [ -69.919008348251936, -30.336339206668313 ], [ -70.013550381129875, -29.367922865518551 ], [ -69.656130337183157, -28.459141127233693 ], [ -69.001234910748281, -27.521213881136134 ], [ -68.295541551370405, -26.89933969493579 ], [ -68.594799770772681, -26.506908868111267 ], [ -68.386001146097357, -26.185016371365236 ], [ -68.417652960876126, -24.518554782816878 ], [ -67.328442959244143, -24.025303236590915 ], [ -66.985233934177643, -22.986348565362832 ], [ -67.106673550063618, -22.7359245744764 ], [ -66.273339402924847, -21.832310479420684 ], [ -64.964892137294584, -22.075861504812352 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Armenia", "iso_a2": "AM" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 43.582745802592733, 41.092143256182567 ], [ 44.972480096218078, 41.248128567055595 ], [ 45.179495883979342, 40.985353908851408 ], [ 45.560351189970447, 40.812289537105926 ], [ 45.35917483905817, 40.561503811193461 ], [ 45.891907179555091, 40.218475653639999 ], [ 45.610012241402927, 39.899993801425182 ], [ 46.034534132680676, 39.628020738273065 ], [ 46.483498976432458, 39.464154771475535 ], [ 46.505719842317973, 38.770605373686294 ], [ 46.143623081248819, 38.741201483712217 ], [ 45.735379266143013, 39.319719143219743 ], [ 45.739978468616982, 39.473999131827128 ], [ 45.298144972521463, 39.471751207022436 ], [ 45.001987339056747, 39.740003567049555 ], [ 44.793989699081948, 39.713002631177048 ], [ 44.400008579288702, 40.005000311842281 ], [ 43.656436395040942, 40.253563951166186 ], [ 43.752657911968413, 40.740200914058761 ], [ 43.582745802592733, 41.092143256182567 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Antarctica", "iso_a2": "AQ" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -59.572094692611529, -80.040178725096297 ], [ -59.865849371974718, -80.549656671061854 ], [ -60.1596557277702, -81.000326837079314 ], [ -62.255393439367083, -80.863177585776654 ], [ -64.488125372969762, -80.921933689292558 ], [ -65.741666429289836, -80.588827406739142 ], [ -65.741666429289836, -80.549656671061854 ], [ -66.29003089055513, -80.25577280061799 ], [ -64.037687750897646, -80.294943536295179 ], [ -61.883245612217138, -80.392870375488286 ], [ -61.138975796133451, -79.9813709451481 ], [ -60.610119188058405, -79.628679294756125 ], [ -59.572094692611529, -80.040178725096297 ] ] ], [ [ [ -159.208183560197654, -79.497059421708727 ], [ -161.127601284814659, -79.634208673011301 ], [ -162.439846768218388, -79.281465346187019 ], [ -163.027407803376974, -78.928773695794959 ], [ -163.066604377270323, -78.869965915846763 ], [ -163.712895677728739, -78.595667413241529 ], [ -163.712895677728739, -78.595666605797277 ], [ -163.105800951163815, -78.223337911134294 ], [ -161.245113491846382, -78.380175883140168 ], [ -160.246208055644502, -78.693645121422662 ], [ -159.482404548154477, -79.046337579258989 ], [ -159.208183560197654, -79.497059421708727 ] ] ], [ [ [ -45.154757656421026, -78.047069600586738 ], [ -43.920827806155756, -78.478102722333261 ], [ -43.489949713706096, -79.085559991368456 ], [ -43.372437506674373, -79.516644789547271 ], [ -43.333266770997085, -80.026122735512928 ], [ -44.880536668464288, -80.339643650227714 ], [ -46.506173875502014, -80.594356784994318 ], [ -48.386420864441789, -80.829484551922349 ], [ -50.482106899606464, -81.025441583173119 ], [ -52.851988084511788, -80.966685479657301 ], [ -54.164259406131606, -80.633527520671578 ], [ -53.98799109558405, -80.222028090331406 ], [ -51.8531343247422, -79.947729587726087 ], [ -50.991326463410587, -79.614623305172657 ], [ -50.364594692574741, -79.183486830561634 ], [ -49.914131232286508, -78.811209004886692 ], [ -49.306958991073117, -78.458569030926924 ], [ -48.660616014182523, -78.047017924154446 ], [ -48.660616014182523, -78.047018731598683 ], [ -48.1513964503784, -78.047069600586738 ], [ -46.662856818211026, -77.831475525065031 ], [ -45.154757656421026, -78.047069600586738 ] ] ], [ [ [ -121.211511393857123, -73.500990499006036 ], [ -119.918851278292053, -73.65772511814734 ], [ -118.724143032691913, -73.481353454735199 ], [ -119.292118700011955, -73.834096781559481 ], [ -120.232217163709976, -74.088809916326156 ], [ -121.622829956684257, -74.010468444971607 ], [ -122.621734585441899, -73.657777602023884 ], [ -122.621735392886137, -73.657776794579632 ], [ -122.406244670229029, -73.32461883559391 ], [ -121.211511393857123, -73.500990499006036 ] ] ], [ [ [ -125.559566406895314, -73.481353454735199 ], [ -124.031881877266855, -73.873267517236741 ], [ -124.619468750641531, -73.834096781559481 ], [ -125.912180542638907, -73.736118265934095 ], [ -127.28312964568191, -73.461768894340821 ], [ -127.283130453126162, -73.461768086896569 ], [ -126.558471843097209, -73.246225687807168 ], [ -125.559566406895314, -73.481353454735199 ] ] ], [ [ [ -98.981549648823901, -71.933334248999785 ], [ -97.884743211645031, -72.070535176734737 ], [ -96.787936774466232, -71.952971293270707 ], [ -96.200349901091442, -72.521205342752182 ], [ -96.983764614636215, -72.442863871397634 ], [ -98.19808325884685, -72.482034607074922 ], [ -99.432013109112205, -72.442863871397634 ], [ -100.783455166409212, -72.501619974913552 ], [ -101.80186845580134, -72.305662943662782 ], [ -102.330725063876386, -71.894164320766848 ], [ -102.330725063876386, -71.89416351332261 ], [ -101.703967454824436, -71.717791849910384 ], [ -100.4309185453141, -71.854992777645322 ], [ -98.981549648823901, -71.933334248999785 ] ] ], [ [ [ -68.451345994730417, -70.955822855766741 ], [ -68.333833787698694, -71.406493021784186 ], [ -68.510127936462425, -71.798407084285728 ], [ -68.784297247986984, -72.170735778948625 ], [ -69.959470994736421, -72.307885030251299 ], [ -71.075888637970138, -72.50384206150207 ], [ -72.388134121373781, -72.484256693663426 ], [ -71.898499925408288, -72.092342631161884 ], [ -73.073621995725432, -72.229491882464544 ], [ -74.190039638959064, -72.366692810199496 ], [ -74.953894822881381, -72.07275726332324 ], [ -75.01262508818121, -71.661257832983068 ], [ -73.915818651002326, -71.269344577925779 ], [ -73.915818651002326, -71.269343770481527 ], [ -73.230330776650561, -71.151779887017511 ], [ -72.074716559523551, -71.190950622694771 ], [ -71.780961880160362, -70.681472676729129 ], [ -71.72217993842844, -70.30919565849851 ], [ -71.741791144483187, -69.505782165656797 ], [ -71.173815477163146, -69.035474955368414 ], [ -70.253251512315728, -68.878740336227196 ], [ -69.72444658067306, -69.251017354457815 ], [ -69.489422166609586, -69.623346049120727 ], [ -69.058518235943808, -70.074016215138187 ], [ -68.725541144471066, -70.505152689749281 ], [ -68.451345994730417, -70.955822855766741 ] ] ], [ [ [ -58.614142829000912, -64.152467130133147 ], [ -59.045072597882864, -64.368009529222633 ], [ -59.789342413966551, -64.211223233649051 ], [ -60.611927863188697, -64.309201749274436 ], [ -61.297415737540376, -64.544329516202566 ], [ -62.022100185785433, -64.799094327401363 ], [ -62.511760219966902, -65.093029874277519 ], [ -62.648857794837369, -65.484942321890657 ], [ -62.590127529537739, -65.857219340121361 ], [ -62.120078701410705, -66.190325622674706 ], [ -62.805566575762384, -66.425505066034958 ], [ -63.745690070232371, -66.503846537389592 ], [ -64.294106207929957, -66.837004496375215 ], [ -64.881693081304633, -67.150473734657723 ], [ -65.508424852140564, -67.581610209268916 ], [ -65.665081956633287, -67.95388722749945 ], [ -65.31254533553809, -68.365334981407415 ], [ -64.783714565679333, -68.678907572554493 ], [ -63.961103278241097, -68.913983663050175 ], [ -63.197299770751044, -69.227556254197253 ], [ -62.78595536970775, -69.619418640266503 ], [ -62.570516323482906, -69.991747334929499 ], [ -62.276735805903542, -70.383661397431041 ], [ -61.806661139560589, -70.716767679984471 ], [ -61.512906460197399, -71.089044698215076 ], [ -61.375808885327132, -72.010073750953126 ], [ -61.081976691315532, -72.38235076918383 ], [ -61.003661058177187, -72.774264831685372 ], [ -60.69026933454316, -73.166178894187084 ], [ -60.827366909413428, -73.695242207991186 ], [ -61.375808885327132, -74.106741638331371 ], [ -61.96336992048569, -74.439847920884887 ], [ -63.295200771727963, -74.576997172187376 ], [ -63.745690070232371, -74.929740499011729 ], [ -64.352836473229587, -75.262846781565159 ], [ -65.860987311451765, -75.635123799795778 ], [ -67.192818162694124, -75.791910095369445 ], [ -68.446281704365759, -76.007452494458761 ], [ -69.797723761662837, -76.222994893548176 ], [ -70.600723843046239, -76.634494323888447 ], [ -72.206775682245365, -76.673665059565721 ], [ -73.969536302369676, -76.634494323888447 ], [ -75.555976935514025, -76.712887471675202 ], [ -77.240370246067613, -76.712887471675202 ], [ -76.926978522433586, -77.104801534176744 ], [ -75.399293992804928, -77.281069844724385 ], [ -74.28287634957141, -77.555420023761812 ], [ -73.656118740519446, -77.908111674153957 ], [ -74.772536383753078, -78.221632588868673 ], [ -76.496100429984011, -78.123654073243287 ], [ -77.925858120419264, -78.378418884442254 ], [ -77.984665900367474, -78.789918314782341 ], [ -78.02378495961247, -79.18183318472822 ], [ -76.848637051079123, -79.51493946728165 ], [ -76.633223843070397, -79.887216485512269 ], [ -75.360097418911749, -80.259545180175252 ], [ -73.244851854124619, -80.416331475748763 ], [ -71.442946336539222, -80.690629978353982 ], [ -70.013162807887767, -81.004150893068783 ], [ -68.191646084247537, -81.317671807783569 ], [ -65.704278530526665, -81.47445810335725 ], [ -63.256030036050703, -81.748756605962484 ], [ -61.55202551944231, -82.042692152838541 ], [ -59.691415574773458, -82.375850111824349 ], [ -58.712121344626212, -82.846105645680353 ], [ -58.222487148660917, -83.21843434034335 ], [ -57.008116828017819, -82.865691013519083 ], [ -55.362894253141548, -82.571755466642827 ], [ -53.619770677288244, -82.258234551928041 ], [ -51.543644171746024, -82.003521417161352 ], [ -49.761349860215461, -81.729171238123755 ], [ -47.27393063006221, -81.709585870285295 ], [ -44.825707973802508, -81.84673512158777 ], [ -42.808363409992381, -82.081914564948107 ], [ -42.162020433101787, -81.650829766769291 ], [ -40.771433478343596, -81.356894219893221 ], [ -38.244817674297053, -81.337308852054591 ], [ -36.266669684380219, -81.121714776532983 ], [ -34.386396857224355, -80.906172377443482 ], [ -32.31029618989831, -80.769023126140738 ], [ -30.097097947701997, -80.592651462728696 ], [ -28.549802212018704, -80.337938327962007 ], [ -29.254901292425131, -79.985195001137654 ], [ -29.685805223090966, -79.632503350745679 ], [ -29.685805223090966, -79.260226332514975 ], [ -31.62480831554663, -79.299397068192235 ], [ -33.681323615033961, -79.456131687333453 ], [ -35.639912075328255, -79.456131687333453 ], [ -35.914107225069017, -79.083854669102919 ], [ -35.777009650198721, -78.33924814876498 ], [ -35.326546189910431, -78.123654073243287 ], [ -33.896762661258862, -77.888526306315242 ], [ -32.212369350705302, -77.653450215819575 ], [ -30.99805070649461, -77.359514668943319 ], [ -29.783732062284059, -77.065579122067263 ], [ -28.882779303491361, -76.673665059565721 ], [ -27.511751878355653, -76.497345072585787 ], [ -26.16033565927475, -76.36014414485075 ], [ -25.474821946706868, -76.281802673496287 ], [ -23.927552049239779, -76.242580261386735 ], [ -22.45859778491095, -76.105431010084246 ], [ -21.22469377286177, -75.909473978833475 ], [ -20.010375128651077, -75.67434621190543 ], [ -18.91354285325616, -75.439218444977286 ], [ -17.522981736714172, -75.125697530262499 ], [ -16.641588507544014, -74.792539571276876 ], [ -15.701490851290259, -74.498604024400635 ], [ -15.407710333710867, -74.106741638331371 ], [ -16.465320196996373, -73.871613871403412 ], [ -16.112783575901261, -73.460114441063155 ], [ -15.446855231171952, -73.146541849916076 ], [ -14.408804897508986, -72.950584818665305 ], [ -13.311972622113984, -72.715457051737332 ], [ -12.293507656289563, -72.401936137022545 ], [ -11.510067104528588, -72.010073750953126 ], [ -11.020432908563038, -71.539766540664829 ], [ -10.295774298534155, -71.265416361627302 ], [ -9.101015183946089, -71.324224141575513 ], [ -8.611380987980596, -71.657330424128844 ], [ -7.416621873392415, -71.696501159806033 ], [ -7.377451137715241, -71.324224141575513 ], [ -6.868231573911117, -70.932310079073972 ], [ -5.790984666354774, -71.030288594699272 ], [ -5.53637488445267, -71.402617289362254 ], [ -4.341667446296867, -71.461373392878073 ], [ -3.048981492515594, -71.28505340589814 ], [ -1.795492112627784, -71.167437846001832 ], [ -0.659489101555522, -71.226245625950042 ], [ -0.228636847322065, -71.637745056290299 ], [ 0.868195428072937, -71.304638773736784 ], [ 1.886686232113533, -71.128267110324742 ], [ 3.022637566753417, -70.991117859022069 ], [ 4.139055209987049, -70.853916931287046 ], [ 5.157546014027673, -70.618789164359086 ], [ 6.273911980828927, -70.462054545217796 ], [ 7.135719842160626, -70.246512146128381 ], [ 7.742866245157842, -69.893768819304029 ], [ 8.487110223025326, -70.148533630502996 ], [ 9.525134718472202, -70.011332702768215 ], [ 10.249845004933434, -70.481639913056512 ], [ 10.81782067225339, -70.834331563448501 ], [ 11.953823683325652, -70.63837453219773 ], [ 12.404287143613942, -70.246512146128381 ], [ 13.422777947654396, -69.972161967090955 ], [ 14.734997592842006, -70.030918070606774 ], [ 15.126756626046586, -70.403246765269756 ], [ 15.949342075268646, -70.030918070606774 ], [ 17.02658898282516, -69.913354187142744 ], [ 18.201711053142333, -69.874183451465484 ], [ 19.259372592860046, -69.893768819304029 ], [ 20.375738559661471, -70.011332702768215 ], [ 21.452985467217815, -70.070140482716255 ], [ 21.923034295344735, -70.403246765269756 ], [ 22.569403110451447, -70.697182312145827 ], [ 23.666183709414213, -70.520810648733701 ], [ 24.841357456163593, -70.481639913056512 ], [ 25.977308790803647, -70.481639913056512 ], [ 27.093726434037279, -70.462054545217796 ], [ 28.092580193806867, -70.32485361748293 ], [ 29.150241733524581, -70.207289734018985 ], [ 30.031583286262531, -69.932939554981289 ], [ 30.971732618948607, -69.756619568001454 ], [ 31.990171746556854, -69.658641052376069 ], [ 32.754052768695288, -69.384290873338458 ], [ 33.302443068176757, -68.835642191695712 ], [ 33.8704187354966, -68.50258758557456 ], [ 34.908494907375854, -68.659270528283486 ], [ 35.300202264148226, -69.012013855107938 ], [ 36.162010125479782, -69.247141622035969 ], [ 37.200034620926573, -69.168748474249043 ], [ 37.905107863116797, -69.521440124641202 ], [ 38.649403517416914, -69.776204935840184 ], [ 39.667894321457339, -69.541077168912039 ], [ 40.020430942552565, -69.109940694300946 ], [ 40.921357863129089, -68.933620707321182 ], [ 41.959434035008229, -68.600514424767667 ], [ 42.938702426939102, -68.463313497032715 ], [ 44.113876173688624, -68.267408142214236 ], [ 44.897290887233424, -68.051865743124921 ], [ 45.719928012887834, -67.816737976196777 ], [ 46.503342726432635, -67.601195577107461 ], [ 47.443440382686305, -67.718759460571476 ], [ 48.344418979695121, -67.366067810179416 ], [ 48.990736118369597, -67.091717631141904 ], [ 49.930885451055673, -67.111302998980449 ], [ 50.753470900277733, -66.876175232052404 ], [ 50.949324578663919, -66.523483581660429 ], [ 51.791547072157044, -66.249133402622903 ], [ 52.614132521378934, -66.053176371372132 ], [ 53.613037957580815, -65.89639007579855 ], [ 54.533550245996054, -65.818048604444002 ], [ 55.414943475166211, -65.876804707959906 ], [ 56.355041131419881, -65.974783223585376 ], [ 57.158092889235689, -66.249133402622903 ], [ 57.255968051996462, -66.680218200801633 ], [ 58.137361281166619, -67.013324483355149 ], [ 58.744507684163949, -67.287674662392675 ], [ 59.939318475184251, -67.40523854585669 ], [ 60.605220981697443, -67.679588724894217 ], [ 61.427806430919333, -67.95388722749945 ], [ 62.387489455011661, -68.012695007447547 ], [ 63.190489536395233, -67.816737976196777 ], [ 64.052349074159025, -67.40523854585669 ], [ 64.992446730412922, -67.620729268513713 ], [ 65.971715122343966, -67.738344828410035 ], [ 66.911864455029757, -67.85590871187415 ], [ 67.891132846960915, -67.934301859660806 ], [ 68.890038283162909, -67.934301859660806 ], [ 69.712623732384742, -68.972791442998371 ], [ 69.673452996707482, -69.227556254197253 ], [ 69.555940789675816, -69.678226420214713 ], [ 68.596257765583488, -69.932939554981289 ], [ 67.812739699174159, -70.305268249644286 ], [ 67.949888950476662, -70.697182312145827 ], [ 69.066306593710266, -70.67754526787499 ], [ 68.929157342407763, -71.069459330376532 ], [ 68.41998945503596, -71.441788025039529 ], [ 67.949888950476662, -71.853287455379615 ], [ 68.713769972615154, -72.166808370094415 ], [ 69.869306675093952, -72.264786885719801 ], [ 71.024895054004588, -72.088415222307759 ], [ 71.573285353486057, -71.696501159806033 ], [ 71.906288283174916, -71.324224141575513 ], [ 72.454626906224036, -71.010703226860628 ], [ 73.081410353492089, -70.716767679984471 ], [ 73.336020135394193, -70.364024353160204 ], [ 73.864876743469239, -69.874183451465484 ], [ 74.491556837872707, -69.776204935840184 ], [ 75.627559848944969, -69.73703420016281 ], [ 76.62646528514685, -69.619418640266503 ], [ 77.644904412755267, -69.462684021125298 ], [ 78.13453860872059, -69.070769958623757 ], [ 78.428370802732246, -68.698441263960675 ], [ 79.113858677083925, -68.326215922162433 ], [ 80.093127069014855, -68.071502787395758 ], [ 80.935349562507753, -67.875545756144987 ], [ 81.483791538421457, -67.542387797159265 ], [ 82.05176720574147, -67.366067810179416 ], [ 82.776425815770409, -67.209281514605919 ], [ 83.775331251972403, -67.30726003023122 ], [ 84.676206496116635, -67.209281514605919 ], [ 85.65552656447997, -67.091717631141904 ], [ 86.752358839874859, -67.150473734657723 ], [ 87.477017449903798, -66.876175232052404 ], [ 87.986288690140242, -66.20991099051335 ], [ 88.358410679073955, -66.484261169550862 ], [ 88.828407830768555, -66.95456837983923 ], [ 89.670630324261566, -67.150473734657723 ], [ 90.6303650247863, -67.228866882444464 ], [ 91.590099725310807, -67.111302998980449 ], [ 92.608538852919054, -67.189696146767204 ], [ 93.548636509172951, -67.209281514605919 ], [ 94.175419956441004, -67.111302998980449 ], [ 95.017590773501666, -67.170110778928645 ], [ 95.781471795640272, -67.385653178017975 ], [ 96.682398716216795, -67.248503926715486 ], [ 97.759645623773139, -67.248503926715486 ], [ 98.680209588620556, -67.111302998980449 ], [ 99.718182407635055, -67.248503926715486 ], [ 100.384188267012775, -66.915345967729678 ], [ 100.893356154384691, -66.582239685176248 ], [ 101.578895705168549, -66.307889506138636 ], [ 102.832410923272647, -65.56328379324512 ], [ 103.478676385514774, -65.700484720979972 ], [ 104.242557407653095, -65.974783223585376 ], [ 104.90845991416623, -66.327526550409658 ], [ 106.181560500108759, -66.934931335568393 ], [ 107.160880568472095, -66.95456837983923 ], [ 108.081392856887163, -66.95456837983923 ], [ 109.158639764443677, -66.837004496375215 ], [ 110.235834995567842, -66.699803568640363 ], [ 111.058472121222081, -66.425505066034958 ], [ 111.743959995573931, -66.131569519158887 ], [ 112.860377638807478, -66.092347107049321 ], [ 113.604673293107368, -65.876804707959906 ], [ 114.388088006652055, -66.072761739210677 ], [ 114.897307570456263, -66.386282653925477 ], [ 115.602380812646544, -66.699803568640363 ], [ 116.699161411609424, -66.660632832962989 ], [ 117.384700962393225, -66.915345967729678 ], [ 118.579460076981292, -67.170110778928645 ], [ 119.832923618653098, -67.268089294553945 ], [ 120.870999790532181, -67.189696146767204 ], [ 121.654414504077096, -66.876175232052404 ], [ 122.320368687022352, -66.562654317337689 ], [ 123.221295607598933, -66.484261169550862 ], [ 124.122274204607635, -66.6214620972859 ], [ 125.160247023622247, -66.719388936478907 ], [ 126.10039635630838, -66.562654317337689 ], [ 127.001426629749318, -66.562654317337689 ], [ 127.88276818248724, -66.660632832962989 ], [ 128.803280470902422, -66.75861134858846 ], [ 129.704259067911181, -66.582239685176248 ], [ 130.78145429903546, -66.425505066034958 ], [ 131.799945103075885, -66.386282653925477 ], [ 132.935896437716139, -66.386282653925477 ], [ 133.856460402563386, -66.288304138300091 ], [ 134.757387323139909, -66.209962666945628 ], [ 135.031582472880729, -65.720070088818616 ], [ 135.070753208557818, -65.30857065847843 ], [ 135.697484979393579, -65.582869161083664 ], [ 135.873804966373513, -66.033591003533417 ], [ 136.206704543197787, -66.445090433873673 ], [ 136.61804894424111, -66.778196716427018 ], [ 137.460271437733951, -66.95456837983923 ], [ 138.596222772374148, -66.895760599891133 ], [ 139.908442417561474, -66.876175232052404 ], [ 140.80942101457029, -66.817367452104378 ], [ 142.121692336190193, -66.817367452104378 ], [ 143.061841668876156, -66.797782084265663 ], [ 144.374061314063709, -66.837004496375215 ], [ 145.490427280865021, -66.915345967729678 ], [ 146.195552199487821, -67.228866882444464 ], [ 145.999698521101521, -67.601195577107461 ], [ 146.646067336208233, -67.895131123983703 ], [ 147.723262567332341, -68.130258890911662 ], [ 148.839628534133709, -68.385023702110544 ], [ 150.132314487914897, -68.561292012658186 ], [ 151.483704868779597, -68.718129984663975 ], [ 152.502247349252485, -68.874812927372986 ], [ 153.638198683892568, -68.894501648076101 ], [ 154.28456749899928, -68.561292012658186 ], [ 155.165857375304853, -68.835642191695712 ], [ 155.929790073875466, -69.14921478284279 ], [ 156.811131626613388, -69.384290873338458 ], [ 158.025527785472406, -69.482269388963942 ], [ 159.181012811518741, -69.599833272427958 ], [ 159.670698683916527, -69.991747334929499 ], [ 160.806650018556496, -70.226875101857544 ], [ 161.570479364262809, -70.579618428681812 ], [ 162.686897007496356, -70.736353047823201 ], [ 163.842433709974927, -70.716767679984471 ], [ 164.919680617531213, -70.77552378350029 ], [ 166.11443973211945, -70.755938415661745 ], [ 167.309095493842989, -70.834331563448501 ], [ 168.425616489941177, -70.971480814751061 ], [ 169.46358930895596, -71.206660258111398 ], [ 170.501665480835044, -71.402617289362254 ], [ 171.206790399457617, -71.696501159806033 ], [ 171.089226515993772, -72.088415222307759 ], [ 170.560421584350735, -72.441158549132112 ], [ 170.109958124062388, -72.891828715149387 ], [ 169.757369826535154, -73.244520365541547 ], [ 169.287320998408319, -73.656019795881633 ], [ 167.975101353220765, -73.81280609145513 ], [ 167.387488641629744, -74.16549774184719 ], [ 166.094802687848443, -74.381040140936605 ], [ 165.644390903992445, -74.772954203438147 ], [ 164.958851353208587, -75.145282898101229 ], [ 164.234192743179705, -75.45880381281593 ], [ 163.822796665703919, -75.870303243156201 ], [ 163.568238560234278, -76.242580261386735 ], [ 163.470260044608978, -76.693302103836558 ], [ 163.489897088879758, -77.065579122067263 ], [ 164.057872756199771, -77.457441508136426 ], [ 164.273363478856965, -77.829770202799324 ], [ 164.743463983416149, -78.182513529623776 ], [ 166.60412560451735, -78.319611104494058 ], [ 166.995781284857429, -78.750747579105251 ], [ 165.193875767272033, -78.907483005690693 ], [ 163.666217075859578, -79.123025404780023 ], [ 161.766384719081117, -79.162247816889675 ], [ 160.924162225588333, -79.73048186637098 ], [ 160.747893915040748, -80.200737400227155 ], [ 160.31696414615871, -80.573066094889967 ], [ 159.78821089094842, -80.945394789553049 ], [ 161.120015903974405, -81.278501072106479 ], [ 161.629287144210906, -81.690000502446566 ], [ 162.490991652678048, -82.06227752067727 ], [ 163.705336135104773, -82.395435479662893 ], [ 165.095948928078855, -82.708956394377779 ], [ 166.60412560451735, -83.022477309092579 ], [ 168.895665318067955, -83.335998223807366 ], [ 169.404781529007579, -83.825890801934378 ], [ 172.283933954149376, -84.041433201023708 ], [ 172.477048781624177, -84.117914320815672 ], [ 173.224083286835395, -84.413710219254412 ], [ 175.985671828513119, -84.158997084487638 ], [ 178.277211542064066, -84.472517999202438 ], [ 180.000000000000142, -84.71338 ], [ -180.0, -84.71338 ], [ -179.942499356178928, -84.721443373552489 ], [ -179.058677334691197, -84.139411716649093 ], [ -177.256771817105744, -84.452932631363879 ], [ -177.140806673265786, -84.417941227148319 ], [ -176.084672818077593, -84.099259128758419 ], [ -175.947234613627757, -84.110448710216616 ], [ -175.829882168662522, -84.117914320815672 ], [ -174.382502814815695, -84.534323012223567 ], [ -173.116559414745467, -84.117914320815672 ], [ -172.889105598012804, -84.061018568862337 ], [ -169.951222907571434, -83.884646905450126 ], [ -168.999988980158633, -84.117914320815672 ], [ -168.530198534193232, -84.237390232274478 ], [ -167.022099372403318, -84.570496514827909 ], [ -142.892279432375631, -84.570496514827909 ], [ -146.829068366463304, -84.531274102718342 ], [ -150.060731574483952, -84.296146335790382 ], [ -150.902928229760732, -83.904232273288841 ], [ -153.586201138300197, -83.688689874199355 ], [ -153.409906989536466, -83.238019708182065 ], [ -153.037759162386408, -82.826520277841809 ], [ -152.665637173452751, -82.454191583178812 ], [ -152.861516690055055, -82.042692152838541 ], [ -154.526298794553895, -81.768393650233321 ], [ -155.290179816692387, -81.415650323409039 ], [ -156.837449714159504, -81.102129408694253 ], [ -154.408786587522229, -81.16093718864245 ], [ -152.097661506132823, -81.004150893068783 ], [ -150.648292609642624, -81.337308852054591 ], [ -148.865998298112061, -81.043373305178335 ], [ -147.220749885019501, -80.671044610515438 ], [ -146.417748996191847, -80.337938327962007 ], [ -146.770286424731182, -79.926438897621921 ], [ -148.062946540296366, -79.652088718584224 ], [ -149.53190080462511, -79.358204848140446 ], [ -151.588416104112412, -79.299397068192235 ], [ -153.390321621697808, -79.162247816889675 ], [ -155.329376390585765, -79.064269301264204 ], [ -155.97566769104418, -78.691939799157041 ], [ -157.268301968393047, -78.378418884442254 ], [ -158.051768358370111, -78.025675557617902 ], [ -158.365134243787963, -76.889207458654951 ], [ -157.875474209606352, -76.987237650712615 ], [ -156.974573127245947, -77.300758565427515 ], [ -155.329376390585765, -77.202728373369752 ], [ -153.742832404576745, -77.065579122067263 ], [ -152.92024695535477, -77.496663920245993 ], [ -151.333780483994303, -77.398737081052801 ], [ -150.001949632751945, -77.183143005531193 ], [ -148.748486091080338, -76.908844502925973 ], [ -147.612483080008076, -76.575738220372529 ], [ -146.104408948989999, -76.477759704747058 ], [ -146.143528008234995, -76.105431010084246 ], [ -146.496091274990476, -75.733153991853541 ], [ -146.202309949967002, -75.380410665029189 ], [ -144.909623996185758, -75.204039001616962 ], [ -144.322037122811082, -75.53719696060277 ], [ -142.794352593182623, -75.341239929352 ], [ -141.638764214271617, -75.086475118152947 ], [ -140.209006523836166, -75.066889750314388 ], [ -138.857590304755348, -74.968911234688917 ], [ -137.506199923890449, -74.733783467760958 ], [ -136.428901339901927, -74.518241068671642 ], [ -135.214582695691291, -74.302698669582142 ], [ -134.431193820362608, -74.361454773097961 ], [ -133.745654269578552, -74.439847920884887 ], [ -132.257167928732059, -74.302698669582142 ], [ -130.925311239273583, -74.47901865656199 ], [ -129.554283814137762, -74.459433288723432 ], [ -128.24203833073426, -74.322284037420701 ], [ -126.890622111653244, -74.420262553046172 ], [ -125.402082479485784, -74.518241068671642 ], [ -124.011495524727607, -74.47901865656199 ], [ -122.562152466453611, -74.498604024400635 ], [ -121.073612834286237, -74.518241068671642 ], [ -119.702559570934227, -74.47901865656199 ], [ -118.684145474097932, -74.185083109685834 ], [ -117.469800991671207, -74.02834849054463 ], [ -116.216311611783411, -74.243890889633946 ], [ -115.021552497195415, -74.06751922622189 ], [ -113.944331427855076, -73.71482757582983 ], [ -113.297988450964482, -74.02834849054463 ], [ -112.94545182986937, -74.381040140936605 ], [ -112.299083014762587, -74.714198099922413 ], [ -111.261058519315625, -74.420262553046172 ], [ -110.066325242943734, -74.792539571276876 ], [ -108.714909023862731, -74.910103454740891 ], [ -107.559346483168113, -75.184453633778418 ], [ -106.149148322355018, -75.125697530262499 ], [ -104.876073574628663, -74.949325866850458 ], [ -103.367948574622659, -74.988496602527647 ], [ -102.016506517325652, -75.125697530262499 ], [ -100.645530768622308, -75.302017517242433 ], [ -100.116699998763266, -74.870932719063532 ], [ -100.763042975653946, -74.537826436510187 ], [ -101.252703009835528, -74.185083109685834 ], [ -102.545337287184509, -74.106741638331371 ], [ -103.113312954504536, -73.734412943668389 ], [ -103.328752000729281, -73.362084249005562 ], [ -103.681288621824393, -72.617530212544153 ], [ -102.917485114334355, -72.754679463846813 ], [ -101.605239630930726, -72.813435567362632 ], [ -100.312527838933448, -72.754679463846813 ], [ -99.137379930400101, -72.911414082988102 ], [ -98.118889126359477, -73.205349629864173 ], [ -97.688036872126105, -73.558041280256333 ], [ -96.336594814828914, -73.616849060204359 ], [ -95.043960537479848, -73.47969980890187 ], [ -93.672907274128107, -73.283742777650929 ], [ -92.439003262078955, -73.166178894187084 ], [ -91.420564134470709, -73.401306661115129 ], [ -90.088733283228436, -73.322913513328203 ], [ -89.226951260112941, -72.558722432595957 ], [ -88.42395117872951, -73.009392598613402 ], [ -87.268336961602614, -73.185764262025629 ], [ -86.01482174349843, -73.087785746400158 ], [ -85.192236294276569, -73.47969980890187 ], [ -83.879990810872755, -73.518870544578974 ], [ -82.66564632844603, -73.636434428043088 ], [ -81.470913052074138, -73.851976827132404 ], [ -80.687446662096988, -73.47969980890187 ], [ -80.295790981756994, -73.126956482077432 ], [ -79.296885545555, -73.518870544578974 ], [ -77.925858120419264, -73.420892028953588 ], [ -76.907367316378753, -73.636434428043088 ], [ -76.221879442027074, -73.969540710596419 ], [ -74.890048590784801, -73.871613871403412 ], [ -73.852024095337924, -73.656019795881633 ], [ -72.833533291297414, -73.401306661115129 ], [ -71.619214647086864, -73.264157409812384 ], [ -70.209042324489957, -73.146541849916076 ], [ -68.935915900331224, -73.009392598613402 ], [ -67.956621670184091, -72.793850199524087 ], [ -67.36906063502559, -72.480329284809301 ], [ -67.134036220962031, -72.049244486630386 ], [ -67.251548427993669, -71.637745056290299 ], [ -67.564940151627894, -71.245830993788758 ], [ -67.917476772723006, -70.853916931287046 ], [ -68.230842658140915, -70.462054545217796 ], [ -68.485452440043019, -70.109311218393515 ], [ -68.544208543558938, -69.717397155891973 ], [ -68.446281704365759, -69.325534769822724 ], [ -67.976232876238896, -68.953206075159727 ], [ -67.584499681250321, -68.54170664481947 ], [ -67.427842576757513, -68.149844258750221 ], [ -67.623670416927695, -67.718759460571476 ], [ -67.741182623959332, -67.326845398069935 ], [ -67.251548427993669, -66.876175232052404 ], [ -66.703183966728574, -66.582239685176248 ], [ -66.056815151621862, -66.209962666945628 ], [ -65.371327277270098, -65.89639007579855 ], [ -64.568275519454403, -65.602506205354672 ], [ -64.176542324465828, -65.171423022064445 ], [ -63.62815202498453, -64.897072843026749 ], [ -63.001394415932566, -64.642308031827866 ], [ -62.041685553623978, -64.583551928311948 ], [ -61.414927944572014, -64.270031013597162 ], [ -60.709854702381705, -64.074073982346391 ], [ -59.887269253159559, -63.956510098882369 ], [ -59.16258480491453, -63.701745287683572 ], [ -58.594557461162282, -63.388224372968601 ], [ -57.811142747617509, -63.270660489504579 ], [ -57.223581712458838, -63.525425300703638 ], [ -57.595729539608868, -63.858531583257069 ], [ -58.614142829000912, -64.152467130133147 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Fr. S. Antarctic Lands", "iso_a2": "TF" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 68.935, -48.625 ], [ 69.58, -48.94 ], [ 70.525, -49.065 ], [ 70.56, -49.255 ], [ 70.28, -49.71 ], [ 68.745, -49.775 ], [ 68.72, -49.2425 ], [ 68.8675, -48.83 ], [ 68.935, -48.625 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Australia", "iso_a2": "AU" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 145.397978143494839, -40.792548516605891 ], [ 146.364120721623721, -41.137695407883342 ], [ 146.908583612250851, -41.000546156580683 ], [ 147.689259474884153, -40.808258152022688 ], [ 148.289067824496016, -40.87543751400213 ], [ 148.359864536735842, -42.062445163746446 ], [ 148.017301467073111, -42.407023614268624 ], [ 147.914051955353813, -43.211522312188492 ], [ 147.564564243764011, -42.937688897473862 ], [ 146.870343052354968, -43.634597263362096 ], [ 146.663327264593676, -43.580853773778557 ], [ 146.048377720320417, -43.549744561538887 ], [ 145.431929559510564, -42.693776137056275 ], [ 145.295090366801702, -42.033609714527557 ], [ 144.718071323830628, -41.162551771815714 ], [ 144.743754510679679, -40.703975111657712 ], [ 145.397978143494839, -40.792548516605891 ] ] ], [ [ [ 143.561811151299963, -13.763655694232213 ], [ 143.922099237238939, -14.548310642152003 ], [ 144.563713820574861, -14.171176039285882 ], [ 144.894908075133543, -14.594457696188627 ], [ 145.374723748963476, -14.984976495018287 ], [ 145.271991001567272, -15.428205254785695 ], [ 145.485259637635778, -16.285672295804773 ], [ 145.637033319276981, -16.784918308176614 ], [ 145.8889042502677, -16.90692636481765 ], [ 146.160308872664501, -17.761654554925244 ], [ 146.06367394427869, -18.280072523677319 ], [ 146.387478469019612, -18.958274021075908 ], [ 147.471081577747924, -19.480722751546679 ], [ 148.177601760042506, -19.955939222902771 ], [ 148.848413527623251, -20.391209812097259 ], [ 148.717465448195611, -20.633468926681516 ], [ 149.289420200802084, -21.260510756111103 ], [ 149.678337030230665, -22.342511895438392 ], [ 150.077382440388618, -22.122783705333319 ], [ 150.482939081015189, -22.556142266533016 ], [ 150.727265252891215, -22.402404880464658 ], [ 150.899554478152282, -23.462236830338682 ], [ 151.60917524638424, -24.076256198830762 ], [ 152.073539666959078, -24.457886651306197 ], [ 152.855197381805937, -25.267501316023015 ], [ 153.13616214417678, -26.07117319102619 ], [ 153.161948683890415, -26.641319268502443 ], [ 153.092908970348589, -27.26029957449451 ], [ 153.569469028944212, -28.110066827102102 ], [ 153.512108189100246, -28.995077406532758 ], [ 153.339095493787084, -29.458201592732451 ], [ 153.069241164358885, -30.350240166954819 ], [ 153.089601678681817, -30.923641859665452 ], [ 152.891577590139406, -31.640445651985956 ], [ 152.450002476205356, -32.550002536755244 ], [ 151.709117466436822, -33.041342054986345 ], [ 151.343971795862416, -33.816023451473853 ], [ 151.01055545471516, -34.310360202777886 ], [ 150.714139439089053, -35.17345997491681 ], [ 150.328219842733262, -35.67187916437193 ], [ 150.075212030232279, -36.420205580390515 ], [ 149.946124302367167, -37.109052422841231 ], [ 149.997283970336156, -37.425260512035138 ], [ 149.423882277625552, -37.77268116633347 ], [ 148.304622430615922, -37.809061374666882 ], [ 147.381733026315288, -38.21921721776755 ], [ 146.922122837511353, -38.606532077795123 ], [ 146.317921991154805, -39.03575652441144 ], [ 145.489652134380577, -38.59376799901905 ], [ 144.876976353128185, -38.417448012039117 ], [ 145.03221235573298, -37.896187839510986 ], [ 144.485682407814039, -38.085323581699271 ], [ 143.609973586196105, -38.809465427405328 ], [ 142.745426873952994, -38.538267510737526 ], [ 142.178329705982009, -38.380034275059842 ], [ 141.606581659104705, -38.308514092767879 ], [ 140.63857872941324, -38.019332777662555 ], [ 139.992158237874349, -37.402936293285109 ], [ 139.806588169514072, -36.643602797188279 ], [ 139.574147577065247, -36.138362318670673 ], [ 139.082808058834104, -35.732754001611781 ], [ 138.120747918856324, -35.612296237939404 ], [ 138.449461704665026, -35.127261244447894 ], [ 138.207564325106688, -34.384722588845932 ], [ 137.719170363516156, -35.076825046531027 ], [ 136.829405552314739, -35.260534763328621 ], [ 137.352371047108505, -34.7073385556441 ], [ 137.503886346588359, -34.130267836240776 ], [ 137.890116001537677, -33.640478610978334 ], [ 137.81032759007914, -32.900007012668112 ], [ 136.996837192940376, -33.752771498348636 ], [ 136.37206912653167, -34.094766127256193 ], [ 135.989043410384369, -34.890118096660487 ], [ 135.208212518454133, -34.478670342752608 ], [ 135.239218377829189, -33.947953383114978 ], [ 134.613416782774635, -33.222778008763143 ], [ 134.085903761939136, -32.848072198214766 ], [ 134.273902622617044, -32.617233575166964 ], [ 132.990776808809841, -32.011224053680195 ], [ 132.288080682504898, -31.982646986622768 ], [ 131.326330601120929, -31.495803318001052 ], [ 129.535793898639696, -31.590422865527486 ], [ 128.240937534702226, -31.948488864877859 ], [ 127.102867466338324, -32.282266941051049 ], [ 126.148713820501172, -32.215966078420607 ], [ 125.088623488465629, -32.728751316052836 ], [ 124.221647983904944, -32.959486586236068 ], [ 124.028946567888539, -33.483847344701715 ], [ 123.659666782730739, -33.890179131812729 ], [ 122.811036411633637, -33.914467054989842 ], [ 122.183064406422858, -34.003402194964224 ], [ 121.299190708502607, -33.821036065406133 ], [ 120.580268182458127, -33.930176690406626 ], [ 119.89369510302825, -33.976065362281815 ], [ 119.29889936734881, -34.509366143533967 ], [ 119.00734093635802, -34.464149265278536 ], [ 118.505717808100798, -34.7468193499151 ], [ 118.024971958489544, -35.064732761374714 ], [ 117.295507440257467, -35.025458672832869 ], [ 116.625109084134948, -35.025096937806836 ], [ 115.564346958479717, -34.386427911111554 ], [ 115.026808709779544, -34.196517022438925 ], [ 115.048616164206777, -33.623425388322033 ], [ 115.545123325667106, -33.487257989232958 ], [ 115.714673700016675, -33.259571628554951 ], [ 115.679378696761404, -32.900368747694131 ], [ 115.801645135563973, -32.205062351207033 ], [ 115.689610630355133, -31.612437025683789 ], [ 115.160909051576965, -30.601594333622458 ], [ 114.997043084779449, -30.030724786094169 ], [ 115.040037876446291, -29.461095472940798 ], [ 114.641974318502008, -28.810230808224716 ], [ 114.616497837382184, -28.516398614213045 ], [ 114.173579136208474, -28.118076674107328 ], [ 114.048883905088161, -27.334765313427127 ], [ 113.477497593236905, -26.543134047147902 ], [ 113.338953078262506, -26.116545098578484 ], [ 113.778357782040274, -26.549025160429181 ], [ 113.440962355606615, -25.621278171493159 ], [ 113.936901076311671, -25.911234633082884 ], [ 114.232852004047317, -26.298446140245872 ], [ 114.216160516417034, -25.786281019801109 ], [ 113.721255324357713, -24.998938897402127 ], [ 113.625343866024053, -24.683971042583153 ], [ 113.393523390762681, -24.384764499613269 ], [ 113.502043898575636, -23.806350192970257 ], [ 113.706992629045175, -23.560215345964068 ], [ 113.843418410295698, -23.059987481378741 ], [ 113.7365515483161, -22.475475355725379 ], [ 114.149756300921894, -21.755881036061012 ], [ 114.225307244932679, -22.517488295178637 ], [ 114.647762078918703, -21.829519952076907 ], [ 115.460167270979326, -21.495173435148544 ], [ 115.947372674627019, -21.068687839443712 ], [ 116.711615431791557, -20.70168181730682 ], [ 117.166316359527713, -20.623598728113805 ], [ 117.441545037914267, -20.746898695562166 ], [ 118.22955895393298, -20.374208265873236 ], [ 118.836085239742744, -20.263310642174829 ], [ 118.987807244951767, -20.044202569257322 ], [ 119.252493931150667, -19.952941989829839 ], [ 119.805225050944586, -19.976506442954985 ], [ 120.856220330896662, -19.683707777589191 ], [ 121.399856398607227, -19.239755547769732 ], [ 121.655137974129076, -18.705317885007133 ], [ 122.241665480641785, -18.197648614171769 ], [ 122.286623976735683, -17.798603204013915 ], [ 122.312772251475423, -17.254967136303449 ], [ 123.012574497571933, -16.405199883695857 ], [ 123.433789097183052, -17.268558037996229 ], [ 123.859344517106621, -17.069035332917252 ], [ 123.503242222183275, -16.596506036040367 ], [ 123.817073195491929, -16.111316013251994 ], [ 124.258286574399875, -16.327943617419564 ], [ 124.379726190285822, -15.567059828353976 ], [ 124.926152785340065, -15.075100192935324 ], [ 125.167275018413903, -14.680395603090005 ], [ 125.670086704613851, -14.510070082256021 ], [ 125.685796340030521, -14.230655612853838 ], [ 126.12514936737611, -14.347340996968953 ], [ 126.142822707219892, -14.095986830301214 ], [ 126.582589146023764, -13.952791436420412 ], [ 127.065867140817346, -13.817967624570926 ], [ 127.804633416861947, -14.276906019755046 ], [ 128.359689976108967, -14.869169610252257 ], [ 128.985543247595928, -14.875990899314743 ], [ 129.621473423379626, -14.969783623924556 ], [ 129.409600050983016, -14.420669854391036 ], [ 129.888640578328619, -13.618703301653483 ], [ 130.339465773642956, -13.357375583553477 ], [ 130.183506300986011, -13.107520033422304 ], [ 130.617795037966999, -12.536392103732467 ], [ 131.223494500860028, -12.183648776908115 ], [ 131.735091180549517, -12.302452894747162 ], [ 132.575298293183124, -12.114040622611014 ], [ 132.55721154188106, -11.603012383676685 ], [ 131.824698114143672, -11.273781833545101 ], [ 132.357223748911423, -11.128519382372644 ], [ 133.019560581596437, -11.376411228076847 ], [ 133.550845981989056, -11.786515394745138 ], [ 134.393068475482011, -12.042365411022175 ], [ 134.67863244032705, -11.941182956594702 ], [ 135.298491245668032, -12.248606052299053 ], [ 135.882693312727639, -11.962266940969798 ], [ 136.258380975489473, -12.049341729381609 ], [ 136.492475213771655, -11.857208754120393 ], [ 136.951620314685016, -12.351958916882737 ], [ 136.685124953355768, -12.887223402562057 ], [ 136.305406528875125, -13.291229750219898 ], [ 135.961758254134139, -13.324509372615893 ], [ 136.077616815332561, -13.724278252825783 ], [ 135.783836297753254, -14.223989353088214 ], [ 135.428664178611228, -14.7154322241839 ], [ 135.500184360903205, -14.997740573794431 ], [ 136.295174595281395, -15.550264987859123 ], [ 137.065360142159506, -15.870762220933358 ], [ 137.580470819244823, -16.215082289294088 ], [ 138.303217401278999, -16.807604261952662 ], [ 138.585164015863398, -16.806622409739177 ], [ 139.108542922115504, -17.062679131745369 ], [ 139.260574985918225, -17.371600843986187 ], [ 140.215245396078302, -17.710804945550066 ], [ 140.87546349503927, -17.369068698803943 ], [ 141.071110467696286, -16.832047214426723 ], [ 141.274095493738827, -16.388870131091608 ], [ 141.398222284103809, -15.840531508042588 ], [ 141.702183058844668, -15.044921156476931 ], [ 141.563380161708693, -14.56133310308951 ], [ 141.635520461188122, -14.270394789286286 ], [ 141.519868605718983, -13.698078301653808 ], [ 141.650920038011037, -12.944687595270565 ], [ 141.842691278246235, -12.74154753993119 ], [ 141.686990187750808, -12.407614434461138 ], [ 141.928629185147571, -11.877465915578782 ], [ 142.118488397388006, -11.328042087451621 ], [ 142.143706496346368, -11.042736504768143 ], [ 142.515260044524979, -10.668185723516643 ], [ 142.797310011974076, -11.157354831591519 ], [ 142.866763136974299, -11.784706719614931 ], [ 143.115946893485699, -11.905629571177911 ], [ 143.158631626558787, -12.325655612846191 ], [ 143.522123651299893, -12.834358412327433 ], [ 143.597157830987697, -13.400422051652598 ], [ 143.561811151299963, -13.763655694232213 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Austria", "iso_a2": "AT" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 16.979666782304037, 48.123497015976305 ], [ 16.903754103267261, 47.714865627628328 ], [ 16.340584344150415, 47.71290192320123 ], [ 16.534267612380376, 47.496170966169117 ], [ 16.202298211337364, 46.852385972676963 ], [ 16.011663852612656, 46.683610744811702 ], [ 15.137091912504985, 46.65870270444703 ], [ 14.632471551174829, 46.431817328469549 ], [ 13.806475457421527, 46.509306138691215 ], [ 12.376485223040817, 46.76755910906985 ], [ 12.153088006243054, 47.115393174826451 ], [ 11.164827915093269, 46.941579494812729 ], [ 11.048555942436536, 46.751358547546339 ], [ 10.442701450246631, 46.893546250997431 ], [ 9.932448357796659, 46.920728054382963 ], [ 9.479969516649021, 47.102809963563374 ], [ 9.632931756232978, 47.347601223329988 ], [ 9.59422610844635, 47.52505809182027 ], [ 9.89606814946319, 47.580196845075704 ], [ 10.402083774465211, 47.302487697939164 ], [ 10.544504021861627, 47.566399237653769 ], [ 11.426414015354737, 47.523766181012974 ], [ 12.141357456112788, 47.703083401065776 ], [ 12.620759718484493, 47.672387600284409 ], [ 12.932626987365948, 47.467645575543997 ], [ 13.025851271220491, 47.637583523135831 ], [ 12.884102817443903, 48.289145819687917 ], [ 13.243357374737, 48.416114813829054 ], [ 13.595945672264437, 48.877171942737149 ], [ 14.338897739324722, 48.555305284207208 ], [ 14.901447381254057, 48.964401760445824 ], [ 15.253415561593982, 49.039074205107582 ], [ 16.029647251050221, 48.73389903420793 ], [ 16.499282667718774, 48.785808010445109 ], [ 16.960288120194576, 48.5969823268506 ], [ 16.879982944413001, 48.47001333270947 ], [ 16.979666782304037, 48.123497015976305 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Azerbaijan", "iso_a2": "AZ" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 45.001987339056797, 39.740003567049598 ], [ 45.298144972521442, 39.471751207022436 ], [ 45.739978468617011, 39.473999131827156 ], [ 45.735379266143099, 39.3197191432198 ], [ 46.143623081248819, 38.741201483712217 ], [ 45.457721795438744, 38.874139105783115 ], [ 44.952688022650278, 39.335764675446427 ], [ 44.793989699082005, 39.713002631177034 ], [ 45.001987339056797, 39.740003567049598 ] ] ], [ [ [ 47.373315464066224, 41.219732367511256 ], [ 47.815665724484717, 41.151416124021353 ], [ 47.98728315612604, 41.40581920019423 ], [ 48.58435265482629, 41.808869533854676 ], [ 49.110263706260668, 41.282286688800525 ], [ 49.618914829309603, 40.572924302729973 ], [ 50.0848295428531, 40.526157131505784 ], [ 50.392821079312711, 40.256561184239104 ], [ 49.569202101444802, 40.176100979160708 ], [ 49.395259230350433, 39.399481716462248 ], [ 49.223228387250714, 39.049218858387917 ], [ 48.856532423707591, 38.815486355131782 ], [ 48.883249139202547, 38.320245266262646 ], [ 48.634375441284845, 38.270377509100939 ], [ 48.010744256386516, 38.794014797514535 ], [ 48.355529412637935, 39.288764960276893 ], [ 48.06009524922527, 39.582235419262446 ], [ 47.685079380083124, 39.508363959301192 ], [ 46.505719842317973, 38.770605373686266 ], [ 46.483498976432458, 39.464154771475535 ], [ 46.034534132680704, 39.628020738273051 ], [ 45.610012241402927, 39.899993801425182 ], [ 45.891907179555147, 40.218475653639985 ], [ 45.35917483905817, 40.561503811193489 ], [ 45.560351189970476, 40.812289537105954 ], [ 45.179495883979399, 40.985353908851437 ], [ 44.972480096218163, 41.24812856705563 ], [ 45.217426385281641, 41.411451931314048 ], [ 45.962600538930445, 41.123872585609803 ], [ 46.501637404166985, 41.064444688474111 ], [ 46.637908156120574, 41.181672675128226 ], [ 46.145431756378997, 41.722802435872637 ], [ 46.404950799348825, 41.860675157227348 ], [ 46.686070591016659, 41.827137152669906 ], [ 47.373315464066224, 41.219732367511256 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Burundi", "iso_a2": "BI" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 29.339997592900346, -4.499983412294092 ], [ 29.276383904749053, -3.293907159034063 ], [ 29.024926385216787, -2.839257907730158 ], [ 29.632176141078588, -2.917857761246097 ], [ 29.938359002407939, -2.348486830254238 ], [ 30.469696079232989, -2.413857517103459 ], [ 30.527677036264464, -2.807631931167535 ], [ 30.743012729624699, -3.034284763199686 ], [ 30.752262811004954, -3.35932952231557 ], [ 30.505559523243566, -3.568567396665365 ], [ 30.11633263522117, -4.090137627787243 ], [ 29.753512404099922, -4.452389418153281 ], [ 29.339997592900346, -4.499983412294092 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Belgium", "iso_a2": "BE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 3.314971144228537, 51.345780951536085 ], [ 4.047071160507528, 51.26725861266857 ], [ 4.973991326526914, 51.475023708698131 ], [ 5.606975945670001, 51.037298488969782 ], [ 6.15665815595878, 50.803721015010581 ], [ 6.043073357781111, 50.128051662794235 ], [ 5.782417433300907, 50.09032786722122 ], [ 5.674051954784829, 49.529483547557504 ], [ 4.79922163251581, 49.985373033236385 ], [ 4.286022983425084, 49.907496649772554 ], [ 3.588184441755686, 50.378992418003577 ], [ 3.123251580425801, 50.780363267614575 ], [ 2.658422071960274, 50.796848049515745 ], [ 2.513573032246143, 51.148506171261829 ], [ 3.314971144228537, 51.345780951536085 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Benin", "iso_a2": "BJ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 2.691701694356254, 6.258817246928629 ], [ 1.865240512712319, 6.142157701029731 ], [ 1.618950636409238, 6.832038072126238 ], [ 1.664477573258381, 9.128590399609379 ], [ 1.46304284018467, 9.334624335157088 ], [ 1.425060662450136, 9.825395412633 ], [ 1.077795037448738, 10.175606594275024 ], [ 0.772335646171484, 10.470808213742359 ], [ 0.899563022474069, 10.99733938236426 ], [ 1.243469679376489, 11.110510769083461 ], [ 1.447178175471066, 11.547719224488858 ], [ 1.935985548519881, 11.641150214072553 ], [ 2.154473504249921, 11.940150051313339 ], [ 2.49016360841793, 12.233052069543675 ], [ 2.848643019226671, 12.235635891158267 ], [ 3.611180454125559, 11.660167141155968 ], [ 3.572216424177469, 11.32793935795152 ], [ 3.797112257511714, 10.734745591673105 ], [ 3.600070021182802, 10.332186184119408 ], [ 3.705438266625919, 10.063210354040208 ], [ 3.220351596702101, 9.444152533399702 ], [ 2.912308383810256, 9.137607937044322 ], [ 2.723792758809509, 8.506845404489709 ], [ 2.74906253420022, 7.870734361192888 ], [ 2.691701694356254, 6.258817246928629 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Burkina Faso", "iso_a2": "BF" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -2.827496303712707, 9.642460842319778 ], [ -3.511898972986273, 9.90032623945622 ], [ -3.980449184576685, 9.8623440617217 ], [ -4.330246954760383, 9.610834865757141 ], [ -4.779883592131966, 9.821984768101743 ], [ -4.954653286143099, 10.152713934769736 ], [ -5.404341599946974, 10.370736802609146 ], [ -5.470564947929006, 10.951269842976048 ], [ -5.197842576508648, 11.37514577885014 ], [ -5.220941941743121, 11.713858954307227 ], [ -4.427166103523803, 12.542645575404295 ], [ -4.28040503581488, 13.228443508349741 ], [ -4.006390753587226, 13.472485459848116 ], [ -3.522802700199861, 13.337661647998615 ], [ -3.10370683431276, 13.541266791228594 ], [ -2.967694464520577, 13.79815033615151 ], [ -2.191824510090385, 14.246417548067356 ], [ -2.001035122068771, 14.559008287000893 ], [ -1.066363491205664, 14.973815009007765 ], [ -0.515854458000348, 15.116157741755728 ], [ -0.26625729003058, 14.924308986872148 ], [ 0.374892205414682, 14.92890818934613 ], [ 0.295646396495101, 14.444234930880654 ], [ 0.429927605805517, 13.988733018443924 ], [ 0.993045688490071, 13.335749620003824 ], [ 1.024103224297477, 12.851825669806574 ], [ 2.177107781593776, 12.625017808477535 ], [ 2.154473504249921, 11.940150051313339 ], [ 1.935985548519881, 11.641150214072553 ], [ 1.447178175471066, 11.547719224488858 ], [ 1.243469679376489, 11.110510769083461 ], [ 0.899563022474069, 10.99733938236426 ], [ 0.023802524423701, 11.018681748900804 ], [ -0.438701544588582, 11.098340969278722 ], [ -0.761575893548183, 10.936929633015055 ], [ -1.203357713211432, 11.009819240762738 ], [ -2.940409308270461, 10.962690334512558 ], [ -2.963896246747112, 10.395334784380083 ], [ -2.827496303712707, 9.642460842319778 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Bangladesh", "iso_a2": "BD" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 92.672720981825563, 22.041238918541254 ], [ 92.65225711463799, 21.324047552978485 ], [ 92.303234490938678, 21.475485337809818 ], [ 92.36855350135562, 20.670883287025347 ], [ 92.082886183646139, 21.19219513598577 ], [ 92.02521528520839, 21.701569729086767 ], [ 91.834890985077436, 22.182935695885565 ], [ 91.41708702999766, 22.765019029221222 ], [ 90.496006300827275, 22.805016587815128 ], [ 90.586956821660976, 22.392793687422866 ], [ 90.272970819055558, 21.836367702720111 ], [ 89.847467075564282, 22.039146023033425 ], [ 89.702049595094934, 21.857115790285306 ], [ 89.418862746135488, 21.966178900637299 ], [ 89.031961297566227, 22.055708319582976 ], [ 88.876311883503092, 22.87914642993783 ], [ 88.529769728553788, 23.631141872649167 ], [ 88.699940220090923, 24.23371491138856 ], [ 88.084422235062419, 24.501657212821925 ], [ 88.306372511756024, 24.866079413344206 ], [ 88.931553989623083, 25.238692328384776 ], [ 88.209789259802506, 25.768065700782714 ], [ 88.563049350949768, 26.446525580342723 ], [ 89.35509402868729, 26.014407253518073 ], [ 89.832480910199621, 25.965082098895479 ], [ 89.920692580121852, 25.269749864192178 ], [ 90.872210727912119, 25.132600612889547 ], [ 91.79959598182208, 25.147431748957317 ], [ 92.376201613334814, 24.976692816664965 ], [ 91.915092807994426, 24.130413723237112 ], [ 91.467729933643682, 24.072639471934792 ], [ 91.158963250699728, 23.503526923104388 ], [ 91.706475050832111, 22.985263983649187 ], [ 91.869927606171316, 23.624346421802784 ], [ 92.146034783906813, 23.627498684172593 ], [ 92.672720981825563, 22.041238918541254 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Bulgaria", "iso_a2": "BG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 22.657149692482989, 44.234923000661283 ], [ 22.944832391051847, 43.82378530534713 ], [ 23.332302280376325, 43.897010809904714 ], [ 24.100679152124172, 43.741051337247853 ], [ 25.569271681426926, 43.688444729174719 ], [ 26.065158725699746, 43.943493760751267 ], [ 27.242399529740908, 44.175986029632405 ], [ 27.970107049275075, 43.812468166675217 ], [ 28.558081495891997, 43.707461656258133 ], [ 28.039095086384719, 43.293171698574184 ], [ 27.673897739378049, 42.577892361006221 ], [ 27.99672041190539, 42.007358710287789 ], [ 27.13573937349048, 42.141484890301342 ], [ 26.1170418637208, 41.826904608724561 ], [ 26.106138136507212, 41.32889883072778 ], [ 25.197201368925448, 41.23448598893053 ], [ 24.492644891058035, 41.583896185872035 ], [ 23.692073601992348, 41.309080918943856 ], [ 22.952377150166452, 41.337993882811148 ], [ 22.881373732197432, 41.999297186850256 ], [ 22.380525750424592, 42.320259507815088 ], [ 22.545011834409621, 42.46136200618804 ], [ 22.43659467946128, 42.580321153323936 ], [ 22.604801466571331, 42.898518785161144 ], [ 22.986018507588483, 43.211161200526966 ], [ 22.50015669118028, 43.642814439460992 ], [ 22.410446404721597, 44.008063462899955 ], [ 22.657149692482989, 44.234923000661283 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Bahamas", "iso_a2": "BS" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -77.53466, 23.75975 ], [ -77.78, 23.71 ], [ -78.03405, 24.28615 ], [ -78.40848, 24.57564 ], [ -78.19087, 25.2103 ], [ -77.89, 25.17 ], [ -77.54, 24.34 ], [ -77.53466, 23.75975 ] ] ], [ [ [ -77.82, 26.58 ], [ -78.91, 26.42 ], [ -78.98, 26.79 ], [ -78.51, 26.87 ], [ -77.85, 26.84 ], [ -77.82, 26.58 ] ] ], [ [ [ -77.0, 26.59 ], [ -77.17255, 25.87918 ], [ -77.35641, 26.00735 ], [ -77.34, 26.53 ], [ -77.78802, 26.92516 ], [ -77.79, 27.04 ], [ -77.0, 26.59 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Bosnia and Herz.", "iso_a2": "BA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 19.005486281010121, 44.860233669609158 ], [ 19.36803, 44.863 ], [ 19.11761, 44.423070000000109 ], [ 19.59976, 44.03847 ], [ 19.454, 43.568100000000129 ], [ 19.21852, 43.52384 ], [ 19.03165, 43.43253 ], [ 18.70648, 43.20011 ], [ 18.56, 42.65 ], [ 17.674921502358984, 43.02856252702361 ], [ 17.297373488034452, 43.446340643887368 ], [ 16.916156447017329, 43.66772247982567 ], [ 16.456442905348865, 44.041239732431279 ], [ 16.239660271884532, 44.351143296885709 ], [ 15.750026075918981, 44.818711656262565 ], [ 15.959367303133376, 45.233776760430942 ], [ 16.318156772535872, 45.004126695325908 ], [ 16.534939406000206, 45.211607570977719 ], [ 17.002146030351014, 45.233776760430942 ], [ 17.861783481526402, 45.067740383477144 ], [ 18.553214145591653, 45.081589667331457 ], [ 19.005486281010121, 44.860233669609158 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Belarus", "iso_a2": "BY" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 23.484127638449849, 53.912497667041137 ], [ 24.450683628037037, 53.905702216194754 ], [ 25.536353794056993, 54.282423407602529 ], [ 25.768432651479799, 54.846962592175089 ], [ 26.588279249790389, 55.167175604871673 ], [ 26.494331495883756, 55.615106919977634 ], [ 27.102459751094528, 55.783313707087686 ], [ 28.176709425577997, 56.169129950578814 ], [ 29.229513380660308, 55.918344224666363 ], [ 29.371571893030673, 55.670090643936184 ], [ 29.896294386522356, 55.789463202530413 ], [ 30.87390913262001, 55.550976467503411 ], [ 30.971835971813135, 55.081547756564042 ], [ 30.757533807098721, 54.811770941784317 ], [ 31.38447228366374, 54.157056382862436 ], [ 31.791424187962239, 53.974638576872124 ], [ 31.731272820774507, 53.794029446012019 ], [ 32.405598585751164, 53.618045355842042 ], [ 32.693643019346041, 53.35142080343212 ], [ 32.304519484188233, 53.13272614197291 ], [ 31.497643670382931, 53.167426866256903 ], [ 31.305200636528014, 53.073995876673209 ], [ 31.540018344862261, 52.742052313846358 ], [ 31.785998162571587, 52.101677964885454 ], [ 30.927549269338982, 52.04235342061439 ], [ 30.619454380014844, 51.822806098022376 ], [ 30.555117221811457, 51.319503485715657 ], [ 30.157363722460897, 51.416138414101468 ], [ 29.254938185347925, 51.368234361366895 ], [ 28.992835320763533, 51.602044379271476 ], [ 28.617612745892249, 51.427713934934843 ], [ 28.241615024536571, 51.572227077839067 ], [ 27.454066196408434, 51.592303371784467 ], [ 26.337958611768556, 51.832288723347929 ], [ 25.327787713327009, 51.910656032918553 ], [ 24.553106316839518, 51.888461005249184 ], [ 24.00507775238421, 51.617443956094462 ], [ 23.527070753684374, 51.57845408793024 ], [ 23.508002150168693, 52.023646552124731 ], [ 23.199493849386187, 52.486977444053672 ], [ 23.799198846133379, 52.691099351606567 ], [ 23.804934930117781, 53.089731350306074 ], [ 23.527535841575002, 53.470121568406555 ], [ 23.484127638449849, 53.912497667041137 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Belize", "iso_a2": "BZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -89.143080410503316, 17.808318996649319 ], [ -89.150909389995533, 17.955467637600421 ], [ -89.029857347351822, 18.001511338772488 ], [ -88.848343878926613, 17.883198147040233 ], [ -88.490122850279349, 18.486830552641607 ], [ -88.300031094093697, 18.499982204659901 ], [ -88.296336229184817, 18.353272813383271 ], [ -88.106812913754382, 18.348673610909287 ], [ -88.123478563168504, 18.07667470954101 ], [ -88.285354987322805, 17.644142971258034 ], [ -88.197866787452654, 17.489475409408456 ], [ -88.302640753924436, 17.131693630435663 ], [ -88.239517991879907, 17.036066392479555 ], [ -88.355428229510565, 16.530774237529627 ], [ -88.55182451043585, 16.265467434143147 ], [ -88.732433641295941, 16.233634751851355 ], [ -88.930612759135272, 15.887273464415076 ], [ -89.229121670269279, 15.886937567605171 ], [ -89.150806037130948, 17.015576687075836 ], [ -89.143080410503316, 17.808318996649319 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Bolivia", "iso_a2": "BO" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -62.846468471921561, -22.034985446869449 ], [ -63.986838141522476, -21.99364430103595 ], [ -64.377021043542257, -22.79809132252354 ], [ -64.964892137294612, -22.075861504812327 ], [ -66.273339402924847, -21.83231047942072 ], [ -67.106673550063604, -22.735924574476417 ], [ -67.828179897722734, -22.872918796482175 ], [ -68.21991309271128, -21.494346612231865 ], [ -68.757167121033746, -20.372657972904463 ], [ -68.442225104430918, -19.405068454671429 ], [ -68.966818406841867, -18.981683444904107 ], [ -69.100246955019486, -18.260125420812678 ], [ -69.59042375352405, -17.580011895419332 ], [ -68.959635382753305, -16.50069793057127 ], [ -69.389764166934711, -15.660129082911652 ], [ -69.160346645774951, -15.323973890853019 ], [ -69.339534674747014, -14.953195489158832 ], [ -68.948886684836594, -14.453639418193283 ], [ -68.92922380234954, -13.602683607643009 ], [ -68.88007951523997, -12.899729099176653 ], [ -68.665079718689626, -12.561300144097173 ], [ -69.529678107364958, -10.951734307502194 ], [ -68.786157599549483, -11.03638030359628 ], [ -68.271253628193264, -11.014521172736821 ], [ -68.048192308205387, -10.712059014532485 ], [ -67.173801235610739, -10.306812432499612 ], [ -66.646908331962806, -9.931331475466862 ], [ -65.338435228116424, -9.761987806846392 ], [ -65.444837002205389, -10.511451104375432 ], [ -65.321898769783019, -10.895872084194679 ], [ -65.402281460213032, -11.566270440317155 ], [ -64.316352912031604, -12.461978041232193 ], [ -63.196498786050569, -12.627032565972435 ], [ -62.803060268796386, -13.000653171442686 ], [ -62.127080857986385, -13.198780612849724 ], [ -61.713204311760776, -13.489202162330052 ], [ -61.084121263255653, -13.479383640194598 ], [ -60.503304002511136, -13.775954685117659 ], [ -60.459198167550028, -14.354007256734555 ], [ -60.26432634137737, -14.645979099183641 ], [ -60.251148851142936, -15.07721892665932 ], [ -60.542965664295153, -15.093910414289596 ], [ -60.158389655179036, -16.258283786690086 ], [ -58.24121985536668, -16.299573256091293 ], [ -58.388058437724041, -16.877109063385276 ], [ -58.280804002502251, -17.271710300366017 ], [ -57.734558274961003, -17.552468357007768 ], [ -57.498371141170992, -18.174187513911292 ], [ -57.676008877174311, -18.961839694904029 ], [ -57.949997321185826, -19.400004164306822 ], [ -57.853801642474508, -19.969995212486189 ], [ -58.166392381408045, -20.176700941653678 ], [ -58.183471442280506, -19.868399346600363 ], [ -59.115042487206111, -19.356906019775401 ], [ -60.043564622626491, -19.342746677327426 ], [ -61.786326463453769, -19.633736667562964 ], [ -62.265961269770798, -20.513734633061276 ], [ -62.291179368729225, -21.051634616787393 ], [ -62.685057135657885, -22.249029229422387 ], [ -62.846468471921561, -22.034985446869449 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Brazil", "iso_a2": "BR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -57.625133429582959, -30.216294854454262 ], [ -56.290899624239081, -28.852760512000895 ], [ -55.162286342984572, -27.881915378533463 ], [ -54.490725267135524, -27.474756768505792 ], [ -53.648735317587892, -26.92347258881609 ], [ -53.628348965048744, -26.124865004177472 ], [ -54.13004960795439, -25.547639255477254 ], [ -54.625290696823576, -25.739255466415514 ], [ -54.428946092330591, -25.162184747012166 ], [ -54.293476325077449, -24.570799655863965 ], [ -54.292959560754518, -24.021014092710729 ], [ -54.652834235235133, -23.839578138933959 ], [ -55.02790178080955, -24.001273695575229 ], [ -55.400747239795422, -23.956935316668805 ], [ -55.517639329639636, -23.571997572526637 ], [ -55.610682745981144, -22.655619398694846 ], [ -55.797958136606908, -22.356929620047822 ], [ -56.473317430229393, -22.086300144135283 ], [ -56.881509568902899, -22.282153822521479 ], [ -57.937155727761294, -22.090175876557172 ], [ -57.8706739976178, -20.732687676681952 ], [ -58.166392381408045, -20.176700941653678 ], [ -57.853801642474508, -19.969995212486189 ], [ -57.949997321185826, -19.400004164306822 ], [ -57.676008877174311, -18.961839694904029 ], [ -57.498371141170992, -18.174187513911292 ], [ -57.734558274961003, -17.552468357007768 ], [ -58.280804002502251, -17.271710300366017 ], [ -58.388058437724041, -16.877109063385276 ], [ -58.24121985536668, -16.299573256091293 ], [ -60.158389655179036, -16.258283786690086 ], [ -60.542965664295153, -15.093910414289596 ], [ -60.251148851142936, -15.07721892665932 ], [ -60.26432634137737, -14.645979099183641 ], [ -60.459198167550028, -14.354007256734555 ], [ -60.503304002511136, -13.775954685117659 ], [ -61.084121263255653, -13.479383640194598 ], [ -61.713204311760776, -13.489202162330052 ], [ -62.127080857986385, -13.198780612849724 ], [ -62.803060268796386, -13.000653171442686 ], [ -63.196498786050569, -12.627032565972435 ], [ -64.316352912031604, -12.461978041232193 ], [ -65.402281460213032, -11.566270440317155 ], [ -65.321898769783019, -10.895872084194679 ], [ -65.444837002205389, -10.511451104375432 ], [ -65.338435228116424, -9.761987806846392 ], [ -66.646908331962806, -9.931331475466862 ], [ -67.173801235610739, -10.306812432499612 ], [ -68.048192308205387, -10.712059014532485 ], [ -68.271253628193264, -11.014521172736821 ], [ -68.786157599549483, -11.03638030359628 ], [ -69.529678107364958, -10.951734307502194 ], [ -70.093752204046893, -11.123971856331012 ], [ -70.548685675728407, -11.009146823778465 ], [ -70.481893886991173, -9.490118096558845 ], [ -71.302412278921537, -10.079436130415374 ], [ -72.18489071316985, -10.053597914269432 ], [ -72.563033006465645, -9.520193780152717 ], [ -73.226713426390162, -9.462212823121234 ], [ -73.015382656532552, -9.032833347208062 ], [ -73.571059332967067, -8.424446709835834 ], [ -73.987235480429661, -7.523829847853065 ], [ -73.723401455363501, -7.340998630404414 ], [ -73.724486660441642, -6.91859547285064 ], [ -73.120027431923603, -6.629930922068239 ], [ -73.21971126981461, -6.089188734566078 ], [ -72.9645072089412, -5.741251315944893 ], [ -72.891927659787257, -5.274561455916981 ], [ -71.748405727816547, -4.593982842633011 ], [ -70.928843349883579, -4.401591485210368 ], [ -70.794768846302304, -4.251264743673303 ], [ -69.893635219996625, -4.298186944194327 ], [ -69.444101935489613, -1.556287123219818 ], [ -69.420485805932231, -1.122618503426409 ], [ -69.5770653957766, -0.549991957200163 ], [ -70.020655890570055, -0.185156345219539 ], [ -70.015565761989308, 0.541414292804205 ], [ -69.452396002872462, 0.706158758950693 ], [ -69.252434048119056, 0.602650865070075 ], [ -69.21863766140018, 0.985676581217433 ], [ -69.80459672715773, 1.089081122233466 ], [ -69.816973232691623, 1.714805202639624 ], [ -67.868565029558837, 1.692455145673392 ], [ -67.537810024674698, 2.03716278727633 ], [ -67.259997524673594, 1.719998684084956 ], [ -67.065048183852497, 1.130112209473225 ], [ -66.87632585312258, 1.253360500489336 ], [ -66.325765143484958, 0.724452215982012 ], [ -65.548267381437569, 0.78925446207603 ], [ -65.354713304288367, 1.0952822941085 ], [ -64.611011928959869, 1.328730576987042 ], [ -64.199305792890513, 1.49285492594602 ], [ -64.083085496666087, 1.91636912679408 ], [ -63.368788011311665, 2.200899562993129 ], [ -63.422867397705119, 2.411067613124175 ], [ -64.269999152265797, 2.497005520025567 ], [ -64.408827887617917, 3.126786200366624 ], [ -64.368494432214106, 3.797210394705246 ], [ -64.816064012294021, 4.056445217297423 ], [ -64.628659430587547, 4.14848094320925 ], [ -63.888342861574159, 4.020530096854571 ], [ -63.093197597899106, 3.770571193858785 ], [ -62.804533047116706, 4.006965033377952 ], [ -62.085429653559132, 4.162123521334308 ], [ -60.966893276601539, 4.536467596856639 ], [ -60.601179165271944, 4.91809804933213 ], [ -60.733574184803722, 5.200277207861901 ], [ -60.213683437731333, 5.244486395687602 ], [ -59.980958624904886, 5.014061184098139 ], [ -60.11100236676738, 4.574966538914083 ], [ -59.767405768458715, 4.423502915866607 ], [ -59.538039923731233, 3.958802598481938 ], [ -59.815413174057866, 3.606498521332085 ], [ -59.974524909084558, 2.755232652188056 ], [ -59.718545701726747, 2.24963043864436 ], [ -59.646043667221257, 1.786893825686789 ], [ -59.030861579002647, 1.317697658692722 ], [ -58.540012986878295, 1.268088283692521 ], [ -58.429477098205965, 1.463941962078721 ], [ -58.113449876525017, 1.507195135907025 ], [ -57.660971035377372, 1.682584947105639 ], [ -57.335822923396904, 1.948537705895759 ], [ -56.782704230360828, 1.863710842288654 ], [ -56.539385748914555, 1.899522609866921 ], [ -55.995698004771754, 1.817667141116601 ], [ -55.905600145070885, 2.02199575439866 ], [ -56.073341844290297, 2.220794989425499 ], [ -55.973322109589375, 2.510363877773017 ], [ -55.569755011605999, 2.421506252447131 ], [ -55.097587449755139, 2.523748073736613 ], [ -54.524754197799716, 2.311848863123785 ], [ -54.08806250671725, 2.105556545414629 ], [ -53.778520677288917, 2.376702785650082 ], [ -53.554839240113544, 2.334896551925951 ], [ -53.418465135295307, 2.053389187015981 ], [ -52.939657151894956, 2.124857692875636 ], [ -52.556424730018421, 2.504705308437053 ], [ -52.249337531123956, 3.241094468596245 ], [ -51.657797410678889, 4.156232408053029 ], [ -51.317146369010857, 4.203490505383954 ], [ -51.069771287629656, 3.650397650564031 ], [ -50.508875291533656, 1.901563828942457 ], [ -49.974075893745059, 1.736483465986069 ], [ -49.947100796088712, 1.046189683431223 ], [ -50.699251268096916, 0.222984117021682 ], [ -50.388210822132137, -0.078444512536819 ], [ -48.62056677915632, -0.235489190271821 ], [ -48.584496629416591, -1.237805271005001 ], [ -47.824956427590635, -0.5816179337628 ], [ -46.566583624851226, -0.941027520352776 ], [ -44.905703090990414, -1.551739597178134 ], [ -44.417619187993665, -2.137750339367976 ], [ -44.581588507655781, -2.691308282078524 ], [ -43.418791266440195, -2.383110039889793 ], [ -41.472656826328247, -2.912018324397116 ], [ -39.978665330554037, -2.873054294449041 ], [ -38.500383470196567, -3.700652357603396 ], [ -37.2232521225352, -4.820945733258917 ], [ -36.452937384576387, -5.109403578312154 ], [ -35.597795783010469, -5.149504489770649 ], [ -35.23538896334756, -5.464937432480247 ], [ -34.896029832486832, -6.738193047719711 ], [ -34.729993455533034, -7.343220716992967 ], [ -35.128212042774223, -8.996401462442286 ], [ -35.636966518687714, -9.649281508017815 ], [ -37.046518724096998, -11.040721123908803 ], [ -37.683611619607362, -12.171194756725823 ], [ -38.423876512188443, -13.038118584854288 ], [ -38.673887091616521, -13.057652276260619 ], [ -38.953275722802545, -13.793369642800023 ], [ -38.882298143049653, -15.667053724838768 ], [ -39.161092495264313, -17.208406670808472 ], [ -39.267339240056401, -17.867746270420483 ], [ -39.583521491034233, -18.262295830968938 ], [ -39.760823330227637, -19.599113457927409 ], [ -40.774740770010339, -20.904511814052423 ], [ -40.944756232250612, -21.937316989837811 ], [ -41.754164191238225, -22.370675551037458 ], [ -41.98828426773656, -22.970070489190896 ], [ -43.074703742024752, -22.967693373305469 ], [ -44.647811855637812, -23.351959323827842 ], [ -45.352135789559917, -23.796841729428582 ], [ -46.472093268405537, -24.088968601174543 ], [ -47.648972337420659, -24.885199069927722 ], [ -48.495458136577703, -25.877024834905654 ], [ -48.64100480812774, -26.623697605090932 ], [ -48.474735887228654, -27.175911960561891 ], [ -48.661520351747626, -28.18613453543572 ], [ -48.8884574041574, -28.674115085567884 ], [ -49.587329474472675, -29.224469089476337 ], [ -50.696874152211485, -30.98446502047296 ], [ -51.576226162306156, -31.777698256153212 ], [ -52.256081305538046, -32.24536996839467 ], [ -52.712099982297694, -33.196578057591182 ], [ -53.373661668498244, -33.768377780900764 ], [ -53.650543992718099, -33.20200408298183 ], [ -53.209588995971544, -32.727666110974724 ], [ -53.787951626182192, -32.047242526987624 ], [ -54.572451544805119, -31.494511407193748 ], [ -55.601510179249345, -30.853878676071393 ], [ -55.973244594940937, -30.883075860316303 ], [ -56.976025763564735, -30.109686374636127 ], [ -57.625133429582959, -30.216294854454262 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Brunei", "iso_a2": "BN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 114.204016554828371, 4.525873928236805 ], [ 114.599961379048722, 4.900011298029966 ], [ 115.450710483869813, 5.447729803891534 ], [ 115.405700311343608, 4.955227565933839 ], [ 115.347460972150657, 4.316636053887009 ], [ 114.869557326315402, 4.348313706881925 ], [ 114.659595981913526, 4.007636826997754 ], [ 114.204016554828371, 4.525873928236805 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Bhutan", "iso_a2": "BT" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 91.696656528696678, 27.771741848251665 ], [ 92.103711785859744, 27.452614040633208 ], [ 92.033483514375092, 26.838310451763562 ], [ 91.217512648486434, 26.808648179628022 ], [ 90.373274774134075, 26.875724188742879 ], [ 89.744527622438852, 26.719402981059957 ], [ 88.83564253128938, 27.098966376243762 ], [ 88.814248488320558, 27.299315904239364 ], [ 89.475810174521115, 28.042758897406397 ], [ 90.015828891971182, 28.296438503527217 ], [ 90.730513950567797, 28.064953925075756 ], [ 91.258853794319919, 28.040614325466294 ], [ 91.696656528696678, 27.771741848251665 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Botswana", "iso_a2": "BW" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 25.649163445750162, -18.536025892818991 ], [ 25.850391473094732, -18.714412937090536 ], [ 26.164790887158485, -19.293085625894939 ], [ 27.296504754350508, -20.391519870690999 ], [ 27.724747348753255, -20.499058526290391 ], [ 27.727227817503259, -20.851801853114715 ], [ 28.021370070108617, -21.485975030200585 ], [ 28.794656202924216, -21.639454034107452 ], [ 29.43218834810904, -22.091312758067588 ], [ 28.017235955525251, -22.827753594659079 ], [ 27.119409620886245, -23.574323011979775 ], [ 26.786406691197413, -24.240690606383485 ], [ 26.485753208123299, -24.616326592713104 ], [ 25.941652052522159, -24.696373386333221 ], [ 25.76584882986521, -25.174845472923678 ], [ 25.664666375437719, -25.486816094669713 ], [ 25.025170525825786, -25.719670098576898 ], [ 24.211266717228796, -25.670215752873574 ], [ 23.73356977712271, -25.390129489851617 ], [ 23.312096795350186, -25.26868987396572 ], [ 22.824271274514899, -25.500458672794771 ], [ 22.579531691180591, -25.979447523708146 ], [ 22.105968865657868, -26.280256036079138 ], [ 21.605896030369394, -26.726533705351756 ], [ 20.889609002371738, -26.828542982695915 ], [ 20.66647016773544, -26.477453301704923 ], [ 20.758609246511838, -25.86813648855145 ], [ 20.165725538827189, -24.917961928000771 ], [ 19.895767856534434, -24.767790215760591 ], [ 19.895457797940679, -21.849156996347869 ], [ 20.88113406747587, -21.814327080983148 ], [ 20.910641310314535, -18.252218926672022 ], [ 21.655040317478978, -18.219146010005225 ], [ 23.196858351339301, -17.869038181227786 ], [ 23.579005568137717, -18.281261081620059 ], [ 24.217364536239213, -17.889347019118489 ], [ 24.520705193792537, -17.887124932529936 ], [ 25.084443393664571, -17.661815687737374 ], [ 25.264225701608012, -17.736539808831417 ], [ 25.649163445750162, -18.536025892818991 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Central African Rep.", "iso_a2": "CF" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 15.279460483469109, 7.421924546737969 ], [ 16.10623172370677, 7.497087917506505 ], [ 16.290561557691888, 7.754307359239306 ], [ 16.456184523187346, 7.734773667832968 ], [ 16.705988396886255, 7.508327541529979 ], [ 17.964929640380888, 7.890914008002866 ], [ 18.389554884523221, 8.281303615751824 ], [ 18.911021762780507, 8.630894680206353 ], [ 18.812009718509273, 8.982914536978598 ], [ 19.094008009526021, 9.07484691002584 ], [ 20.059685499764271, 9.012706000194854 ], [ 21.000868361096167, 9.475985215691509 ], [ 21.723821648859456, 10.567055568885976 ], [ 22.231129184668788, 10.97188873946051 ], [ 22.864165480244225, 11.142395127807546 ], [ 22.97754357269261, 10.71446259199854 ], [ 23.554304233502194, 10.089255275915308 ], [ 23.55724979014283, 9.681218166538684 ], [ 23.394779087017184, 9.265067857292223 ], [ 23.459012892355986, 8.954285793488893 ], [ 23.805813429466752, 8.666318874542426 ], [ 24.567369012152085, 8.229187933785468 ], [ 25.114932488716789, 7.825104071479174 ], [ 25.124130893664727, 7.500085150579437 ], [ 25.796647983511178, 6.979315904158071 ], [ 26.213418409945117, 6.546603298362072 ], [ 26.465909458123235, 5.94671743410187 ], [ 27.21340905122517, 5.550953477394557 ], [ 27.37422610851749, 5.233944403500061 ], [ 27.04406538260471, 5.127852688004836 ], [ 26.402760857862543, 5.150874538590871 ], [ 25.650455356557472, 5.256087754737123 ], [ 25.278798455514305, 5.170408229997192 ], [ 25.128833449003281, 4.92724477784779 ], [ 24.805028924262416, 4.89724660890235 ], [ 24.410531040146253, 5.10878408448913 ], [ 23.297213982850138, 4.609693101414223 ], [ 22.841479526468106, 4.710126247573484 ], [ 22.704123569436291, 4.633050848810157 ], [ 22.405123732195538, 4.029160061047321 ], [ 21.659122755630023, 4.22434194581372 ], [ 20.927591180106276, 4.322785549329737 ], [ 20.290679152108936, 4.691677761245288 ], [ 19.467783644293149, 5.03152781821278 ], [ 18.932312452884759, 4.709506130385975 ], [ 18.542982211997781, 4.201785183118318 ], [ 18.453065219809929, 3.504385891123349 ], [ 17.809900343505262, 3.56019643799857 ], [ 17.133042433346304, 3.728196519379452 ], [ 16.537058139724138, 3.198254706226279 ], [ 16.012852410555354, 2.267639675298085 ], [ 15.907380812247652, 2.557389431158612 ], [ 15.862732374747482, 3.013537298998983 ], [ 15.405395948964383, 3.33530060466434 ], [ 15.036219516671252, 3.851367295747124 ], [ 14.950953403389661, 4.210389309094921 ], [ 14.478372430080469, 4.732605495620447 ], [ 14.558935988023507, 5.03059764243153 ], [ 14.459407179429348, 5.4517605656103 ], [ 14.536560092841114, 6.22695872642069 ], [ 14.776545444404576, 6.408498033062045 ], [ 15.279460483469109, 7.421924546737969 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Canada", "iso_a2": "CA" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -63.6645, 46.55001 ], [ -62.9393, 46.41587 ], [ -62.01208, 46.44314 ], [ -62.50391, 46.03339 ], [ -62.87433, 45.96818 ], [ -64.1428, 46.39265 ], [ -64.39261, 46.72747 ], [ -64.01486, 47.03601 ], [ -63.6645, 46.55001 ] ] ], [ [ [ -61.8063, 49.10506 ], [ -62.29318, 49.08717 ], [ -63.58926, 49.40069 ], [ -64.51912, 49.87304 ], [ -64.17322, 49.95718 ], [ -62.85829, 49.70641 ], [ -61.835585, 49.28855 ], [ -61.8063, 49.10506 ] ] ], [ [ [ -123.510001587551159, 48.510010891303438 ], [ -124.012890788399503, 48.370846259141416 ], [ -125.655012777338371, 48.825004584338501 ], [ -125.954994466792769, 49.179995835967645 ], [ -126.850004435871881, 49.530000311880428 ], [ -127.029993449544421, 49.81499583597008 ], [ -128.059336304366241, 49.994959011426602 ], [ -128.444584107102173, 50.539137681676124 ], [ -128.358413656255436, 50.770648098343685 ], [ -127.308581096029897, 50.552573554071955 ], [ -126.695000977212317, 50.400903225295394 ], [ -125.755006673823203, 50.295018215529382 ], [ -125.415001587558805, 49.950000515332619 ], [ -124.920768189119343, 49.475274970083404 ], [ -123.922508708321018, 49.062483628935809 ], [ -123.510001587551159, 48.510010891303438 ] ] ], [ [ [ -56.134035814017125, 50.687009792679305 ], [ -56.795881720595276, 49.81230866149096 ], [ -56.143105027884303, 50.150117499382844 ], [ -55.471492275602941, 49.935815334668462 ], [ -55.822401089080927, 49.587128607779107 ], [ -54.935142584845664, 49.31301097268684 ], [ -54.473775397343786, 49.556691189159181 ], [ -53.476549445191324, 49.249138902374057 ], [ -53.78601375997124, 48.516780503933632 ], [ -53.086133999226263, 48.687803656603535 ], [ -52.958648240762244, 48.157164211614486 ], [ -52.648098720904187, 47.535548407575504 ], [ -53.069158291218343, 46.65549876564495 ], [ -53.521456264853043, 46.61829173439483 ], [ -54.178935512902541, 46.807065741557011 ], [ -53.961868659060485, 47.625207017601923 ], [ -54.240482143762137, 47.752279364607631 ], [ -55.400773078011497, 46.884993801453135 ], [ -55.997480841685842, 46.919720363953303 ], [ -55.291219041552779, 47.389562486350997 ], [ -56.250798712780522, 47.632545070987391 ], [ -57.325229254777099, 47.572807115258001 ], [ -59.266015184146767, 47.603347886742512 ], [ -59.419494188053704, 47.899453843774864 ], [ -58.796586473207412, 48.251525376979487 ], [ -59.231624518456528, 48.523188381537807 ], [ -58.391804979065228, 49.125580552764177 ], [ -57.358689744686046, 50.718274034215852 ], [ -56.738650071832012, 51.287438259478535 ], [ -55.870976935435294, 51.632094224649194 ], [ -55.406974249886616, 51.588272610065729 ], [ -55.600218268442092, 51.317074693397927 ], [ -56.134035814017125, 50.687009792679305 ] ] ], [ [ [ -133.180004041711697, 54.169975490935315 ], [ -132.71000788443132, 54.040009315423532 ], [ -131.749989584003288, 54.120004380909222 ], [ -132.049480347350993, 52.984621487024526 ], [ -131.179042521826602, 52.180432847698285 ], [ -131.577829549822923, 52.182370713909251 ], [ -132.180428426778548, 52.639707139692405 ], [ -132.549992432313871, 53.100014960332146 ], [ -133.054611178755522, 53.411468817755377 ], [ -133.239664482792705, 53.851080227262401 ], [ -133.180004041711697, 54.169975490935315 ] ] ], [ [ [ -79.26582, 62.158675 ], [ -79.65752, 61.63308 ], [ -80.09956, 61.7181 ], [ -80.36215, 62.01649 ], [ -80.31539, 62.085565 ], [ -79.92939, 62.3856 ], [ -79.52002, 62.36371 ], [ -79.26582, 62.158675 ] ] ], [ [ [ -81.89825, 62.7108 ], [ -83.06857, 62.15922 ], [ -83.77462, 62.18231 ], [ -83.99367, 62.4528 ], [ -83.25048, 62.91409 ], [ -81.87699, 62.90458 ], [ -81.89825, 62.7108 ] ] ], [ [ [ -85.161307949549865, 65.657284654392811 ], [ -84.975763719405961, 65.217518215588996 ], [ -84.464012010419509, 65.371772365980178 ], [ -83.882626308919754, 65.10961782496355 ], [ -82.787576870438784, 64.766693020274687 ], [ -81.642013719392537, 64.455135809986956 ], [ -81.553440314444259, 63.979609280037153 ], [ -80.817361212878865, 64.057485663501012 ], [ -80.103451300766608, 63.725981350348604 ], [ -80.991019863595682, 63.411246039474975 ], [ -82.547178107417011, 63.651722317145243 ], [ -83.108797573565056, 64.101875718839722 ], [ -84.100416632813875, 63.569711819098018 ], [ -85.523404710619019, 63.052379055424097 ], [ -85.866768764982368, 63.637252916103563 ], [ -87.221983201836736, 63.541238104905233 ], [ -86.352759772471273, 64.035833238370714 ], [ -86.224886440765147, 64.822916978608276 ], [ -85.883847825854872, 65.738778388117055 ], [ -85.161307949549865, 65.657284654392811 ] ] ], [ [ [ -75.86588, 67.14886 ], [ -76.98687, 67.09873 ], [ -77.2364, 67.58809 ], [ -76.81166, 68.14856 ], [ -75.89521, 68.28721 ], [ -75.1145, 68.01036 ], [ -75.10333, 67.58202 ], [ -75.21597, 67.44425 ], [ -75.86588, 67.14886 ] ] ], [ [ [ -95.647681203800516, 69.107690358321776 ], [ -96.269521203800593, 68.757040358321746 ], [ -97.617401203800569, 69.060030358321796 ], [ -98.431801203800518, 68.950700358321797 ], [ -99.797401203800533, 69.4000303583218 ], [ -98.917401203800551, 69.710030358321802 ], [ -98.218261203800495, 70.143540358321758 ], [ -97.157401203800561, 69.860030358321808 ], [ -96.557401203800538, 69.680030358321773 ], [ -96.257401203800526, 69.490030358321775 ], [ -95.647681203800516, 69.107690358321776 ] ] ], [ [ [ -90.5471, 69.49766 ], [ -90.55151, 68.47499 ], [ -89.21515, 69.25873 ], [ -88.01966, 68.61508 ], [ -88.31749, 67.87338 ], [ -87.35017, 67.19872 ], [ -86.30607, 67.92146 ], [ -85.57664, 68.78456 ], [ -85.52197, 69.88211 ], [ -84.10081, 69.80539 ], [ -82.62258, 69.65826 ], [ -81.28043, 69.16202 ], [ -81.2202, 68.66567 ], [ -81.96436, 68.13253 ], [ -81.25928, 67.59716 ], [ -81.38653, 67.11078 ], [ -83.34456, 66.41154 ], [ -84.73542, 66.2573 ], [ -85.76943, 66.55833 ], [ -86.0676, 66.05625 ], [ -87.03143, 65.21297 ], [ -87.32324, 64.77563 ], [ -88.48296, 64.09897 ], [ -89.91444, 64.03273 ], [ -90.70398, 63.61017 ], [ -90.77004, 62.96021 ], [ -91.93342, 62.83508 ], [ -93.15698, 62.02469 ], [ -94.24153, 60.89865 ], [ -94.62931, 60.11021 ], [ -94.6846, 58.94882 ], [ -93.21502, 58.78212 ], [ -92.76462, 57.84571 ], [ -92.29703, 57.08709 ], [ -90.89769, 57.28468 ], [ -89.03953, 56.85172 ], [ -88.03978, 56.47162 ], [ -87.32421, 55.99914 ], [ -86.07121, 55.72383 ], [ -85.01181, 55.3026 ], [ -83.36055, 55.24489 ], [ -82.27285, 55.14832 ], [ -82.4362, 54.28227 ], [ -82.12502, 53.27703 ], [ -81.40075, 52.15788 ], [ -79.91289, 51.20842 ], [ -79.14301, 51.53393 ], [ -78.60191, 52.56208 ], [ -79.12421, 54.14145 ], [ -79.82958, 54.66772 ], [ -78.22874, 55.13645 ], [ -77.0956, 55.83741 ], [ -76.54137, 56.53423 ], [ -76.62319, 57.20263 ], [ -77.30226, 58.05209 ], [ -78.51688, 58.80458 ], [ -77.33676, 59.85261 ], [ -77.77272, 60.75788 ], [ -78.10687, 62.31964 ], [ -77.41067, 62.55053 ], [ -75.69621, 62.2784 ], [ -74.6682, 62.18111 ], [ -73.83988, 62.4438 ], [ -72.90853, 62.10507 ], [ -71.67708, 61.52535 ], [ -71.37369, 61.13717 ], [ -69.59042, 61.06141 ], [ -69.62033, 60.22125 ], [ -69.2879, 58.95736 ], [ -68.37455, 58.80106 ], [ -67.64976, 58.21206 ], [ -66.20178, 58.76731 ], [ -65.24517, 59.87071 ], [ -64.58352, 60.33558 ], [ -63.80475, 59.4426 ], [ -62.50236, 58.16708 ], [ -61.39655, 56.96745 ], [ -61.79866, 56.33945 ], [ -60.46853, 55.77548 ], [ -59.56962, 55.20407 ], [ -57.97508, 54.94549 ], [ -57.3332, 54.6265 ], [ -56.93689, 53.78032 ], [ -56.15811, 53.64749 ], [ -55.75632, 53.27036 ], [ -55.68338, 52.14664 ], [ -56.40916, 51.7707 ], [ -57.12691, 51.41972 ], [ -58.77482, 51.0643 ], [ -60.03309, 50.24277 ], [ -61.72366, 50.08046 ], [ -63.86251, 50.29099 ], [ -65.36331, 50.2982 ], [ -66.39905, 50.22897 ], [ -67.23631, 49.51156 ], [ -68.51114, 49.06836 ], [ -69.95362, 47.74488 ], [ -71.10458, 46.82171 ], [ -70.25522, 46.98606 ], [ -68.65, 48.3 ], [ -66.55243, 49.1331 ], [ -65.05626, 49.23278 ], [ -64.17099, 48.74248 ], [ -65.11545, 48.07085 ], [ -64.79854, 46.99297 ], [ -64.47219, 46.23849 ], [ -63.17329, 45.73902 ], [ -61.52072, 45.88377 ], [ -60.51815, 47.00793 ], [ -60.4486, 46.28264 ], [ -59.80287, 45.9204 ], [ -61.03988, 45.26525 ], [ -63.25471, 44.67014 ], [ -64.24656, 44.26553 ], [ -65.36406, 43.54523 ], [ -66.1234, 43.61867 ], [ -66.16173, 44.46512 ], [ -64.42549, 45.29204 ], [ -66.02605, 45.25931 ], [ -67.13741, 45.13753 ], [ -67.79134, 45.70281 ], [ -67.79046, 47.06636 ], [ -68.23444, 47.35486 ], [ -68.905, 47.185 ], [ -69.23722, 47.447781 ], [ -69.99997, 46.69307 ], [ -70.305, 45.915 ], [ -70.66, 45.46 ], [ -71.08482, 45.30524 ], [ -71.405, 45.255 ], [ -71.50506, 45.0082 ], [ -73.34783, 45.00738 ], [ -74.867, 45.00048 ], [ -75.31821, 44.81645 ], [ -76.375, 44.09631 ], [ -76.5, 44.018458893758719 ], [ -76.820034145805579, 43.628784288093755 ], [ -77.737885097957701, 43.629055589363304 ], [ -78.720279914042379, 43.625089423184875 ], [ -79.171673550111876, 43.466339423184223 ], [ -79.01, 43.27 ], [ -78.92, 42.965 ], [ -78.939362148743697, 42.863611355148038 ], [ -80.247447679347943, 42.366199856122591 ], [ -81.277746548167158, 42.209025987306859 ], [ -82.439277716791622, 41.675105088867156 ], [ -82.690089280920176, 41.675105088867156 ], [ -83.029810146806938, 41.832795722005841 ], [ -83.141999681312569, 41.975681057292832 ], [ -83.12, 42.08 ], [ -82.9, 42.43 ], [ -82.43, 42.98 ], [ -82.137642381503895, 43.571087551439916 ], [ -82.337763125431081, 44.44 ], [ -82.550924648758183, 45.347516587905375 ], [ -83.592850714843081, 45.81689362241238 ], [ -83.469550747394635, 45.994686387712591 ], [ -83.616130947590591, 46.11692698829907 ], [ -83.890765347005754, 46.11692698829907 ], [ -84.091851264161477, 46.275418606138174 ], [ -84.142119513673379, 46.512225857115737 ], [ -84.3367, 46.40877 ], [ -84.6049, 46.4396 ], [ -84.543748745445868, 46.538684190449146 ], [ -84.779238247399917, 46.637101955749046 ], [ -84.876079881514869, 46.900083319682381 ], [ -85.652363247403429, 47.220218817730512 ], [ -86.461990831228263, 47.553338019392044 ], [ -87.439792623300235, 47.94 ], [ -88.378114183286726, 48.302917588893735 ], [ -89.272917446636683, 48.019808254582671 ], [ -89.6, 48.01 ], [ -90.83, 48.27 ], [ -91.64, 48.14 ], [ -92.61, 48.45 ], [ -93.63087, 48.60926 ], [ -94.32914, 48.67074 ], [ -94.64, 48.84 ], [ -94.81758, 49.38905 ], [ -95.15609, 49.38425 ], [ -95.159069509172042, 49.0 ], [ -97.228720000004813, 49.0007 ], [ -100.65, 49.0 ], [ -104.04826, 48.99986 ], [ -107.05, 49.0 ], [ -110.05, 49.0 ], [ -113.0, 49.0 ], [ -116.04818, 49.0 ], [ -117.03121, 49.0 ], [ -120.0, 49.0 ], [ -122.84, 49.0 ], [ -122.97421, 49.002537777777803 ], [ -124.91024, 49.98456 ], [ -125.62461, 50.41656 ], [ -127.43561, 50.83061 ], [ -127.99276, 51.71583 ], [ -127.85032, 52.32961 ], [ -129.12979, 52.75538 ], [ -129.30523, 53.56159 ], [ -130.51497, 54.28757 ], [ -130.53611, 54.80278 ], [ -129.98, 55.285 ], [ -130.00778, 55.91583 ], [ -131.70781, 56.55212 ], [ -132.73042, 57.69289 ], [ -133.35556, 58.41028 ], [ -134.27111, 58.86111 ], [ -134.945, 59.27056 ], [ -135.47583, 59.78778 ], [ -136.47972, 59.46389 ], [ -137.4525, 58.905 ], [ -138.34089, 59.56211 ], [ -139.039, 60.0 ], [ -140.013, 60.27682 ], [ -140.99778, 60.30639 ], [ -140.9925, 66.00003 ], [ -140.986, 69.712 ], [ -139.12052, 69.47102 ], [ -137.54636, 68.99002 ], [ -136.50358, 68.89804 ], [ -135.62576, 69.31512 ], [ -134.41464, 69.62743 ], [ -132.92925, 69.50534 ], [ -131.43136, 69.94451 ], [ -129.79471, 70.19369 ], [ -129.10773, 69.77927 ], [ -128.36156, 70.01286 ], [ -128.13817, 70.48384 ], [ -127.44712, 70.37721 ], [ -125.75632, 69.48058 ], [ -124.42483, 70.1584 ], [ -124.28968, 69.39969 ], [ -123.06108, 69.56372 ], [ -122.6835, 69.85553 ], [ -121.47226, 69.79778 ], [ -119.94288, 69.37786 ], [ -117.60268, 69.01128 ], [ -116.22643, 68.84151 ], [ -115.2469, 68.90591 ], [ -113.89794, 68.3989 ], [ -115.30489, 67.90261 ], [ -113.49727, 67.68815 ], [ -110.798, 67.80612 ], [ -109.94619, 67.98104 ], [ -108.8802, 67.38144 ], [ -107.79239, 67.88736 ], [ -108.81299, 68.31164 ], [ -108.16721, 68.65392 ], [ -106.95, 68.7 ], [ -106.15, 68.8 ], [ -105.34282, 68.56122 ], [ -104.33791, 68.018 ], [ -103.22115, 68.09775 ], [ -101.45433, 67.64689 ], [ -99.90195, 67.80566 ], [ -98.4432, 67.78165 ], [ -98.5586, 68.40394 ], [ -97.66948, 68.57864 ], [ -96.11991, 68.23939 ], [ -96.12588, 67.29338 ], [ -95.48943, 68.0907 ], [ -94.685, 68.06383 ], [ -94.23282, 69.06903 ], [ -95.30408, 69.68571 ], [ -96.47131, 70.08976 ], [ -96.39115, 71.19482 ], [ -95.2088, 71.92053 ], [ -93.88997, 71.76015 ], [ -92.87818, 71.31869 ], [ -91.51964, 70.19129 ], [ -92.40692, 69.69997 ], [ -90.5471, 69.49766 ] ] ], [ [ [ -114.167169999999899, 73.12145 ], [ -114.66634, 72.65277 ], [ -112.441019999999895, 72.955400000000111 ], [ -111.05039, 72.4504 ], [ -109.920349999999885, 72.961130000000111 ], [ -109.00654, 72.63335 ], [ -108.18835, 71.65089 ], [ -107.68599, 72.06548 ], [ -108.39639, 73.08953000000011 ], [ -107.51645, 73.23598 ], [ -106.52259, 73.07601 ], [ -105.40246, 72.67259 ], [ -104.77484, 71.698400000000106 ], [ -104.464759999999842, 70.99297 ], [ -102.78537, 70.49776 ], [ -100.980779999999896, 70.02432 ], [ -101.08929, 69.584470000000124 ], [ -102.73116, 69.50402 ], [ -102.09329, 69.119620000000111 ], [ -102.43024, 68.75282 ], [ -104.24, 68.91 ], [ -105.96, 69.180000000000149 ], [ -107.12254, 69.11922 ], [ -109.0, 68.78 ], [ -111.534148875200145, 68.630059156817936 ], [ -113.3132, 68.53554 ], [ -113.854959999999835, 69.007440000000116 ], [ -115.22, 69.28 ], [ -116.10794, 69.16821 ], [ -117.34, 69.960000000000122 ], [ -116.674729999999897, 70.06655 ], [ -115.13112, 70.2373 ], [ -113.72141, 70.19237 ], [ -112.4161, 70.36638 ], [ -114.35, 70.6 ], [ -116.48684, 70.52045 ], [ -117.9048, 70.540560000000141 ], [ -118.43238, 70.9092 ], [ -116.11311, 71.30918 ], [ -117.65568, 71.2952 ], [ -119.40199, 71.55859 ], [ -118.56267, 72.30785 ], [ -117.86642, 72.70594 ], [ -115.18909, 73.314590000000123 ], [ -114.167169999999899, 73.12145 ] ] ], [ [ [ -104.5, 73.42 ], [ -105.38, 72.76 ], [ -106.94, 73.46 ], [ -106.6, 73.6 ], [ -105.26, 73.64 ], [ -104.5, 73.42 ] ] ], [ [ [ -76.34, 73.102684989953019 ], [ -76.25140380859375, 72.826385498046875 ], [ -77.314437866210909, 72.855545043945284 ], [ -78.39167022705081, 72.876655578613281 ], [ -79.486251831054659, 72.742202758789091 ], [ -79.775833129882841, 72.802902221679744 ], [ -80.876098632812528, 73.333183288574219 ], [ -80.833885192871065, 73.693183898925781 ], [ -80.353057861328125, 73.759719848632784 ], [ -78.064437866210938, 73.651931762695341 ], [ -76.34, 73.102684989953019 ] ] ], [ [ [ -86.562178514334136, 73.157447007938458 ], [ -85.774371304044536, 72.534125881633827 ], [ -84.850112474288238, 73.340278225387124 ], [ -82.315590176100983, 73.750950832810588 ], [ -80.600087653307639, 72.71654368762421 ], [ -80.748941616524405, 72.061906643350767 ], [ -78.770638597310779, 72.352173163534161 ], [ -77.824623989559598, 72.749616604291049 ], [ -75.605844692675731, 72.243678493937409 ], [ -74.228616095664989, 71.767144273557903 ], [ -74.099140794557712, 71.330840155717652 ], [ -72.242225714797655, 71.556924546994509 ], [ -71.200015428335206, 70.920012518997225 ], [ -68.786054246684898, 70.525023708774256 ], [ -67.914970465756937, 70.121947536897608 ], [ -66.969033372654167, 69.186087348091888 ], [ -68.805122850200547, 68.720198472764423 ], [ -66.449866095633865, 68.067163397892017 ], [ -64.862314419195229, 67.847538560651628 ], [ -63.424934454996759, 66.928473212340663 ], [ -61.851981370680591, 66.862120673277843 ], [ -62.163176845942303, 66.160251369889608 ], [ -63.918444383384184, 64.998668524832851 ], [ -65.148860236253626, 65.426032619886684 ], [ -66.721219041598545, 66.388041083432199 ], [ -68.015016038673963, 66.262725735124405 ], [ -68.141287400979166, 65.689789130304376 ], [ -67.089646165623407, 65.108455105236999 ], [ -65.732080451099762, 64.648405666758634 ], [ -65.320167609301279, 64.382737128346065 ], [ -64.669406297449683, 63.392926744227481 ], [ -65.013803880458909, 62.674185085695996 ], [ -66.275044725190469, 62.945098781986076 ], [ -68.783186204692726, 63.745670071051819 ], [ -67.369680752213043, 62.883965562584876 ], [ -66.328297288667216, 62.280074774822054 ], [ -66.165568203380161, 61.930897121825893 ], [ -68.877366502544646, 62.330149237712817 ], [ -71.023437059193839, 62.910708116295837 ], [ -72.235378587518994, 63.397836005295176 ], [ -71.8862784491713, 63.679989325608858 ], [ -73.378306240518384, 64.193963121183828 ], [ -74.834418911422603, 64.679075629323791 ], [ -74.818502570276735, 64.389093329517976 ], [ -77.709979824520047, 64.229542344816792 ], [ -78.555948859354174, 64.572906399180141 ], [ -77.897281053361922, 65.309192206474791 ], [ -76.018274298797195, 65.326968899183157 ], [ -73.959795294882724, 65.454764716240902 ], [ -74.29388342964964, 65.811771348729394 ], [ -73.944912482382648, 66.310578111426736 ], [ -72.651167161739409, 67.284575507263867 ], [ -72.926059943316091, 67.726925767682388 ], [ -73.311617804645749, 68.069437160912912 ], [ -74.843307257776814, 68.554627183701285 ], [ -76.869100918266753, 68.894735622830268 ], [ -76.228649054657353, 69.147769273547425 ], [ -77.287369961237118, 69.769540106883284 ], [ -78.168633999326602, 69.82648753526891 ], [ -78.957242194316734, 70.166880194775416 ], [ -79.492455003563663, 69.871807766388912 ], [ -81.30547095409176, 69.743185126414346 ], [ -84.94470618359847, 69.966634019644403 ], [ -87.060003424817893, 70.26000112576537 ], [ -88.681713223001509, 70.41074127876081 ], [ -89.51341956252304, 70.762037665480989 ], [ -88.467721116880767, 71.218185533321332 ], [ -89.888151211287493, 71.222552191849957 ], [ -90.205160285182018, 72.235074367960806 ], [ -89.436576707704944, 73.129464219852366 ], [ -88.408241543312812, 73.537888902471224 ], [ -85.82615108920092, 73.803815823045227 ], [ -86.562178514334136, 73.157447007938458 ] ] ], [ [ [ -100.35642, 73.84389 ], [ -99.16387, 73.63339 ], [ -97.38, 73.76 ], [ -97.12, 73.47 ], [ -98.05359, 72.99052 ], [ -96.54, 72.56 ], [ -96.72, 71.66 ], [ -98.35966, 71.27285 ], [ -99.32286, 71.35639 ], [ -100.01482, 71.73827 ], [ -102.5, 72.51 ], [ -102.48, 72.83 ], [ -100.43836, 72.70588 ], [ -101.54, 73.36 ], [ -100.35642, 73.84389 ] ] ], [ [ [ -93.19629553910022, 72.771992499473356 ], [ -94.269046597047264, 72.024596259235977 ], [ -95.409855516322665, 72.061880805134592 ], [ -96.033745083382456, 72.940276801231818 ], [ -96.018267991910989, 73.437429918095802 ], [ -95.495793423224029, 73.862416897264183 ], [ -94.503657599652342, 74.13490672473921 ], [ -92.420012173211774, 74.100025132942193 ], [ -90.509792853542592, 73.856732489712044 ], [ -92.003965216829897, 72.966244208458505 ], [ -93.19629553910022, 72.771992499473356 ] ] ], [ [ [ -120.46, 71.383601793087593 ], [ -123.09219, 70.90164 ], [ -123.62, 71.34 ], [ -125.928948737473334, 71.868688463011409 ], [ -125.5, 72.292260811795018 ], [ -124.80729, 73.02256 ], [ -123.939999999999898, 73.680000000000149 ], [ -124.91775, 74.292750000000126 ], [ -121.53788, 74.44893 ], [ -120.10978, 74.24135 ], [ -117.555639999999869, 74.18577 ], [ -116.58442, 73.89607 ], [ -115.51081, 73.47519 ], [ -116.767939999999896, 73.22292 ], [ -119.22, 72.52 ], [ -120.46, 71.82 ], [ -120.46, 71.383601793087593 ] ] ], [ [ [ -93.612755906940492, 74.979997260224451 ], [ -94.15690873897384, 74.592346503386864 ], [ -95.608680589565608, 74.666863918751773 ], [ -96.820932176484575, 74.92762319609659 ], [ -96.28858740922982, 75.377828274223361 ], [ -94.850819871789128, 75.6472175157609 ], [ -93.977746548217937, 75.296489569795966 ], [ -93.612755906940492, 74.979997260224451 ] ] ], [ [ [ -98.5, 76.72 ], [ -97.73558, 76.25656 ], [ -97.704415, 75.74344 ], [ -98.16, 75.0 ], [ -99.80874, 74.89744 ], [ -100.88366, 75.05736 ], [ -100.86292, 75.64075 ], [ -102.50209, 75.5638 ], [ -102.56552, 76.3366 ], [ -101.48973, 76.30537 ], [ -99.98349, 76.64634 ], [ -98.57699, 76.58859 ], [ -98.5, 76.72 ] ] ], [ [ [ -108.21141, 76.20168 ], [ -107.81943, 75.84552 ], [ -106.92893, 76.01282 ], [ -105.881, 75.9694 ], [ -105.70498, 75.47951 ], [ -106.31347, 75.00527 ], [ -109.7, 74.85 ], [ -112.22307, 74.41696 ], [ -113.74381, 74.39427 ], [ -113.87135, 74.72029 ], [ -111.79421, 75.1625 ], [ -116.31221, 75.04343 ], [ -117.7104, 75.2222 ], [ -116.34602, 76.19903 ], [ -115.40487, 76.47887 ], [ -112.59056, 76.14134 ], [ -110.81422, 75.54919 ], [ -109.0671, 75.47321 ], [ -110.49726, 76.42982 ], [ -109.5811, 76.79417 ], [ -108.54859, 76.67832 ], [ -108.21141, 76.20168 ] ] ], [ [ [ -94.684085862999467, 77.097878323058382 ], [ -93.573921068073133, 76.776295884906091 ], [ -91.605023159536614, 76.778517971494608 ], [ -90.741845872749224, 76.449597479956822 ], [ -90.96966142450799, 76.074013170059459 ], [ -89.822237921899273, 75.84777374948564 ], [ -89.18708289259979, 75.61016551380763 ], [ -87.838276333349626, 75.566188869927231 ], [ -86.379192267588678, 75.482421373182177 ], [ -84.789625210290609, 75.699204006646511 ], [ -82.753444586910064, 75.784315090631253 ], [ -81.128530849924374, 75.713983466282031 ], [ -80.057510952459154, 75.336848863415895 ], [ -79.833932868148338, 74.923127346487206 ], [ -80.457770758775837, 74.657303778777788 ], [ -81.948842536125539, 74.442459011524335 ], [ -83.228893602211429, 74.564027818490956 ], [ -86.097452358733307, 74.410032050261151 ], [ -88.150350307960224, 74.392307033984991 ], [ -89.764722052758373, 74.515555325001145 ], [ -92.422440965529432, 74.837757880341002 ], [ -92.768285488642817, 75.386819973442158 ], [ -92.889905972041731, 75.882655341282657 ], [ -93.893824022176005, 76.319243679500545 ], [ -95.962457445035824, 76.441380927222468 ], [ -97.121378953829492, 76.751077785947615 ], [ -96.745122850312356, 77.161388658345146 ], [ -94.684085862999467, 77.097878323058382 ] ] ], [ [ [ -116.198586595507351, 77.645286770326209 ], [ -116.335813361458392, 76.876961575010569 ], [ -117.106050584768795, 76.530031846819128 ], [ -118.040412157038148, 76.481171780087095 ], [ -119.899317586885701, 76.053213406061985 ], [ -121.499995077126499, 75.900018622532798 ], [ -122.854924486158978, 76.116542873835698 ], [ -122.854925293603216, 76.116542873835698 ], [ -121.157535360328254, 76.86450755482835 ], [ -119.103938971821051, 77.512219957174636 ], [ -117.570130784965968, 77.498318996888116 ], [ -116.198586595507351, 77.645286770326209 ] ] ], [ [ [ -93.840003017943985, 77.519997260234504 ], [ -94.295608283245258, 77.491342678528696 ], [ -96.169654100310083, 77.555111395976894 ], [ -96.436304490936124, 77.834629218243634 ], [ -94.422577277386381, 77.820004787904992 ], [ -93.720656297565881, 77.634331366680328 ], [ -93.840003017943985, 77.519997260234504 ] ] ], [ [ [ -110.186938035912974, 77.6970148790503 ], [ -112.051191169058484, 77.409228827616857 ], [ -113.534278937619064, 77.732206529441157 ], [ -112.724586758253849, 78.051050116681949 ], [ -111.26444332563085, 78.152956041161559 ], [ -109.854451870547095, 77.99632477488484 ], [ -110.186938035912974, 77.6970148790503 ] ] ], [ [ [ -109.663145718202585, 78.60197256134569 ], [ -110.881314256618865, 78.406919867660008 ], [ -112.54209143761517, 78.407901719873507 ], [ -112.525890876091594, 78.550554511215239 ], [ -111.500010342233395, 78.849993598130567 ], [ -110.963660651476019, 78.804440823065221 ], [ -109.663145718202585, 78.60197256134569 ] ] ], [ [ [ -95.830294969449341, 78.056941229963257 ], [ -97.309842902398003, 77.850597235821795 ], [ -98.124289313533978, 78.082856960757596 ], [ -98.552867804746654, 78.458105373845115 ], [ -98.631984422585532, 78.871930243638388 ], [ -97.337231411512619, 78.831984361476771 ], [ -96.754398769908789, 78.765812689927003 ], [ -95.559277920294591, 78.418314520980289 ], [ -95.830294969449341, 78.056941229963257 ] ] ], [ [ [ -100.06019182005214, 78.324754340315906 ], [ -99.670939093813615, 77.907544664207421 ], [ -101.303940192453013, 78.018984890444813 ], [ -102.949808722733053, 78.34322866486022 ], [ -105.176132778731542, 78.380332343245755 ], [ -104.210429450277161, 78.677420152491806 ], [ -105.41958045125854, 78.918335679836446 ], [ -105.492289191493157, 79.301593939929205 ], [ -103.529282396237932, 79.165349026191649 ], [ -100.825158047268815, 78.800461737778704 ], [ -100.06019182005214, 78.324754340315906 ] ] ], [ [ [ -87.02, 79.66 ], [ -85.81435, 79.3369 ], [ -87.18756, 79.0393 ], [ -89.03535, 78.28723 ], [ -90.80436, 78.21533 ], [ -92.87669, 78.34333 ], [ -93.95116, 78.75099 ], [ -93.93574, 79.11373 ], [ -93.14524, 79.3801 ], [ -94.974, 79.37248 ], [ -96.07614, 79.70502 ], [ -96.70972, 80.15777 ], [ -96.01644, 80.60233 ], [ -95.32345, 80.90729 ], [ -94.29843, 80.97727 ], [ -94.73542, 81.20646 ], [ -92.40984, 81.25739 ], [ -91.13289, 80.72345 ], [ -89.45, 80.509322033898286 ], [ -87.81, 80.32 ], [ -87.02, 79.66 ] ] ], [ [ [ -68.5, 83.106321516765746 ], [ -65.82735, 83.02801 ], [ -63.68, 82.9 ], [ -61.85, 82.6286 ], [ -61.89388, 82.36165 ], [ -64.334, 81.92775 ], [ -66.75342, 81.72527 ], [ -67.65755, 81.50141 ], [ -65.48031, 81.50657 ], [ -67.84, 80.9 ], [ -69.4697, 80.61683 ], [ -71.18, 79.8 ], [ -73.2428, 79.63415 ], [ -73.88, 79.430162204802087 ], [ -76.90773, 79.32309 ], [ -75.52924, 79.19766 ], [ -76.22046, 79.01907 ], [ -75.39345, 78.52581 ], [ -76.34354, 78.18296 ], [ -77.88851, 77.89991 ], [ -78.36269, 77.50859 ], [ -79.75951, 77.20968 ], [ -79.61965, 76.98336 ], [ -77.91089, 77.022045 ], [ -77.88911, 76.777955 ], [ -80.56125, 76.17812 ], [ -83.17439, 76.45403 ], [ -86.11184, 76.29901 ], [ -87.6, 76.42 ], [ -89.49068, 76.47239 ], [ -89.6161, 76.95213 ], [ -87.76739, 77.17833 ], [ -88.26, 77.9 ], [ -87.65, 77.970222222222219 ], [ -84.97634, 77.53873 ], [ -86.34, 78.18 ], [ -87.96192, 78.37181 ], [ -87.15198, 78.75867 ], [ -85.37868, 78.9969 ], [ -85.09495, 79.34543 ], [ -86.50734, 79.73624 ], [ -86.93179, 80.25145 ], [ -84.19844, 80.20836 ], [ -83.408695652173833, 80.1 ], [ -81.84823, 80.46442 ], [ -84.1, 80.58 ], [ -87.59895, 80.51627 ], [ -89.36663, 80.85569 ], [ -90.2, 81.26 ], [ -91.36786, 81.5531 ], [ -91.58702, 81.89429 ], [ -90.1, 82.085 ], [ -88.93227, 82.11751 ], [ -86.97024, 82.27961 ], [ -85.5, 82.652273458057039 ], [ -84.26, 82.6 ], [ -83.18, 82.32 ], [ -82.42, 82.86 ], [ -81.1, 83.02 ], [ -79.30664, 83.13056 ], [ -76.25, 83.172058823529397 ], [ -75.71878, 83.06404 ], [ -72.83153, 83.23324 ], [ -70.66576, 83.169780758382842 ], [ -68.5, 83.106321516765746 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Switzerland", "iso_a2": "CH" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 9.59422610844635, 47.52505809182027 ], [ 9.632931756232978, 47.347601223329988 ], [ 9.479969516649021, 47.102809963563374 ], [ 9.932448357796659, 46.920728054382963 ], [ 10.442701450246631, 46.893546250997431 ], [ 10.363378126678612, 46.483571275409858 ], [ 9.922836541390382, 46.314899400409189 ], [ 9.182881707403055, 46.440214748716983 ], [ 8.966305779667806, 46.036931871111193 ], [ 8.489952426801324, 46.005150865251686 ], [ 8.316629672894379, 46.163642483090861 ], [ 7.755992058959833, 45.824490057959309 ], [ 7.273850945676656, 45.776947740250776 ], [ 6.843592970414505, 45.991146552100609 ], [ 6.500099724970426, 46.429672756529442 ], [ 6.022609490593538, 46.272989813820473 ], [ 6.037388950229001, 46.725778713561866 ], [ 6.768713820023606, 47.287708238303701 ], [ 6.736571079138059, 47.541801255882845 ], [ 7.192202182655507, 47.449765529971017 ], [ 7.466759067422231, 47.620581976911808 ], [ 8.317301466514152, 47.613579820336263 ], [ 8.522611932009767, 47.830827541691292 ], [ 9.59422610844635, 47.52505809182027 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Chile", "iso_a2": "CL" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -68.634010227583161, -52.636370458874367 ], [ -68.633349999999893, -54.8695 ], [ -67.56244, -54.87001 ], [ -66.95992, -54.89681 ], [ -67.291029999999893, -55.30124 ], [ -68.148629999999855, -55.61183 ], [ -68.63999081081181, -55.580017999086891 ], [ -69.2321, -55.49906 ], [ -69.95809, -55.19843 ], [ -71.00568, -55.05383 ], [ -72.2639, -54.49514 ], [ -73.2852, -53.957519999999889 ], [ -74.66253, -52.83749 ], [ -73.8381, -53.04743 ], [ -72.43418, -53.7154 ], [ -71.10773, -54.07433 ], [ -70.591779999999801, -53.61583 ], [ -70.26748, -52.93123 ], [ -69.345649999999893, -52.5183 ], [ -68.634010227583161, -52.636370458874367 ] ] ], [ [ [ -68.219913092711238, -21.494346612231837 ], [ -67.828179897722663, -22.872918796482182 ], [ -67.106673550063618, -22.7359245744764 ], [ -66.985233934177643, -22.986348565362832 ], [ -67.328442959244143, -24.025303236590915 ], [ -68.417652960876126, -24.518554782816878 ], [ -68.386001146097357, -26.185016371365236 ], [ -68.594799770772681, -26.506908868111267 ], [ -68.295541551370405, -26.89933969493579 ], [ -69.001234910748281, -27.521213881136134 ], [ -69.656130337183157, -28.459141127233693 ], [ -70.013550381129875, -29.367922865518551 ], [ -69.919008348251936, -30.336339206668313 ], [ -70.535068935819453, -31.365010267870289 ], [ -70.074399380153636, -33.091209812148037 ], [ -69.814776984319224, -33.273886000299854 ], [ -69.817309129501467, -34.193571465798286 ], [ -70.388049485949097, -35.169687595359449 ], [ -70.364769253201672, -36.005088799789945 ], [ -71.121880662709799, -36.658123874662337 ], [ -71.118625047475433, -37.576827487947199 ], [ -70.814664272734717, -38.552995293940739 ], [ -71.413516608349056, -38.916022230791114 ], [ -71.680761277946459, -39.808164157878068 ], [ -71.915734015577556, -40.832339369470731 ], [ -71.746803758415467, -42.051386407235995 ], [ -72.148898078078531, -42.254888197601389 ], [ -71.915423956983915, -43.408564548517418 ], [ -71.464056159130507, -43.787611179378331 ], [ -71.793622606071949, -44.207172133156106 ], [ -71.329800788036209, -44.407521661151691 ], [ -71.222778896759735, -44.784242852559416 ], [ -71.65931555854533, -44.973688653341441 ], [ -71.552009446891248, -45.560732924177131 ], [ -71.917258470330211, -46.8848381487918 ], [ -72.447355312780275, -47.738532810253531 ], [ -72.331160854771952, -48.244238376661826 ], [ -72.648247443314943, -48.878618259476788 ], [ -73.415435757120036, -49.318436374712959 ], [ -73.328050910114484, -50.378785088909872 ], [ -72.975746832964631, -50.741450290734313 ], [ -72.30997351753237, -50.677009779666356 ], [ -72.329403856074038, -51.425956312872408 ], [ -71.914803839796349, -52.009022305865926 ], [ -69.49836218939609, -52.14276091263725 ], [ -68.571545376241346, -52.299443855346262 ], [ -69.461284349226645, -52.291950772663931 ], [ -69.942779507106138, -52.537930590373257 ], [ -70.845101691354529, -52.899200528525725 ], [ -71.006332160105245, -53.833252042201352 ], [ -71.429794684520942, -53.856454760300387 ], [ -72.557942877884869, -53.531410001184462 ], [ -73.702756720662876, -52.835069268607256 ], [ -73.702756720662876, -52.835070076051501 ], [ -74.946763475225168, -52.262753588419031 ], [ -75.260026007778521, -51.629354750373224 ], [ -74.97663245308982, -51.043395684615689 ], [ -75.479754197883494, -50.378371677451561 ], [ -75.608015102831956, -48.673772881871798 ], [ -75.182769741502142, -47.71191944762316 ], [ -74.126580980104706, -46.939253431995098 ], [ -75.644395311165454, -46.64764332457203 ], [ -74.692153693323064, -45.763976332380977 ], [ -74.351709357384266, -44.103044122087894 ], [ -73.240356004515206, -44.454960625995625 ], [ -72.71780392117978, -42.383355808278992 ], [ -73.388899909138246, -42.117532240569574 ], [ -73.701335618774863, -43.365776462579745 ], [ -74.331943122032584, -43.224958184584409 ], [ -74.017957119427166, -41.794812920906836 ], [ -73.677099372029971, -39.942212823243125 ], [ -73.217592536090677, -39.258688653318515 ], [ -73.505559455037059, -38.282882582351078 ], [ -73.58806087919109, -37.156284681956024 ], [ -73.166717088499297, -37.123780206044358 ], [ -72.553136969681731, -35.508840020491036 ], [ -71.861732143832569, -33.909092706031529 ], [ -71.438450486929923, -32.418899428030826 ], [ -71.668720669222438, -30.920644626592519 ], [ -71.370082567007728, -30.095682061485007 ], [ -71.489894375276464, -28.861442152625912 ], [ -70.905123867461583, -27.640379734001201 ], [ -70.724953986275978, -25.705924167587213 ], [ -70.40396582709505, -23.628996677344546 ], [ -70.091245897080682, -21.393319187101227 ], [ -70.164419725205988, -19.756468194256186 ], [ -70.372572394477743, -18.347975355708883 ], [ -69.858443569605811, -18.092693780187034 ], [ -69.590423753523993, -17.58001189541929 ], [ -69.100246955019429, -18.260125420812656 ], [ -68.966818406841838, -18.981683444904093 ], [ -68.442225104430946, -19.405068454671422 ], [ -68.757167121033717, -20.372657972904477 ], [ -68.219913092711238, -21.494346612231837 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "China", "iso_a2": "CN" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 110.339187860151554, 18.678395087147607 ], [ 109.475209588663716, 18.197700913968617 ], [ 108.655207961056163, 18.507681993071401 ], [ 108.626217482540454, 19.367887885001977 ], [ 109.119055617308021, 19.821038519769388 ], [ 110.211598748822865, 20.101253973872076 ], [ 110.786550734502242, 20.077534491450081 ], [ 111.010051304164648, 19.695929877190736 ], [ 110.570646600386823, 19.255879218009312 ], [ 110.339187860151554, 18.678395087147607 ] ] ], [ [ [ 127.657407261262421, 49.760270494172943 ], [ 129.397817824420457, 49.440600084015443 ], [ 130.582293328982388, 48.729687404976119 ], [ 130.987281528853856, 47.790132351261406 ], [ 132.506671991099523, 47.788969631534883 ], [ 133.373595819228029, 48.183441677434928 ], [ 135.026311476786731, 48.478229885443909 ], [ 134.500813836810636, 47.578439846377847 ], [ 134.11236209527263, 47.212467352886733 ], [ 133.769643996312908, 46.11692698829907 ], [ 133.097126906466457, 45.144066473972174 ], [ 131.88345421765959, 45.321161607436437 ], [ 131.025212030156098, 44.967953192721581 ], [ 131.288555129115565, 44.111519680348266 ], [ 131.144687941614876, 42.929989732426947 ], [ 130.63386640840983, 42.903014634770557 ], [ 130.640015903852458, 42.395009467125277 ], [ 129.994267205933255, 42.9853868678438 ], [ 129.59666873587949, 42.424981797854599 ], [ 128.052215203972338, 41.994284572917991 ], [ 128.208433058790746, 41.466771552082548 ], [ 127.34378299368305, 41.50315176041596 ], [ 126.869083286649897, 41.816569322266162 ], [ 126.182045119329445, 41.107336127276369 ], [ 125.079941847840615, 40.569823716792456 ], [ 124.265624627785343, 39.928493353834142 ], [ 122.867570428561038, 39.637787583976262 ], [ 122.131387974130945, 39.170451768544638 ], [ 121.054554478032884, 38.897471014962917 ], [ 121.585994907722494, 39.360853583324143 ], [ 121.376757033372684, 39.750261338859531 ], [ 122.168595005381036, 40.422442531896053 ], [ 121.640358514493556, 40.946389878903318 ], [ 120.768628778161968, 40.593388169917603 ], [ 119.63960208544907, 39.898055935214217 ], [ 119.023463983233029, 39.252333075511103 ], [ 118.042748651197911, 39.204273993479688 ], [ 117.532702264477081, 38.737635809884097 ], [ 118.059698520989713, 38.061475531561058 ], [ 118.878149855628379, 37.897325344385905 ], [ 118.911636183753529, 37.448463853498737 ], [ 119.70280236214208, 37.15638865818508 ], [ 120.823457472823662, 37.870427761377982 ], [ 121.711258579597967, 37.48112335870718 ], [ 122.35793745329849, 37.454484157860691 ], [ 122.519994744965828, 36.930614325501836 ], [ 121.104163853033043, 36.65132904718044 ], [ 120.637008905114584, 36.111439520811132 ], [ 119.664561802246084, 35.609790554337735 ], [ 119.151208123858595, 34.909859117160465 ], [ 120.227524855633732, 34.36033193616862 ], [ 120.620369093916594, 33.376722723925127 ], [ 121.229014113450233, 32.460318711877193 ], [ 121.908145786630058, 31.69217438407469 ], [ 121.891919386890351, 30.949351508095106 ], [ 121.264257440273326, 30.676267401648715 ], [ 121.503519321784751, 30.142914943964257 ], [ 122.0921138855891, 29.832520453403163 ], [ 121.938428175953078, 29.01802236583481 ], [ 121.684438511238483, 28.225512600206685 ], [ 121.125661248866464, 28.135673122667185 ], [ 120.395473260582349, 27.053206895449392 ], [ 119.585496860839584, 25.740780544532612 ], [ 118.656871372554548, 24.547390855400238 ], [ 117.281606479970861, 23.624501451099718 ], [ 115.890735304835147, 22.782873236578098 ], [ 114.763827345846238, 22.66807404224167 ], [ 114.152546828265685, 22.223760077396207 ], [ 113.806779819800767, 22.54833974862143 ], [ 113.24107791550162, 22.051367499270469 ], [ 111.843592157032475, 21.550493679281516 ], [ 110.785465529424158, 21.397143866455338 ], [ 110.44403934127169, 20.341032619706397 ], [ 109.889861281373584, 20.282457383703445 ], [ 109.627655063924664, 21.008227037026728 ], [ 109.864488153118344, 21.395050970947523 ], [ 108.52281294152445, 21.715212307211829 ], [ 108.050180291782993, 21.552379869060104 ], [ 107.043420037872664, 21.811898912029903 ], [ 106.56727339073538, 22.218204860924743 ], [ 106.725403273548494, 22.794267889898379 ], [ 105.811247186305224, 22.976892401617903 ], [ 105.32920942588666, 23.352063300056983 ], [ 104.476858351664504, 22.819150092046925 ], [ 103.504514601660532, 22.70375661873922 ], [ 102.706992222100183, 22.708795070887703 ], [ 102.170435825613566, 22.464753119389343 ], [ 101.65201785686159, 22.318198757409561 ], [ 101.803119744882935, 21.174366766845054 ], [ 101.270025669360024, 21.20165192309517 ], [ 101.180005324307587, 21.43657298429406 ], [ 101.150032993578264, 21.849984442629022 ], [ 100.416537713627378, 21.558839423096657 ], [ 99.983489211021578, 21.742936713136459 ], [ 99.240898878987224, 22.118314317304566 ], [ 99.531992222087439, 22.949038804612599 ], [ 98.898749220782832, 23.142722072842588 ], [ 98.660262485755794, 24.063286037690006 ], [ 97.604719679762042, 23.897404690033056 ], [ 97.724609002679159, 25.083637193293043 ], [ 98.67183800658924, 25.918702500913497 ], [ 98.712093947344584, 26.74353587494025 ], [ 98.682690057370536, 27.508812160750665 ], [ 98.246230910233379, 27.747221381129179 ], [ 97.911987746169444, 28.335945136014374 ], [ 97.327113885490036, 28.261582749946342 ], [ 96.248833449287844, 28.411030992134471 ], [ 96.58659061074755, 28.830979519154369 ], [ 96.117678664131034, 29.45280202892252 ], [ 95.404802280664654, 29.03171662039216 ], [ 94.565990431702943, 29.277438055939967 ], [ 93.413347609432691, 28.640629380807241 ], [ 92.503118931043645, 27.896876329046449 ], [ 91.696656528696707, 27.771741848251622 ], [ 91.25885379431989, 28.04061432546635 ], [ 90.730513950567826, 28.064953925075741 ], [ 90.015828891971211, 28.296438503527185 ], [ 89.475810174521172, 28.042758897406372 ], [ 88.814248488320601, 27.299315904239393 ], [ 88.730325962278556, 28.086864732367559 ], [ 88.120440708369955, 27.876541652939579 ], [ 86.954517043000664, 27.974261786403531 ], [ 85.82331994013154, 28.203575954698749 ], [ 85.011638218123068, 28.642773952747376 ], [ 84.234579705750178, 28.839893703724698 ], [ 83.898992954446754, 29.32022614187764 ], [ 83.33711510613719, 29.463731594352197 ], [ 82.327512648450892, 30.115268052688208 ], [ 81.5258044778748, 30.422716986608663 ], [ 81.11125613802929, 30.183480943313413 ], [ 79.721366815107132, 30.882714748654735 ], [ 78.738894484374015, 31.515906073527049 ], [ 78.458446486326039, 32.618164374312727 ], [ 79.176128777995558, 32.483779812137755 ], [ 79.208891636068557, 32.994394639613745 ], [ 78.811086460285736, 33.506198025032404 ], [ 78.912268914713223, 34.321936346975775 ], [ 77.837450799474624, 35.494009507787808 ], [ 76.192848341785719, 35.898403428687857 ], [ 75.896897414050187, 36.666806138651879 ], [ 75.158027785141002, 37.133030910789159 ], [ 74.980002475895418, 37.419990139305895 ], [ 74.829985792952158, 37.990007025701459 ], [ 74.864815708316797, 38.378846340481601 ], [ 74.257514276022704, 38.60650686294349 ], [ 73.928852166646408, 38.505815334622724 ], [ 73.675379266254851, 39.431236884105573 ], [ 73.960013055318456, 39.660008449861721 ], [ 73.82224368682833, 39.893973497063143 ], [ 74.776862420556057, 40.366425279291633 ], [ 75.467827996730733, 40.562072251948678 ], [ 76.526368035797447, 40.427946071935139 ], [ 76.904484490877138, 41.066485907549662 ], [ 78.187196893226059, 41.185315863604814 ], [ 78.543660923175281, 41.58224254003872 ], [ 80.119430373051415, 42.123940741538235 ], [ 80.259990268885332, 42.349999294599087 ], [ 80.180150180994389, 42.920067857426858 ], [ 80.866206496101228, 43.180362046881015 ], [ 79.96610639844144, 44.917516994804629 ], [ 81.947070753918098, 45.317027492853157 ], [ 82.458925815769049, 45.539649563166506 ], [ 83.180483839860557, 47.330031236350749 ], [ 85.164290399113241, 47.000955715516113 ], [ 85.720483839870695, 47.452969468773091 ], [ 85.768232863308384, 48.455750637396903 ], [ 86.598776483103364, 48.549181626980612 ], [ 87.359970330762707, 49.214980780629162 ], [ 87.751264276076682, 49.297197984405472 ], [ 88.013832228551706, 48.599462795600601 ], [ 88.854297723346775, 48.069081732773014 ], [ 90.280825636763922, 47.693549099307916 ], [ 90.970809360724985, 46.888146063822944 ], [ 90.585768263718336, 45.719716091487498 ], [ 90.94553958533433, 45.28607330991025 ], [ 92.13389082231825, 45.115075995456436 ], [ 93.48073367714133, 44.975472113620015 ], [ 94.68892866412537, 44.352331854828464 ], [ 95.306875441471533, 44.241330878265472 ], [ 95.762454868556716, 43.319449164394626 ], [ 96.349395786527822, 42.725635280928657 ], [ 97.451757440178, 42.748889675460077 ], [ 99.515817498780024, 42.524691473961695 ], [ 100.845865513108293, 42.663804429691425 ], [ 101.833040399179964, 42.514872951826277 ], [ 103.312278273534815, 41.907468166667627 ], [ 104.522281935649033, 41.908346666016627 ], [ 104.96499393109346, 41.597409572916348 ], [ 106.129315627061686, 42.134327704428898 ], [ 107.744772576938004, 42.481515814781915 ], [ 109.243595819131457, 42.519446316084156 ], [ 110.412103306115313, 42.871233628911028 ], [ 111.129682244920247, 43.406834011400178 ], [ 111.829587843881399, 43.743118394539493 ], [ 111.66773725794323, 44.073175767587713 ], [ 111.348376906379457, 44.457441718110061 ], [ 111.873306105600278, 45.102079372735119 ], [ 112.43606245325887, 45.011645616224257 ], [ 113.463906691544224, 44.808893134127118 ], [ 114.460331658996068, 45.339816799493889 ], [ 115.985096470200148, 45.727235012386018 ], [ 116.717868280098884, 46.388202419615254 ], [ 117.42170128791426, 46.672732855814218 ], [ 118.87432579963874, 46.805412095723653 ], [ 119.663269891438773, 46.692679958678951 ], [ 119.772823927897576, 47.048058783550147 ], [ 118.86657433479499, 47.74706004494621 ], [ 118.064142694166748, 48.066730455103738 ], [ 117.295507440257467, 47.697709052107399 ], [ 116.308952671373248, 47.853410142602826 ], [ 115.742837355615762, 47.726544501326288 ], [ 115.485282017073047, 48.135382595403456 ], [ 116.191802199367629, 49.134598090199063 ], [ 116.678800897286209, 49.888531399121405 ], [ 117.879244419426385, 49.510983384796958 ], [ 119.288460728025854, 50.142882798862047 ], [ 119.279365675942387, 50.582907619827296 ], [ 120.182049595216967, 51.643566392618027 ], [ 120.738191359542014, 51.964115302124554 ], [ 120.725789015792003, 52.516226304730822 ], [ 120.177088657716894, 52.753886216841209 ], [ 121.003084751470254, 53.251401068731241 ], [ 122.245747918792887, 53.431725979213695 ], [ 123.571506789240885, 53.458804429734641 ], [ 125.068211297710462, 53.161044826868846 ], [ 125.946348911646197, 52.79279857035695 ], [ 126.564399041857001, 51.784255479532703 ], [ 126.939156528837685, 51.35389415140591 ], [ 127.287455682484932, 50.739797268265448 ], [ 127.657407261262421, 49.760270494172943 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Cte d'Ivoire", "iso_a2": "CI" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -2.856125047202397, 4.994475816259509 ], [ -3.311084357100071, 4.984295559098015 ], [ -4.008819545904942, 5.179813340674315 ], [ -4.649917364917911, 5.168263658057086 ], [ -5.834496222344526, 4.993700669775137 ], [ -6.528769090185847, 4.705087795425015 ], [ -7.518941209330436, 4.338288479017308 ], [ -7.71215938966975, 4.364565944837722 ], [ -7.635368211284031, 5.188159084489456 ], [ -7.539715135111763, 5.313345241716519 ], [ -7.570152553731688, 5.707352199725904 ], [ -7.993692592795881, 6.126189683451543 ], [ -8.311347622094019, 6.193033148621083 ], [ -8.60288021486862, 6.46756419517166 ], [ -8.385451626000574, 6.911800645368743 ], [ -8.48544552248535, 7.39520783124307 ], [ -8.439298468448698, 7.686042792181738 ], [ -8.280703497744938, 7.687179673692157 ], [ -8.221792364932199, 8.123328762235573 ], [ -8.299048631208564, 8.316443589710303 ], [ -8.20349890790088, 8.455453192575447 ], [ -7.832100389019188, 8.575704250518626 ], [ -8.079113735374349, 9.376223863152035 ], [ -8.309616461612251, 9.789531968622441 ], [ -8.229337124046822, 10.129020290563901 ], [ -8.029943610048619, 10.206534939001713 ], [ -7.899589809592372, 10.297382106970828 ], [ -7.622759161804809, 10.147236232946796 ], [ -6.850506557635057, 10.138993841996239 ], [ -6.666460944027548, 10.430810655148449 ], [ -6.493965013037268, 10.411302801958271 ], [ -6.205222947606431, 10.524060777219134 ], [ -6.050452032892267, 10.096360785355444 ], [ -5.816926235365287, 10.222554633012194 ], [ -5.404341599946974, 10.370736802609146 ], [ -4.954653286143099, 10.152713934769736 ], [ -4.779883592131966, 9.821984768101743 ], [ -4.330246954760383, 9.610834865757141 ], [ -3.980449184576685, 9.8623440617217 ], [ -3.511898972986273, 9.90032623945622 ], [ -2.827496303712707, 9.642460842319778 ], [ -2.562189500326241, 8.219627793811483 ], [ -2.983584967450327, 7.379704901555513 ], [ -3.244370083011262, 6.250471503113502 ], [ -2.81070146321784, 5.38905121502411 ], [ -2.856125047202397, 4.994475816259509 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Cameroon", "iso_a2": "CM" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 13.075822381246752, 2.267097072759015 ], [ 12.951333855855609, 2.32161570882694 ], [ 12.359380323952221, 2.19281220133945 ], [ 11.75166548019979, 2.326757513839993 ], [ 11.276449008843713, 2.261050930180872 ], [ 9.649158155972628, 2.283866075037736 ], [ 9.795195753629457, 3.073404445809117 ], [ 9.404366896206, 3.734526882335203 ], [ 8.948115675501072, 3.904128933117136 ], [ 8.744923943729418, 4.35221527751996 ], [ 8.48881554529089, 4.495617377129918 ], [ 8.500287713259695, 4.771982937026849 ], [ 8.757532993208628, 5.479665839047911 ], [ 9.233162876023044, 6.444490668153335 ], [ 9.522705926154401, 6.453482367372117 ], [ 10.118276808318257, 7.03876963950988 ], [ 10.497375115611419, 7.055357774275564 ], [ 11.058787876030351, 6.644426784690594 ], [ 11.745774366918511, 6.981382961449754 ], [ 11.839308709366803, 7.397042344589437 ], [ 12.063946160539558, 7.799808457872302 ], [ 12.218872104550599, 8.305824082874324 ], [ 12.753671502339216, 8.717762762888995 ], [ 12.955467970438974, 9.417771714714704 ], [ 13.167599724997103, 9.640626328973411 ], [ 13.308676385153918, 10.160362046748928 ], [ 13.572949659894562, 10.798565985553566 ], [ 14.415378859116684, 11.572368882692075 ], [ 14.468192172918975, 11.904751695193411 ], [ 14.577177768622533, 12.085360826053503 ], [ 14.181336297266794, 12.483656927943116 ], [ 14.213530714584635, 12.802035427293347 ], [ 14.495787387762846, 12.859396267137329 ], [ 14.893385857816526, 12.219047756392584 ], [ 14.960151808337599, 11.555574042197224 ], [ 14.923564894274961, 10.891325181517473 ], [ 15.467872755605271, 9.982336737503431 ], [ 14.909353875394716, 9.992129421422732 ], [ 14.62720055508106, 9.920919297724538 ], [ 14.171466098699028, 10.021378282099931 ], [ 13.954218377344006, 9.549494940626687 ], [ 14.54446658698177, 8.965861314322268 ], [ 14.97999555833769, 8.796104234243472 ], [ 15.120865512765334, 8.382150173369425 ], [ 15.436091749745771, 7.692812404811973 ], [ 15.279460483469109, 7.421924546737969 ], [ 14.776545444404576, 6.408498033062045 ], [ 14.536560092841114, 6.22695872642069 ], [ 14.459407179429348, 5.4517605656103 ], [ 14.558935988023507, 5.03059764243153 ], [ 14.478372430080469, 4.732605495620447 ], [ 14.950953403389661, 4.210389309094921 ], [ 15.036219516671252, 3.851367295747124 ], [ 15.405395948964383, 3.33530060466434 ], [ 15.862732374747482, 3.013537298998983 ], [ 15.907380812247652, 2.557389431158612 ], [ 16.012852410555354, 2.267639675298085 ], [ 15.940918816805066, 1.727672634280296 ], [ 15.146341993885244, 1.964014797367184 ], [ 14.337812534246581, 2.227874660649491 ], [ 13.075822381246752, 2.267097072759015 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Dem. Rep. Congo", "iso_a2": "CD" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 30.833859897593811, 3.509165961110341 ], [ 30.773346795380039, 2.339883327642127 ], [ 31.174149204235817, 2.204465236821264 ], [ 30.852670118948058, 1.849396470543809 ], [ 30.468507521290295, 1.583805446779721 ], [ 30.086153598762706, 1.062312730306289 ], [ 29.875778842902491, 0.597379868976304 ], [ 29.819503208136638, -0.205310153813372 ], [ 29.587837762172171, -0.587405694179481 ], [ 29.579466180140884, -1.341313164885626 ], [ 29.291886834436614, -1.620055840667987 ], [ 29.254834832483343, -2.215109958508911 ], [ 29.117478875451553, -2.292211195488385 ], [ 29.024926385216787, -2.839257907730158 ], [ 29.276383904749053, -3.293907159034063 ], [ 29.339997592900346, -4.499983412294092 ], [ 29.519986606572928, -5.419978936386315 ], [ 29.419992710088167, -5.939998874539434 ], [ 29.620032179490014, -6.520015150583426 ], [ 30.199996779101696, -7.079980970898163 ], [ 30.740015496551791, -8.340007419470915 ], [ 30.346086053190817, -8.238256524288218 ], [ 29.00291222506047, -8.407031752153472 ], [ 28.734866570762502, -8.526559340044578 ], [ 28.449871046672826, -9.164918308146085 ], [ 28.673681674928929, -9.605924981324932 ], [ 28.49606977714177, -10.789883721564046 ], [ 28.372253045370428, -11.793646742401393 ], [ 28.642417433392353, -11.971568698782315 ], [ 29.34154788586909, -12.360743910372413 ], [ 29.61600141777123, -12.178894545137311 ], [ 29.699613885219492, -13.257226657771831 ], [ 28.934285922976837, -13.248958428605135 ], [ 28.523561639121027, -12.698604424696683 ], [ 28.155108676879987, -12.272480564017897 ], [ 27.388798862423783, -12.132747491100666 ], [ 27.164419793412463, -11.608748467661075 ], [ 26.553087599399618, -11.924439792532127 ], [ 25.752309604604733, -11.784965101776358 ], [ 25.418118116973204, -11.330935967659961 ], [ 24.783169793402951, -11.238693536018964 ], [ 24.314516228947952, -11.26282642989927 ], [ 24.257155389103989, -10.951992689663657 ], [ 23.912215203555718, -10.926826267137514 ], [ 23.45679080576744, -10.867863457892483 ], [ 22.837345411884741, -11.017621758674331 ], [ 22.402798292742375, -10.993075453335692 ], [ 22.155268182064308, -11.084801120653772 ], [ 22.208753289486395, -9.894796237836509 ], [ 21.875181919042348, -9.523707777548566 ], [ 21.8018013851879, -8.908706556842979 ], [ 21.949130893652043, -8.305900974158277 ], [ 21.746455926203311, -7.920084730667149 ], [ 21.728110792739699, -7.290872491081302 ], [ 20.514748162526502, -7.299605808138629 ], [ 20.601822950938299, -6.939317722199682 ], [ 20.091621534920648, -6.943090101756994 ], [ 20.037723016040218, -7.116361179231646 ], [ 19.41750247567316, -7.155428562044299 ], [ 19.166613396896111, -7.738183688999754 ], [ 19.016751743249671, -7.988245944860132 ], [ 18.464175652752687, -7.847014255406443 ], [ 18.134221632569052, -7.987677504104923 ], [ 17.472970004962235, -8.0685511206417 ], [ 17.089995965247169, -7.545688978712526 ], [ 16.860190870845202, -7.222297865429987 ], [ 16.573179965896145, -6.622644545115087 ], [ 16.326528354567046, -5.877470391466268 ], [ 13.375597364971895, -5.864241224799549 ], [ 13.024869419006961, -5.984388929878158 ], [ 12.735171339578699, -5.965682061388499 ], [ 12.322431674863511, -6.10009246177966 ], [ 12.182336866920252, -5.789930515163839 ], [ 12.436688266660868, -5.684303887559246 ], [ 12.468004184629736, -5.248361504745005 ], [ 12.63161176926579, -4.991271254092936 ], [ 12.995517205465177, -4.781103203961884 ], [ 13.258240187237048, -4.882957452009165 ], [ 13.600234816144678, -4.50013844159097 ], [ 14.144956088933299, -4.510008640158716 ], [ 14.209034864975223, -4.793092136253598 ], [ 14.582603794013181, -4.97023894615014 ], [ 15.170991652088444, -4.343507175314301 ], [ 15.753540073314753, -3.855164890156097 ], [ 16.006289503654301, -3.535132744972529 ], [ 15.972803175529151, -2.712392266453612 ], [ 16.407091912510054, -1.740927015798682 ], [ 16.865306837642123, -1.225816338713287 ], [ 17.523716261472856, -0.743830254726987 ], [ 17.638644646889986, -0.424831638189247 ], [ 17.663552687254679, -0.058083998213817 ], [ 17.826540154703252, 0.288923244626105 ], [ 17.774191928791566, 0.855658677571085 ], [ 17.898835483479587, 1.741831976728278 ], [ 18.094275750407434, 2.365721543788055 ], [ 18.393792351971143, 2.90044342692822 ], [ 18.453065219809929, 3.504385891123349 ], [ 18.542982211997781, 4.201785183118318 ], [ 18.932312452884759, 4.709506130385975 ], [ 19.467783644293149, 5.03152781821278 ], [ 20.290679152108936, 4.691677761245288 ], [ 20.927591180106276, 4.322785549329737 ], [ 21.659122755630023, 4.22434194581372 ], [ 22.405123732195538, 4.029160061047321 ], [ 22.704123569436291, 4.633050848810157 ], [ 22.841479526468106, 4.710126247573484 ], [ 23.297213982850138, 4.609693101414223 ], [ 24.410531040146253, 5.10878408448913 ], [ 24.805028924262416, 4.89724660890235 ], [ 25.128833449003281, 4.92724477784779 ], [ 25.278798455514305, 5.170408229997192 ], [ 25.650455356557472, 5.256087754737123 ], [ 26.402760857862543, 5.150874538590871 ], [ 27.04406538260471, 5.127852688004836 ], [ 27.37422610851749, 5.233944403500061 ], [ 27.979977247842811, 4.408413397637375 ], [ 28.428993768026913, 4.287154649264494 ], [ 28.696677687298802, 4.455077215996937 ], [ 29.1590784034465, 4.389267279473231 ], [ 29.71599531425602, 4.600804755060025 ], [ 29.953500197069474, 4.173699042167684 ], [ 30.833859897593811, 3.509165961110341 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Congo", "iso_a2": "CG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.995517205465177, -4.781103203961884 ], [ 12.620759718484493, -4.438023369976136 ], [ 12.318607618873926, -4.606230157086188 ], [ 11.91496300624209, -5.037986748884791 ], [ 11.093772820691925, -3.978826592630547 ], [ 11.855121697648116, -3.426870619321051 ], [ 11.478038771214303, -2.765618991714241 ], [ 11.820963575903193, -2.514161472181982 ], [ 12.495702752338161, -2.391688327650243 ], [ 12.575284458067642, -1.948511244315135 ], [ 13.109618767965628, -2.428740329603514 ], [ 13.99240726080771, -2.4708049454891 ], [ 14.299210239324566, -1.998275648612214 ], [ 14.425455763413595, -1.333406670744971 ], [ 14.316418491277744, -0.552627455247048 ], [ 13.843320753645656, 0.038757635901149 ], [ 14.276265903386957, 1.196929836426619 ], [ 14.026668735417218, 1.395677395021153 ], [ 13.282631463278818, 1.31418366129688 ], [ 13.003113641012078, 1.83089630778332 ], [ 13.075822381246752, 2.267097072759015 ], [ 14.337812534246581, 2.227874660649491 ], [ 15.146341993885244, 1.964014797367184 ], [ 15.940918816805066, 1.727672634280296 ], [ 16.012852410555354, 2.267639675298085 ], [ 16.537058139724138, 3.198254706226279 ], [ 17.133042433346304, 3.728196519379452 ], [ 17.809900343505262, 3.56019643799857 ], [ 18.453065219809929, 3.504385891123349 ], [ 18.393792351971143, 2.90044342692822 ], [ 18.094275750407434, 2.365721543788055 ], [ 17.898835483479587, 1.741831976728278 ], [ 17.774191928791566, 0.855658677571085 ], [ 17.826540154703252, 0.288923244626105 ], [ 17.663552687254679, -0.058083998213817 ], [ 17.638644646889986, -0.424831638189247 ], [ 17.523716261472856, -0.743830254726987 ], [ 16.865306837642123, -1.225816338713287 ], [ 16.407091912510054, -1.740927015798682 ], [ 15.972803175529151, -2.712392266453612 ], [ 16.006289503654301, -3.535132744972529 ], [ 15.753540073314753, -3.855164890156097 ], [ 15.170991652088444, -4.343507175314301 ], [ 14.582603794013181, -4.97023894615014 ], [ 14.209034864975223, -4.793092136253598 ], [ 14.144956088933299, -4.510008640158716 ], [ 13.600234816144678, -4.50013844159097 ], [ 13.258240187237048, -4.882957452009165 ], [ 12.995517205465177, -4.781103203961884 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Colombia", "iso_a2": "CO" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -75.373223232713855, -0.15203175212045 ], [ -75.801465827116601, 0.084801337073202 ], [ -76.292314419240967, 0.416047268064119 ], [ -76.576379767549398, 0.256935533037435 ], [ -77.424984300430395, 0.395686753741117 ], [ -77.668612840470445, 0.825893052570962 ], [ -77.855061408179523, 0.809925034992773 ], [ -78.855258755188714, 1.380923773601822 ], [ -78.99093522817104, 1.691369940595251 ], [ -78.617831387023713, 1.766404120283056 ], [ -78.662118089497852, 2.267355454920477 ], [ -78.427610439757331, 2.629555568854215 ], [ -77.931542527971487, 2.696605739752926 ], [ -77.51043128122501, 3.325016994638247 ], [ -77.12768978545526, 3.849636135265357 ], [ -77.496271938777028, 4.087606105969428 ], [ -77.307601284479404, 4.667984117039452 ], [ -77.533220587865728, 5.582811997902497 ], [ -77.318815070286746, 5.84535411216136 ], [ -77.47666073272228, 6.691116441266303 ], [ -77.881571417945253, 7.223771267114785 ], [ -77.753413865861404, 7.709839789252143 ], [ -77.431107957656991, 7.638061224798734 ], [ -77.242566494440084, 7.935278225125444 ], [ -77.474722866511328, 8.524286200388218 ], [ -77.353360765273862, 8.67050466555807 ], [ -76.836673957003569, 8.638749497914716 ], [ -76.086383836557857, 9.336820583529487 ], [ -75.674600185840063, 9.443248195834599 ], [ -75.664704149056178, 9.774003200718738 ], [ -75.480425991503353, 10.618990383339309 ], [ -74.906895107711989, 11.083044745320322 ], [ -74.276752692344886, 11.102035834187587 ], [ -74.197222663047697, 11.310472723836867 ], [ -73.414763963500292, 11.22701528568548 ], [ -72.627835252559635, 11.731971543825523 ], [ -72.238194953078917, 11.955549628136326 ], [ -71.754090135368642, 12.437303168177309 ], [ -71.399822353791706, 12.376040757695293 ], [ -71.13746110704588, 12.112981879113505 ], [ -71.331583624950298, 11.776284084515808 ], [ -71.973921678338286, 11.60867157637712 ], [ -72.227575446242938, 11.108702093953241 ], [ -72.614657762325209, 10.821975409381778 ], [ -72.905286017534706, 10.450344346554772 ], [ -73.027604132769568, 9.736770331252444 ], [ -73.304951544880055, 9.151999823437606 ], [ -72.788729824500393, 9.085027167187334 ], [ -72.660494757768106, 8.625287787302682 ], [ -72.439862230097958, 8.405275376820029 ], [ -72.360900641555972, 8.002638454617895 ], [ -72.479678921178845, 7.632506008327354 ], [ -72.444487270788073, 7.423784898300482 ], [ -72.198352423781884, 7.340430813013683 ], [ -71.960175747348643, 6.991614895043539 ], [ -70.674233567981517, 7.087784735538719 ], [ -70.093312954372422, 6.96037649172311 ], [ -69.389479946557117, 6.099860541198836 ], [ -68.985318569602356, 6.206804917826858 ], [ -68.26505245631823, 6.153268133972475 ], [ -67.695087246355016, 6.267318020040647 ], [ -67.341439581965574, 6.095468044454023 ], [ -67.521531948502755, 5.556870428891969 ], [ -67.744696621355217, 5.221128648291668 ], [ -67.823012254493548, 4.503937282728899 ], [ -67.621835903581285, 3.839481716319995 ], [ -67.337563849543685, 3.542342230641722 ], [ -67.303173183853445, 3.31845408773718 ], [ -67.809938117123707, 2.820655015469569 ], [ -67.447092047786313, 2.600280869960869 ], [ -67.18129431829307, 2.250638129074062 ], [ -66.87632585312258, 1.253360500489336 ], [ -67.065048183852497, 1.130112209473225 ], [ -67.259997524673594, 1.719998684084956 ], [ -67.537810024674698, 2.03716278727633 ], [ -67.868565029558837, 1.692455145673392 ], [ -69.816973232691623, 1.714805202639624 ], [ -69.80459672715773, 1.089081122233466 ], [ -69.21863766140018, 0.985676581217433 ], [ -69.252434048119056, 0.602650865070075 ], [ -69.452396002872462, 0.706158758950693 ], [ -70.015565761989308, 0.541414292804205 ], [ -70.020655890570055, -0.185156345219539 ], [ -69.5770653957766, -0.549991957200163 ], [ -69.420485805932231, -1.122618503426409 ], [ -69.444101935489613, -1.556287123219818 ], [ -69.893635219996625, -4.298186944194327 ], [ -70.394043952094989, -3.766591485207825 ], [ -70.692682054309714, -3.742872002785859 ], [ -70.047708502874855, -2.725156345229699 ], [ -70.813475714791963, -2.256864515800743 ], [ -71.413645799429787, -2.342802422702128 ], [ -71.774760708285399, -2.169789727388938 ], [ -72.325786505813653, -2.434218031426454 ], [ -73.070392218707241, -2.308954359550953 ], [ -73.6595035468346, -1.260491224781134 ], [ -74.122395189089062, -1.002832533373848 ], [ -74.441600511355972, -0.530820000819887 ], [ -75.106624518520078, -0.05720549886486 ], [ -75.373223232713855, -0.15203175212045 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Costa Rica", "iso_a2": "CR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -82.965783047197363, 8.225027980985985 ], [ -83.508437262694315, 8.446926581247283 ], [ -83.711473965169077, 8.656836249216866 ], [ -83.596313035806645, 8.830443223501419 ], [ -83.632641567707836, 9.051385809765321 ], [ -83.909885626953738, 9.290802720573581 ], [ -84.303401658856359, 9.487354030795714 ], [ -84.647644212568665, 9.615537421095709 ], [ -84.713350796227772, 9.908051866083852 ], [ -84.975660366541334, 10.086723130733006 ], [ -84.91137488477024, 9.795991522658923 ], [ -85.11092342806532, 9.55703969974131 ], [ -85.339488288092269, 9.83454214114866 ], [ -85.66078650586698, 9.933347479690724 ], [ -85.797444831062847, 10.134885565629034 ], [ -85.791708747078431, 10.439337266476613 ], [ -85.659313727546674, 10.754330959511719 ], [ -85.941725430021762, 10.895278428587801 ], [ -85.712540452807303, 11.088444932494824 ], [ -85.561851976244199, 11.217119248901597 ], [ -84.903003302738952, 10.952303371621896 ], [ -84.673069017256267, 11.082657172078143 ], [ -84.35593075228104, 10.999225572142905 ], [ -84.19017859570485, 10.793450018756674 ], [ -83.895054490885954, 10.726839097532446 ], [ -83.655611741861577, 10.938764146361422 ], [ -83.402319708982958, 10.395438137244653 ], [ -83.015676642575173, 9.992982082555557 ], [ -82.546196255203483, 9.566134751824677 ], [ -82.932890998043575, 9.476812038608173 ], [ -82.927154914059159, 9.074330145702916 ], [ -82.719183112300527, 8.925708726431495 ], [ -82.868657192704774, 8.807266343618522 ], [ -82.829770677405165, 8.62629547773237 ], [ -82.913176439124214, 8.42351715741907 ], [ -82.965783047197363, 8.225027980985985 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Cuba", "iso_a2": "CU" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -82.268151211257063, 23.188610744717707 ], [ -81.404457160146833, 23.117271429938782 ], [ -80.618768683581195, 23.105980129483001 ], [ -79.67952368846025, 22.76530324959883 ], [ -79.281485968732085, 22.399201565027056 ], [ -78.347434455056487, 22.512166246017088 ], [ -77.993295864560281, 22.277193508385935 ], [ -77.146422492161051, 21.657851467367834 ], [ -76.523824835908556, 21.206819566324373 ], [ -76.19462012399319, 21.220565497314013 ], [ -75.59822241891267, 21.016624457274133 ], [ -75.671060350228061, 20.735091254148003 ], [ -74.933896043584497, 20.693905137611385 ], [ -74.17802486845126, 20.284627793859741 ], [ -74.296648118777256, 20.050378526280682 ], [ -74.961594611292938, 19.923435370355691 ], [ -75.634680141894592, 19.873774318923196 ], [ -76.323656175425995, 19.95289093676206 ], [ -77.755480923153073, 19.855480861891877 ], [ -77.085108405246743, 20.413353786698792 ], [ -77.492654588516615, 20.673105373613893 ], [ -78.137292243141587, 20.739948838783434 ], [ -78.482826707661189, 21.028613389565852 ], [ -78.719866502584011, 21.598113511638434 ], [ -79.284999966127941, 21.559175319906501 ], [ -80.217475348618649, 21.827324327069036 ], [ -80.517534552721415, 22.03707896574176 ], [ -81.820943366203181, 22.192056586185071 ], [ -82.16999182811864, 22.387109279870753 ], [ -81.795001797192668, 22.636964830001958 ], [ -82.775897996740852, 22.688150336187064 ], [ -83.494458787759356, 22.168517971276131 ], [ -83.908800421875625, 22.154565334557333 ], [ -84.052150845053262, 21.910575059491254 ], [ -84.54703019889638, 21.801227728761646 ], [ -84.974911058273108, 21.89602814380109 ], [ -84.447062140627764, 22.204949856041907 ], [ -84.230357021811784, 22.565754706303764 ], [ -83.778239915690193, 22.788118394455694 ], [ -83.26754757356575, 22.983041897060644 ], [ -82.510436164057509, 23.078746649665188 ], [ -82.268151211257063, 23.188610744717707 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "N. Cyprus", "iso_a2": "-99" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 32.731780226377452, 35.140025946588437 ], [ 32.80247358575275, 35.145503648411378 ], [ 32.946960890440806, 35.386703396133697 ], [ 33.667227003724946, 35.373215847305516 ], [ 34.576473829900465, 35.671595567358793 ], [ 33.900804477684204, 35.245755927057616 ], [ 33.973616570783463, 35.058506374648005 ], [ 33.866439650210111, 35.093594672174191 ], [ 33.675391880027064, 35.017862860650453 ], [ 33.525685255677502, 35.038688462864073 ], [ 33.475817498515852, 35.000344550103506 ], [ 33.455922072083467, 35.101423651666408 ], [ 33.383833449036302, 35.16271190036457 ], [ 33.190977003723049, 35.17312470147138 ], [ 32.919572381326134, 35.087832749973643 ], [ 32.731780226377452, 35.140025946588437 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Cyprus", "iso_a2": "CY" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 33.973616570783463, 35.058506374648005 ], [ 34.004880812320039, 34.978097846001859 ], [ 32.979827101378447, 34.571869411755443 ], [ 32.490296258277539, 34.701654771456475 ], [ 32.25666710788596, 35.103232326796629 ], [ 32.731780226377452, 35.140025946588437 ], [ 32.919572381326134, 35.087832749973643 ], [ 33.190977003723049, 35.17312470147138 ], [ 33.383833449036302, 35.16271190036457 ], [ 33.455922072083467, 35.101423651666408 ], [ 33.475817498515852, 35.000344550103506 ], [ 33.525685255677502, 35.038688462864073 ], [ 33.675391880027064, 35.017862860650453 ], [ 33.866439650210111, 35.093594672174191 ], [ 33.973616570783463, 35.058506374648005 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Czech Rep.", "iso_a2": "CZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 16.960288120194576, 48.5969823268506 ], [ 16.499282667718774, 48.785808010445109 ], [ 16.029647251050221, 48.73389903420793 ], [ 15.253415561593982, 49.039074205107582 ], [ 14.901447381254057, 48.964401760445824 ], [ 14.338897739324722, 48.555305284207208 ], [ 13.595945672264437, 48.877171942737149 ], [ 13.031328973043431, 49.307068182973239 ], [ 12.521024204161193, 49.547415269562734 ], [ 12.415190870827445, 49.969120795280567 ], [ 12.240111118222558, 50.266337795607285 ], [ 12.966836785543194, 50.484076443069085 ], [ 13.338131951560285, 50.733234361364353 ], [ 14.056227654688172, 50.9269176295943 ], [ 14.307013380600637, 51.117267767941414 ], [ 14.570718214586066, 51.002339382524276 ], [ 15.016995883858669, 51.10667409932158 ], [ 15.490972120839729, 50.784729926143207 ], [ 16.238626743238569, 50.697732652379841 ], [ 16.176253289462267, 50.422607326857907 ], [ 16.719475945714436, 50.215746568393541 ], [ 16.868769158605659, 50.47397370055603 ], [ 17.554567091551121, 50.362145901076417 ], [ 17.649445021238989, 50.049038397819956 ], [ 18.392913852622172, 49.988628648470751 ], [ 18.853144158613617, 49.496229763377642 ], [ 18.554971144289482, 49.495015367218784 ], [ 18.399993523846177, 49.315000515330041 ], [ 18.170498488037964, 49.271514797556435 ], [ 18.104972771891852, 49.043983466175312 ], [ 17.913511590250465, 48.996492824899086 ], [ 17.886484816161811, 48.903475246773709 ], [ 17.545006951577108, 48.80001902932537 ], [ 17.101984897538898, 48.816968899117114 ], [ 16.960288120194576, 48.5969823268506 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Germany", "iso_a2": "DE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 9.921906365609232, 54.983104153048032 ], [ 9.9395797054529, 54.596641954153256 ], [ 10.950112338920519, 54.363607082733154 ], [ 10.93946699386845, 54.00869334575259 ], [ 11.956252475643282, 54.196485500701158 ], [ 12.518440382546714, 54.470370591847995 ], [ 13.647467075259499, 54.075510972705899 ], [ 14.119686313542559, 53.75702912049104 ], [ 14.353315463934166, 53.248171291713106 ], [ 14.074521111719434, 52.981262518925348 ], [ 14.437599725002201, 52.624850165408304 ], [ 14.685026482815715, 52.089947414755216 ], [ 14.607098422919648, 51.745188096719971 ], [ 15.016995883858783, 51.106674099321708 ], [ 14.570718214586122, 51.002339382524383 ], [ 14.307013380600665, 51.117267767941371 ], [ 14.056227654688314, 50.926917629594357 ], [ 13.338131951560399, 50.733234361364282 ], [ 12.966836785543251, 50.484076443069171 ], [ 12.240111118222671, 50.266337795607228 ], [ 12.415190870827473, 49.969120795280617 ], [ 12.521024204161336, 49.547415269562748 ], [ 13.031328973043514, 49.307068182973239 ], [ 13.595945672264577, 48.877171942737164 ], [ 13.243357374737116, 48.41611481382904 ], [ 12.884102817443875, 48.28914581968786 ], [ 13.025851271220517, 47.637583523135959 ], [ 12.932626987366064, 47.467645575543997 ], [ 12.620759718484521, 47.672387600284424 ], [ 12.141357456112871, 47.703083401065783 ], [ 11.426414015354851, 47.523766181013059 ], [ 10.544504021861599, 47.566399237653798 ], [ 10.402083774465325, 47.302487697939171 ], [ 9.89606814946319, 47.580196845075704 ], [ 9.594226108446378, 47.525058091820199 ], [ 8.522611932009795, 47.830827541691349 ], [ 8.317301466514095, 47.61357982033627 ], [ 7.466759067422288, 47.620581976911922 ], [ 7.593676385131062, 48.333019110703731 ], [ 8.099278598674857, 49.01778351500343 ], [ 6.65822960778371, 49.201958319691641 ], [ 6.186320428094177, 49.463802802114515 ], [ 6.242751092156993, 49.902225653678727 ], [ 6.043073357781111, 50.128051662794235 ], [ 6.15665815595878, 50.803721015010581 ], [ 5.988658074577813, 51.851615709025054 ], [ 6.589396599970826, 51.852029120483394 ], [ 6.842869500362383, 52.228440253297549 ], [ 7.092053256873896, 53.144043280644894 ], [ 6.905139601274129, 53.482162177130647 ], [ 7.100424838905269, 53.693932196662672 ], [ 7.936239454793963, 53.748295803433791 ], [ 8.121706170289485, 53.527792466844289 ], [ 8.800734490604668, 54.020785630908904 ], [ 8.572117954145369, 54.395646470754059 ], [ 8.526229282270208, 54.962743638725158 ], [ 9.282048780971138, 54.830865383516311 ], [ 9.921906365609232, 54.983104153048032 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Djibouti", "iso_a2": "DJ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 43.081226027200159, 12.699638576707116 ], [ 43.317852410664671, 12.390148423711025 ], [ 43.286381463398925, 11.974928290245884 ], [ 42.715873650896526, 11.735640570518342 ], [ 43.145304803242141, 11.462039699748857 ], [ 42.776851841000962, 10.92687856693442 ], [ 42.554930000000127, 11.105110000000195 ], [ 42.314140000000123, 11.0342 ], [ 41.755570000000205, 11.050910000000101 ], [ 41.739590000000192, 11.355110000000138 ], [ 41.661760000000129, 11.6312 ], [ 42.000000000000114, 12.100000000000136 ], [ 42.35156000000012, 12.542230000000131 ], [ 42.779642368344753, 12.455415757695675 ], [ 43.081226027200159, 12.699638576707116 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Denmark", "iso_a2": "DK" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 12.690006137755631, 55.609990953180784 ], [ 12.089991082414741, 54.800014553437933 ], [ 11.043543328504228, 55.364863796604254 ], [ 10.903913608451631, 55.779954738988749 ], [ 12.370904168353292, 56.111407375708836 ], [ 12.690006137755631, 55.609990953180784 ] ] ], [ [ [ 10.912181837618363, 56.458621324277914 ], [ 10.667803989309988, 56.081383368547222 ], [ 10.369992710011985, 56.190007229224733 ], [ 9.649984978889307, 55.469999498102055 ], [ 9.921906365609175, 54.98310415304806 ], [ 9.282048780971138, 54.830865383516169 ], [ 8.526229282270236, 54.962743638724987 ], [ 8.12031090661759, 55.517722683323626 ], [ 8.089976840862249, 56.540011705137601 ], [ 8.256581658571264, 56.8099693874303 ], [ 8.543437534223386, 57.110002753316905 ], [ 9.424469028367611, 57.172066148499482 ], [ 9.775558709358563, 57.447940782289663 ], [ 10.580005730846153, 57.73001658795485 ], [ 10.546105991262692, 57.215732733786155 ], [ 10.250000034230226, 56.89001618105047 ], [ 10.369992710011985, 56.609981594460834 ], [ 10.912181837618363, 56.458621324277914 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Dominican Rep.", "iso_a2": "DO" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.712361416292964, 19.714455878167357 ], [ -71.587304450146632, 19.8849105900821 ], [ -70.806706102161741, 19.880285549391985 ], [ -70.214364997016133, 19.622885240146161 ], [ -69.950815192327582, 19.647999986240009 ], [ -69.769250047470081, 19.293267116772441 ], [ -69.222125820579876, 19.313214219637103 ], [ -69.254346076113848, 19.015196234609874 ], [ -68.809411994080833, 18.979074408437853 ], [ -68.317943284768972, 18.612197577381693 ], [ -68.689315965434517, 18.205142320218613 ], [ -69.164945848248919, 18.422648423735112 ], [ -69.623987596297638, 18.38071299893025 ], [ -69.952933926051543, 18.428306993071061 ], [ -70.133232998317894, 18.245915025296895 ], [ -70.517137213814223, 18.184290879788833 ], [ -70.669298468697633, 18.426885891183034 ], [ -70.999950120717187, 18.283328762276213 ], [ -71.400209927033899, 17.598564357976599 ], [ -71.657661912712015, 17.757572740138698 ], [ -71.708304816358051, 18.044997056546094 ], [ -71.68773759630588, 18.316660061104471 ], [ -71.945112067335558, 18.616900132720261 ], [ -71.701302659782499, 18.785416978424053 ], [ -71.624873216422827, 19.169837958243306 ], [ -71.712361416292964, 19.714455878167357 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Algeria", "iso_a2": "DZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 11.999505649471613, 23.47166840259645 ], [ 8.572893100629784, 21.565660712159143 ], [ 5.677565952180686, 19.601206976799716 ], [ 4.267419467800039, 19.155265204336999 ], [ 3.158133172222705, 19.057364203360038 ], [ 3.1466610042539, 19.693578599521445 ], [ 2.683588494486429, 19.856230170160117 ], [ 2.06099083823392, 20.142233384679486 ], [ 1.823227573259032, 20.610809434486043 ], [ -1.550054897457613, 22.792665920497384 ], [ -4.923337368174231, 24.974574082941 ], [ -8.684399786809053, 27.395744126896005 ], [ -8.665124477564191, 27.589479071558227 ], [ -8.665589565454809, 27.656425889592356 ], [ -8.674116176782974, 28.841288967396579 ], [ -7.059227667661929, 29.579228420524529 ], [ -6.060632290053774, 29.731699734001694 ], [ -5.242129278982787, 30.000443020135592 ], [ -4.859646165374471, 30.501187649043846 ], [ -3.690441046554696, 30.896951605751156 ], [ -3.647497931320146, 31.637294012980675 ], [ -3.068980271812648, 31.724497992473218 ], [ -2.616604783529567, 32.09434621838615 ], [ -1.30789913573787, 32.262888902306102 ], [ -1.124551153966308, 32.651521511357132 ], [ -1.388049282222568, 32.864015000941308 ], [ -1.733454555661467, 33.919712836231994 ], [ -1.792985805661687, 34.527918606091205 ], [ -2.169913702798624, 35.16839630791668 ], [ -1.208602871089056, 35.714848741187097 ], [ -0.127454392894606, 35.888662421200806 ], [ 0.503876580415209, 36.301272894835279 ], [ 1.466918572606545, 36.605647081034405 ], [ 3.161698846050825, 36.78390493422522 ], [ 4.81575809084913, 36.865036932923459 ], [ 5.320120070017794, 36.716518866516623 ], [ 6.261819695672613, 37.110655015606739 ], [ 7.330384962603971, 37.118380642234371 ], [ 7.737078484741005, 36.885707505840216 ], [ 8.420964389691676, 36.946427313783161 ], [ 8.217824334352315, 36.433176988260286 ], [ 8.376367628623768, 35.479876003555944 ], [ 8.140981479534304, 34.65514598239379 ], [ 7.524481642292244, 34.09737641045146 ], [ 7.612641635782182, 33.344114895148962 ], [ 8.430472853233368, 32.748337307255952 ], [ 8.439102817426118, 32.506284898400821 ], [ 9.055602654668149, 32.102691962201291 ], [ 9.482139926805274, 30.307556057246188 ], [ 9.805634392952413, 29.42463837332339 ], [ 9.859997999723447, 28.959989732371014 ], [ 9.683884718472768, 28.1441738957792 ], [ 9.756128370816782, 27.688258571884148 ], [ 9.629056023811074, 27.14095347748092 ], [ 9.716285841519749, 26.512206325785698 ], [ 9.319410841518163, 26.094324856057455 ], [ 9.910692579801776, 25.36545461679674 ], [ 9.94826134607797, 24.936953640232517 ], [ 10.303846876678362, 24.379313259370917 ], [ 10.771363559622927, 24.562532050061751 ], [ 11.560669386449005, 24.097909247325518 ], [ 11.999505649471613, 23.47166840259645 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Ecuador", "iso_a2": "EC" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -80.302560594387216, -3.404856459164713 ], [ -79.770293341780928, -2.65751189535964 ], [ -79.986559210922422, -2.220794366061014 ], [ -80.368783942369248, -2.685158786635788 ], [ -80.967765469064361, -2.246942640800704 ], [ -80.764806281238037, -1.965047702648533 ], [ -80.933659023751716, -1.057454522306358 ], [ -80.583370327461267, -0.906662692878683 ], [ -80.399324713853758, -0.283703301600141 ], [ -80.020898200180369, 0.360340074053468 ], [ -80.090609707342111, 0.768428859862397 ], [ -79.542762010399798, 0.982937730305963 ], [ -78.855258755188714, 1.380923773601822 ], [ -77.855061408179523, 0.809925034992773 ], [ -77.668612840470445, 0.825893052570962 ], [ -77.424984300430395, 0.395686753741117 ], [ -76.576379767549398, 0.256935533037435 ], [ -76.292314419240967, 0.416047268064119 ], [ -75.801465827116601, 0.084801337073202 ], [ -75.373223232713855, -0.15203175212045 ], [ -75.233722703741947, -0.911416924649529 ], [ -75.544995693652041, -1.56160979574588 ], [ -76.635394253226721, -2.608677666843818 ], [ -77.837904832658609, -3.003020521663103 ], [ -78.450683966775642, -3.873096612161376 ], [ -78.639897223612337, -4.547784112164074 ], [ -79.205289069317729, -4.959128513207389 ], [ -79.624979214176179, -4.454198093283495 ], [ -80.02890804718561, -4.346090996928893 ], [ -80.442241990872162, -4.425724379090674 ], [ -80.469294603176948, -4.059286797708999 ], [ -80.184014858709673, -3.821161797708044 ], [ -80.302560594387216, -3.404856459164713 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Egypt", "iso_a2": "EG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.9226, 29.50133 ], [ 34.64174, 29.09942 ], [ 34.42655, 28.34399 ], [ 34.15451, 27.8233 ], [ 33.92136, 27.6487 ], [ 33.58811, 27.97136 ], [ 33.13676, 28.41765 ], [ 32.42323, 29.85108 ], [ 32.32046, 29.76043 ], [ 32.73482, 28.70523 ], [ 33.34876, 27.69989 ], [ 34.10455, 26.14227 ], [ 34.47387, 25.59856 ], [ 34.79507, 25.03375 ], [ 35.69241, 23.92671 ], [ 35.49372, 23.75237 ], [ 35.52598, 23.10244 ], [ 36.69069, 22.20485 ], [ 36.86623, 22.0 ], [ 32.9, 22.0 ], [ 29.02, 22.0 ], [ 25.0, 22.0 ], [ 25.0, 25.682499996360999 ], [ 25.0, 29.238654529533459 ], [ 24.70007, 30.04419 ], [ 24.95762, 30.6616 ], [ 24.80287, 31.08929 ], [ 25.16482, 31.56915 ], [ 26.49533, 31.58568 ], [ 27.45762, 31.32126 ], [ 28.45048, 31.02577 ], [ 28.91353, 30.87005 ], [ 29.68342, 31.18686 ], [ 30.09503, 31.4734 ], [ 30.97693, 31.55586 ], [ 31.68796, 31.4296 ], [ 31.96041, 30.9336 ], [ 32.19247, 31.26034 ], [ 32.99392, 31.02407 ], [ 33.7734, 30.96746 ], [ 34.26544, 31.21936 ], [ 34.9226, 29.50133 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Eritrea", "iso_a2": "ER" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 42.35156000000012, 12.542230000000131 ], [ 42.00975, 12.86582 ], [ 41.59856, 13.452090000000112 ], [ 41.155193719249837, 13.773319810435225 ], [ 40.8966, 14.118640000000141 ], [ 40.026218702969175, 14.519579169162284 ], [ 39.34061, 14.53155 ], [ 39.0994, 14.74064 ], [ 38.51295, 14.50547 ], [ 37.906070000000113, 14.959430000000168 ], [ 37.59377, 14.2131 ], [ 36.42951, 14.42211 ], [ 36.32318891779812, 14.822480577041063 ], [ 36.753860304518582, 16.291874091044292 ], [ 36.852530000000115, 16.95655 ], [ 37.16747, 17.263140000000135 ], [ 37.90400000000011, 17.42754 ], [ 38.410089959473225, 17.998307399970315 ], [ 38.990622999840014, 16.840626125551694 ], [ 39.26611006038803, 15.922723496967251 ], [ 39.814293654140215, 15.435647284400318 ], [ 41.179274936697652, 14.491079616753211 ], [ 41.734951613132353, 13.921036892141558 ], [ 42.276830682144862, 13.343992010954423 ], [ 42.589576450375262, 13.000421250861905 ], [ 43.081226027200159, 12.699638576707116 ], [ 42.779642368344753, 12.455415757695675 ], [ 42.35156000000012, 12.542230000000131 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Spain", "iso_a2": "ES" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -9.034817674180246, 41.880570583659676 ], [ -8.984433152695672, 42.592775173506269 ], [ -9.392883673530648, 43.026624660812701 ], [ -7.97818966310831, 43.748337714200993 ], [ -6.754491746436756, 43.567909450853925 ], [ -5.411886359061597, 43.574239813809683 ], [ -4.347842779955783, 43.403449205085039 ], [ -3.517531704106091, 43.455900783861303 ], [ -1.901351284177764, 43.422802028978339 ], [ -1.502770961910528, 43.034014390630432 ], [ 0.338046909190581, 42.57954600683955 ], [ 0.701590610363894, 42.795734361332606 ], [ 1.826793247087153, 42.343384711265692 ], [ 2.985998976258458, 42.473015041669861 ], [ 3.039484083680549, 41.892120266276905 ], [ 2.091841668312185, 41.226088568683096 ], [ 0.810524529635188, 41.014731960609339 ], [ 0.721331007499401, 40.678318386389236 ], [ 0.106691521819869, 40.123933620762017 ], [ -0.278711310212941, 39.30997813573272 ], [ 0.111290724293838, 38.73851430923304 ], [ -0.467123582349103, 38.292365831041153 ], [ -0.683389451490598, 37.642353827457825 ], [ -1.438382127274849, 37.443063666324221 ], [ -2.146452602538119, 36.674144192037289 ], [ -3.415780808923387, 36.65889964451118 ], [ -4.368900926114719, 36.677839056946155 ], [ -4.995219285492212, 36.324708156879637 ], [ -5.377159796561457, 35.946850083961465 ], [ -5.866432257500904, 36.029816596006057 ], [ -6.236693894872175, 36.367677110330334 ], [ -6.520190802425404, 36.942913316387319 ], [ -7.453725551778092, 37.097787583966067 ], [ -7.537105475281024, 37.428904323876239 ], [ -7.166507941099865, 37.803894354802225 ], [ -7.029281175148796, 38.075764065089771 ], [ -7.374092169616318, 38.373058580064921 ], [ -7.098036668313128, 39.030072740223787 ], [ -7.498632371439726, 39.629571031241809 ], [ -7.066591559263529, 39.711891587882775 ], [ -7.026413133156595, 40.184524237624245 ], [ -6.864019944679385, 40.330871893874829 ], [ -6.851126674822552, 41.111082668617527 ], [ -6.389087693700915, 41.381815497394655 ], [ -6.668605515967656, 41.883386949219584 ], [ -7.251308966490824, 41.918346055665047 ], [ -7.422512986673795, 41.792074693359837 ], [ -8.013174607769912, 41.790886135417125 ], [ -8.263856980817792, 42.28046865495034 ], [ -8.67194576662672, 42.134689439454959 ], [ -9.034817674180246, 41.880570583659676 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Estonia", "iso_a2": "EE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 24.312862583114622, 57.793423570376973 ], [ 24.428927850042161, 58.383413397853289 ], [ 24.061198357853186, 58.257374579493408 ], [ 23.426560092876684, 58.612753404364625 ], [ 23.339795363058645, 59.187240302153384 ], [ 24.604214308376186, 59.465853786855021 ], [ 25.864189080516638, 59.611090399811332 ], [ 26.949135776484525, 59.445803331125774 ], [ 27.981114129353244, 59.475388088612874 ], [ 28.13169925305175, 59.300825100330925 ], [ 27.420166456824944, 58.724581203844238 ], [ 27.716685825315722, 57.791899115624361 ], [ 27.288184848751513, 57.474528306703832 ], [ 26.463532342237787, 57.47638865826633 ], [ 25.602809685984369, 57.847528794986573 ], [ 25.164593540149269, 57.970156968815189 ], [ 24.312862583114622, 57.793423570376973 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Ethiopia", "iso_a2": "ET" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 37.906070000000113, 14.959430000000168 ], [ 38.51295, 14.50547 ], [ 39.0994, 14.74064 ], [ 39.34061, 14.53155 ], [ 40.026250000000118, 14.51959 ], [ 40.8966, 14.118640000000141 ], [ 41.1552, 13.77333 ], [ 41.59856, 13.452090000000112 ], [ 42.00975, 12.86582 ], [ 42.35156000000012, 12.542230000000131 ], [ 42.000000000000114, 12.100000000000136 ], [ 41.661760000000129, 11.6312 ], [ 41.739590000000192, 11.355110000000138 ], [ 41.755570000000205, 11.050910000000101 ], [ 42.314140000000123, 11.0342 ], [ 42.554930000000127, 11.105110000000195 ], [ 42.776851841000962, 10.92687856693442 ], [ 42.55876, 10.57258000000013 ], [ 42.92812, 10.021940000000143 ], [ 43.296990000000108, 9.540480000000173 ], [ 43.67875, 9.18358000000012 ], [ 46.94834, 7.99688 ], [ 47.78942, 8.003 ], [ 44.9636, 5.001620000000116 ], [ 43.66087, 4.95755 ], [ 42.769670000000133, 4.252590000000225 ], [ 42.12861, 4.234130000000164 ], [ 41.855083092644122, 3.918911920483765 ], [ 41.171800000000133, 3.91909 ], [ 40.768480000000125, 4.257020000000125 ], [ 39.854940000000113, 3.838790000000131 ], [ 39.559384258765931, 3.422060000000215 ], [ 38.89251, 3.50074 ], [ 38.67114, 3.61607 ], [ 38.436970000000144, 3.58851 ], [ 38.120915000000139, 3.598605 ], [ 36.855093238008237, 4.447864127672858 ], [ 36.159078632855653, 4.447864127672858 ], [ 35.817447662353629, 4.776965663462022 ], [ 35.817447662353629, 5.338232082790853 ], [ 35.298007118233102, 5.506 ], [ 34.70702, 6.594220000000121 ], [ 34.25032, 6.82607 ], [ 34.075100000000191, 7.22595 ], [ 33.568290000000104, 7.71334 ], [ 32.954180000000235, 7.784970000000101 ], [ 33.294800000000123, 8.35458 ], [ 33.825500000000147, 8.37916 ], [ 33.97498, 8.684560000000147 ], [ 33.96162, 9.58358 ], [ 34.25745, 10.63009 ], [ 34.731150000000127, 10.910170000000107 ], [ 34.831630000000132, 11.318960000000118 ], [ 35.26049, 12.08286 ], [ 35.863630000000171, 12.57828 ], [ 36.27022, 13.563330000000121 ], [ 36.42951, 14.42211 ], [ 37.59377, 14.2131 ], [ 37.906070000000113, 14.959430000000168 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Finland", "iso_a2": "FI" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 28.591929559043194, 69.064776923286658 ], [ 28.445943637818658, 68.364612942164044 ], [ 29.97742638522061, 67.698297024192655 ], [ 29.054588657352326, 66.944286200621931 ], [ 30.21765, 65.80598 ], [ 29.544429559046989, 64.948671576590485 ], [ 30.444684686003711, 64.20445343693909 ], [ 30.035872430142717, 63.552813625738551 ], [ 31.516092156711125, 62.867687486412891 ], [ 31.139991082490894, 62.357692776124409 ], [ 30.21110721204445, 61.780027777749694 ], [ 28.069997592895277, 60.503516547275837 ], [ 26.255172967236973, 60.423960679762502 ], [ 24.496623976344523, 60.057316392651657 ], [ 22.869694858499457, 59.846373196036225 ], [ 22.290763787533592, 60.391921291741539 ], [ 21.322244093519316, 60.720169989659524 ], [ 21.544866163832694, 61.705329494871791 ], [ 21.059211053153689, 62.60739329695874 ], [ 21.536029493910803, 63.18973501245587 ], [ 22.442744174903993, 63.817810370531291 ], [ 24.730511508897536, 64.902343655040838 ], [ 25.398067661243942, 65.111426500093742 ], [ 25.294043003040404, 65.534346421970454 ], [ 23.903378533633802, 66.006927395279618 ], [ 23.565879754335583, 66.396050930437426 ], [ 23.539473097434438, 67.93600861273525 ], [ 21.978534783626117, 68.616845608180697 ], [ 20.645592889089528, 69.106247260200874 ], [ 21.244936150810673, 69.370443020293081 ], [ 22.356237827247412, 68.841741441514912 ], [ 23.662049594830759, 68.891247463650544 ], [ 24.735679152126725, 68.64955678982146 ], [ 25.689212680776365, 69.092113755969038 ], [ 26.179622023226244, 69.825298977326142 ], [ 27.732292107867863, 70.164193020296253 ], [ 29.015572950971972, 69.766491197377988 ], [ 28.591929559043194, 69.064776923286658 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Fiji", "iso_a2": "FJ" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 178.3736, -17.33992 ], [ 178.71806, -17.62846 ], [ 178.55271, -18.15059 ], [ 177.93266, -18.28799 ], [ 177.38146, -18.16432 ], [ 177.28504, -17.72465 ], [ 177.670870000000122, -17.38114 ], [ 178.12557, -17.50481 ], [ 178.3736, -17.33992 ] ] ], [ [ [ 179.36414266196428, -16.801354076946851 ], [ 178.725059362997087, -17.012041674368021 ], [ 178.596838595117077, -16.63915 ], [ 179.096609362997157, -16.433984277547424 ], [ 179.413509362997132, -16.379054277547397 ], [ 180.000000000000142, -16.06713266364244 ], [ 180.000000000000142, -16.55521656663916 ], [ 179.36414266196428, -16.801354076946851 ] ] ], [ [ [ -179.917369384765266, -16.501783135649362 ], [ -180.0, -16.55521656663916 ], [ -180.0, -16.06713266364244 ], [ -179.793320109048608, -16.020882256741231 ], [ -179.917369384765266, -16.501783135649362 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Falkland Is.", "iso_a2": "FK" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -61.2, -51.85 ], [ -60.0, -51.25 ], [ -59.15, -51.5 ], [ -58.55, -51.1 ], [ -57.75, -51.55 ], [ -58.05, -51.9 ], [ -59.4, -52.2 ], [ -59.85, -51.85 ], [ -60.7, -52.3 ], [ -61.2, -51.85 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "France", "iso_a2": "FR" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -52.556424730018392, 2.504705308437053 ], [ -52.939657151894977, 2.124857692875622 ], [ -53.418465135295264, 2.053389187016037 ], [ -53.554839240113495, 2.334896551925965 ], [ -53.778520677288896, 2.376702785650053 ], [ -54.088062506717279, 2.105556545414629 ], [ -54.524754197799751, 2.311848863123785 ], [ -54.271229620975788, 2.738747870286943 ], [ -54.18428402364475, 3.194172268075235 ], [ -54.011503872276819, 3.622569891774859 ], [ -54.399542202356514, 4.212611395683481 ], [ -54.478632981979217, 4.896755682795643 ], [ -53.958044603070931, 5.756548163267809 ], [ -53.618452928264844, 5.646529038918402 ], [ -52.882141282754077, 5.409850979021599 ], [ -51.82334286152593, 4.565768133966145 ], [ -51.657797410678882, 4.156232408053029 ], [ -52.249337531123984, 3.241094468596287 ], [ -52.556424730018392, 2.504705308437053 ] ] ], [ [ [ 9.560016310269134, 42.152491970379572 ], [ 9.229752231491773, 41.380006822264448 ], [ 8.775723097375362, 41.583611965494441 ], [ 8.54421268070783, 42.256516628583086 ], [ 8.746009148807588, 42.62812185319396 ], [ 9.390000848028905, 43.009984849614739 ], [ 9.560016310269134, 42.152491970379572 ] ] ], [ [ [ 3.588184441755715, 50.378992418003577 ], [ 4.286022983425141, 49.907496649772554 ], [ 4.799221632515753, 49.985373033236328 ], [ 5.674051954784886, 49.529483547557447 ], [ 5.897759230176376, 49.442667141307169 ], [ 6.186320428094206, 49.463802802114458 ], [ 6.658229607783539, 49.201958319691556 ], [ 8.099278598674772, 49.017783515003373 ], [ 7.593676385131062, 48.333019110703731 ], [ 7.466759067422231, 47.620581976911865 ], [ 7.192202182655535, 47.449765529970989 ], [ 6.736571079138088, 47.541801255882888 ], [ 6.768713820023635, 47.287708238303679 ], [ 6.037388950228973, 46.725778713561908 ], [ 6.022609490593567, 46.272989813820516 ], [ 6.500099724970454, 46.429672756529442 ], [ 6.843592970414562, 45.991146552100673 ], [ 6.802355177445662, 45.70857982032868 ], [ 7.096652459347837, 45.333098863295874 ], [ 6.749955275101712, 45.028517971367592 ], [ 7.007562290076663, 44.254766750661389 ], [ 7.549596388386163, 44.127901109384823 ], [ 7.435184767291844, 43.693844916349178 ], [ 6.529245232783069, 43.128892320318357 ], [ 4.556962517931396, 43.399650987311588 ], [ 3.10041059735272, 43.075200507167125 ], [ 2.985998976258486, 42.473015041669896 ], [ 1.826793247087181, 42.343384711265657 ], [ 0.701590610363922, 42.795734361332649 ], [ 0.338046909190581, 42.579546006839564 ], [ -1.502770961910471, 43.034014390630489 ], [ -1.901351284177736, 43.422802028978339 ], [ -1.384225226232957, 44.022610378590173 ], [ -1.193797573237362, 46.014917710954876 ], [ -2.225724249673789, 47.064362697938208 ], [ -2.963276129559574, 47.570326646507965 ], [ -4.491554938159481, 47.954954332056417 ], [ -4.592349819344747, 48.684160468126947 ], [ -3.295813971357745, 48.901692409859635 ], [ -1.616510789384932, 48.644421291694584 ], [ -1.933494025063254, 49.776341864615773 ], [ -0.98946895995536, 49.347375800160876 ], [ 1.338761020522753, 50.127173163445264 ], [ 1.6390010921385, 50.946606350297515 ], [ 2.513573032246171, 51.148506171261857 ], [ 2.658422071960331, 50.79684804951566 ], [ 3.123251580425716, 50.780363267614518 ], [ 3.588184441755715, 50.378992418003577 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Gabon", "iso_a2": "GA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 11.093772820691925, -3.978826592630547 ], [ 10.06613528813574, -2.969482517105682 ], [ 9.405245395554971, -2.144313246269043 ], [ 8.79799563969317, -1.111301364754496 ], [ 8.830086704146424, -0.779073581550037 ], [ 9.048419630579588, -0.459351494960217 ], [ 9.291350538783689, 0.268666083167687 ], [ 9.492888624721985, 1.010119533691494 ], [ 9.830284051155644, 1.067893784993799 ], [ 11.285078973036462, 1.057661851400013 ], [ 11.276449008843713, 2.261050930180872 ], [ 11.75166548019979, 2.326757513839993 ], [ 12.359380323952221, 2.19281220133945 ], [ 12.951333855855609, 2.32161570882694 ], [ 13.075822381246752, 2.267097072759015 ], [ 13.003113641012078, 1.83089630778332 ], [ 13.282631463278818, 1.31418366129688 ], [ 14.026668735417218, 1.395677395021153 ], [ 14.276265903386957, 1.196929836426619 ], [ 13.843320753645656, 0.038757635901149 ], [ 14.316418491277744, -0.552627455247048 ], [ 14.425455763413595, -1.333406670744971 ], [ 14.299210239324566, -1.998275648612214 ], [ 13.99240726080771, -2.4708049454891 ], [ 13.109618767965628, -2.428740329603514 ], [ 12.575284458067642, -1.948511244315135 ], [ 12.495702752338161, -2.391688327650243 ], [ 11.820963575903193, -2.514161472181982 ], [ 11.478038771214303, -2.765618991714241 ], [ 11.855121697648116, -3.426870619321051 ], [ 11.093772820691925, -3.978826592630547 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "United Kingdom", "iso_a2": "GB" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -5.661948614921897, 54.554603176483852 ], [ -6.197884894220977, 53.867565009163343 ], [ -6.953730231137996, 54.073702297575636 ], [ -7.572167934591079, 54.059956366585993 ], [ -7.366030646178785, 54.595840969452695 ], [ -7.572167934591079, 55.131622219454897 ], [ -6.733847011736145, 55.172860012423797 ], [ -5.661948614921897, 54.554603176483852 ] ] ], [ [ [ -3.005004848635281, 58.635000108466329 ], [ -4.073828497728016, 57.553024807355257 ], [ -3.055001796877661, 57.69001902936094 ], [ -1.959280564776918, 57.684799709699519 ], [ -2.219988165689301, 56.870017401753529 ], [ -3.119003058271119, 55.973793036515474 ], [ -2.085009324543023, 55.909998480851272 ], [ -2.005675679673857, 55.804902850350231 ], [ -1.11499101399221, 54.624986477265395 ], [ -0.4304849918542, 54.464376125702159 ], [ 0.184981316742039, 53.325014146531032 ], [ 0.469976840831777, 52.929999498091973 ], [ 1.681530795914739, 52.739520168664001 ], [ 1.559987827164377, 52.099998480836007 ], [ 1.050561557630914, 51.806760565795685 ], [ 1.449865349950301, 51.289427802121963 ], [ 0.550333693045502, 50.765738837275876 ], [ -0.78751746255864, 50.77498891865622 ], [ -2.489997524414377, 50.500018622431242 ], [ -2.956273972984036, 50.696879991247016 ], [ -3.617448085942328, 50.228355617872722 ], [ -4.542507900399244, 50.341837063185665 ], [ -5.245023159191135, 49.959999904981089 ], [ -5.776566941745301, 50.159677639356829 ], [ -4.309989793301838, 51.210001125689161 ], [ -3.414850633142123, 51.42600861266925 ], [ -3.422719467108323, 51.426848167406092 ], [ -4.984367234710874, 51.593466091510976 ], [ -5.267295701508885, 51.991400458374585 ], [ -4.222346564134853, 52.301355699261364 ], [ -4.770013393564113, 52.840004991255626 ], [ -4.579999152026915, 53.495003770555172 ], [ -3.093830673788659, 53.404547400669685 ], [ -3.092079637047107, 53.404440822963551 ], [ -2.945008510744344, 53.984999701546684 ], [ -3.614700825433033, 54.600936773292574 ], [ -3.630005458989331, 54.615012925833014 ], [ -4.844169073903004, 54.790971177786844 ], [ -5.082526617849226, 55.061600653699372 ], [ -4.719112107756644, 55.508472601943481 ], [ -5.047980922862109, 55.78398550070753 ], [ -5.58639767091114, 55.311146145236819 ], [ -5.644998745130181, 56.275014960344805 ], [ -6.149980841486354, 56.785009670633542 ], [ -5.786824713555291, 57.818848375064647 ], [ -5.009998745127575, 58.630013332750053 ], [ -4.211494513353557, 58.550845038479167 ], [ -3.005004848635281, 58.635000108466329 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Georgia", "iso_a2": "GE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 41.554084100110657, 41.535656236327569 ], [ 41.70317060727271, 41.962942816732919 ], [ 41.453470086438386, 42.64512339941794 ], [ 40.875469191253792, 43.013628038091284 ], [ 40.32139448422032, 43.128633938156845 ], [ 39.955008579270924, 43.434997666999223 ], [ 40.076964959479767, 43.553104153002316 ], [ 40.922184686045625, 43.382158514980787 ], [ 42.39439456560882, 43.220307929042633 ], [ 43.756016880067392, 42.740828152022488 ], [ 43.931199985536836, 42.554973863284772 ], [ 44.537622918481986, 42.711992702803627 ], [ 45.470279168485717, 42.502780666669977 ], [ 45.776410353382772, 42.092443956056357 ], [ 46.404950799348825, 41.860675157227305 ], [ 46.145431756379018, 41.72280243587258 ], [ 46.637908156120581, 41.181672675128226 ], [ 46.501637404166928, 41.064444688474111 ], [ 45.962600538930388, 41.123872585609774 ], [ 45.217426385281584, 41.411451931314048 ], [ 44.972480096218078, 41.248128567055595 ], [ 43.582745802592733, 41.092143256182567 ], [ 42.619548781104491, 41.583172715819941 ], [ 41.554084100110657, 41.535656236327569 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Ghana", "iso_a2": "GH" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 1.060121697604927, 5.928837388528876 ], [ -0.507637905265938, 5.343472601742675 ], [ -1.063624640294194, 5.000547797053812 ], [ -1.964706590167594, 4.710462144383371 ], [ -2.856125047202397, 4.994475816259509 ], [ -2.81070146321784, 5.38905121502411 ], [ -3.244370083011262, 6.250471503113502 ], [ -2.983584967450327, 7.379704901555513 ], [ -2.562189500326241, 8.219627793811483 ], [ -2.827496303712707, 9.642460842319778 ], [ -2.963896246747112, 10.395334784380083 ], [ -2.940409308270461, 10.962690334512558 ], [ -1.203357713211432, 11.009819240762738 ], [ -0.761575893548183, 10.936929633015055 ], [ -0.438701544588582, 11.098340969278722 ], [ 0.023802524423701, 11.018681748900804 ], [ -0.049784715159944, 10.706917832883931 ], [ 0.367579990245389, 10.19121287682718 ], [ 0.365900506195885, 9.465003973829482 ], [ 0.461191847342121, 8.677222601756014 ], [ 0.712029249686879, 8.312464504423829 ], [ 0.490957472342245, 7.411744289576475 ], [ 0.570384148774849, 6.914358628767189 ], [ 0.836931186536333, 6.279978745952149 ], [ 1.060121697604927, 5.928837388528876 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Guinea", "iso_a2": "GN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.439298468448698, 7.686042792181738 ], [ -8.722123582382125, 7.71167430259851 ], [ -8.926064622422004, 7.309037380396376 ], [ -9.208786383490846, 7.313920803247953 ], [ -9.40334815106975, 7.526905218938907 ], [ -9.337279832384581, 7.928534450711354 ], [ -9.755342169625834, 8.541055202666925 ], [ -10.016566534861255, 8.428503933135232 ], [ -10.23009355309128, 8.406205552601293 ], [ -10.505477260774668, 8.348896389189605 ], [ -10.494315151399633, 8.715540676300435 ], [ -10.654770473665891, 8.977178452994195 ], [ -10.622395188835041, 9.267910061068278 ], [ -10.839151984083301, 9.688246161330369 ], [ -11.11748124840733, 10.045872911006285 ], [ -11.917277390988659, 10.046983954300558 ], [ -12.150338100625005, 9.858571682164381 ], [ -12.425928514037565, 9.835834051955956 ], [ -12.59671912276221, 9.620188300001971 ], [ -12.71195756677308, 9.342711696810767 ], [ -13.246550258832515, 8.903048610871508 ], [ -13.685153977909792, 9.49474376061346 ], [ -14.074044969122282, 9.886166897008252 ], [ -14.330075852912371, 10.015719712763968 ], [ -14.579698859098258, 10.214467271358515 ], [ -14.693231980843505, 10.656300767454042 ], [ -14.839553798877944, 10.876571560098141 ], [ -15.130311245168173, 11.040411688679526 ], [ -14.685687221728898, 11.527823798056488 ], [ -14.382191534878729, 11.509271958863692 ], [ -14.121406419317779, 11.677117010947697 ], [ -13.900799729863776, 11.678718980348748 ], [ -13.743160773157413, 11.811269029177412 ], [ -13.828271857142125, 12.142644151249044 ], [ -13.718743658899513, 12.247185573775511 ], [ -13.700476040084325, 12.586182969610194 ], [ -13.217818162478238, 12.575873521367967 ], [ -12.499050665730564, 12.332089952031057 ], [ -12.27859900557344, 12.354440008997287 ], [ -12.203564825885634, 12.465647691289405 ], [ -11.658300950557932, 12.386582749882836 ], [ -11.513942836950591, 12.442987575729418 ], [ -11.456168585648271, 12.076834214725338 ], [ -11.297573614944511, 12.077971096235771 ], [ -11.03655595543826, 12.211244615116515 ], [ -10.870829637078215, 12.17788747807211 ], [ -10.593223842806282, 11.92397532800598 ], [ -10.165213792348837, 11.844083563682744 ], [ -9.890992804392013, 12.060478623904972 ], [ -9.567911749703214, 12.194243068892476 ], [ -9.327616339546012, 12.334286200403454 ], [ -9.127473517279583, 12.308060411015333 ], [ -8.90526485842453, 12.088358059126437 ], [ -8.786099005559464, 11.812560939984706 ], [ -8.376304897484914, 11.393645941610629 ], [ -8.581305304386774, 11.136245632364805 ], [ -8.620321010767128, 10.810890814655183 ], [ -8.407310756860028, 10.909256903522762 ], [ -8.282357143578281, 10.792597357623846 ], [ -8.33537716310974, 10.494811916541934 ], [ -8.029943610048619, 10.206534939001713 ], [ -8.229337124046822, 10.129020290563901 ], [ -8.309616461612251, 9.789531968622441 ], [ -8.079113735374349, 9.376223863152035 ], [ -7.832100389019188, 8.575704250518626 ], [ -8.20349890790088, 8.455453192575447 ], [ -8.299048631208564, 8.316443589710303 ], [ -8.221792364932199, 8.123328762235573 ], [ -8.280703497744938, 7.687179673692157 ], [ -8.439298468448698, 7.686042792181738 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Gambia", "iso_a2": "GM" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -16.841524624081273, 13.151393947802561 ], [ -16.713728807023472, 13.594958604379855 ], [ -15.624596320039942, 13.623587347869559 ], [ -15.39877031092446, 13.860368760630919 ], [ -15.081735398813819, 13.876491807505985 ], [ -14.687030808968487, 13.630356960499784 ], [ -14.376713833055788, 13.625680243377374 ], [ -14.046992356817482, 13.794067898000449 ], [ -13.844963344772408, 13.505041612192002 ], [ -14.277701788784555, 13.280585028532244 ], [ -14.712197231494628, 13.298206691943777 ], [ -15.141163295949468, 13.509511623585238 ], [ -15.511812506562933, 13.278569647672867 ], [ -15.691000535534995, 13.270353094938457 ], [ -15.931295945692211, 13.130284125211332 ], [ -16.841524624081273, 13.151393947802561 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Guinea-Bissau", "iso_a2": "GW" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -15.130311245168173, 11.040411688679526 ], [ -15.664180467175527, 11.458474025920795 ], [ -16.085214199273565, 11.52459402103824 ], [ -16.314786749730203, 11.80651479740655 ], [ -16.30894731288123, 11.95870189050612 ], [ -16.613838263403281, 12.170911159712702 ], [ -16.677451951554573, 12.384851589401052 ], [ -16.147716844130585, 12.547761542201187 ], [ -15.816574266004254, 12.515567124883347 ], [ -15.54847693527401, 12.628170070847347 ], [ -13.700476040084325, 12.586182969610194 ], [ -13.718743658899513, 12.247185573775511 ], [ -13.828271857142125, 12.142644151249044 ], [ -13.743160773157413, 11.811269029177412 ], [ -13.900799729863776, 11.678718980348748 ], [ -14.121406419317779, 11.677117010947697 ], [ -14.382191534878729, 11.509271958863692 ], [ -14.685687221728898, 11.527823798056488 ], [ -15.130311245168173, 11.040411688679526 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Eq. Guinea", "iso_a2": "GQ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 9.492888624721985, 1.010119533691494 ], [ 9.305613234096256, 1.160911363119183 ], [ 9.649158155972628, 2.283866075037736 ], [ 11.276449008843713, 2.261050930180872 ], [ 11.285078973036462, 1.057661851400013 ], [ 9.830284051155644, 1.067893784993799 ], [ 9.492888624721985, 1.010119533691494 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Greece", "iso_a2": "GR" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 23.699980096133004, 35.705004380835533 ], [ 24.24666507334868, 35.368022365860156 ], [ 25.02501549652888, 35.424995632461986 ], [ 25.769207797964185, 35.35401805270908 ], [ 25.745023227651586, 35.179997666966216 ], [ 26.290002882601726, 35.299990342747918 ], [ 26.164997592887659, 35.004995429009796 ], [ 24.724982130642303, 34.91998769788961 ], [ 24.735007358506948, 35.084990546197588 ], [ 23.514978468528113, 35.279991563450977 ], [ 23.699980096133004, 35.705004380835533 ] ] ], [ [ [ 26.604195590936285, 41.562114569661105 ], [ 26.29460208507578, 40.936261298174259 ], [ 26.056942172965506, 40.824123440100834 ], [ 25.447677036244187, 40.852545477861469 ], [ 24.925848422960939, 40.947061672523233 ], [ 23.714811232200816, 40.687129218095123 ], [ 24.407998894964066, 40.124992987624097 ], [ 23.899967889102584, 39.96200552017558 ], [ 23.3429993018608, 39.960997829745793 ], [ 22.813987664488963, 40.476005153966554 ], [ 22.626298862404781, 40.256561184239189 ], [ 22.849747755634809, 39.659310818025773 ], [ 23.350027296652598, 39.190011298167263 ], [ 22.973099399515547, 38.970903225249657 ], [ 23.530016310324953, 38.510001125638468 ], [ 24.025024855248944, 38.21999298761645 ], [ 24.040011020613605, 37.655014553369426 ], [ 23.115002882589152, 37.920011298162223 ], [ 23.409971958111072, 37.409990749657396 ], [ 22.774971958108637, 37.305010077456558 ], [ 23.15422529469862, 36.422505804992056 ], [ 22.490028110451107, 36.41000010837746 ], [ 21.670026482843696, 36.844986477194198 ], [ 21.295010613701578, 37.644989325504696 ], [ 21.120034213961333, 38.310323391262727 ], [ 20.730032179454582, 38.769985256498785 ], [ 20.217712029712857, 39.340234686839636 ], [ 20.15001590341052, 39.624997666984029 ], [ 20.615000441172782, 40.110006822259436 ], [ 20.674996779063633, 40.434999904943055 ], [ 20.999989861747281, 40.580003973953978 ], [ 21.020040317476429, 40.84272695572588 ], [ 21.674160597426976, 40.931274522457983 ], [ 22.05537763844427, 41.149865831052693 ], [ 22.597308383889015, 41.130487168943205 ], [ 22.76177, 41.3048 ], [ 22.952377150166569, 41.337993882811219 ], [ 23.692073601992462, 41.309080918943863 ], [ 24.492644891058035, 41.58389618587205 ], [ 25.197201368925533, 41.234485988930658 ], [ 26.106138136507184, 41.328898830727837 ], [ 26.117041863720914, 41.826904608724732 ], [ 26.604195590936285, 41.562114569661105 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Greenland", "iso_a2": "GL" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -46.76379, 82.62796 ], [ -43.40644, 83.22516 ], [ -39.89753, 83.18018 ], [ -38.62214, 83.54905 ], [ -35.08787, 83.64513 ], [ -27.10046, 83.51966 ], [ -20.84539, 82.72669 ], [ -22.69182, 82.34165 ], [ -26.51753, 82.29765 ], [ -31.9, 82.2 ], [ -31.39646, 82.02154 ], [ -27.85666, 82.13178 ], [ -24.84448, 81.78697 ], [ -22.90328, 82.09317 ], [ -22.07175, 81.73449 ], [ -23.16961, 81.15271 ], [ -20.62363, 81.52462 ], [ -15.76818, 81.91245 ], [ -12.77018, 81.71885 ], [ -12.20855, 81.29154 ], [ -16.28533, 80.58004 ], [ -16.85, 80.35 ], [ -20.04624, 80.17708 ], [ -17.73035, 80.12912 ], [ -18.9, 79.4 ], [ -19.70499, 78.75128 ], [ -19.67353, 77.63859 ], [ -18.47285, 76.98565 ], [ -20.03503, 76.94434 ], [ -21.67944, 76.62795 ], [ -19.83407, 76.09808 ], [ -19.59896, 75.24838 ], [ -20.66818, 75.15585 ], [ -19.37281, 74.29561 ], [ -21.59422, 74.22382 ], [ -20.43454, 73.81713 ], [ -20.76234, 73.46436 ], [ -22.17221, 73.30955 ], [ -23.56593, 73.30663 ], [ -22.31311, 72.62928 ], [ -22.29954, 72.18409 ], [ -24.27834, 72.59788 ], [ -24.79296, 72.3302 ], [ -23.44296, 72.08016 ], [ -22.13281, 71.46898 ], [ -21.75356, 70.66369 ], [ -23.53603, 70.471 ], [ -24.30702, 70.85649 ], [ -25.54341, 71.43094 ], [ -25.20135, 70.75226 ], [ -26.36276, 70.22646 ], [ -23.72742, 70.18401 ], [ -22.34902, 70.12946 ], [ -25.02927, 69.2588 ], [ -27.74737, 68.47046 ], [ -30.67371, 68.12503 ], [ -31.77665, 68.12078 ], [ -32.81105, 67.73547 ], [ -34.20196, 66.67974 ], [ -36.35284, 65.9789 ], [ -37.04378, 65.93768 ], [ -38.37505, 65.69213 ], [ -39.81222, 65.45848 ], [ -40.66899, 64.83997 ], [ -40.68281, 64.13902 ], [ -41.1887, 63.48246 ], [ -42.81938, 62.68233 ], [ -42.41666, 61.90093 ], [ -42.86619, 61.07404 ], [ -43.3784, 60.09772 ], [ -44.7875, 60.03676 ], [ -46.26364, 60.85328 ], [ -48.26294, 60.85843 ], [ -49.23308, 61.40681 ], [ -49.90039, 62.38336 ], [ -51.63325, 63.62691 ], [ -52.14014, 64.27842 ], [ -52.27659, 65.1767 ], [ -53.66166, 66.09957 ], [ -53.30161, 66.8365 ], [ -53.96911, 67.18899 ], [ -52.9804, 68.35759 ], [ -51.47536, 68.72958 ], [ -51.08041, 69.14781 ], [ -50.87122, 69.9291 ], [ -52.013585, 69.574925 ], [ -52.55792, 69.42616 ], [ -53.45629, 69.283625 ], [ -54.68336, 69.61003 ], [ -54.75001, 70.28932 ], [ -54.35884, 70.821315 ], [ -53.431315, 70.835755 ], [ -51.39014, 70.56978 ], [ -53.10937, 71.20485 ], [ -54.00422, 71.54719 ], [ -55.0, 71.406536967272572 ], [ -55.83468, 71.65444 ], [ -54.71819, 72.58625 ], [ -55.32634, 72.95861 ], [ -56.12003, 73.64977 ], [ -57.32363, 74.71026 ], [ -58.59679, 75.09861 ], [ -58.58516, 75.51727 ], [ -61.26861, 76.10238 ], [ -63.39165, 76.1752 ], [ -66.06427, 76.13486 ], [ -68.50438, 76.06141 ], [ -69.66485, 76.37975 ], [ -71.40257, 77.00857 ], [ -68.77671, 77.32312 ], [ -66.76397, 77.37595 ], [ -71.04293, 77.63595 ], [ -73.297, 78.04419 ], [ -73.15938, 78.43271 ], [ -69.37345, 78.91388 ], [ -65.7107, 79.39436 ], [ -65.3239, 79.75814 ], [ -68.02298, 80.11721 ], [ -67.15129, 80.51582 ], [ -63.68925, 81.21396 ], [ -62.23444, 81.3211 ], [ -62.65116, 81.77042 ], [ -60.28249, 82.03363 ], [ -57.20744, 82.19074 ], [ -54.13442, 82.19962 ], [ -53.04328, 81.88833 ], [ -50.39061, 82.43883 ], [ -48.00386, 82.06481 ], [ -46.59984, 81.985945 ], [ -44.523, 81.6607 ], [ -46.9007, 82.19979 ], [ -46.76379, 82.62796 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Guatemala", "iso_a2": "GT" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -90.095554572290979, 13.735337632700734 ], [ -90.608624030300845, 13.909771429901951 ], [ -91.232410244496052, 13.927832342987957 ], [ -91.689746670279135, 14.126218166556455 ], [ -92.227750006869826, 14.538828640190928 ], [ -92.203229539747326, 14.830102850804069 ], [ -92.087215949252069, 15.064584662328441 ], [ -92.229248623406278, 15.25144664149586 ], [ -91.747960171255926, 16.066564846251723 ], [ -90.464472622422662, 16.069562079324655 ], [ -90.438866950222035, 16.410109768128095 ], [ -90.600846727240921, 16.470777899638762 ], [ -90.711821865587723, 16.687483018454728 ], [ -91.081670091500655, 16.918476670799407 ], [ -91.453921271515156, 17.252177232324172 ], [ -91.002269253284211, 17.25465770107418 ], [ -91.001519945015957, 17.81759491624571 ], [ -90.067933519230976, 17.819326076727478 ], [ -89.143080410503316, 17.808318996649319 ], [ -89.150806037130948, 17.015576687075836 ], [ -89.229121670269279, 15.886937567605171 ], [ -88.930612759135272, 15.887273464415076 ], [ -88.604586147805847, 15.70638011317736 ], [ -88.51836402052686, 15.855389105690975 ], [ -88.225022752622024, 15.727722479713904 ], [ -88.680679694355632, 15.346247056535304 ], [ -89.154810960633569, 15.06641917567481 ], [ -89.225220099631272, 14.874286200413621 ], [ -89.145535041037178, 14.678019110569082 ], [ -89.3533259752828, 14.424132798719114 ], [ -89.587342698916558, 14.36258616785949 ], [ -89.534219326520514, 14.244815578666305 ], [ -89.721933966820728, 14.134228013561696 ], [ -90.064677903996596, 13.881969509328925 ], [ -90.095554572290979, 13.735337632700734 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Guyana", "iso_a2": "GY" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -59.758284878159195, 8.367034816924047 ], [ -59.101684129458661, 7.999201971870492 ], [ -58.482962205628063, 7.347691351750697 ], [ -58.454876064677421, 6.832787380394464 ], [ -58.078103196837375, 6.809093736188643 ], [ -57.542218593970645, 6.321268215353356 ], [ -57.147436489476888, 5.973149929219161 ], [ -57.307245856339506, 5.073566595882227 ], [ -57.914288906472137, 4.812626451024414 ], [ -57.860209520078698, 4.57680105226045 ], [ -58.044694383360678, 4.060863552258382 ], [ -57.60156897645787, 3.334654649260685 ], [ -57.28143347840971, 3.333491929534119 ], [ -57.150097825739913, 2.768926906745406 ], [ -56.539385748914555, 1.899522609866921 ], [ -56.782704230360828, 1.863710842288654 ], [ -57.335822923396904, 1.948537705895759 ], [ -57.660971035377372, 1.682584947105639 ], [ -58.113449876525017, 1.507195135907025 ], [ -58.429477098205965, 1.463941962078721 ], [ -58.540012986878295, 1.268088283692521 ], [ -59.030861579002647, 1.317697658692722 ], [ -59.646043667221257, 1.786893825686789 ], [ -59.718545701726747, 2.24963043864436 ], [ -59.974524909084558, 2.755232652188056 ], [ -59.815413174057866, 3.606498521332085 ], [ -59.538039923731233, 3.958802598481938 ], [ -59.767405768458715, 4.423502915866607 ], [ -60.11100236676738, 4.574966538914083 ], [ -59.980958624904886, 5.014061184098139 ], [ -60.213683437731333, 5.244486395687602 ], [ -60.733574184803722, 5.200277207861901 ], [ -61.410302903881956, 5.959068101419618 ], [ -61.139415045807951, 6.234296779806144 ], [ -61.159336310456482, 6.696077378766319 ], [ -60.543999192940987, 6.856584377464883 ], [ -60.295668097562398, 7.043911444522919 ], [ -60.637972785063766, 7.414999904810855 ], [ -60.5505879380582, 7.779602972846178 ], [ -59.758284878159195, 8.367034816924047 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Honduras", "iso_a2": "HN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -87.316654425795491, 12.984685777229004 ], [ -87.489408738947134, 13.297534898323931 ], [ -87.79311113152653, 13.384480495655168 ], [ -87.723502977229316, 13.785050360565606 ], [ -87.859515347021613, 13.893312486217098 ], [ -88.065342576840123, 13.964625962779792 ], [ -88.503997972349623, 13.845485948130943 ], [ -88.541230841815945, 13.980154730683523 ], [ -88.843072882832757, 14.140506700085211 ], [ -89.058511929057659, 14.340029405164216 ], [ -89.353325975282814, 14.424132798719086 ], [ -89.145535041037192, 14.678019110569153 ], [ -89.225220099631258, 14.874286200413678 ], [ -89.15481096063354, 15.066419175674866 ], [ -88.680679694355604, 15.34624705653539 ], [ -88.225022752621953, 15.727722479714032 ], [ -88.121153123715374, 15.688655096901357 ], [ -87.901812506852423, 15.864458319558196 ], [ -87.615680101252337, 15.878798529519202 ], [ -87.522920905288458, 15.797278957578783 ], [ -87.367762417332131, 15.846940009011291 ], [ -86.903191291028179, 15.756712958229571 ], [ -86.440945604177386, 15.782835394753192 ], [ -86.119233974944336, 15.893448798073962 ], [ -86.001954311857844, 16.005405788634391 ], [ -85.683317430346278, 15.953651841693954 ], [ -85.444003872402561, 15.885749009662447 ], [ -85.182443610357211, 15.909158433490632 ], [ -84.983721889978824, 15.995923163308703 ], [ -84.526979743167146, 15.857223619037427 ], [ -84.368255581382584, 15.835157782448732 ], [ -84.063054572266822, 15.648244126849136 ], [ -83.773976610026125, 15.424071763566872 ], [ -83.410381232420377, 15.270902818253774 ], [ -83.147219000974133, 14.99582916916421 ], [ -83.489988776366033, 15.016267198135665 ], [ -83.628584967772895, 14.880073960830373 ], [ -83.97572140169359, 14.749435939996488 ], [ -84.228341640952408, 14.748764146376629 ], [ -84.449335903648603, 14.621614284722511 ], [ -84.649582078779645, 14.666805324761867 ], [ -84.820036790694303, 14.81958669683263 ], [ -84.924500698572331, 14.790492865452336 ], [ -85.052787441736882, 14.551541042534723 ], [ -85.148750576502891, 14.560196844943619 ], [ -85.165364549484821, 14.354369615125051 ], [ -85.514413011400279, 14.079011745657908 ], [ -85.698665330736958, 13.960078436738002 ], [ -85.801294725268519, 13.836054999237604 ], [ -86.096263800790609, 14.038187364147234 ], [ -86.312142096689854, 13.771356106008227 ], [ -86.52070817741992, 13.778487453664468 ], [ -86.755086636079625, 13.754845485890939 ], [ -86.733821784191491, 13.2630925562014 ], [ -86.880557013684381, 13.254204209847217 ], [ -87.005769009127448, 13.025794379117258 ], [ -87.316654425795491, 12.984685777229004 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Croatia", "iso_a2": "HR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 18.829838087650046, 45.908877671891844 ], [ 19.072768995854176, 45.521511135432092 ], [ 19.390475701584592, 45.236515611342384 ], [ 19.005486281010121, 44.860233669609158 ], [ 18.553214145591653, 45.081589667331457 ], [ 17.861783481526402, 45.067740383477144 ], [ 17.002146030351014, 45.233776760430942 ], [ 16.534939406000206, 45.211607570977719 ], [ 16.318156772535872, 45.004126695325908 ], [ 15.959367303133376, 45.233776760430942 ], [ 15.750026075918981, 44.818711656262565 ], [ 16.239660271884532, 44.351143296885709 ], [ 16.456442905348865, 44.041239732431279 ], [ 16.916156447017329, 43.66772247982567 ], [ 17.297373488034452, 43.446340643887368 ], [ 17.674921502358984, 43.02856252702361 ], [ 18.56, 42.65 ], [ 18.450016310304818, 42.479991360029317 ], [ 17.509970330483327, 42.849994615239154 ], [ 16.930005730871642, 43.20999848080038 ], [ 16.015384555737683, 43.507215481127218 ], [ 15.174453973052096, 44.243191229827914 ], [ 15.376250441151797, 44.317915350922078 ], [ 14.920309279040509, 44.738483995129457 ], [ 14.901602410550879, 45.076060289076111 ], [ 14.258747592839995, 45.233776760430942 ], [ 13.952254672917036, 44.802123521496867 ], [ 13.656975538801191, 45.136935126315961 ], [ 13.679403110415819, 45.484149074885011 ], [ 13.715059848697251, 45.500323798192426 ], [ 14.411968214585499, 45.466165676447417 ], [ 14.59510949062792, 45.634940904312828 ], [ 14.935243767972963, 45.471695054702764 ], [ 15.327674594797429, 45.452316392593332 ], [ 15.323953891672431, 45.731782538427694 ], [ 15.671529575267641, 45.834153550797907 ], [ 15.768732944408612, 46.238108222023527 ], [ 16.564808383864943, 46.503750922219808 ], [ 16.882515089595415, 46.380631822284442 ], [ 17.630066359129557, 45.951769110694102 ], [ 18.456062452882861, 45.75948110613615 ], [ 18.829838087650046, 45.908877671891844 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Haiti", "iso_a2": "HT" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -73.189790615517623, 19.915683905511912 ], [ -72.579672817663621, 19.871500555902358 ], [ -71.712361416292964, 19.714455878167357 ], [ -71.624873216422827, 19.169837958243306 ], [ -71.701302659782499, 18.785416978424053 ], [ -71.945112067335558, 18.616900132720261 ], [ -71.68773759630588, 18.316660061104471 ], [ -71.708304816358051, 18.044997056546094 ], [ -72.372476162389347, 18.21496084235406 ], [ -72.844411180294884, 18.145611070218365 ], [ -73.454554816365032, 18.2179063989947 ], [ -73.922433234335656, 18.030992743395004 ], [ -74.458033616824778, 18.342549953682706 ], [ -74.369925299767132, 18.664907538319412 ], [ -73.449542202432724, 18.526052964751145 ], [ -72.694937099890637, 18.445799465401862 ], [ -72.334881557897006, 18.668421535715254 ], [ -72.791649542924887, 19.101625067618031 ], [ -72.784104783810278, 19.483591416903408 ], [ -73.415022345661754, 19.639550889560283 ], [ -73.189790615517623, 19.915683905511912 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Hungary", "iso_a2": "HU" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 16.202298211337364, 46.852385972676963 ], [ 16.534267612380376, 47.496170966169117 ], [ 16.340584344150415, 47.71290192320123 ], [ 16.903754103267261, 47.714865627628328 ], [ 16.979666782304037, 48.123497015976305 ], [ 17.48847293464982, 47.867466132186216 ], [ 17.857132602620027, 47.758428860050373 ], [ 18.696512892336926, 47.880953681014404 ], [ 18.777024773847671, 48.081768296900634 ], [ 19.174364861739889, 48.111378892603867 ], [ 19.661363559658497, 48.266614895208662 ], [ 19.769470656013112, 48.202691148463614 ], [ 20.239054396249347, 48.327567247096923 ], [ 20.473562045989866, 48.562850043321816 ], [ 20.801293979584926, 48.623854071642384 ], [ 21.872236362401736, 48.319970811550021 ], [ 22.085608351334855, 48.422264309271789 ], [ 22.640819939878753, 48.150239569687358 ], [ 22.710531447040495, 47.882193915389408 ], [ 22.099767693782837, 47.672439276716702 ], [ 21.626514926853872, 46.994237779318162 ], [ 21.021952345471249, 46.316087958351901 ], [ 20.220192498462836, 46.127468980486555 ], [ 19.596044549241583, 46.17172984474454 ], [ 18.829838087649961, 45.908877671891929 ], [ 18.456062452882861, 45.759481106136136 ], [ 17.630066359129557, 45.951769110694187 ], [ 16.882515089595302, 46.380631822284442 ], [ 16.564808383864857, 46.50375092221983 ], [ 16.370504998447416, 46.841327216166505 ], [ 16.202298211337364, 46.852385972676963 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Indonesia", "iso_a2": "ID" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 120.715608758630452, -10.239581394087864 ], [ 120.295014276206899, -10.258649997603527 ], [ 118.967808465654713, -9.557969252158031 ], [ 119.900309686361624, -9.361340427287516 ], [ 120.425755649905426, -9.665921319215798 ], [ 120.775501743656747, -9.969675388227458 ], [ 120.715608758630452, -10.239581394087864 ] ] ], [ [ [ 124.435950148619412, -10.140000909061442 ], [ 123.579981724136729, -10.359987481327963 ], [ 123.459989048355027, -10.239994805546175 ], [ 123.550009393407464, -9.90001555749798 ], [ 123.980008986508125, -9.290026950724695 ], [ 124.968682489116219, -8.892790215697048 ], [ 125.07001997284064, -9.089987481322837 ], [ 125.088520135601101, -9.393173109579322 ], [ 124.435950148619412, -10.140000909061442 ] ] ], [ [ [ 117.900018345207769, -8.095681247594925 ], [ 118.260616489740499, -8.362383314653329 ], [ 118.878459914222134, -8.28068287519983 ], [ 119.1265067892231, -8.705824883665073 ], [ 117.970401645989313, -8.906639499551261 ], [ 117.277730747549043, -9.040894870645559 ], [ 116.740140822416635, -9.032936700072639 ], [ 117.083737420725328, -8.457157891476541 ], [ 117.632024367342154, -8.449303073768192 ], [ 117.900018345207769, -8.095681247594925 ] ] ], [ [ [ 122.903537225436111, -8.094234307490737 ], [ 122.756982863456329, -8.649807631060639 ], [ 121.254490594570115, -8.933666273639943 ], [ 119.924390903809609, -8.810417982623875 ], [ 119.92092858284613, -8.444858900591072 ], [ 120.715091994307585, -8.236964613480865 ], [ 121.341668735846582, -8.536739597206022 ], [ 122.007364536630433, -8.460620212440162 ], [ 122.903537225436111, -8.094234307490737 ] ] ], [ [ [ 108.623478631628956, -6.777673841990676 ], [ 110.539227329553313, -6.877357679881683 ], [ 110.759575636845938, -6.465186455921753 ], [ 112.614811232556377, -6.946035658397591 ], [ 112.978768345188115, -7.59421314863458 ], [ 114.478935174621171, -7.776527601760279 ], [ 115.705526971501087, -8.370806573116866 ], [ 114.564511346496516, -8.751816908404834 ], [ 113.464733514460903, -8.348947442257426 ], [ 112.559672479301042, -8.376180922075164 ], [ 111.522061395312477, -8.302128594600958 ], [ 110.586149530074323, -8.122604668819022 ], [ 109.427667270955197, -7.740664157749762 ], [ 108.693655226681329, -7.641600437046222 ], [ 108.27776329959633, -7.766657403192582 ], [ 106.454102004016164, -7.354899590690948 ], [ 106.280624220812314, -6.924899997590202 ], [ 105.365486281355544, -6.85141611087117 ], [ 106.051645949327082, -5.8959188777945 ], [ 107.265008579540194, -5.954985039904059 ], [ 108.072091099074697, -6.345762220895239 ], [ 108.486846144649263, -6.421984958525769 ], [ 108.623478631628956, -6.777673841990676 ] ] ], [ [ [ 134.724624465066682, -6.214400730009288 ], [ 134.210133905168931, -6.895237725454706 ], [ 134.112775506731026, -6.142467136259015 ], [ 134.290335728085807, -5.783057549669039 ], [ 134.49962527886791, -5.445042006047899 ], [ 134.727001580952134, -5.73758228925216 ], [ 134.724624465066682, -6.214400730009288 ] ] ], [ [ [ 127.249215122588936, -3.45906503663889 ], [ 126.874922723498884, -3.79098276124958 ], [ 126.18380211802733, -3.607376397316557 ], [ 125.989033644719285, -3.177273451351326 ], [ 127.000651483264988, -3.12931772218441 ], [ 127.249215122588936, -3.45906503663889 ] ] ], [ [ [ 130.471344028851803, -3.09376433676762 ], [ 130.834836053592795, -3.858472181822762 ], [ 129.990546502808144, -3.446300957862817 ], [ 129.155248651242431, -3.362636813982249 ], [ 128.590683628453661, -3.428679294451257 ], [ 127.898891229362363, -3.393435967628193 ], [ 128.135879347852807, -2.843650404474914 ], [ 129.370997756060916, -2.802154229344552 ], [ 130.471344028851803, -3.09376433676762 ] ] ], [ [ [ 134.1433679546478, -1.151867364103595 ], [ 134.42262739475305, -2.769184665542383 ], [ 135.457602980694702, -3.367752780779114 ], [ 136.293314243718811, -2.30704233155609 ], [ 137.440737746327528, -1.703513278819372 ], [ 138.329727411044786, -1.702686455902651 ], [ 139.184920689042968, -2.051295668143638 ], [ 139.926684198160416, -2.409051608900285 ], [ 141.000210402591875, -2.600151055515624 ], [ 141.017056919519035, -5.859021905138022 ], [ 141.033851760013903, -9.117892754760419 ], [ 140.143415155192571, -8.297167657100957 ], [ 139.127766554928115, -8.096042982620943 ], [ 138.881476678624978, -8.380935153846096 ], [ 137.614473911692841, -8.411682631059762 ], [ 138.039099155835203, -7.597882175327356 ], [ 138.668621454014811, -7.320224704623072 ], [ 138.407913853102372, -6.232849216337485 ], [ 137.927839797110863, -5.393365573756 ], [ 135.989250116113482, -4.546543877789048 ], [ 135.164597609599724, -4.462931410340772 ], [ 133.662880487197896, -3.538853448097527 ], [ 133.367704705946807, -4.024818617370315 ], [ 132.983955519747354, -4.112978610860281 ], [ 132.756940952689007, -3.74628264731713 ], [ 132.753788690319226, -3.311787204607072 ], [ 131.989804315316206, -2.820551039240456 ], [ 133.066844517143494, -2.460417982598443 ], [ 133.780030959203515, -2.47984832114021 ], [ 133.696211786026169, -2.214541517753688 ], [ 132.232373488494233, -2.212526136894326 ], [ 131.836221958544712, -1.617161960459597 ], [ 130.942839797082826, -1.432522067880797 ], [ 130.519558140180067, -0.937720228686075 ], [ 131.867537876513637, -0.695461114101818 ], [ 132.380116408416797, -0.369537855636977 ], [ 133.985548130428441, -0.780210463060442 ], [ 134.1433679546478, -1.151867364103595 ] ] ], [ [ [ 125.240500522971587, 1.419836127117605 ], [ 124.437035353697382, 0.427881171058971 ], [ 123.685504998876723, 0.235593166500877 ], [ 122.723083123872897, 0.431136786293337 ], [ 121.056724888189109, 0.381217352699451 ], [ 120.183083123862758, 0.23724681233422 ], [ 120.040869582195484, -0.519657891444851 ], [ 120.935905389490728, -1.408905938323372 ], [ 121.475820754076182, -0.955962009285116 ], [ 123.340564813328484, -0.615672702643081 ], [ 123.258399285984495, -1.076213067228338 ], [ 122.822715285331611, -0.930950616055881 ], [ 122.388529901215378, -1.516858005381124 ], [ 121.508273553555483, -1.904482924002423 ], [ 122.454572381684301, -3.186058444840882 ], [ 122.271896193532569, -3.529500013852697 ], [ 123.170962762546566, -4.683693129091708 ], [ 123.162332798353788, -5.340603936385961 ], [ 122.628515252778726, -5.634591159694494 ], [ 122.236394484548072, -5.282933037948283 ], [ 122.719569126477069, -4.46417164471579 ], [ 121.738233677254385, -4.8513314754465 ], [ 121.489463332201268, -4.574552504091216 ], [ 121.619171177253889, -4.188477878438675 ], [ 120.898181593917712, -3.602105401222829 ], [ 120.972388950688782, -2.62764291749491 ], [ 120.305452915529912, -2.931603692235726 ], [ 120.390047235191759, -4.097579034037224 ], [ 120.430716587405385, -5.528241062037779 ], [ 119.796543410319515, -5.673400160345651 ], [ 119.366905552244958, -5.379878024927805 ], [ 119.653606398600147, -4.459417412944958 ], [ 119.498835483885983, -3.49441171632651 ], [ 119.078344354327015, -3.487021986508765 ], [ 118.767768996252897, -2.801999200047689 ], [ 119.18097374885869, -2.147103773612798 ], [ 119.323393996255078, -1.353147067880471 ], [ 119.825998976725856, 0.154254462073496 ], [ 120.035701938966355, 0.566477362465804 ], [ 120.885779250167701, 1.309222723796836 ], [ 121.666816847826993, 1.013943589681077 ], [ 122.927566766451861, 0.875192368977466 ], [ 124.07752241424285, 0.917101955566139 ], [ 125.065989211121831, 1.643259182131558 ], [ 125.240500522971587, 1.419836127117605 ] ] ], [ [ [ 128.688248732620735, 1.132385972494106 ], [ 128.63595218314137, 0.258485826006179 ], [ 128.120169712436194, 0.356412665199286 ], [ 127.968034295768888, -0.252077325037533 ], [ 128.37999881399972, -0.780003757331286 ], [ 128.100015903842319, -0.899996433112975 ], [ 127.696474644075039, -0.266598402511505 ], [ 127.399490187693772, 1.011721503092573 ], [ 127.600511509309086, 1.810690822757181 ], [ 127.932377557487513, 2.174596258956555 ], [ 128.004156121940838, 1.628531398928331 ], [ 128.594559360875479, 1.540810655112864 ], [ 128.688248732620735, 1.132385972494106 ] ] ], [ [ [ 117.875627069166029, 1.827640692548911 ], [ 118.996747267738186, 0.902219143066048 ], [ 117.811858351717802, 0.784241848143722 ], [ 117.478338657706075, 0.102474676917026 ], [ 117.521643507966616, -0.803723239753211 ], [ 116.560048455879524, -1.487660821136231 ], [ 116.5337968282752, -2.483517347832901 ], [ 116.148083937648636, -4.012726332214015 ], [ 116.00085778204911, -3.657037448749008 ], [ 114.864803094544556, -4.106984144714417 ], [ 114.468651564595092, -3.495703627133821 ], [ 113.755671828264127, -3.43916961020652 ], [ 113.256994256647573, -3.118775729996855 ], [ 112.068126255340673, -3.478392022316072 ], [ 111.70329064336002, -2.994442233902632 ], [ 111.048240187628238, -3.049425957861189 ], [ 110.223846063276, -2.934032484553484 ], [ 110.070935500124364, -1.592874037282414 ], [ 109.571947869914055, -1.314906507984489 ], [ 109.091873813922547, -0.459506524257051 ], [ 108.952657505328176, 0.415375474444346 ], [ 109.069136183714051, 1.341933905437642 ], [ 109.663260125773746, 2.006466986494985 ], [ 109.830226678508865, 1.338135687664192 ], [ 110.51406090702713, 0.773131415200993 ], [ 111.159137811326588, 0.976478176269509 ], [ 111.797548455860436, 0.904441229654651 ], [ 112.380251906383677, 1.410120957846758 ], [ 112.859809198052204, 1.497790025229946 ], [ 113.80584964401956, 1.217548732911041 ], [ 114.621355422017501, 1.430688177898887 ], [ 115.134037306785245, 2.821481838386219 ], [ 115.519078403792008, 3.169238389494396 ], [ 115.865517205876785, 4.306559149590157 ], [ 117.015214471506368, 4.306094061699469 ], [ 117.882034946770176, 4.137551377779488 ], [ 117.313232456533541, 3.234428208830579 ], [ 118.048329705885379, 2.287690131027361 ], [ 117.875627069166029, 1.827640692548911 ] ] ], [ [ [ 105.81765506390937, -5.852355645372413 ], [ 104.710384149191526, -5.873284600450646 ], [ 103.86821333213075, -5.037314955264975 ], [ 102.584260695406925, -4.220258884298204 ], [ 102.156173130301028, -3.614146009946765 ], [ 101.399113397225079, -2.799777113459172 ], [ 100.902502882900166, -2.05026213949786 ], [ 100.141980828860625, -0.650347588710957 ], [ 99.263739862060248, 0.183141587724663 ], [ 98.970011020913347, 1.042882391764536 ], [ 98.601351352943112, 1.823506577965617 ], [ 97.69959760944991, 2.453183905442117 ], [ 97.176942173249898, 3.30879059489861 ], [ 96.424016554757344, 3.868859768077911 ], [ 95.380876092513489, 4.970782172053674 ], [ 95.293026157617334, 5.479820868344817 ], [ 95.936862827541773, 5.439513251157109 ], [ 97.484882033277103, 5.246320909034011 ], [ 98.369169142655693, 4.268370266126368 ], [ 99.14255862833582, 3.590349636240916 ], [ 99.693997837322428, 3.174328518075157 ], [ 100.641433546961679, 2.099381211755798 ], [ 101.658012323007341, 2.083697414555189 ], [ 102.49827111207324, 1.398700466310217 ], [ 103.07684044801303, 0.561361395668854 ], [ 103.838396030698362, 0.104541734208667 ], [ 103.437645298274987, -0.711945896002845 ], [ 104.010788608824015, -1.059211521004229 ], [ 104.369991489684907, -1.084843031421016 ], [ 104.539490187602183, -1.782371514496717 ], [ 104.887892694114015, -2.340425306816655 ], [ 105.622111444116996, -2.42884368246807 ], [ 106.108593377712708, -3.06177662517895 ], [ 105.85744591677414, -4.305524997579724 ], [ 105.81765506390937, -5.852355645372413 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "India", "iso_a2": "IN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 77.837450799474567, 35.494009507787766 ], [ 78.912268914713223, 34.321936346975789 ], [ 78.811086460285736, 33.506198025032418 ], [ 79.208891636068586, 32.994394639613716 ], [ 79.17612877799553, 32.483779812137712 ], [ 78.458446486326011, 32.618164374312727 ], [ 78.738894484374015, 31.515906073527063 ], [ 79.721366815107103, 30.882714748654731 ], [ 81.111256138029319, 30.183480943313402 ], [ 80.476721225917402, 29.729865220655341 ], [ 80.088424513676273, 28.79447011974014 ], [ 81.057202589852025, 28.416095282499043 ], [ 81.999987420584972, 27.925479234319994 ], [ 83.304248895199549, 27.364505723575562 ], [ 84.675017938173795, 27.234901231387536 ], [ 85.251778598983378, 26.726198431906344 ], [ 86.024392938179176, 26.630984605408571 ], [ 87.227471958366294, 26.397898057556077 ], [ 88.06023766474982, 26.414615383402491 ], [ 88.174804315140918, 26.810405178325951 ], [ 88.043132765661227, 27.445818589786825 ], [ 88.12044070836987, 27.876541652939594 ], [ 88.730325962278556, 28.086864732367516 ], [ 88.814248488320558, 27.299315904239364 ], [ 88.83564253128938, 27.098966376243762 ], [ 89.744527622438852, 26.719402981059957 ], [ 90.373274774134075, 26.875724188742879 ], [ 91.217512648486434, 26.808648179628022 ], [ 92.033483514375092, 26.838310451763562 ], [ 92.103711785859744, 27.452614040633208 ], [ 91.696656528696678, 27.771741848251665 ], [ 92.503118931043645, 27.896876329046449 ], [ 93.413347609432691, 28.640629380807226 ], [ 94.565990431702943, 29.277438055939985 ], [ 95.40480228066464, 29.031716620392132 ], [ 96.117678664131034, 29.452802028922466 ], [ 96.586590610747493, 28.83097951915434 ], [ 96.248833449287787, 28.411030992134442 ], [ 97.327113885490036, 28.261582749946339 ], [ 97.402561476636137, 27.882536119085444 ], [ 97.051988559968095, 27.699058946233151 ], [ 97.133999058015306, 27.083773505149964 ], [ 96.419365675850969, 27.264589341739224 ], [ 95.124767694074961, 26.573572089132298 ], [ 95.155153436262594, 26.001307277932085 ], [ 94.603249139385383, 25.162495428970402 ], [ 94.55265791217164, 24.675238348890336 ], [ 94.106741977925068, 23.85074087167348 ], [ 93.325187615942795, 24.078556423432204 ], [ 93.286326938859276, 23.043658352139005 ], [ 93.060294224014626, 22.703110663335568 ], [ 93.166127557348375, 22.278459580977103 ], [ 92.672720981825563, 22.041238918541254 ], [ 92.146034783906813, 23.627498684172593 ], [ 91.869927606171316, 23.624346421802784 ], [ 91.706475050832111, 22.985263983649187 ], [ 91.158963250699728, 23.503526923104388 ], [ 91.467729933643682, 24.072639471934792 ], [ 91.915092807994426, 24.130413723237112 ], [ 92.376201613334814, 24.976692816664965 ], [ 91.79959598182208, 25.147431748957317 ], [ 90.872210727912119, 25.132600612889547 ], [ 89.920692580121852, 25.269749864192178 ], [ 89.832480910199621, 25.965082098895479 ], [ 89.35509402868729, 26.014407253518073 ], [ 88.563049350949768, 26.446525580342723 ], [ 88.209789259802506, 25.768065700782714 ], [ 88.931553989623083, 25.238692328384776 ], [ 88.306372511756024, 24.866079413344206 ], [ 88.084422235062419, 24.501657212821925 ], [ 88.699940220090923, 24.23371491138856 ], [ 88.529769728553788, 23.631141872649167 ], [ 88.876311883503092, 22.87914642993783 ], [ 89.031961297566227, 22.055708319582976 ], [ 88.888765903685425, 21.690588487224748 ], [ 88.208497348995223, 21.703171698487807 ], [ 86.975704380240273, 21.495561631755209 ], [ 87.033168572948867, 20.743307806882413 ], [ 86.499351027373791, 20.151638495356607 ], [ 85.060265740909699, 19.4785788029711 ], [ 83.941005893900012, 18.302009792549725 ], [ 83.189217156917849, 17.671221421778981 ], [ 82.192792189465919, 17.016636053937816 ], [ 82.191241896497189, 16.556664130107848 ], [ 81.692719354177484, 16.310219224507904 ], [ 80.791999139330144, 15.951972357644493 ], [ 80.324895867843878, 15.89918488205835 ], [ 80.025069207686442, 15.136414903214147 ], [ 80.233273553390404, 13.835770778859981 ], [ 80.286293572921863, 13.006260687710835 ], [ 79.862546828128501, 12.056215318240888 ], [ 79.857999302086824, 10.35727509199711 ], [ 79.340511509115998, 10.30885427493962 ], [ 78.885345493489183, 9.546135972527722 ], [ 79.189719679688295, 9.216543687370148 ], [ 78.277940708330505, 8.933046779816934 ], [ 77.941165399084355, 8.252959092639742 ], [ 77.539897902337941, 7.965534776232332 ], [ 76.592978957021671, 8.89927623131419 ], [ 76.130061476551077, 10.299630031775521 ], [ 75.746467319648502, 11.308250637248307 ], [ 75.396101108709587, 11.781245022015824 ], [ 74.864815708316826, 12.741935736537897 ], [ 74.616717156883539, 13.992582912649681 ], [ 74.443859490867226, 14.617221787977698 ], [ 73.534199253233396, 15.990652167214961 ], [ 73.119909295549434, 17.928570054592498 ], [ 72.820909458308648, 19.208233547436166 ], [ 72.824475132136797, 20.419503282141534 ], [ 72.630533481745402, 21.356009426351008 ], [ 71.175273471973952, 20.757441311114235 ], [ 70.470458611945105, 20.877330634031384 ], [ 69.164130080038831, 22.0892980005727 ], [ 69.644927606082405, 22.450774644454338 ], [ 69.349596795534353, 22.84317963306269 ], [ 68.176645135373406, 23.691965033456711 ], [ 68.842599318318776, 24.359133612560939 ], [ 71.043240187468228, 24.3565239527302 ], [ 70.844699334602836, 25.215102037043518 ], [ 70.282873162725593, 25.72222870533983 ], [ 70.168926629522019, 26.491871649678842 ], [ 69.514392938113133, 26.940965684511372 ], [ 70.616496209601934, 27.989196275335868 ], [ 71.777665643200322, 27.913180243434525 ], [ 72.823751662084703, 28.961591701772054 ], [ 73.450638462217427, 29.97641347911987 ], [ 74.421380242820277, 30.979814764931177 ], [ 74.405928989565012, 31.692639471965279 ], [ 75.258641798813215, 32.271105455040498 ], [ 74.451559279278712, 32.764899603805503 ], [ 74.104293654277342, 33.441473293586853 ], [ 73.749948358051967, 34.317698879527853 ], [ 74.240202671204969, 34.748887030571254 ], [ 75.757060988268336, 34.504922593721318 ], [ 76.871721632804025, 34.653544012992739 ], [ 77.837450799474567, 35.494009507787766 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Ireland", "iso_a2": "IE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -6.197884894220991, 53.867565009163364 ], [ -6.032985398777611, 53.153164170944351 ], [ -6.788856573910849, 52.260117906292336 ], [ -8.561616583683559, 51.669301255899356 ], [ -9.977085740590269, 51.820454820353078 ], [ -9.166282517930782, 52.864628811242682 ], [ -9.688524542672454, 53.881362616585299 ], [ -8.327987433292009, 54.664518947968631 ], [ -7.572167934591064, 55.131622219454869 ], [ -7.366030646178785, 54.595840969452723 ], [ -7.572167934591064, 54.059956366586 ], [ -6.953730231138067, 54.073702297575636 ], [ -6.197884894220991, 53.867565009163364 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Iran", "iso_a2": "IR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 53.921597934795557, 37.198918361961262 ], [ 54.800303989486565, 37.392420762678185 ], [ 55.511578403551908, 37.964117133123167 ], [ 56.180374790273333, 37.93512665460743 ], [ 56.619366082592819, 38.121394354803485 ], [ 57.330433790928986, 38.02922943781094 ], [ 58.436154412678206, 37.522309475243802 ], [ 59.234761997316809, 37.412987982730343 ], [ 60.377637973883878, 36.527383124328367 ], [ 61.123070509694145, 36.491597194966246 ], [ 61.210817091725744, 35.650072333309225 ], [ 60.803193393807447, 34.404101874319863 ], [ 60.528429803311582, 33.676446031218006 ], [ 60.963700392506006, 33.528832302376259 ], [ 60.536077915290775, 32.981268825811568 ], [ 60.863654819588966, 32.182919623334428 ], [ 60.941944614511129, 31.548074652628753 ], [ 61.699314406180832, 31.379506130492672 ], [ 61.781221551363444, 30.735850328081238 ], [ 60.874248488208792, 29.829238999952608 ], [ 61.36930870956494, 29.303276272085924 ], [ 61.771868117118629, 28.699333807890799 ], [ 62.727830438085988, 28.25964488373539 ], [ 62.755425652929858, 27.378923448184988 ], [ 63.233897739520302, 27.217047024030709 ], [ 63.316631707619592, 26.756532497661667 ], [ 61.87418745305655, 26.239974880472104 ], [ 61.49736290878419, 25.078237006118499 ], [ 59.616134067630846, 25.380156561783778 ], [ 58.525761346272304, 25.609961656185732 ], [ 57.397251417882387, 25.739902045183641 ], [ 56.970765822177555, 26.966106268821363 ], [ 56.492138706290206, 27.143304755150197 ], [ 55.723710158110066, 26.964633490501043 ], [ 54.715089552637266, 26.480657863871514 ], [ 53.493096958231348, 26.812368882753049 ], [ 52.483597853409613, 27.580849107365495 ], [ 51.520762566947418, 27.865689602158298 ], [ 50.852948032439542, 28.814520575469388 ], [ 50.115008579311585, 30.147772528599717 ], [ 49.576850213423995, 29.985715236932407 ], [ 48.941333449098551, 30.317090359004037 ], [ 48.567971225789755, 29.926778265903522 ], [ 48.014568312376099, 30.452456773392598 ], [ 48.004698113808324, 30.985137437457244 ], [ 47.685286085812272, 30.984853217079632 ], [ 47.849203729042102, 31.70917593029867 ], [ 47.334661492711909, 32.469155381799112 ], [ 46.109361606639318, 33.017287299119005 ], [ 45.416690708199042, 33.967797756479584 ], [ 45.648459507028093, 34.748137722303014 ], [ 46.151787957550937, 35.093258775364291 ], [ 46.0763403664048, 35.677383327775487 ], [ 45.420618117053209, 35.977545884742824 ], [ 44.77267, 37.17045 ], [ 44.225755649600529, 37.971584377589352 ], [ 44.421402622257546, 38.281281236314541 ], [ 44.109225294782341, 39.428136298168099 ], [ 44.793989699081948, 39.713002631177048 ], [ 44.952688022650307, 39.33576467544637 ], [ 45.457721795438772, 38.874139105783058 ], [ 46.143623081248819, 38.741201483712217 ], [ 46.505719842317973, 38.770605373686294 ], [ 47.685079380083096, 39.508363959301221 ], [ 48.060095249225242, 39.58223541926246 ], [ 48.355529412637878, 39.288764960276907 ], [ 48.010744256386481, 38.794014797514521 ], [ 48.634375441284817, 38.270377509100967 ], [ 48.883249139202491, 38.320245266262617 ], [ 49.199612257693339, 37.582874253889884 ], [ 50.14777143738462, 37.374566555321337 ], [ 50.842354363819709, 36.872814235983398 ], [ 52.264024692601424, 36.700421657857703 ], [ 53.825789829326418, 36.965030829408235 ], [ 53.921597934795557, 37.198918361961262 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Iraq", "iso_a2": "IQ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 45.420618117053209, 35.977545884742824 ], [ 46.0763403664048, 35.677383327775487 ], [ 46.151787957550937, 35.093258775364291 ], [ 45.648459507028093, 34.748137722303014 ], [ 45.416690708199042, 33.967797756479584 ], [ 46.109361606639318, 33.017287299119005 ], [ 47.334661492711909, 32.469155381799112 ], [ 47.849203729042102, 31.70917593029867 ], [ 47.685286085812272, 30.984853217079632 ], [ 48.004698113808324, 30.985137437457244 ], [ 48.014568312376099, 30.452456773392598 ], [ 48.567971225789755, 29.926778265903522 ], [ 47.974519077349896, 29.975819200148504 ], [ 47.302622104690961, 30.059069932570722 ], [ 46.568713413281756, 29.09902517345229 ], [ 44.709498732284743, 29.178891099559383 ], [ 41.889980910007836, 31.190008653278369 ], [ 40.399994337736246, 31.889991766887935 ], [ 39.195468377444968, 32.161008816042667 ], [ 38.792340529136084, 33.378686428352225 ], [ 41.006158888519934, 34.419372260062119 ], [ 41.383965285005814, 35.628316555314356 ], [ 41.289707472505455, 36.358814602192268 ], [ 41.837064243340961, 36.605853786763575 ], [ 42.349591098811771, 37.229872544904097 ], [ 42.779125604021829, 37.385263576805755 ], [ 43.942258742047301, 37.25622752537295 ], [ 44.293451775902867, 37.001514390606303 ], [ 44.772699008977696, 37.170444647768434 ], [ 45.420618117053209, 35.977545884742824 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Iceland", "iso_a2": "IS" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -14.508695441129234, 66.455892239031428 ], [ -14.739637417041607, 65.808748277440301 ], [ -13.60973222497981, 65.126671047619865 ], [ -14.909833746794902, 64.364081936288684 ], [ -17.794438035543422, 63.678749091233854 ], [ -18.656245896874992, 63.49638296167582 ], [ -19.97275468594276, 63.643634955491528 ], [ -22.762971971110158, 63.960178941495386 ], [ -21.778484259517683, 64.402115790455511 ], [ -23.955043911219111, 64.891129869233495 ], [ -22.184402635170358, 65.084968166760305 ], [ -22.227423265053332, 65.378593655042735 ], [ -24.326184047939336, 65.611189276788465 ], [ -23.650514695723089, 66.262519029395222 ], [ -22.134922451250887, 66.41046865504687 ], [ -20.57628373867955, 65.732112128351432 ], [ -19.05684160000159, 66.276600857194765 ], [ -17.798623826559052, 65.993853257909777 ], [ -16.167818976292125, 66.526792304135867 ], [ -14.508695441129234, 66.455892239031428 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Israel", "iso_a2": "IL" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 35.719918247222751, 32.709192409794866 ], [ 35.545665317534542, 32.393992011030576 ], [ 35.183930291491436, 32.532510687788943 ], [ 34.974640740709333, 31.866582343059722 ], [ 35.22589155451243, 31.754341132121766 ], [ 34.970506626125996, 31.61677846936081 ], [ 34.927408481594568, 31.353435370401414 ], [ 35.397560662586045, 31.489086005167582 ], [ 35.420918409981965, 31.100065822874356 ], [ 34.92260257339143, 29.501326198844524 ], [ 34.265433383935687, 31.219360866820153 ], [ 34.556371697738911, 31.548823960896996 ], [ 34.488107130681357, 31.605538845337321 ], [ 34.752587111151172, 32.072926337201167 ], [ 34.955417107896778, 32.827376410446377 ], [ 35.098457472480675, 33.080539252244265 ], [ 35.126052687324545, 33.090900376918782 ], [ 35.460709262846706, 33.089040025356283 ], [ 35.552796665190812, 33.264274807258019 ], [ 35.821100701650238, 33.277426459276299 ], [ 35.836396925608625, 32.868123277308513 ], [ 35.700797967274752, 32.716013698857381 ], [ 35.719918247222751, 32.709192409794866 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Italy", "iso_a2": "IT" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 15.520376010813834, 38.231155096991472 ], [ 15.160242954171736, 37.44404551853782 ], [ 15.309897902089006, 37.1342194687318 ], [ 15.099988234119451, 36.619987290995397 ], [ 14.335228712632016, 36.996630967754754 ], [ 13.82673261887993, 37.1045313583802 ], [ 12.431003859108813, 37.612949937483819 ], [ 12.570943637755136, 38.12638113051969 ], [ 13.741156447004585, 38.034965521795357 ], [ 14.76124922044616, 38.143873602850505 ], [ 15.520376010813834, 38.231155096991472 ] ] ], [ [ [ 9.210011834356266, 41.209991360024219 ], [ 9.809975213264977, 40.500008856766101 ], [ 9.669518670295673, 39.177376410471794 ], [ 9.214817742559489, 39.240473334300134 ], [ 8.806935662479731, 38.906617743478478 ], [ 8.428302443077115, 39.171847032216618 ], [ 8.388253208050941, 40.378310858718805 ], [ 8.15999840661766, 40.950007229163788 ], [ 8.709990675500109, 40.899984442705232 ], [ 9.210011834356266, 41.209991360024219 ] ] ], [ [ [ 12.376485223040845, 46.767559109069879 ], [ 13.806475457421556, 46.509306138691187 ], [ 13.698109978905478, 46.016778062517375 ], [ 13.937630242578336, 45.591015936864665 ], [ 13.141606479554298, 45.736691799495418 ], [ 12.328581170306308, 45.381778062514854 ], [ 12.383874952858605, 44.885374253919082 ], [ 12.261453484759159, 44.600482082694015 ], [ 12.589237094786483, 44.091365871754476 ], [ 13.526905958722494, 43.587727362637906 ], [ 14.029820997787027, 42.76100779883248 ], [ 15.142569614327954, 41.955139675456905 ], [ 15.926191033601896, 41.961315009115737 ], [ 16.169897088290412, 41.740294908203424 ], [ 15.889345737377795, 41.541082261718202 ], [ 16.785001661860576, 41.179605617836586 ], [ 17.519168735431208, 40.877143459632236 ], [ 18.376687452882578, 40.355624904942658 ], [ 18.480247023195403, 40.168866278639825 ], [ 18.293385044028099, 39.810774441073249 ], [ 17.738380161213286, 40.277671006830303 ], [ 16.869595981522338, 40.442234605463852 ], [ 16.448743116937322, 39.79540070246648 ], [ 17.171489698971499, 39.424699815420723 ], [ 17.052840610429342, 38.902871202137305 ], [ 16.635088331781844, 38.843572496082402 ], [ 16.100960727613057, 37.985898749334183 ], [ 15.684086948314501, 37.90884918878703 ], [ 15.687962680736319, 38.214592800441864 ], [ 15.891981235424709, 38.750942491199226 ], [ 16.109332309644316, 38.964547024077689 ], [ 15.718813510814641, 39.544072374014945 ], [ 15.413612501698822, 40.04835683853517 ], [ 14.998495721098237, 40.172948716790927 ], [ 14.70326826341477, 40.604550279292624 ], [ 14.060671827865264, 40.786347968095441 ], [ 13.627985060285397, 41.188287258461656 ], [ 12.88808190273042, 41.253089504555618 ], [ 12.10668257004491, 41.704534817057407 ], [ 11.191906365614187, 42.355425319989678 ], [ 10.511947869517797, 42.931462510747224 ], [ 10.200028924204048, 43.920006822274615 ], [ 9.702488234097814, 44.03627879493132 ], [ 8.888946160526871, 44.36633616797954 ], [ 8.428560825238577, 44.231228135752417 ], [ 7.850766635783202, 43.767147935555244 ], [ 7.435184767291844, 43.693844916349178 ], [ 7.549596388386163, 44.127901109384823 ], [ 7.007562290076663, 44.254766750661389 ], [ 6.749955275101712, 45.028517971367592 ], [ 7.096652459347837, 45.333098863295874 ], [ 6.802355177445662, 45.70857982032868 ], [ 6.843592970414562, 45.991146552100673 ], [ 7.273850945676685, 45.776947740250762 ], [ 7.755992058959833, 45.824490057959281 ], [ 8.316629672894379, 46.163642483090854 ], [ 8.489952426801295, 46.00515086525175 ], [ 8.966305779667834, 46.036931871111165 ], [ 9.182881707403112, 46.440214748716983 ], [ 9.922836541390353, 46.314899400409189 ], [ 10.363378126678668, 46.483571275409844 ], [ 10.442701450246602, 46.893546250997446 ], [ 11.048555942436508, 46.751358547546403 ], [ 11.164827915093326, 46.941579494812743 ], [ 12.153088006243081, 47.115393174826437 ], [ 12.376485223040845, 46.767559109069879 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Jamaica", "iso_a2": "JM" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -77.569600796199211, 18.490525417550487 ], [ -76.896618618462128, 18.400866807524082 ], [ -76.365359056285541, 18.160700588447597 ], [ -76.199658576141644, 17.886867173732966 ], [ -76.9025614081757, 17.868237819891746 ], [ -77.206341315403478, 17.701116237859821 ], [ -77.766022915340614, 17.861597398342241 ], [ -78.33771928578561, 18.225967922432233 ], [ -78.217726610003879, 18.454532782459196 ], [ -77.797364671525628, 18.524218451404778 ], [ -77.569600796199211, 18.490525417550487 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Jordan", "iso_a2": "JO" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 35.545665317534542, 32.393992011030576 ], [ 35.719918247222751, 32.709192409794866 ], [ 36.834062127435544, 32.312937526980775 ], [ 38.792340529136084, 33.378686428352225 ], [ 39.195468377444968, 32.161008816042667 ], [ 39.004885695152552, 32.010216986614978 ], [ 37.002165561681011, 31.508412990844747 ], [ 37.998848911294374, 30.508499864213135 ], [ 37.668119744626381, 30.338665269485901 ], [ 37.503581984209035, 30.003776150018407 ], [ 36.74052778498725, 29.86528331147619 ], [ 36.50121422704359, 29.505253607698705 ], [ 36.068940870922063, 29.197494615184453 ], [ 34.956037225084259, 29.356554673778845 ], [ 34.92260257339143, 29.501326198844524 ], [ 35.420918409981965, 31.100065822874356 ], [ 35.397560662586045, 31.489086005167582 ], [ 35.545251906076203, 31.782504787720839 ], [ 35.545665317534542, 32.393992011030576 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Japan", "iso_a2": "JP" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 134.638428176003885, 34.149233710256425 ], [ 134.766379022358507, 33.80633474378368 ], [ 134.203415968970859, 33.201177883429636 ], [ 133.792950067276507, 33.521985175097598 ], [ 133.280268182508877, 33.289570420864948 ], [ 133.014858026257883, 32.70456736910478 ], [ 132.363114862192703, 32.98938202568138 ], [ 132.371176385630207, 33.463642483040076 ], [ 132.924372593314814, 34.060298570282043 ], [ 133.492968377822223, 33.944620876596701 ], [ 133.904106073136376, 34.364931138642618 ], [ 134.638428176003885, 34.149233710256425 ] ] ], [ [ [ 140.976387567305295, 37.142074286440163 ], [ 140.599769728762141, 36.343983466124541 ], [ 140.77407433488267, 35.842877102190243 ], [ 140.253279250245129, 35.13811391859366 ], [ 138.975527785396224, 34.667600002576108 ], [ 137.217598911691226, 34.606285915661857 ], [ 135.792983026268899, 33.464805202766627 ], [ 135.120982700745429, 33.84907115328906 ], [ 135.079434849182718, 34.59654490817482 ], [ 133.340316196831992, 34.375938218720762 ], [ 132.156770868051325, 33.904933376596517 ], [ 130.98614464734348, 33.885761420216284 ], [ 132.00003624891005, 33.149992377244615 ], [ 131.332790155157369, 31.450354519164847 ], [ 130.686317987185959, 31.029579169228242 ], [ 130.202419875204981, 31.418237616495418 ], [ 130.447676222862157, 32.319474595665724 ], [ 129.814691603718899, 32.610309556604392 ], [ 129.408463169472583, 33.29605581311759 ], [ 130.353935174684665, 33.6041507024417 ], [ 130.878450962447147, 34.232742824840045 ], [ 131.88422936414392, 34.749713853487918 ], [ 132.617672967662514, 35.43339305270942 ], [ 134.608300815977799, 35.731617743465819 ], [ 135.67753787652893, 35.527134100886826 ], [ 136.723830601142453, 37.304984239240383 ], [ 137.390611607004502, 36.827390651998826 ], [ 138.857602166906275, 37.827484646143461 ], [ 139.426404657142911, 38.215962225897641 ], [ 140.054790073812086, 39.438807481436385 ], [ 139.883379347899876, 40.563312486323696 ], [ 140.30578250545372, 41.195005194659558 ], [ 141.368973423426695, 41.378559882160289 ], [ 141.914263136970504, 39.991616115878685 ], [ 141.884600864834994, 39.180864569651504 ], [ 140.959489373945786, 38.17400096287659 ], [ 140.976387567305295, 37.142074286440163 ] ] ], [ [ [ 143.910161981379503, 44.174099839853739 ], [ 144.613426548439662, 43.960882880217525 ], [ 145.320825230083102, 44.384732977875444 ], [ 145.543137241802782, 43.262088324550604 ], [ 144.059661899999895, 42.988358262700558 ], [ 143.183849725517319, 41.995214748699198 ], [ 141.611490920172486, 42.678790595056086 ], [ 141.067286411706647, 41.584593817707997 ], [ 139.955106235921079, 41.569555975911044 ], [ 139.817543573159952, 42.563758856774399 ], [ 140.312087030193226, 43.333272610032651 ], [ 141.380548944260028, 43.388824774746496 ], [ 141.67195234595394, 44.772125352551484 ], [ 141.96764489152801, 45.551483466161358 ], [ 143.142870314709825, 44.510358384776964 ], [ 143.910161981379503, 44.174099839853739 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Kazakhstan", "iso_a2": "KZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 70.962314894499286, 42.266154283205537 ], [ 70.388964878220804, 42.081307684897524 ], [ 69.070027296835235, 41.384244289712342 ], [ 68.632482944620051, 40.668680731766869 ], [ 68.259895867795649, 40.662324530594901 ], [ 67.98585574735182, 41.135990708982206 ], [ 66.714047072216601, 41.168443508461564 ], [ 66.510648634715722, 41.987644151368556 ], [ 66.023391554635623, 41.994646307944038 ], [ 66.098012322865202, 42.997660020513081 ], [ 64.900824415959335, 43.728080552742654 ], [ 63.185786981056594, 43.650074978198006 ], [ 62.013300408786279, 43.504476630215663 ], [ 61.058319940032504, 44.405816962250583 ], [ 60.239971958258479, 44.784036770194746 ], [ 58.689989048095811, 45.500013739598728 ], [ 58.50312706892845, 45.586804307632974 ], [ 55.928917270741181, 44.995858466159177 ], [ 55.968191359283026, 41.308641669269377 ], [ 55.455251092353819, 41.25985911718584 ], [ 54.755345493392667, 42.043971462566617 ], [ 54.079417759014973, 42.324109402020838 ], [ 52.944293247291739, 42.116034247397579 ], [ 52.502459751196284, 41.78331553808647 ], [ 52.446339145727222, 42.027150783855575 ], [ 52.692112257707265, 42.443895372073371 ], [ 52.501426222550322, 42.792297878585202 ], [ 51.342427199108215, 43.132974758469345 ], [ 50.891291945200237, 44.031033637053781 ], [ 50.339129266161365, 44.284015611338475 ], [ 50.305642938036272, 44.609835516938915 ], [ 51.278503452363225, 44.514854234386462 ], [ 51.316899041556042, 45.245998236667901 ], [ 52.167389764215727, 45.408391425145112 ], [ 53.040876499245201, 45.259046535821767 ], [ 53.220865512917726, 46.234645901059935 ], [ 53.042736850807785, 46.853006089864493 ], [ 52.042022739475613, 46.804636949239239 ], [ 51.191945428274266, 47.048704738953916 ], [ 50.034083286342479, 46.608989976582222 ], [ 49.101160000000107, 46.399330000000134 ], [ 48.593241001180502, 46.561034247415478 ], [ 48.694733514201744, 47.075628160177928 ], [ 48.057253045449272, 47.743752753279523 ], [ 47.315231154170249, 47.715847479841955 ], [ 46.46644575377627, 48.39415233010493 ], [ 47.043671502476514, 49.152038886097614 ], [ 46.751596307162743, 49.356005764353768 ], [ 47.549480421749308, 50.454698391311126 ], [ 48.57784142435753, 49.874759629915673 ], [ 48.702381626181023, 50.605128485712839 ], [ 50.766648390512159, 51.692762356159903 ], [ 52.328723585830971, 51.718652248738124 ], [ 54.532878452376224, 51.026239732459317 ], [ 55.716940545479815, 50.621716620478537 ], [ 56.777961053296565, 51.043551337277052 ], [ 58.36329064314674, 51.063653469438577 ], [ 59.642282342370606, 50.545442206415714 ], [ 59.932807244715491, 50.842194118851864 ], [ 61.337424350840934, 50.799070136104262 ], [ 61.588003371024172, 51.272658799843214 ], [ 59.967533807215545, 51.960420437215703 ], [ 60.92726850774028, 52.447548326215042 ], [ 60.739993117114579, 52.719986477257748 ], [ 61.699986199800605, 52.979996446334269 ], [ 60.978066440683165, 53.664993394579142 ], [ 61.436591424409073, 54.006264553434789 ], [ 65.178533563095925, 54.354227810272107 ], [ 65.666875848253994, 54.601266994843456 ], [ 68.169100376258825, 54.970391750704323 ], [ 69.068166945272878, 55.385250149143531 ], [ 70.865266554655136, 55.169733588270105 ], [ 71.180131056609412, 54.133285224008262 ], [ 72.224150018202181, 54.376655381886735 ], [ 73.508516066384402, 54.035616766976602 ], [ 73.425678745420441, 53.489810289109755 ], [ 74.384845005190073, 53.54686107036008 ], [ 76.891100294913429, 54.490524400441927 ], [ 76.525179477854749, 54.177003485727141 ], [ 77.800915561844249, 53.404414984747575 ], [ 80.035559523441691, 50.864750881547252 ], [ 80.568446893235489, 51.38833649352847 ], [ 81.945985548839928, 50.812195949906368 ], [ 83.38300377801238, 51.069182847693924 ], [ 83.935114780618846, 50.889245510453577 ], [ 84.416377394553081, 50.311399644565824 ], [ 85.115559523462025, 50.117302964877638 ], [ 85.541269972682471, 49.692858588248157 ], [ 86.829356723989633, 49.826674709668168 ], [ 87.359970330762678, 49.214980780629162 ], [ 86.598776483103393, 48.549181626980612 ], [ 85.768232863308299, 48.455750637396989 ], [ 85.720483839870724, 47.452969468773119 ], [ 85.164290399113384, 47.000955715516113 ], [ 83.180483839860472, 47.330031236350862 ], [ 82.458925815769135, 45.539649563166506 ], [ 81.947070753918126, 45.317027492853242 ], [ 79.966106398441411, 44.917516994804657 ], [ 80.86620649610137, 43.180362046881044 ], [ 80.180150180994303, 42.920067857426943 ], [ 80.25999026888536, 42.349999294599115 ], [ 79.643645460940149, 42.496682847659656 ], [ 79.142177361979805, 42.856092434249604 ], [ 77.65839196158322, 42.960685533208334 ], [ 76.000353631498569, 42.988022365890629 ], [ 75.636964959622105, 42.877899888676779 ], [ 74.212865838522589, 43.298339341803512 ], [ 73.645303582660915, 43.09127187760987 ], [ 73.489757521462366, 42.50089447689129 ], [ 71.844638299450651, 42.845395412765185 ], [ 71.186280552052267, 42.704292914392227 ], [ 70.962314894499286, 42.266154283205537 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Kenya", "iso_a2": "KE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 40.993, -0.85829 ], [ 41.58513, -1.68325 ], [ 40.88477, -2.08255 ], [ 40.63785, -2.49979 ], [ 40.26304, -2.57309 ], [ 40.12119, -3.27768 ], [ 39.80006, -3.68116 ], [ 39.60489, -4.34653 ], [ 39.20222, -4.67677 ], [ 37.7669, -3.67712 ], [ 37.69869, -3.09699 ], [ 34.07262, -1.05982 ], [ 33.903711197104528, -0.95 ], [ 33.893568969666944, 0.109813537861896 ], [ 34.18, 0.515 ], [ 34.6721, 1.17694 ], [ 35.03599, 1.90584 ], [ 34.59607, 3.05374 ], [ 34.47913, 3.5556 ], [ 34.005, 4.249884947362048 ], [ 34.620196267853878, 4.847122742081988 ], [ 35.298007118232981, 5.506 ], [ 35.817447662353516, 5.338232082790797 ], [ 35.817447662353516, 4.77696566346189 ], [ 36.159078632855646, 4.447864127672769 ], [ 36.855093238008124, 4.447864127672769 ], [ 38.120915, 3.598605 ], [ 38.43697, 3.58851 ], [ 38.67114, 3.61607 ], [ 38.89251, 3.50074 ], [ 39.559384258765853, 3.42206 ], [ 39.85494, 3.83879 ], [ 40.76848, 4.25702 ], [ 41.1718, 3.91909 ], [ 41.855083092643973, 3.918911920483727 ], [ 40.98105, 2.78452 ], [ 40.993, -0.85829 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Kyrgyzstan", "iso_a2": "KG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 70.962314894499144, 42.266154283205495 ], [ 71.186280552052125, 42.704292914392141 ], [ 71.844638299450594, 42.8453954127651 ], [ 73.489757521462366, 42.500894476891318 ], [ 73.645303582660915, 43.091271877609827 ], [ 74.212865838522561, 43.29833934180337 ], [ 75.63696495962202, 42.87789988867668 ], [ 76.000353631498456, 42.988022365890671 ], [ 77.65839196158322, 42.960685533208263 ], [ 79.142177361979776, 42.856092434249518 ], [ 79.643645460940121, 42.496682847659528 ], [ 80.259990268885304, 42.349999294599058 ], [ 80.119430373051387, 42.123940741538249 ], [ 78.54366092317531, 41.582242540038692 ], [ 78.187196893225973, 41.185315863604806 ], [ 76.904484490877081, 41.066485907549648 ], [ 76.526368035797447, 40.427946071935118 ], [ 75.467827996730705, 40.56207225194867 ], [ 74.776862420556057, 40.366425279291633 ], [ 73.822243686828301, 39.893973497063186 ], [ 73.960013055318427, 39.660008449861735 ], [ 73.675379266254794, 39.431236884105601 ], [ 71.784693637992007, 39.27946320246437 ], [ 70.549161818325615, 39.604197902986499 ], [ 69.46488691597753, 39.526683254548701 ], [ 69.559609816368521, 40.103211371412982 ], [ 70.648018833299972, 39.935753892571171 ], [ 71.01419803252017, 40.244365546218233 ], [ 71.77487511585656, 40.145844428053778 ], [ 73.05541710804917, 40.866033026689465 ], [ 71.870114780570475, 41.392900092121266 ], [ 71.157858514291604, 41.143587144529121 ], [ 70.42002241402821, 41.519998277343142 ], [ 71.259247674448233, 42.167710679689463 ], [ 70.962314894499144, 42.266154283205495 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Cambodia", "iso_a2": "KH" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 103.497279901139706, 10.632555446815928 ], [ 103.090689731867258, 11.153660590047165 ], [ 102.584932489026698, 12.186594956913282 ], [ 102.348099399833018, 13.394247341358223 ], [ 102.988422072361629, 14.225721136934467 ], [ 104.281418084736615, 14.416743068901367 ], [ 105.218776890078885, 14.273211778210694 ], [ 106.043946160915525, 13.881091009979956 ], [ 106.496373325630884, 14.570583807834282 ], [ 107.382727492301086, 14.202440904186972 ], [ 107.61454796756243, 13.535530707244206 ], [ 107.49140302941089, 12.337205918827948 ], [ 105.81052371625313, 11.567614650921229 ], [ 106.249670037869464, 10.961811835163587 ], [ 105.199914992292349, 10.889309800658097 ], [ 104.334334751403475, 10.48654368737523 ], [ 103.497279901139706, 10.632555446815928 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Korea", "iso_a2": "KR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 128.349716424676615, 38.61224294692785 ], [ 129.212919549680066, 37.432392483055949 ], [ 129.460449660358165, 36.784189154602828 ], [ 129.4683044780665, 35.632140611303953 ], [ 129.091376580929591, 35.082484239231434 ], [ 128.185850457879098, 34.890377102186392 ], [ 127.386519403188402, 34.475673733044118 ], [ 126.485747511908755, 34.39004588473648 ], [ 126.373919712429142, 34.934560451795946 ], [ 126.559231398627787, 35.684540513647903 ], [ 126.117397902532289, 36.725484727519259 ], [ 126.860143263863392, 36.893924058574626 ], [ 126.174758742376241, 37.74968577732804 ], [ 126.237338901881756, 37.840377916000278 ], [ 126.683719924018931, 37.804772854151182 ], [ 127.07330854706737, 38.2561148137884 ], [ 127.780035435091008, 38.304535630845891 ], [ 128.205745884311455, 38.370397243801889 ], [ 128.349716424676615, 38.61224294692785 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Kosovo", "iso_a2": "-99" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 20.76216, 42.05186 ], [ 20.717310000000111, 41.84711 ], [ 20.59023, 41.85541 ], [ 20.52295, 42.21787 ], [ 20.28374, 42.320250000000101 ], [ 20.0707, 42.58863 ], [ 20.25758, 42.812750000000108 ], [ 20.49679, 42.88469 ], [ 20.63508, 43.21671 ], [ 20.81448, 43.27205 ], [ 20.95651, 43.13094 ], [ 21.143395, 43.06868500000013 ], [ 21.27421, 42.90959 ], [ 21.43866, 42.86255 ], [ 21.63302, 42.67717 ], [ 21.77505, 42.6827 ], [ 21.66292, 42.43922 ], [ 21.54332, 42.320250000000101 ], [ 21.576635989402121, 42.245224397061861 ], [ 21.352700000000141, 42.2068 ], [ 20.76216, 42.05186 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Kuwait", "iso_a2": "KW" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 47.974519077349896, 29.975819200148504 ], [ 48.18318851094449, 29.534476630159762 ], [ 48.093943312376418, 29.306299343375002 ], [ 48.416094191283946, 28.55200429942667 ], [ 47.708850538937384, 28.526062730416143 ], [ 47.459821811722833, 29.002519436147224 ], [ 46.568713413281756, 29.09902517345229 ], [ 47.302622104690961, 30.059069932570722 ], [ 47.974519077349896, 29.975819200148504 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Lao PDR", "iso_a2": "LA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 105.218776890078885, 14.273211778210694 ], [ 105.544338413517693, 14.723933620660418 ], [ 105.589038527450157, 15.570316066952858 ], [ 104.779320509868796, 16.441864935771449 ], [ 104.716947056092494, 17.428858954330082 ], [ 103.956476678485302, 18.240954087796879 ], [ 103.20019209189374, 18.309632066312773 ], [ 102.998705682387708, 17.961694647691601 ], [ 102.413004998791621, 17.932781683824288 ], [ 102.113591750092482, 18.109101670804165 ], [ 101.059547560635167, 17.51249725999449 ], [ 101.035931431077771, 18.408928330961615 ], [ 101.282014601651696, 19.462584947176765 ], [ 100.606293573003157, 19.508344427971224 ], [ 100.548881056726884, 20.109237982661128 ], [ 100.115987583417848, 20.417849636308187 ], [ 100.329101190189533, 20.786121731036232 ], [ 101.180005324307544, 21.436572984294028 ], [ 101.270025669359967, 21.201651923095184 ], [ 101.803119744882935, 21.174366766845068 ], [ 101.652017856861519, 22.318198757409547 ], [ 102.170435825613581, 22.464753119389304 ], [ 102.754896274834664, 21.675137233969465 ], [ 103.203861118586445, 20.766562201413748 ], [ 104.435000441508052, 20.758733221921531 ], [ 104.822573683697101, 19.886641750563882 ], [ 104.183387892678937, 19.624668077060221 ], [ 103.896532017026715, 19.265180975821806 ], [ 105.094598423281525, 18.66697459561108 ], [ 105.925762160264028, 17.485315456608959 ], [ 106.556007928495688, 16.604283962464805 ], [ 107.312705926545604, 15.908538316303179 ], [ 107.564525181103903, 15.202173163305559 ], [ 107.382727492301086, 14.202440904186972 ], [ 106.496373325630884, 14.570583807834282 ], [ 106.043946160915525, 13.881091009979956 ], [ 105.218776890078885, 14.273211778210694 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Lebanon", "iso_a2": "LB" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 35.821100701650238, 33.277426459276299 ], [ 35.552796665190812, 33.264274807258019 ], [ 35.460709262846706, 33.089040025356283 ], [ 35.126052687324545, 33.090900376918782 ], [ 35.482206658680127, 33.905450140919442 ], [ 35.979592319489399, 34.610058295219133 ], [ 35.998402540843642, 34.644914048800004 ], [ 36.448194207512103, 34.593935248344067 ], [ 36.611750115715893, 34.201788641897181 ], [ 36.066460402172055, 33.82491242119255 ], [ 35.821100701650238, 33.277426459276299 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Liberia", "iso_a2": "LR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -7.71215938966975, 4.364565944837722 ], [ -7.974107224957251, 4.355755113131963 ], [ -9.004793667018674, 4.8324185245922 ], [ -9.913420376006684, 5.593560695819207 ], [ -10.765383876986645, 6.140710760925558 ], [ -11.438779466182055, 6.785916856305747 ], [ -11.199801805048279, 7.105845648624737 ], [ -11.146704270868383, 7.396706447779536 ], [ -10.695594855176481, 7.939464016141088 ], [ -10.23009355309128, 8.406205552601293 ], [ -10.016566534861255, 8.428503933135232 ], [ -9.755342169625834, 8.541055202666925 ], [ -9.337279832384581, 7.928534450711354 ], [ -9.40334815106975, 7.526905218938907 ], [ -9.208786383490846, 7.313920803247953 ], [ -8.926064622422004, 7.309037380396376 ], [ -8.722123582382125, 7.71167430259851 ], [ -8.439298468448698, 7.686042792181738 ], [ -8.48544552248535, 7.39520783124307 ], [ -8.385451626000574, 6.911800645368743 ], [ -8.60288021486862, 6.46756419517166 ], [ -8.311347622094019, 6.193033148621083 ], [ -7.993692592795881, 6.126189683451543 ], [ -7.570152553731688, 5.707352199725904 ], [ -7.539715135111763, 5.313345241716519 ], [ -7.635368211284031, 5.188159084489456 ], [ -7.71215938966975, 4.364565944837722 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Libya", "iso_a2": "LY" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 14.8513, 22.862950000000126 ], [ 14.143870883855243, 22.491288967371133 ], [ 13.581424594790462, 23.040506089769281 ], [ 11.999505649471701, 23.471668402596435 ], [ 11.560669386449035, 24.097909247325617 ], [ 10.771363559622955, 24.562532050061748 ], [ 10.303846876678449, 24.379313259370974 ], [ 9.948261346078027, 24.936953640232616 ], [ 9.910692579801776, 25.365454616796796 ], [ 9.31941084151822, 26.094324856057483 ], [ 9.716285841519664, 26.512206325785655 ], [ 9.629056023811074, 27.140953477481048 ], [ 9.756128370816782, 27.688258571884205 ], [ 9.683884718472882, 28.144173895779318 ], [ 9.859997999723475, 28.959989732371071 ], [ 9.805634392952356, 29.424638373323376 ], [ 9.482139926805417, 30.307556057246188 ], [ 9.970017124072967, 30.539324856075382 ], [ 10.056575148161699, 30.961831366493527 ], [ 9.950225050505196, 31.376069647745283 ], [ 10.636901482799487, 31.761420803345686 ], [ 10.944789666394513, 32.081814683555365 ], [ 11.432253452203781, 32.368903103152832 ], [ 11.488787469131012, 33.136995754523241 ], [ 12.66331, 32.79278 ], [ 13.08326, 32.87882 ], [ 13.91868, 32.71196 ], [ 15.24563, 32.26508 ], [ 15.71394, 31.37626 ], [ 16.61162, 31.18218 ], [ 18.02109, 30.76357 ], [ 19.08641, 30.26639 ], [ 19.57404, 30.52582 ], [ 20.05335, 30.98576 ], [ 19.82033, 31.751790000000142 ], [ 20.13397, 32.2382 ], [ 20.85452, 32.7068 ], [ 21.54298, 32.8432 ], [ 22.89576, 32.63858 ], [ 23.2368, 32.19149 ], [ 23.609130000000107, 32.18726 ], [ 23.9275, 32.01667 ], [ 24.92114, 31.89936 ], [ 25.16482, 31.56915 ], [ 24.80287, 31.08929 ], [ 24.95762, 30.6616 ], [ 24.70007, 30.04419 ], [ 25.000000000000114, 29.238654529533562 ], [ 25.000000000000114, 25.682499996361003 ], [ 25.000000000000114, 22.0 ], [ 25.000000000000114, 20.00304 ], [ 23.850000000000136, 20.0 ], [ 23.837660000000142, 19.580470000000105 ], [ 19.84926, 21.49509 ], [ 15.86085, 23.40972 ], [ 14.8513, 22.862950000000126 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Sri Lanka", "iso_a2": "LK" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 81.787959018891399, 7.523055324733164 ], [ 81.637322218760588, 6.481775214051922 ], [ 81.218019647144331, 6.197141424988288 ], [ 80.348356968104412, 5.968369859232155 ], [ 79.872468703128533, 6.76346344647493 ], [ 79.695166863935128, 8.200843410673386 ], [ 80.147800734379643, 9.824077663609557 ], [ 80.838817986986555, 9.268426825391188 ], [ 81.304319289071771, 8.56420624433369 ], [ 81.787959018891399, 7.523055324733164 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Lesotho", "iso_a2": "LS" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 28.978262566857243, -28.955596612261711 ], [ 29.325166456832591, -29.257386976846256 ], [ 29.018415154748027, -29.743765557577369 ], [ 28.848399692507741, -30.070050551068256 ], [ 28.29106937023991, -30.2262167294543 ], [ 28.107204624145425, -30.545732110314951 ], [ 27.749397006956485, -30.645105889612225 ], [ 26.999261915807637, -29.875953871379984 ], [ 27.532511020627478, -29.24271087007536 ], [ 28.074338413207784, -28.851468601193588 ], [ 28.541700066855498, -28.647501722937569 ], [ 28.978262566857243, -28.955596612261711 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Lithuania", "iso_a2": "LT" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 22.731098667092652, 54.327536932993326 ], [ 22.651051873472539, 54.582740993866736 ], [ 22.757763706155259, 54.85657440858138 ], [ 22.315723504330577, 55.015298570365864 ], [ 21.268448927503467, 55.190481675835315 ], [ 21.055800408622417, 56.031076361711065 ], [ 22.201156853939494, 56.33780182557949 ], [ 23.878263787539964, 56.273671373105273 ], [ 24.86068444184076, 56.37252838807963 ], [ 25.000934279080894, 56.164530748104838 ], [ 25.533046502390334, 56.100296942766036 ], [ 26.494331495883756, 55.615106919977634 ], [ 26.588279249790389, 55.167175604871673 ], [ 25.768432651479799, 54.846962592175089 ], [ 25.536353794056993, 54.282423407602529 ], [ 24.450683628037037, 53.905702216194754 ], [ 23.484127638449849, 53.912497667041137 ], [ 23.243987257589509, 54.220566718149144 ], [ 22.731098667092652, 54.327536932993326 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Luxembourg", "iso_a2": "LU" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 6.043073357781111, 50.128051662794235 ], [ 6.242751092156993, 49.902225653678727 ], [ 6.186320428094177, 49.463802802114515 ], [ 5.897759230176405, 49.442667141307027 ], [ 5.674051954784829, 49.529483547557504 ], [ 5.782417433300907, 50.09032786722122 ], [ 6.043073357781111, 50.128051662794235 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Latvia", "iso_a2": "LV" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 21.055800408622417, 56.031076361711065 ], [ 21.090423618257972, 56.783872789122938 ], [ 21.581866489353672, 57.411870632549935 ], [ 22.524341261492879, 57.753374335350763 ], [ 23.318452996522097, 57.006236477274868 ], [ 24.120729607853431, 57.025692654032767 ], [ 24.312862583114622, 57.793423570376973 ], [ 25.164593540149269, 57.970156968815189 ], [ 25.602809685984369, 57.847528794986573 ], [ 26.463532342237787, 57.47638865826633 ], [ 27.288184848751513, 57.474528306703832 ], [ 27.770015903440932, 57.244258124411232 ], [ 27.855282016722526, 56.759326483784292 ], [ 28.176709425577997, 56.169129950578814 ], [ 27.102459751094528, 55.783313707087686 ], [ 26.494331495883756, 55.615106919977634 ], [ 25.533046502390334, 56.100296942766036 ], [ 25.000934279080894, 56.164530748104838 ], [ 24.86068444184076, 56.37252838807963 ], [ 23.878263787539964, 56.273671373105273 ], [ 22.201156853939494, 56.33780182557949 ], [ 21.055800408622417, 56.031076361711065 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Morocco", "iso_a2": "MA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -5.193863491222032, 35.755182196590852 ], [ -4.591006232105144, 35.330711981745651 ], [ -3.640056525070008, 35.399855048151977 ], [ -2.604305792644112, 35.179093329401127 ], [ -2.169913702798624, 35.168396307916709 ], [ -1.792985805661658, 34.527918606091305 ], [ -1.73345455566141, 33.919712836232122 ], [ -1.388049282222596, 32.864015000941379 ], [ -1.124551153966195, 32.651521511357203 ], [ -1.30789913573787, 32.262888902306031 ], [ -2.616604783529567, 32.094346218386164 ], [ -3.068980271812649, 31.724497992473289 ], [ -3.647497931320146, 31.637294012980817 ], [ -3.690441046554668, 30.896951605751156 ], [ -4.859646165374443, 30.501187649043885 ], [ -5.242129278982787, 30.000443020135577 ], [ -6.060632290053746, 29.731699734001808 ], [ -7.059227667661901, 29.579228420524657 ], [ -8.674116176782832, 28.84128896739665 ], [ -8.665589565454837, 27.65642588959247 ], [ -8.817809007940525, 27.65642588959247 ], [ -8.817828334986643, 27.65642588959247 ], [ -8.794883999049034, 27.12069631602256 ], [ -9.413037482124508, 27.088476060488546 ], [ -9.735343390328751, 26.860944729107416 ], [ -10.189424200877454, 26.860944729107416 ], [ -10.551262579785259, 26.990807603456886 ], [ -11.39255489749695, 26.883423977154393 ], [ -11.718219773800342, 26.104091701760808 ], [ -12.030758836301658, 26.030866197203125 ], [ -12.50096269372537, 24.770116278578143 ], [ -13.891110398809047, 23.691009019459386 ], [ -14.221167771857154, 22.310163072188345 ], [ -14.630832688850944, 21.860939846274874 ], [ -14.750954555713406, 21.500600083903805 ], [ -17.002961798561074, 21.420734157796687 ], [ -17.020428432675772, 21.422310288981635 ], [ -16.973247849993186, 21.885744533774954 ], [ -16.58913692876763, 22.158234361250095 ], [ -16.261921759495664, 22.679339504481277 ], [ -16.326413946995899, 23.017768459560898 ], [ -15.982610642958065, 23.723358466074103 ], [ -15.426003790742186, 24.359133612561038 ], [ -15.089331834360735, 24.520260728446971 ], [ -14.824645148161693, 25.103532619725314 ], [ -14.800925665739669, 25.636264960222292 ], [ -14.439939947964831, 26.254418443297652 ], [ -13.773804897506466, 26.618892320252286 ], [ -13.139941779014293, 27.640147813420498 ], [ -13.121613369914712, 27.654147671719812 ], [ -12.618836635783111, 28.038185533148663 ], [ -11.688919236690765, 28.148643907172584 ], [ -10.900956997104402, 28.83214223888092 ], [ -10.399592251008642, 29.09858592377779 ], [ -9.564811163765626, 29.933573716749862 ], [ -9.814718390329176, 31.17773550060906 ], [ -9.434793260119363, 32.038096421836485 ], [ -9.300692918321829, 32.564679266890636 ], [ -8.65747636558504, 33.240245266242397 ], [ -7.654178432638219, 33.697064927702513 ], [ -6.91254411460136, 34.110476386037448 ], [ -6.244342006851411, 35.145865383437524 ], [ -5.929994269219833, 35.75998810479399 ], [ -5.193863491222032, 35.755182196590852 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Moldova", "iso_a2": "MD" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 26.619336785597795, 48.220726223333472 ], [ 26.857823520624805, 48.368210761094495 ], [ 27.522537469195157, 48.467119452501116 ], [ 28.259546746541844, 48.155562242213421 ], [ 28.670891147585166, 48.118148505234103 ], [ 29.122698195113031, 47.849095160506465 ], [ 29.050867954227328, 47.510226955752501 ], [ 29.415135125452736, 47.346645209332578 ], [ 29.559674106573112, 46.928582872091326 ], [ 29.908851759569302, 46.674360663431457 ], [ 29.838210076626297, 46.525325832701689 ], [ 30.024658644335375, 46.42393667254504 ], [ 29.759971958136394, 46.349987697935362 ], [ 29.170653924279886, 46.3792623968287 ], [ 29.072106967899291, 46.517677720722496 ], [ 28.862972446414062, 46.437889309263831 ], [ 28.933717482221624, 46.258830471372498 ], [ 28.659987420371579, 45.939986884131642 ], [ 28.485269402792767, 45.596907050145902 ], [ 28.233553501099042, 45.488283189468376 ], [ 28.054442986775399, 45.944586086605625 ], [ 28.160017937947714, 46.371562608417221 ], [ 28.128030226359044, 46.810476386088254 ], [ 27.551166212684848, 47.405117092470832 ], [ 27.233872918412743, 47.826770941756379 ], [ 26.924176059687568, 48.123264472030996 ], [ 26.619336785597795, 48.220726223333472 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Madagascar", "iso_a2": "MG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 49.543518914595751, -12.469832858940554 ], [ 49.808980747279094, -12.895284925999555 ], [ 50.056510857957164, -13.555761407121985 ], [ 50.217431268114069, -14.758788750876796 ], [ 50.476536899625529, -15.226512139550543 ], [ 50.377111443895956, -15.706069431219127 ], [ 50.200274692593183, -16.000263360256767 ], [ 49.860605503138679, -15.414252618066918 ], [ 49.672606642460863, -15.710203545802479 ], [ 49.863344354050156, -16.451036879138776 ], [ 49.774564243372708, -16.875042006093601 ], [ 49.498612094934117, -17.106035658438273 ], [ 49.435618523970305, -17.953064060134366 ], [ 49.041792433473944, -19.118781019774445 ], [ 48.548540887248009, -20.496888116134127 ], [ 47.930749139198667, -22.391501153251085 ], [ 47.547723423051309, -23.781958916928517 ], [ 47.095761346226595, -24.941629733990453 ], [ 46.282477654817086, -25.178462823184105 ], [ 45.409507684110451, -25.601434421493089 ], [ 44.833573846217554, -25.34610116953894 ], [ 44.039720493349762, -24.988345228782308 ], [ 43.763768344911171, -24.460677178649991 ], [ 43.697777540874455, -23.574116306250602 ], [ 43.345654331237625, -22.776903985283873 ], [ 43.254187046081, -22.057413018484123 ], [ 43.43329756040464, -21.336475111580189 ], [ 43.893682895692926, -21.163307386970128 ], [ 43.896370070172104, -20.830459486578174 ], [ 44.374325392439658, -20.072366224856388 ], [ 44.464397413924388, -19.435454196859048 ], [ 44.232421909366167, -18.961994724200906 ], [ 44.042976108584156, -18.331387220943171 ], [ 43.963084344260913, -17.409944756746782 ], [ 44.31246870298628, -16.850495700754955 ], [ 44.446517368351401, -16.216219170804507 ], [ 44.944936557806528, -16.179373874580399 ], [ 45.502731967964991, -15.974373467678539 ], [ 45.872993605336262, -15.793454278224687 ], [ 46.31224327981721, -15.780018405828798 ], [ 46.882182651564285, -15.210182386946315 ], [ 47.705129835812357, -14.594302666891764 ], [ 48.005214878131255, -14.091232598530375 ], [ 47.869047479042166, -13.663868503476586 ], [ 48.293827752481377, -13.784067884987486 ], [ 48.845060255738787, -13.089174899958664 ], [ 48.863508742066983, -12.487867933810421 ], [ 49.194651320193316, -12.04055673589197 ], [ 49.543518914595751, -12.469832858940554 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Mexico", "iso_a2": "MX" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -97.140008307670712, 25.869997463478398 ], [ -97.528072475966553, 24.9921440699203 ], [ -97.702945522842242, 24.272343044526735 ], [ -97.776041836319052, 22.93257986092766 ], [ -97.872366706111109, 22.44421173755336 ], [ -97.699043952204192, 21.898689480064263 ], [ -97.388959520236767, 21.411018988525825 ], [ -97.189333462293291, 20.635433254473128 ], [ -96.525575527720321, 19.890930894444068 ], [ -96.292127244841765, 19.320371405509547 ], [ -95.900884975959968, 18.82802419684873 ], [ -94.839063483442715, 18.562717393462208 ], [ -94.425729539756219, 18.144370835843347 ], [ -93.548651292682393, 18.423836981677937 ], [ -92.786113857783505, 18.524838568592259 ], [ -92.037348192090406, 18.704569200103435 ], [ -91.407903408559264, 18.87608327888023 ], [ -90.771869879910867, 19.284120388256781 ], [ -90.533589850613055, 19.867418117751299 ], [ -90.451475999701245, 20.707521877520435 ], [ -90.278618333684904, 20.999855454995554 ], [ -89.601321173851488, 21.261725775634488 ], [ -88.543866339862859, 21.49367544197662 ], [ -87.658416510757718, 21.458845526611981 ], [ -87.051890224948067, 21.543543199138298 ], [ -86.811982388032959, 21.331514797444754 ], [ -86.845907965832623, 20.849864610268355 ], [ -87.383291185235862, 20.25540477139873 ], [ -87.62105445021075, 19.646553046135921 ], [ -87.436750454441778, 19.472403469312269 ], [ -87.586560431655926, 19.040130113190742 ], [ -87.837191128271513, 18.25981598558343 ], [ -88.090664028663184, 18.516647854074051 ], [ -88.30003109409364, 18.49998220466 ], [ -88.490122850279306, 18.48683055264172 ], [ -88.848343878926585, 17.883198147040332 ], [ -89.029857347351765, 18.001511338772559 ], [ -89.150909389995491, 17.955467637600407 ], [ -89.14308041050333, 17.808318996649405 ], [ -90.067933519230905, 17.819326076727521 ], [ -91.001519945015957, 17.817594916245696 ], [ -91.002269253284169, 17.254657701074279 ], [ -91.453921271515128, 17.252177232324186 ], [ -91.081670091500598, 16.918476670799521 ], [ -90.711821865587638, 16.68748301845477 ], [ -90.600846727240935, 16.47077789963879 ], [ -90.438866950222007, 16.410109768128109 ], [ -90.464472622422647, 16.069562079324726 ], [ -91.747960171255954, 16.066564846251765 ], [ -92.229248623406306, 15.251446641495875 ], [ -92.087215949252027, 15.064584662328514 ], [ -92.203229539747269, 14.83010285080411 ], [ -92.227750006869826, 14.538828640190957 ], [ -93.35946387406176, 15.615429592343673 ], [ -93.875168830118525, 15.940164292865916 ], [ -94.691656460330137, 16.200975246642884 ], [ -95.250227016973042, 16.128318182840644 ], [ -96.053382127653322, 15.752087917539598 ], [ -96.557434048228288, 15.653515122942792 ], [ -97.263592495496653, 15.917064927631316 ], [ -98.01302995480961, 16.107311713113916 ], [ -98.947675747456515, 16.566043402568766 ], [ -99.697397427147052, 16.706164048728169 ], [ -100.829498867581322, 17.17107107184205 ], [ -101.666088629954459, 17.649026394109626 ], [ -101.918528001700224, 17.916090196193977 ], [ -102.478132086988921, 17.975750637275098 ], [ -103.500989549558085, 18.292294623278849 ], [ -103.917527432046825, 18.748571682200009 ], [ -104.992009650475495, 19.316133938061682 ], [ -105.49303849976144, 19.946767279535436 ], [ -105.731396043707662, 20.434101874264115 ], [ -105.39777299683135, 20.531718654863425 ], [ -105.50066077352443, 20.816895046466129 ], [ -105.270752326257934, 21.076284898355141 ], [ -105.265817226974036, 21.422103583252351 ], [ -105.603160976975403, 21.871145941652571 ], [ -105.693413865973127, 22.269080308516152 ], [ -106.028716396898972, 22.773752346278627 ], [ -106.90998043498837, 23.767774359628902 ], [ -107.915448778091388, 24.54891531015295 ], [ -108.401904873470983, 25.172313951105934 ], [ -109.260198737406654, 25.580609442644061 ], [ -109.444089321717343, 25.82488393808768 ], [ -109.291643846456282, 26.442934068298428 ], [ -109.801457689231825, 26.676175645447927 ], [ -110.391731737085706, 27.16211497650454 ], [ -110.641018846461634, 27.859876003525528 ], [ -111.178918830187854, 27.94124054616907 ], [ -111.759606899851633, 28.467952582303951 ], [ -112.228234626090398, 28.954408677683489 ], [ -112.271823696728688, 29.266844387320077 ], [ -112.809594489373978, 30.021113593052348 ], [ -113.163810594518679, 30.786880804969428 ], [ -113.14866939985717, 31.170965887978923 ], [ -113.871881069781864, 31.567608344035193 ], [ -114.20573666060352, 31.524045111613134 ], [ -114.776451178835032, 31.79953217216115 ], [ -114.936699795372135, 31.393484605427602 ], [ -114.771231859173497, 30.913617255165263 ], [ -114.673899298951767, 30.162681179315996 ], [ -114.330974494262932, 29.750432440707414 ], [ -113.588875088335442, 29.061611436473015 ], [ -113.424053107540544, 28.82617361095123 ], [ -113.27196936730553, 28.754782619739899 ], [ -113.140039435664391, 28.411289374295961 ], [ -112.962298346796501, 28.42519033458251 ], [ -112.761587083774884, 27.780216783147523 ], [ -112.457910529411663, 27.525813706974759 ], [ -112.244951951936798, 27.171726792910761 ], [ -111.616489020619213, 26.662817287700477 ], [ -111.284674648873022, 25.732589830014433 ], [ -110.987819383572401, 25.294606228124564 ], [ -110.710006883571339, 24.826004340101861 ], [ -110.655048997828885, 24.298594672131117 ], [ -110.172856208113444, 24.265547593680424 ], [ -109.77184709352855, 23.811182562754198 ], [ -109.409104377055712, 23.364672349536249 ], [ -109.433392300232924, 23.185587673428699 ], [ -109.854219326601708, 22.818271592698068 ], [ -110.031391974714438, 22.823077500901206 ], [ -110.295070970483664, 23.430973212166691 ], [ -110.949501309028051, 24.000964260345995 ], [ -111.670568407012695, 24.484423122652515 ], [ -112.182035895621482, 24.738412787367167 ], [ -112.148988817170846, 25.470125230404051 ], [ -112.300710822379699, 26.012004299416617 ], [ -112.777296719191554, 26.321959540303169 ], [ -113.464670783321935, 26.768185533143424 ], [ -113.596729906043834, 26.639459540304472 ], [ -113.848936733844255, 26.90006378835244 ], [ -114.465746629680041, 27.142090358991368 ], [ -115.055142178185008, 27.722726752222911 ], [ -114.982252570437424, 27.798200181585116 ], [ -114.570365566854946, 27.741485297144891 ], [ -114.19932878299926, 28.115002549750557 ], [ -114.162018398884641, 28.566111965442303 ], [ -114.931842210736647, 29.27947927501549 ], [ -115.518653937626993, 29.556361599235402 ], [ -115.887365282029577, 30.180793768834178 ], [ -116.258350389452914, 30.836464341753583 ], [ -116.721526252084971, 31.635743720012044 ], [ -117.127759999999853, 32.53534 ], [ -115.99135, 32.612390000000119 ], [ -114.72139, 32.72083 ], [ -114.815, 32.52528 ], [ -113.30498, 32.03914 ], [ -111.02361, 31.33472 ], [ -109.035, 31.341940000000136 ], [ -108.24194, 31.34222 ], [ -108.24, 31.754853718166373 ], [ -106.50759, 31.75452 ], [ -106.1429, 31.39995 ], [ -105.63159, 31.08383 ], [ -105.03737, 30.64402 ], [ -104.70575, 30.12173 ], [ -104.456969999999899, 29.57196 ], [ -103.94, 29.27 ], [ -103.11, 28.97 ], [ -102.48, 29.76 ], [ -101.6624, 29.7793 ], [ -100.9576, 29.380710000000136 ], [ -100.45584, 28.696120000000121 ], [ -100.11, 28.110000000000127 ], [ -99.52, 27.54 ], [ -99.3, 26.84 ], [ -99.02, 26.37 ], [ -98.24, 26.06 ], [ -97.53, 25.84 ], [ -97.140008307670712, 25.869997463478398 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Macedonia", "iso_a2": "MK" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 20.59023, 41.85541 ], [ 20.717310000000111, 41.84711 ], [ 20.76216, 42.05186 ], [ 21.352700000000141, 42.2068 ], [ 21.576635989402121, 42.245224397061861 ], [ 21.917080000000112, 42.30364 ], [ 22.380525750424681, 42.320259507815081 ], [ 22.881373732197346, 41.999297186850356 ], [ 22.952377150166512, 41.33799388281119 ], [ 22.76177, 41.3048 ], [ 22.597308383889015, 41.130487168943205 ], [ 22.05537763844427, 41.149865831052693 ], [ 21.674160597426976, 40.931274522457954 ], [ 21.020040317476401, 40.84272695572588 ], [ 20.60518, 41.08622 ], [ 20.46315, 41.5150900000001 ], [ 20.59023, 41.85541 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Mali", "iso_a2": "ML" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -12.170750291380301, 14.616834214735505 ], [ -11.834207526079467, 14.799096991428939 ], [ -11.666078253617854, 15.388208319556298 ], [ -11.349095017939504, 15.411256008358478 ], [ -10.650791388379417, 15.132745876521426 ], [ -10.086846482778213, 15.330485744686271 ], [ -9.700255092802706, 15.264107367407362 ], [ -9.550238409859389, 15.486496893775438 ], [ -5.537744309908447, 15.501689764869257 ], [ -5.315277268891933, 16.201853745991841 ], [ -5.488522508150439, 16.325102037007966 ], [ -5.971128709324248, 20.640833441647629 ], [ -6.453786586930335, 24.956590684503425 ], [ -4.923337368174231, 24.974574082941 ], [ -1.550054897457613, 22.792665920497384 ], [ 1.823227573259032, 20.610809434486043 ], [ 2.06099083823392, 20.142233384679486 ], [ 2.683588494486429, 19.856230170160117 ], [ 3.1466610042539, 19.693578599521445 ], [ 3.158133172222705, 19.057364203360038 ], [ 4.267419467800039, 19.155265204336999 ], [ 4.270209995143802, 16.852227484601215 ], [ 3.723421665063483, 16.184283759012615 ], [ 3.638258904646477, 15.568119818580456 ], [ 2.749992709981484, 15.409524847876696 ], [ 1.385528191746858, 15.323561102759172 ], [ 1.01578331869851, 14.968182277887948 ], [ 0.374892205414682, 14.92890818934613 ], [ -0.26625729003058, 14.924308986872148 ], [ -0.515854458000348, 15.116157741755728 ], [ -1.066363491205664, 14.973815009007765 ], [ -2.001035122068771, 14.559008287000893 ], [ -2.191824510090385, 14.246417548067356 ], [ -2.967694464520577, 13.79815033615151 ], [ -3.10370683431276, 13.541266791228594 ], [ -3.522802700199861, 13.337661647998615 ], [ -4.006390753587226, 13.472485459848116 ], [ -4.28040503581488, 13.228443508349741 ], [ -4.427166103523803, 12.542645575404295 ], [ -5.220941941743121, 11.713858954307227 ], [ -5.197842576508648, 11.37514577885014 ], [ -5.470564947929006, 10.951269842976048 ], [ -5.404341599946974, 10.370736802609146 ], [ -5.816926235365287, 10.222554633012194 ], [ -6.050452032892267, 10.096360785355444 ], [ -6.205222947606431, 10.524060777219134 ], [ -6.493965013037268, 10.411302801958271 ], [ -6.666460944027548, 10.430810655148449 ], [ -6.850506557635057, 10.138993841996239 ], [ -7.622759161804809, 10.147236232946796 ], [ -7.899589809592372, 10.297382106970828 ], [ -8.029943610048619, 10.206534939001713 ], [ -8.33537716310974, 10.494811916541934 ], [ -8.282357143578281, 10.792597357623846 ], [ -8.407310756860028, 10.909256903522762 ], [ -8.620321010767128, 10.810890814655183 ], [ -8.581305304386774, 11.136245632364805 ], [ -8.376304897484914, 11.393645941610629 ], [ -8.786099005559464, 11.812560939984706 ], [ -8.90526485842453, 12.088358059126437 ], [ -9.127473517279583, 12.308060411015333 ], [ -9.327616339546012, 12.334286200403454 ], [ -9.567911749703214, 12.194243068892476 ], [ -9.890992804392013, 12.060478623904972 ], [ -10.165213792348837, 11.844083563682744 ], [ -10.593223842806282, 11.92397532800598 ], [ -10.870829637078215, 12.17788747807211 ], [ -11.03655595543826, 12.211244615116515 ], [ -11.297573614944511, 12.077971096235771 ], [ -11.456168585648271, 12.076834214725338 ], [ -11.513942836950591, 12.442987575729418 ], [ -11.467899135778524, 12.754518947800975 ], [ -11.553397793005431, 13.141213690641067 ], [ -11.927716030311615, 13.422075100147396 ], [ -12.124887457721259, 13.994727484589788 ], [ -12.170750291380301, 14.616834214735505 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Myanmar", "iso_a2": "MM" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 99.543309360759309, 20.186597601802063 ], [ 98.959675734454876, 19.752980658440947 ], [ 98.25372399291561, 19.708203029860044 ], [ 97.797782830804408, 18.627080389881755 ], [ 97.375896437573545, 18.445437730375815 ], [ 97.859122755934862, 17.567946071843664 ], [ 98.49376102091135, 16.837835598207931 ], [ 98.903348423256759, 16.177824204976119 ], [ 98.537375929765716, 15.308497422746084 ], [ 98.192074009191401, 15.123702500870351 ], [ 98.430819126379873, 14.622027696180837 ], [ 99.097755161538757, 13.827502549693278 ], [ 99.212011753336085, 13.269293728076464 ], [ 99.196353794351666, 12.80474843998867 ], [ 99.587286004639722, 11.892762762901697 ], [ 99.038120558673981, 10.960545762572437 ], [ 98.553550653073046, 9.932959906448545 ], [ 98.457174106848726, 10.67526601810515 ], [ 98.764545526120784, 11.441291612183749 ], [ 98.428338657629851, 12.032986761925685 ], [ 98.509574009192676, 13.122377631070677 ], [ 98.103603957107694, 13.640459703012851 ], [ 97.777732375075175, 14.837285874892642 ], [ 97.597071567782763, 16.100567938699768 ], [ 97.164539829499802, 16.92873444260934 ], [ 96.505768670642993, 16.427240505432849 ], [ 95.369352248112406, 15.714389960182601 ], [ 94.80840457558412, 15.803454291237641 ], [ 94.188804152404543, 16.037936102762018 ], [ 94.533485955791349, 17.277240301985728 ], [ 94.324816522196755, 18.2135139022499 ], [ 93.540988397193644, 19.366492621330025 ], [ 93.663254835996213, 19.726961574781996 ], [ 93.078277622452191, 19.855144965081976 ], [ 92.36855350135562, 20.670883287025347 ], [ 92.303234490938678, 21.475485337809818 ], [ 92.65225711463799, 21.324047552978485 ], [ 92.672720981825563, 22.041238918541254 ], [ 93.166127557348375, 22.278459580977103 ], [ 93.060294224014626, 22.703110663335568 ], [ 93.286326938859276, 23.043658352139005 ], [ 93.325187615942795, 24.078556423432204 ], [ 94.106741977925068, 23.85074087167348 ], [ 94.55265791217164, 24.675238348890336 ], [ 94.603249139385383, 25.162495428970402 ], [ 95.155153436262594, 26.001307277932085 ], [ 95.124767694074961, 26.573572089132298 ], [ 96.419365675850969, 27.264589341739224 ], [ 97.133999058015306, 27.083773505149964 ], [ 97.051988559968095, 27.699058946233151 ], [ 97.402561476636137, 27.882536119085444 ], [ 97.327113885490036, 28.261582749946339 ], [ 97.911987746169444, 28.335945136014345 ], [ 98.246230910233294, 27.747221381129179 ], [ 98.682690057370465, 27.508812160750619 ], [ 98.712093947344513, 26.743535874940267 ], [ 98.671838006589155, 25.918702500913525 ], [ 97.724609002679145, 25.083637193293001 ], [ 97.604719679761985, 23.897404690033042 ], [ 98.660262485755766, 24.063286037689966 ], [ 98.898749220782776, 23.142722072842531 ], [ 99.531992222087396, 22.949038804612581 ], [ 99.240898878987252, 22.118314317304581 ], [ 99.983489211021492, 21.742936713136402 ], [ 100.416537713627378, 21.558839423096614 ], [ 101.15003299357825, 21.849984442629022 ], [ 101.180005324307544, 21.436572984294028 ], [ 100.329101190189533, 20.786121731036232 ], [ 100.115987583417848, 20.417849636308187 ], [ 99.543309360759309, 20.186597601802063 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Montenegro", "iso_a2": "ME" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 19.801613396898688, 42.500093492190842 ], [ 19.738051385179631, 42.688247382165571 ], [ 19.304490000000101, 42.19574 ], [ 19.37177000000014, 41.87755 ], [ 19.16246, 41.95502 ], [ 18.88214, 42.28151 ], [ 18.45, 42.48 ], [ 18.56, 42.65 ], [ 18.70648, 43.20011 ], [ 19.03165, 43.43253 ], [ 19.21852, 43.52384 ], [ 19.48389, 43.35229 ], [ 19.63, 43.213779970270537 ], [ 19.95857, 43.10604 ], [ 20.3398, 42.89852 ], [ 20.25758, 42.812750000000108 ], [ 20.0707, 42.58863 ], [ 19.801613396898688, 42.500093492190842 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Mongolia", "iso_a2": "MN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 87.751264276076711, 49.297197984405486 ], [ 88.805566847695516, 49.470520738312423 ], [ 90.71366743364068, 50.331811835321091 ], [ 92.234711541719676, 50.802170722041723 ], [ 93.10421919146269, 50.495290228876428 ], [ 94.147566359435629, 50.48053660745709 ], [ 94.815949334698729, 50.013433335970852 ], [ 95.814027947983988, 49.977466539095715 ], [ 97.25972781778141, 49.726060695995741 ], [ 98.231761509191557, 50.422400621128745 ], [ 97.825739780674311, 51.010995184933179 ], [ 98.861490513100335, 52.047366034546691 ], [ 99.981732212323536, 51.634006252643992 ], [ 100.889480421962617, 51.516855780638323 ], [ 102.065222609467327, 51.259920559283124 ], [ 102.255908644624327, 50.510560614618683 ], [ 103.676545444760222, 50.089966132195116 ], [ 104.621552362081701, 50.275329494826074 ], [ 105.886591424586754, 50.406019192092224 ], [ 106.88880415245535, 50.274295966180233 ], [ 107.86817589725095, 49.793705145865815 ], [ 108.475167270951289, 49.28254771585074 ], [ 109.402449171996665, 49.29296051695755 ], [ 110.662010532678778, 49.130128078805868 ], [ 111.581230910286621, 49.377968248077693 ], [ 112.897739699354389, 49.543565375356991 ], [ 114.362456496235268, 50.248302720737414 ], [ 114.962109816550182, 50.140247300815126 ], [ 115.485695428531415, 49.805177313834605 ], [ 116.67880089728618, 49.888531399121391 ], [ 116.191802199367572, 49.134598090199106 ], [ 115.485282017073061, 48.135382595403442 ], [ 115.742837355615791, 47.726544501326288 ], [ 116.308952671373234, 47.85341014260284 ], [ 117.29550744025741, 47.697709052107427 ], [ 118.064142694166719, 48.066730455103688 ], [ 118.866574334794947, 47.747060044946167 ], [ 119.772823927897505, 47.048058783550132 ], [ 119.663269891438759, 46.692679958678923 ], [ 118.874325799638726, 46.805412095723653 ], [ 117.421701287914189, 46.67273285581426 ], [ 116.717868280098855, 46.388202419615212 ], [ 115.985096470200091, 45.727235012386004 ], [ 114.460331658996068, 45.339816799493825 ], [ 113.463906691544167, 44.808893134127118 ], [ 112.436062453258813, 45.011645616224293 ], [ 111.873306105600307, 45.102079372735062 ], [ 111.348376906379457, 44.45744171811009 ], [ 111.66773725794323, 44.073175767587713 ], [ 111.82958784388137, 43.743118394539522 ], [ 111.129682244920232, 43.40683401140015 ], [ 110.412103306115284, 42.871233628911028 ], [ 109.243595819131457, 42.5194463160841 ], [ 107.744772576937947, 42.481515814781872 ], [ 106.129315627061686, 42.134327704428912 ], [ 104.964993931093474, 41.597409572916348 ], [ 104.522281935648991, 41.908346666016556 ], [ 103.312278273534815, 41.907468166667599 ], [ 101.833040399179936, 42.514872951826277 ], [ 100.845865513108265, 42.663804429691453 ], [ 99.515817498780038, 42.524691473961724 ], [ 97.451757440178014, 42.74888967546002 ], [ 96.349395786527808, 42.725635280928685 ], [ 95.762454868556688, 43.319449164394605 ], [ 95.306875441471533, 44.241330878265472 ], [ 94.688928664125328, 44.352331854828421 ], [ 93.480733677141302, 44.975472113619965 ], [ 92.133890822318222, 45.115075995456458 ], [ 90.945539585334302, 45.286073309910279 ], [ 90.585768263718279, 45.719716091487527 ], [ 90.970809360725013, 46.88814606382293 ], [ 90.280825636763922, 47.69354909930793 ], [ 88.854297723346761, 48.069081732772965 ], [ 88.013832228551735, 48.599462795600616 ], [ 87.751264276076711, 49.297197984405486 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Mozambique", "iso_a2": "MZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.559989047999352, -11.520020033415925 ], [ 35.312397902169039, -11.439146416879147 ], [ 36.514081658684262, -11.720938002166735 ], [ 36.775150994622805, -11.594537448780805 ], [ 37.47128421402661, -11.568750909067161 ], [ 37.82764489111139, -11.268769219612835 ], [ 38.427556593587752, -11.285202325081656 ], [ 39.521029900883775, -10.896853936408228 ], [ 40.316588576017189, -10.317096042525698 ], [ 40.478387485523029, -10.765440769089993 ], [ 40.437253045418686, -11.761710707245015 ], [ 40.560811395028573, -12.639176527561027 ], [ 40.59962039567975, -14.201975192931862 ], [ 40.775475294768995, -14.691764418194241 ], [ 40.477250604012603, -15.406294447493972 ], [ 40.089263950365222, -16.10077402106446 ], [ 39.452558628097051, -16.72089120856694 ], [ 38.538350864421517, -17.101023044505958 ], [ 37.411132846838882, -17.586368096591237 ], [ 36.281279331209362, -18.659687595293448 ], [ 35.896496616364061, -18.842260430580637 ], [ 35.198399692533144, -19.552811374593894 ], [ 34.786383497870048, -19.784011732667736 ], [ 34.701892531072843, -20.497043145431011 ], [ 35.176127150215365, -21.254361260668411 ], [ 35.373427768705739, -21.840837090748877 ], [ 35.385848253705404, -22.14 ], [ 35.562545536369086, -22.09 ], [ 35.533934767404304, -23.070787855727758 ], [ 35.371774122872381, -23.535358982031699 ], [ 35.607470330555628, -23.706563002214683 ], [ 35.458745558419622, -24.122609958596549 ], [ 35.040734897610662, -24.478350518493805 ], [ 34.215824008935471, -24.816314385682659 ], [ 33.013210076639012, -25.357573337507738 ], [ 32.574632195777866, -25.727318210556092 ], [ 32.660363396950089, -26.148584486599447 ], [ 32.915955031065693, -26.215867201443466 ], [ 32.830120477028885, -26.742191664336197 ], [ 32.071665480281069, -26.733820082304909 ], [ 31.985779249811969, -26.291779880480227 ], [ 31.83777794772806, -25.843331801051349 ], [ 31.752408481581881, -25.484283949487413 ], [ 31.930588820124253, -24.369416599222539 ], [ 31.670397983534656, -23.658969008073864 ], [ 31.191409132621288, -22.251509698172399 ], [ 32.244988234188014, -21.116488539313693 ], [ 32.508693068173443, -20.395292250248307 ], [ 32.65974327976258, -20.304290052982317 ], [ 32.772707960752626, -19.715592136313298 ], [ 32.611994256324891, -19.419382826416275 ], [ 32.654885695127149, -18.672089939043495 ], [ 32.849860874164392, -17.979057305577179 ], [ 32.847638787575846, -16.713398125884616 ], [ 32.328238966610229, -16.392074069893752 ], [ 31.852040643040599, -16.319417006091378 ], [ 31.636498243951195, -16.071990248277885 ], [ 31.17306399915768, -15.860943698797874 ], [ 30.338954705534544, -15.880839125230246 ], [ 30.27425581230511, -15.507786960515213 ], [ 30.17948123548183, -14.796099134991529 ], [ 33.214024692525214, -13.971860039936153 ], [ 33.789700148256685, -14.45183074306307 ], [ 34.064825473778626, -14.35995004644812 ], [ 34.459633416488543, -14.613009535381423 ], [ 34.517666049952311, -15.013708591372612 ], [ 34.307291294092096, -15.478641452702597 ], [ 34.381291945134052, -16.183559665596043 ], [ 35.033810255683534, -16.801299737213093 ], [ 35.339062941231646, -16.107440280830112 ], [ 35.771904738108361, -15.896858819240727 ], [ 35.68684533055594, -14.611045830954332 ], [ 35.267956170398008, -13.887834161029566 ], [ 34.907151320136165, -13.565424899960568 ], [ 34.559989047999352, -13.579997653866876 ], [ 34.28000613784198, -12.280025323132506 ], [ 34.559989047999352, -11.520020033415925 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Mauritania", "iso_a2": "MR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -12.170750291380301, 14.616834214735505 ], [ -12.830658331747516, 15.303691514542948 ], [ -13.435737677453062, 16.039383042866191 ], [ -14.099521450242179, 16.304302273010492 ], [ -14.577347581428981, 16.598263658102809 ], [ -15.135737270558819, 16.587282416240782 ], [ -15.623666144258692, 16.369337063049812 ], [ -16.120690070041931, 16.455662543193384 ], [ -16.463098110407884, 16.13503611903846 ], [ -16.549707810929064, 16.673892116761962 ], [ -16.270551723688357, 17.166962795474873 ], [ -16.14634741867485, 18.108481553616656 ], [ -16.256883307347167, 19.096715806550307 ], [ -16.37765112961327, 19.593817246981985 ], [ -16.277838100641517, 20.092520656814699 ], [ -16.536323614965468, 20.567866319251493 ], [ -17.063423224342571, 20.999752102130827 ], [ -16.845193650773993, 21.333323472574879 ], [ -12.929101935263532, 21.327070624267563 ], [ -13.118754441774712, 22.771220201096256 ], [ -12.874221564169575, 23.284832261645178 ], [ -11.937224493853321, 23.374594224536168 ], [ -11.969418911171161, 25.933352769468268 ], [ -8.6872936670174, 25.881056219988906 ], [ -8.684399786809053, 27.395744126896005 ], [ -4.923337368174231, 24.974574082941 ], [ -6.453786586930335, 24.956590684503425 ], [ -5.971128709324248, 20.640833441647629 ], [ -5.488522508150439, 16.325102037007966 ], [ -5.315277268891933, 16.201853745991841 ], [ -5.537744309908447, 15.501689764869257 ], [ -9.550238409859389, 15.486496893775438 ], [ -9.700255092802706, 15.264107367407362 ], [ -10.086846482778213, 15.330485744686271 ], [ -10.650791388379417, 15.132745876521426 ], [ -11.349095017939504, 15.411256008358478 ], [ -11.666078253617854, 15.388208319556298 ], [ -11.834207526079467, 14.799096991428939 ], [ -12.170750291380301, 14.616834214735505 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Malawi", "iso_a2": "MW" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 34.559989047999352, -11.520020033415925 ], [ 34.28000613784198, -12.280025323132506 ], [ 34.559989047999352, -13.579997653866876 ], [ 34.907151320136165, -13.565424899960568 ], [ 35.267956170398008, -13.887834161029566 ], [ 35.68684533055594, -14.611045830954332 ], [ 35.771904738108361, -15.896858819240727 ], [ 35.339062941231646, -16.107440280830112 ], [ 35.033810255683534, -16.801299737213093 ], [ 34.381291945134052, -16.183559665596043 ], [ 34.307291294092096, -15.478641452702597 ], [ 34.517666049952311, -15.013708591372612 ], [ 34.459633416488543, -14.613009535381423 ], [ 34.064825473778626, -14.35995004644812 ], [ 33.789700148256685, -14.45183074306307 ], [ 33.214024692525214, -13.971860039936153 ], [ 32.688165317523129, -13.712857761289277 ], [ 32.991764357237884, -12.783870537978274 ], [ 33.306422153463075, -12.435778090060218 ], [ 33.114289178201915, -11.607198174692314 ], [ 33.315310499817286, -10.796549981329697 ], [ 33.485687697083591, -10.525558770391115 ], [ 33.231387973775298, -9.676721693564801 ], [ 32.759375441221323, -9.23059905358906 ], [ 33.73972903823045, -9.417150974162723 ], [ 33.940837724096539, -9.693673841980294 ], [ 34.28000613784198, -10.159999688358404 ], [ 34.559989047999352, -11.520020033415925 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Malaysia", "iso_a2": "MY" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 101.075515578213327, 6.204867051615892 ], [ 101.154218784593837, 5.691384182147715 ], [ 101.814281854258041, 5.810808417174229 ], [ 102.141186964936452, 6.221636053894656 ], [ 102.37114708863524, 6.128205064310961 ], [ 102.961705356866702, 5.524495144061078 ], [ 103.381214634212171, 4.855001125503748 ], [ 103.438575474056194, 4.181605536308382 ], [ 103.332122023534879, 3.726697902842972 ], [ 103.429428745540548, 3.38286876058902 ], [ 103.502447544368891, 2.791018581550205 ], [ 103.854674106870362, 2.515454006353764 ], [ 104.247931756611507, 1.631141058759056 ], [ 104.228811476663537, 1.293048000489534 ], [ 103.519707472754448, 1.226333726400682 ], [ 102.5736153503548, 1.967115383304744 ], [ 101.390638462329179, 2.760813706875624 ], [ 101.273539666755852, 3.270291652841181 ], [ 100.695435418706694, 3.93913971599487 ], [ 100.557407668055106, 4.76728038168828 ], [ 100.196706170657734, 5.31249258058368 ], [ 100.306260207116537, 6.040561835143876 ], [ 100.085756870527092, 6.464489447450291 ], [ 100.259596388756933, 6.642824815289572 ], [ 101.075515578213327, 6.204867051615892 ] ] ], [ [ [ 118.618320754064854, 4.478202419447541 ], [ 117.882034946770176, 4.137551377779488 ], [ 117.015214471506368, 4.306094061699469 ], [ 115.865517205876785, 4.306559149590157 ], [ 115.519078403792008, 3.169238389494396 ], [ 115.134037306785245, 2.821481838386219 ], [ 114.621355422017501, 1.430688177898887 ], [ 113.80584964401956, 1.217548732911041 ], [ 112.859809198052204, 1.497790025229946 ], [ 112.380251906383677, 1.410120957846758 ], [ 111.797548455860436, 0.904441229654651 ], [ 111.159137811326588, 0.976478176269509 ], [ 110.51406090702713, 0.773131415200993 ], [ 109.830226678508865, 1.338135687664192 ], [ 109.663260125773746, 2.006466986494985 ], [ 110.396135288537067, 1.663774725751395 ], [ 111.168852980597507, 1.850636704918784 ], [ 111.370081007942105, 2.697303371588873 ], [ 111.79692833867287, 2.885896511238073 ], [ 112.995614862115275, 3.102394924324869 ], [ 113.712935418758747, 3.893509426281128 ], [ 114.204016554828428, 4.52587392823682 ], [ 114.659595981913554, 4.00763682699781 ], [ 114.869557326315402, 4.348313706881953 ], [ 115.347460972150685, 4.316636053887009 ], [ 115.405700311343622, 4.955227565933825 ], [ 115.450710483869813, 5.447729803891562 ], [ 116.220741001450989, 6.143191229675622 ], [ 116.725102980619766, 6.924771429873999 ], [ 117.129626092600489, 6.928052883324568 ], [ 117.643393182446317, 6.422166449403306 ], [ 117.689075148592366, 5.987490139180181 ], [ 118.347691278152212, 5.708695786965464 ], [ 119.181903924639954, 5.407835598162251 ], [ 119.110693800941732, 5.016128241389865 ], [ 118.43972700406411, 4.96651886638962 ], [ 118.618320754064854, 4.478202419447541 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Namibia", "iso_a2": "NA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 16.344976840895242, -28.576705010697701 ], [ 15.601818068105816, -27.821247247022804 ], [ 15.210472446359461, -27.090955905874047 ], [ 14.989710727608553, -26.117371921495156 ], [ 14.743214145576331, -25.39292001719538 ], [ 14.408144158595833, -23.853014011329847 ], [ 14.385716586981149, -22.656652927340691 ], [ 14.257714064194175, -22.111208184499958 ], [ 13.86864220546866, -21.699036960539978 ], [ 13.352497999737439, -20.872834161057504 ], [ 12.826845330464494, -19.673165785401665 ], [ 12.608564080463621, -19.045348809487699 ], [ 11.794918654028066, -18.069129327061916 ], [ 11.734198846085121, -17.301889336824473 ], [ 12.215461460019355, -17.111668389558083 ], [ 12.814081251688407, -16.941342868724071 ], [ 13.462362094789967, -16.971211846588773 ], [ 14.05850141770901, -17.423380629142663 ], [ 14.209706658595024, -17.353100681225719 ], [ 18.263309360434164, -17.309950860262006 ], [ 18.956186964603603, -17.789094740472258 ], [ 21.377176141045567, -17.930636488519696 ], [ 23.215048455506064, -17.523116143465984 ], [ 24.033861525170778, -17.295843194246324 ], [ 24.682349074001507, -17.353410739819473 ], [ 25.076950310982259, -17.578823337476621 ], [ 25.084443393664571, -17.661815687737374 ], [ 24.520705193792537, -17.887124932529936 ], [ 24.217364536239213, -17.889347019118489 ], [ 23.579005568137717, -18.281261081620059 ], [ 23.196858351339301, -17.869038181227786 ], [ 21.655040317478978, -18.219146010005225 ], [ 20.910641310314535, -18.252218926672022 ], [ 20.88113406747587, -21.814327080983148 ], [ 19.895457797940679, -21.849156996347869 ], [ 19.895767856534434, -24.767790215760591 ], [ 19.894734327888614, -28.461104831660776 ], [ 19.002127312911085, -28.972443129188868 ], [ 18.464899122804752, -29.045461928017279 ], [ 17.83615197110953, -28.856377862261319 ], [ 17.387497185951503, -28.783514092729781 ], [ 17.218928663815404, -28.355943291946812 ], [ 16.824017368240902, -28.08216155366447 ], [ 16.344976840895242, -28.576705010697701 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "New Caledonia", "iso_a2": "NC" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 165.779989862326374, -21.080004978115628 ], [ 166.599991489933842, -21.700018812753527 ], [ 167.120011428086912, -22.159990736583492 ], [ 166.740034621444806, -22.39997608814695 ], [ 166.18973229396866, -22.129708347260454 ], [ 165.474375441752215, -21.679606621998232 ], [ 164.829815301775682, -21.149819838141951 ], [ 164.167995233413649, -20.444746595951628 ], [ 164.029605747736014, -20.105645847252354 ], [ 164.459967075862721, -20.120011895429499 ], [ 165.02003624904205, -20.45999114347773 ], [ 165.46000939357512, -20.80002206795826 ], [ 165.779989862326374, -21.080004978115628 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Niger", "iso_a2": "NE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 2.15447350424995, 11.940150051313424 ], [ 2.177107781593918, 12.625017808477537 ], [ 1.024103224297619, 12.851825669806601 ], [ 0.993045688490156, 13.335749620003867 ], [ 0.429927605805517, 13.988733018443895 ], [ 0.295646396495215, 14.444234930880668 ], [ 0.374892205414767, 14.928908189346146 ], [ 1.015783318698482, 14.96818227788799 ], [ 1.385528191746971, 15.323561102759243 ], [ 2.749992709981541, 15.409524847876753 ], [ 3.638258904646591, 15.568119818580442 ], [ 3.723421665063597, 16.184283759012658 ], [ 4.270209995143887, 16.852227484601315 ], [ 4.267419467800096, 19.155265204337127 ], [ 5.677565952180714, 19.601206976799801 ], [ 8.572893100629869, 21.565660712159229 ], [ 11.999505649471701, 23.471668402596435 ], [ 13.581424594790462, 23.040506089769281 ], [ 14.143870883855243, 22.491288967371133 ], [ 14.8513, 22.862950000000126 ], [ 15.096887648181848, 21.308518785074909 ], [ 15.471076694407316, 21.048457139565983 ], [ 15.487148064850146, 20.730414537025638 ], [ 15.903246697664315, 20.387618923417506 ], [ 15.685740594147774, 19.957180080642388 ], [ 15.300441114979719, 17.927949937405003 ], [ 15.247731154041844, 16.627305813050782 ], [ 13.972201775781684, 15.684365953021143 ], [ 13.540393507550789, 14.367133693901224 ], [ 13.956698846094127, 13.996691189016929 ], [ 13.95447675950561, 13.353448798063766 ], [ 14.595781284247607, 13.330426947477861 ], [ 14.495787387762903, 12.859396267137356 ], [ 14.213530714584749, 12.802035427293333 ], [ 14.18133629726691, 12.483656927943173 ], [ 13.995352817448293, 12.461565253138303 ], [ 13.318701613018561, 13.556356309457954 ], [ 13.083987257548813, 13.596147162322495 ], [ 12.302071160540549, 13.037189032437539 ], [ 11.527803175511508, 13.328980007373559 ], [ 10.989593133191534, 13.387322699431195 ], [ 10.701031935273818, 13.246917832894042 ], [ 10.114814487354749, 13.277251898649467 ], [ 9.524928012743089, 12.851102199754564 ], [ 9.014933302454438, 12.826659247280418 ], [ 7.804671258178871, 13.343526923063735 ], [ 7.330746697630047, 13.098038031461215 ], [ 6.820441928747812, 13.115091254117601 ], [ 6.445426059605722, 13.492768459522722 ], [ 5.443058302440136, 13.865923977102227 ], [ 4.368343540066007, 13.747481594289411 ], [ 4.107945997747379, 13.531215725147945 ], [ 3.967282749048934, 12.956108710171577 ], [ 3.680633579125924, 12.552903347214169 ], [ 3.611180454125588, 11.660167141155966 ], [ 2.848643019226586, 12.235635891158211 ], [ 2.490163608418015, 12.233052069543589 ], [ 2.15447350424995, 11.940150051313424 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Nigeria", "iso_a2": "NG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 8.500287713259695, 4.771982937026849 ], [ 7.462108188515941, 4.412108262546241 ], [ 7.082596469764439, 4.464689032403228 ], [ 6.6980721370806, 4.240594183769517 ], [ 5.898172641634687, 4.262453314628985 ], [ 5.362804803090881, 4.887970689305959 ], [ 5.033574252959369, 5.611802476418234 ], [ 4.325607130560684, 6.270651149923467 ], [ 3.574180128604553, 6.258300482605719 ], [ 2.691701694356254, 6.258817246928629 ], [ 2.74906253420022, 7.870734361192888 ], [ 2.723792758809509, 8.506845404489709 ], [ 2.912308383810256, 9.137607937044322 ], [ 3.220351596702101, 9.444152533399702 ], [ 3.705438266625919, 10.063210354040208 ], [ 3.600070021182802, 10.332186184119408 ], [ 3.797112257511714, 10.734745591673105 ], [ 3.572216424177469, 11.32793935795152 ], [ 3.611180454125559, 11.660167141155968 ], [ 3.680633579125811, 12.552903347214226 ], [ 3.967282749048849, 12.956108710171575 ], [ 4.107945997747322, 13.531215725147831 ], [ 4.368343540066064, 13.747481594289326 ], [ 5.443058302440164, 13.865923977102298 ], [ 6.445426059605637, 13.492768459522678 ], [ 6.820441928747754, 13.115091254117518 ], [ 7.330746697630019, 13.098038031461201 ], [ 7.804671258178786, 13.343526923063747 ], [ 9.014933302454466, 12.82665924728043 ], [ 9.524928012742947, 12.851102199754479 ], [ 10.114814487354693, 13.277251898649411 ], [ 10.701031935273706, 13.246917832894084 ], [ 10.989593133191535, 13.38732269943111 ], [ 11.527803175511394, 13.328980007373588 ], [ 12.302071160540523, 13.037189032437524 ], [ 13.08398725754887, 13.596147162322566 ], [ 13.318701613018561, 13.556356309457826 ], [ 13.995352817448349, 12.461565253138346 ], [ 14.181336297266794, 12.483656927943116 ], [ 14.577177768622533, 12.085360826053503 ], [ 14.468192172918975, 11.904751695193411 ], [ 14.415378859116684, 11.572368882692075 ], [ 13.572949659894562, 10.798565985553566 ], [ 13.308676385153918, 10.160362046748928 ], [ 13.167599724997103, 9.640626328973411 ], [ 12.955467970438974, 9.417771714714704 ], [ 12.753671502339216, 8.717762762888995 ], [ 12.218872104550599, 8.305824082874324 ], [ 12.063946160539558, 7.799808457872302 ], [ 11.839308709366803, 7.397042344589437 ], [ 11.745774366918511, 6.981382961449754 ], [ 11.058787876030351, 6.644426784690594 ], [ 10.497375115611419, 7.055357774275564 ], [ 10.118276808318257, 7.03876963950988 ], [ 9.522705926154401, 6.453482367372117 ], [ 9.233162876023044, 6.444490668153335 ], [ 8.757532993208628, 5.479665839047911 ], [ 8.500287713259695, 4.771982937026849 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Nicaragua", "iso_a2": "NI" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -85.712540452807303, 11.088444932494824 ], [ -86.058488328785259, 11.403438625529944 ], [ -86.525849982432959, 11.806876532432597 ], [ -86.745991583996329, 12.143961900272487 ], [ -87.16751624220116, 12.458257961471658 ], [ -87.668493415054712, 12.909909979702633 ], [ -87.557466600275617, 13.064551703336065 ], [ -87.392386237319229, 12.914018256069838 ], [ -87.316654425795491, 12.984685777228975 ], [ -87.005769009127576, 13.025794379117158 ], [ -86.880557013684367, 13.254204209847245 ], [ -86.733821784191605, 13.263092556201443 ], [ -86.75508663607971, 13.754845485890913 ], [ -86.520708177419905, 13.778487453664439 ], [ -86.312142096689925, 13.77135610600817 ], [ -86.096263800790595, 14.038187364147248 ], [ -85.80129472526859, 13.836054999237589 ], [ -85.698665330736929, 13.960078436738087 ], [ -85.514413011400251, 14.079011745657837 ], [ -85.165364549484806, 14.35436961512508 ], [ -85.148750576502962, 14.560196844943617 ], [ -85.052787441736939, 14.551541042534723 ], [ -84.924500698572402, 14.79049286545235 ], [ -84.82003679069436, 14.819586696832671 ], [ -84.649582078779616, 14.666805324761754 ], [ -84.449335903648603, 14.621614284722497 ], [ -84.228341640952408, 14.748764146376658 ], [ -83.97572140169359, 14.749435939996461 ], [ -83.628584967772923, 14.880073960830302 ], [ -83.489988776366118, 15.016267198135537 ], [ -83.147219000974133, 14.995829169164111 ], [ -83.233234422523935, 14.899866034398102 ], [ -83.284161546547594, 14.676623846897201 ], [ -83.182126430987282, 14.31070302983845 ], [ -83.412499966144452, 13.970077826386557 ], [ -83.519831916014681, 13.567699286345883 ], [ -83.552207200845544, 13.127054348193086 ], [ -83.498515387694269, 12.869292303921227 ], [ -83.473323126951982, 12.419087225794428 ], [ -83.626104499022915, 12.320850328007566 ], [ -83.719613003255063, 11.893124497927728 ], [ -83.650857510090717, 11.62903209070012 ], [ -83.855470343750397, 11.373311265503787 ], [ -83.808935716471552, 11.103043524617275 ], [ -83.655611741861577, 10.938764146361422 ], [ -83.895054490885954, 10.726839097532446 ], [ -84.19017859570485, 10.793450018756674 ], [ -84.35593075228104, 10.999225572142905 ], [ -84.673069017256267, 11.082657172078143 ], [ -84.903003302738952, 10.952303371621896 ], [ -85.561851976244199, 11.217119248901597 ], [ -85.712540452807303, 11.088444932494824 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Netherlands", "iso_a2": "NL" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 6.074182570020923, 53.510403347378144 ], [ 6.905139601274129, 53.482162177130647 ], [ 7.092053256873896, 53.144043280644894 ], [ 6.842869500362383, 52.228440253297549 ], [ 6.589396599970826, 51.852029120483394 ], [ 5.988658074577813, 51.851615709025054 ], [ 6.15665815595878, 50.803721015010581 ], [ 5.606975945670001, 51.037298488969782 ], [ 4.973991326526914, 51.475023708698131 ], [ 4.047071160507528, 51.26725861266857 ], [ 3.314971144228537, 51.34575511331991 ], [ 3.830288527043137, 51.620544542031951 ], [ 4.705997348661185, 53.091798407597764 ], [ 6.074182570020923, 53.510403347378144 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Norway", "iso_a2": "NO" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 28.165547316202918, 71.185474351680512 ], [ 31.293418409965483, 70.453787746859916 ], [ 30.005435011522792, 70.186258856884905 ], [ 31.101078728975125, 69.558080145944871 ], [ 29.399580519332886, 69.15691600206307 ], [ 28.591929559043194, 69.064776923286701 ], [ 29.015572950971972, 69.766491197377974 ], [ 27.732292107867892, 70.164193020296295 ], [ 26.179622023226301, 69.825298977326156 ], [ 25.689212680776393, 69.092113755969024 ], [ 24.735679152126721, 68.649556789821446 ], [ 23.662049594830762, 68.891247463650529 ], [ 22.356237827247412, 68.841741441514955 ], [ 21.24493615081073, 69.370443020293123 ], [ 20.645592889089585, 69.10624726020086 ], [ 20.025268995857914, 69.065138658312719 ], [ 19.878559604581255, 68.407194322372618 ], [ 17.99386844246439, 68.567391262477344 ], [ 17.729181756265348, 68.010551866316234 ], [ 16.768878614985539, 68.013936672631388 ], [ 16.108712192456835, 67.302455552836904 ], [ 15.108411492583059, 66.193866889095432 ], [ 13.555689731509091, 64.787027696381472 ], [ 13.919905226302205, 64.445420640716122 ], [ 13.57191613124877, 64.049114081469668 ], [ 12.579935336973932, 64.066218980558347 ], [ 11.930569288794231, 63.128317572676991 ], [ 11.992064243221535, 61.800362453856565 ], [ 12.631146681375242, 61.2935716823701 ], [ 12.300365838274899, 60.11793284773006 ], [ 11.468271925511175, 59.432393296946003 ], [ 11.027368605196926, 58.856149400459401 ], [ 10.356556837616097, 59.469807033925377 ], [ 8.382000359743643, 58.313288479233279 ], [ 7.048748406613299, 58.078884182357285 ], [ 5.665835402050419, 58.588155422593672 ], [ 5.308234490590735, 59.663231919993819 ], [ 4.992078077829007, 61.970998033284275 ], [ 5.912900424837886, 62.614472968182696 ], [ 8.553411085655767, 63.454008287196473 ], [ 10.527709181366788, 64.486038316497485 ], [ 12.358346795306375, 65.879725857193165 ], [ 14.761145867581604, 67.81064158799515 ], [ 16.435927361728972, 68.563205471461686 ], [ 19.184028354578516, 69.817444159617821 ], [ 21.378416375420613, 70.255169379346057 ], [ 23.023742303161583, 70.202071845166273 ], [ 24.546543409938522, 71.030496731237236 ], [ 26.370049676221811, 70.986261705195375 ], [ 28.165547316202918, 71.185474351680512 ] ] ], [ [ [ 24.72412, 77.85385 ], [ 22.49032, 77.44493 ], [ 20.72601, 77.67704 ], [ 21.41611, 77.93504 ], [ 20.8119, 78.25463 ], [ 22.88426, 78.45494 ], [ 23.28134, 78.07954 ], [ 24.72412, 77.85385 ] ] ], [ [ [ 18.25183, 79.70175 ], [ 21.54383, 78.95611 ], [ 19.02737, 78.5626 ], [ 18.47172, 77.82669 ], [ 17.59441, 77.63796 ], [ 17.1182, 76.80941 ], [ 15.91315, 76.77045 ], [ 13.76259, 77.38035 ], [ 14.66956, 77.73565 ], [ 13.1706, 78.02493 ], [ 11.22231, 78.8693 ], [ 10.44453, 79.65239 ], [ 13.17077, 80.01046 ], [ 13.71852, 79.66039 ], [ 15.14282, 79.67431 ], [ 15.52255, 80.01608 ], [ 16.99085, 80.05086 ], [ 18.25183, 79.70175 ] ] ], [ [ [ 25.447625359811894, 80.407340399894508 ], [ 27.407505730913499, 80.056405748200461 ], [ 25.924650506298178, 79.517833970854554 ], [ 23.02446577321362, 79.400011705229105 ], [ 20.075188429451885, 79.566823228667261 ], [ 19.897266473070914, 79.842361965647513 ], [ 18.462263624757924, 79.859880276194417 ], [ 17.368015170977458, 80.318896186027018 ], [ 20.455992059010697, 80.59815562613224 ], [ 21.907944777115404, 80.357679348462085 ], [ 22.919252557067438, 80.657144273593502 ], [ 25.447625359811894, 80.407340399894508 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Nepal", "iso_a2": "NP" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 88.12044070836987, 27.876541652939594 ], [ 88.043132765661227, 27.445818589786825 ], [ 88.174804315140918, 26.810405178325951 ], [ 88.06023766474982, 26.414615383402491 ], [ 87.227471958366294, 26.397898057556077 ], [ 86.024392938179176, 26.630984605408571 ], [ 85.251778598983378, 26.726198431906344 ], [ 84.675017938173795, 27.234901231387536 ], [ 83.304248895199549, 27.364505723575562 ], [ 81.999987420584972, 27.925479234319994 ], [ 81.057202589852025, 28.416095282499043 ], [ 80.088424513676273, 28.79447011974014 ], [ 80.476721225917402, 29.729865220655341 ], [ 81.111256138029319, 30.183480943313402 ], [ 81.525804477874743, 30.422716986608631 ], [ 82.327512648450877, 30.115268052688137 ], [ 83.33711510613719, 29.463731594352197 ], [ 83.898992954446726, 29.320226141877658 ], [ 84.23457970575015, 28.839893703724698 ], [ 85.011638218123039, 28.642773952747344 ], [ 85.823319940131512, 28.203575954698707 ], [ 86.954517043000607, 27.974261786403517 ], [ 88.12044070836987, 27.876541652939594 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "New Zealand", "iso_a2": "NZ" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 173.02037479074076, -40.919052422856424 ], [ 173.24723432850206, -41.331998793300784 ], [ 173.958405389702904, -40.926700534835618 ], [ 174.247586704808128, -41.34915536882167 ], [ 174.248516880589506, -41.770008233406756 ], [ 173.876446568087914, -42.233184096038826 ], [ 173.222739699595678, -42.970038344088564 ], [ 172.711246372770773, -43.372287693048506 ], [ 173.080112746470235, -43.853343601253584 ], [ 172.308583612352521, -43.865694268571346 ], [ 171.45292524646365, -44.242518812843727 ], [ 171.185137974327262, -44.897104180684892 ], [ 170.616697219116617, -45.908928724959708 ], [ 169.831422154009289, -46.355774834987599 ], [ 169.332331170934282, -46.641235446967855 ], [ 168.411353794628582, -46.619944756863589 ], [ 167.763744745146852, -46.290197442409209 ], [ 166.676886021184231, -46.21991749449225 ], [ 166.509144321964726, -45.852704766626218 ], [ 167.046424188503266, -45.110941257508671 ], [ 168.303763462596891, -44.123973077166127 ], [ 168.949408807651565, -43.935819187191427 ], [ 169.667814569373178, -43.555325616226341 ], [ 170.52491987536618, -43.03168832781283 ], [ 171.125089960004033, -42.512753594737788 ], [ 171.569713983443222, -41.767424411792135 ], [ 171.948708937871942, -41.514416599291152 ], [ 172.097227004278778, -40.956104424809681 ], [ 172.798579543344005, -40.493962090823473 ], [ 173.02037479074076, -40.919052422856424 ] ] ], [ [ [ 174.612008905330555, -36.156397393540544 ], [ 175.336615838927202, -37.20909799575827 ], [ 175.357596470437528, -36.526193943021127 ], [ 175.808886753642497, -36.798942152657688 ], [ 175.958490025127531, -37.55538176854607 ], [ 176.763195428776584, -37.881253350578703 ], [ 177.438813104560523, -37.961248467766495 ], [ 178.010354445708714, -37.579824721020131 ], [ 178.517093540762829, -37.695373223624799 ], [ 178.274731073313859, -38.582812595373099 ], [ 177.97046023997936, -39.166342868812976 ], [ 177.206992629299151, -39.145775648760846 ], [ 176.939980503647035, -39.449736423501577 ], [ 177.032946405340141, -39.879942722331478 ], [ 176.885823602605257, -40.065977878582174 ], [ 176.508017206119376, -40.604808038089587 ], [ 176.012440220440311, -41.289624118821507 ], [ 175.239567499082995, -41.688307793953243 ], [ 175.067898391009436, -41.425894870775082 ], [ 174.650972935278475, -41.281820977545451 ], [ 175.227630243223672, -40.459235528323404 ], [ 174.900156691789988, -39.90893320084723 ], [ 173.824046665744021, -39.508854262043513 ], [ 173.852261997775344, -39.146602471677468 ], [ 174.574801874080407, -38.797683200842755 ], [ 174.743473749081062, -38.027807712558385 ], [ 174.697016636450627, -37.381128838857961 ], [ 174.292028436579216, -36.711092217761447 ], [ 174.319003534235577, -36.534823907213891 ], [ 173.840996535535822, -36.121980889634116 ], [ 173.054171177459608, -35.237125339500338 ], [ 172.636005487353742, -34.529106540669389 ], [ 173.007042271209485, -34.450661716450341 ], [ 173.551298456107503, -35.006183363587965 ], [ 174.329390497126298, -35.265495700828623 ], [ 174.612008905330555, -36.156397393540544 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Oman", "iso_a2": "OM" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 58.861141391846587, 21.114034532144302 ], [ 58.487985874266968, 20.428985907467109 ], [ 58.034318475176605, 20.481437486243351 ], [ 57.826372511634105, 20.243002427648634 ], [ 57.665762160070955, 19.736004950433113 ], [ 57.788700392493382, 19.06757029873765 ], [ 57.694390903560674, 18.944709580963803 ], [ 57.234263950433814, 18.947991034414258 ], [ 56.609650913321985, 18.574267076079479 ], [ 56.512189162019496, 18.087113348863937 ], [ 56.283520949128018, 17.876066799383949 ], [ 55.661491733630697, 17.884128322821539 ], [ 55.269939406155203, 17.632309068263197 ], [ 55.274900343655105, 17.228354397037663 ], [ 54.791002231674128, 16.950696926333364 ], [ 54.239252964093765, 17.044980577049984 ], [ 53.570508253804604, 16.707662665264678 ], [ 53.108572625547509, 16.651051133688981 ], [ 52.78218427919208, 17.349742336491232 ], [ 52.000009800022241, 19.000003363516072 ], [ 54.999981723862419, 19.999994004796122 ], [ 55.666659376859883, 22.000001125572311 ], [ 55.208341098863201, 22.708329982997014 ], [ 55.234489373602884, 23.110992743415352 ], [ 55.525841098864504, 23.524869289640918 ], [ 55.528631626208295, 23.933604030853502 ], [ 55.981213820220518, 24.130542914317857 ], [ 55.804118686756254, 24.269604193615294 ], [ 55.886232537668064, 24.920830593357493 ], [ 56.396847365143998, 24.924732163995515 ], [ 56.845140415276063, 24.241673081961494 ], [ 57.40345258975745, 23.878594468678841 ], [ 58.136947869708337, 23.747930609628838 ], [ 58.729211460205448, 23.565667832935418 ], [ 59.18050174341036, 22.99239533130546 ], [ 59.45009769067704, 22.6602709009656 ], [ 59.808060337162857, 22.533611965418203 ], [ 59.806148309168094, 22.310524807214193 ], [ 59.442191196536413, 21.714540513592084 ], [ 59.282407667889885, 21.433885809814882 ], [ 58.861141391846587, 21.114034532144302 ] ] ], [ [ [ 56.391421339753407, 25.895990708921261 ], [ 56.261041701080927, 25.714606431576755 ], [ 56.070820753814559, 26.055464178973949 ], [ 56.362017449779358, 26.395934353128951 ], [ 56.485679152253823, 26.309117946878672 ], [ 56.391421339753407, 25.895990708921261 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Pakistan", "iso_a2": "PK" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 75.158027785140916, 37.133030910789117 ], [ 75.89689741405013, 36.666806138651836 ], [ 76.192848341785691, 35.898403428687828 ], [ 77.837450799474567, 35.494009507787766 ], [ 76.871721632804025, 34.653544012992739 ], [ 75.757060988268336, 34.504922593721318 ], [ 74.240202671204969, 34.748887030571254 ], [ 73.749948358051967, 34.317698879527853 ], [ 74.104293654277342, 33.441473293586853 ], [ 74.451559279278712, 32.764899603805503 ], [ 75.258641798813215, 32.271105455040498 ], [ 74.405928989565012, 31.692639471965279 ], [ 74.421380242820277, 30.979814764931177 ], [ 73.450638462217427, 29.97641347911987 ], [ 72.823751662084703, 28.961591701772054 ], [ 71.777665643200322, 27.913180243434525 ], [ 70.616496209601934, 27.989196275335868 ], [ 69.514392938113133, 26.940965684511372 ], [ 70.168926629522019, 26.491871649678842 ], [ 70.282873162725593, 25.72222870533983 ], [ 70.844699334602836, 25.215102037043518 ], [ 71.043240187468228, 24.3565239527302 ], [ 68.842599318318776, 24.359133612560939 ], [ 68.176645135373406, 23.691965033456711 ], [ 67.443666619745471, 23.944843654876991 ], [ 67.145441928989072, 24.663611151624647 ], [ 66.372827589793275, 25.425140896093851 ], [ 64.530407749291129, 25.237038682551429 ], [ 62.905700718034609, 25.218409328710209 ], [ 61.49736290878419, 25.078237006118499 ], [ 61.87418745305655, 26.239974880472104 ], [ 63.316631707619592, 26.756532497661667 ], [ 63.233897739520302, 27.217047024030709 ], [ 62.755425652929858, 27.378923448184988 ], [ 62.727830438085988, 28.25964488373539 ], [ 61.771868117118629, 28.699333807890799 ], [ 61.36930870956494, 29.303276272085924 ], [ 60.874248488208792, 29.829238999952608 ], [ 62.549856805272782, 29.318572496044311 ], [ 63.550260858011171, 29.468330796826166 ], [ 64.148002150331251, 29.340819200145972 ], [ 64.350418735618518, 29.560030625928093 ], [ 65.046862013616106, 29.472180691031905 ], [ 66.346472609324422, 29.887943427036177 ], [ 66.381457553986024, 30.738899237586452 ], [ 66.938891229118468, 31.304911200479353 ], [ 67.683393589147471, 31.303154201781421 ], [ 67.792689243444784, 31.582930406209631 ], [ 68.556932000609322, 31.713310044882018 ], [ 68.926676873657669, 31.620189113892067 ], [ 69.317764113242561, 31.901412258424443 ], [ 69.262522007122556, 32.5019440780883 ], [ 69.687147251264861, 33.105498969041236 ], [ 70.323594191371598, 33.358532619758392 ], [ 69.930543247359594, 34.02012014417511 ], [ 70.881803012988399, 33.98885590263852 ], [ 71.156773309213463, 34.348911444632151 ], [ 71.115018751921639, 34.733125718722235 ], [ 71.613076206350712, 35.153203436822864 ], [ 71.498767938121091, 35.650563259416003 ], [ 71.26234826038575, 36.074387518857804 ], [ 71.846291945283923, 36.509942328429858 ], [ 72.920024855444467, 36.720007025696319 ], [ 74.067551710917826, 36.836175645488453 ], [ 74.575892775372978, 37.020841376283457 ], [ 75.158027785140916, 37.133030910789117 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Panama", "iso_a2": "PA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -77.881571417945253, 7.223771267114785 ], [ -78.214936082660117, 7.512254950384161 ], [ -78.429160732726075, 8.052041123888927 ], [ -78.182095709938636, 8.319182440621773 ], [ -78.435465257465694, 8.387705389840789 ], [ -78.622120530903942, 8.718124497915028 ], [ -79.120307176413746, 8.996092027213024 ], [ -79.55787736684519, 8.932374986197146 ], [ -79.760578172510051, 8.584515082224399 ], [ -80.164481167303336, 8.333315944853595 ], [ -80.382659064439622, 8.298408514840432 ], [ -80.4806892564973, 8.090307522001069 ], [ -80.003689948227162, 7.547524115423372 ], [ -80.276670701808996, 7.419754136581716 ], [ -80.42115800649708, 7.271571966984765 ], [ -80.886400926420805, 7.220541490096537 ], [ -81.059542812814726, 7.817921047390597 ], [ -81.189715745757951, 7.64790558515034 ], [ -81.51951473664468, 7.706610012233909 ], [ -81.721311204744467, 8.108962714058435 ], [ -82.131441209628917, 8.175392767769637 ], [ -82.390934414382571, 8.292362372262289 ], [ -82.82008134635042, 8.290863755725823 ], [ -82.850958014644817, 8.073822740099956 ], [ -82.965783047197363, 8.225027980985985 ], [ -82.913176439124214, 8.42351715741907 ], [ -82.829770677405165, 8.62629547773237 ], [ -82.868657192704774, 8.807266343618522 ], [ -82.719183112300527, 8.925708726431495 ], [ -82.927154914059159, 9.074330145702916 ], [ -82.932890998043575, 9.476812038608173 ], [ -82.546196255203483, 9.566134751824677 ], [ -82.187122565423408, 9.207448635286781 ], [ -82.207586432610967, 8.9955752628901 ], [ -81.808566860669288, 8.950616766796173 ], [ -81.714154018872037, 9.031955471223583 ], [ -81.439287075511544, 8.786234035675719 ], [ -80.947301601876759, 8.858503526235907 ], [ -80.521901211250082, 9.111072089062432 ], [ -79.914599778955989, 9.312765204297619 ], [ -79.573302781884308, 9.611610012241528 ], [ -79.021191779277927, 9.552931423374105 ], [ -79.058450486960368, 9.454565334506526 ], [ -78.500887620747193, 9.420458889193881 ], [ -78.055927700498017, 9.247730414258299 ], [ -77.729513515926413, 8.946844387238869 ], [ -77.353360765273862, 8.67050466555807 ], [ -77.474722866511328, 8.524286200388218 ], [ -77.242566494440084, 7.935278225125444 ], [ -77.431107957656991, 7.638061224798734 ], [ -77.753413865861404, 7.709839789252143 ], [ -77.881571417945253, 7.223771267114785 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Peru", "iso_a2": "PE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -69.59042375352405, -17.580011895419332 ], [ -69.858443569605868, -18.092693780187012 ], [ -70.372572394477714, -18.347975355708869 ], [ -71.375250210236928, -17.773798516513857 ], [ -71.462040778271131, -17.363487644116383 ], [ -73.444529588500416, -16.359362888252996 ], [ -75.237882656541444, -15.265682875227782 ], [ -76.009205084929945, -14.649286390850321 ], [ -76.423469204397747, -13.823186944232432 ], [ -76.25924150257417, -13.535039157772943 ], [ -77.106192389621839, -12.22271615972082 ], [ -78.092152879534638, -10.377712497604065 ], [ -79.036953091126946, -8.386567884965892 ], [ -79.445920376284846, -7.93083342858386 ], [ -79.760578172510051, -7.194340915560084 ], [ -80.537481655586078, -6.541667575713717 ], [ -81.249996304026425, -6.136834405139183 ], [ -80.926346808582437, -5.690556735866565 ], [ -81.410942552399462, -4.736764825055459 ], [ -81.099669562489368, -4.036394138203697 ], [ -80.302560594387216, -3.404856459164713 ], [ -80.184014858709673, -3.821161797708044 ], [ -80.469294603176948, -4.059286797708999 ], [ -80.442241990872162, -4.425724379090674 ], [ -80.02890804718561, -4.346090996928893 ], [ -79.624979214176179, -4.454198093283495 ], [ -79.205289069317729, -4.959128513207389 ], [ -78.639897223612337, -4.547784112164074 ], [ -78.450683966775642, -3.873096612161376 ], [ -77.837904832658609, -3.003020521663103 ], [ -76.635394253226721, -2.608677666843818 ], [ -75.544995693652041, -1.56160979574588 ], [ -75.233722703741947, -0.911416924649529 ], [ -75.373223232713855, -0.15203175212045 ], [ -75.106624518520078, -0.05720549886486 ], [ -74.441600511355972, -0.530820000819887 ], [ -74.122395189089062, -1.002832533373848 ], [ -73.6595035468346, -1.260491224781134 ], [ -73.070392218707241, -2.308954359550953 ], [ -72.325786505813653, -2.434218031426454 ], [ -71.774760708285399, -2.169789727388938 ], [ -71.413645799429787, -2.342802422702128 ], [ -70.813475714791963, -2.256864515800743 ], [ -70.047708502874855, -2.725156345229699 ], [ -70.692682054309714, -3.742872002785859 ], [ -70.394043952094989, -3.766591485207825 ], [ -69.893635219996625, -4.298186944194327 ], [ -70.794768846302304, -4.251264743673303 ], [ -70.928843349883579, -4.401591485210368 ], [ -71.748405727816547, -4.593982842633011 ], [ -72.891927659787257, -5.274561455916981 ], [ -72.9645072089412, -5.741251315944893 ], [ -73.21971126981461, -6.089188734566078 ], [ -73.120027431923603, -6.629930922068239 ], [ -73.724486660441642, -6.91859547285064 ], [ -73.723401455363501, -7.340998630404414 ], [ -73.987235480429661, -7.523829847853065 ], [ -73.571059332967067, -8.424446709835834 ], [ -73.015382656532552, -9.032833347208062 ], [ -73.226713426390162, -9.462212823121234 ], [ -72.563033006465645, -9.520193780152717 ], [ -72.18489071316985, -10.053597914269432 ], [ -71.302412278921537, -10.079436130415374 ], [ -70.481893886991173, -9.490118096558845 ], [ -70.548685675728407, -11.009146823778465 ], [ -70.093752204046893, -11.123971856331012 ], [ -69.529678107364958, -10.951734307502194 ], [ -68.665079718689626, -12.561300144097173 ], [ -68.88007951523997, -12.899729099176653 ], [ -68.92922380234954, -13.602683607643009 ], [ -68.948886684836594, -14.453639418193283 ], [ -69.339534674747014, -14.953195489158832 ], [ -69.160346645774951, -15.323973890853019 ], [ -69.389764166934711, -15.660129082911652 ], [ -68.959635382753305, -16.50069793057127 ], [ -69.59042375352405, -17.580011895419332 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Philippines", "iso_a2": "PH" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 126.37681359263749, 8.414706325713354 ], [ 126.478512811387901, 7.750354112168978 ], [ 126.53742394420064, 7.189380601424574 ], [ 126.196772902532558, 6.27429433840004 ], [ 125.831420526229095, 7.293715318221857 ], [ 125.363852166852297, 6.786485297060992 ], [ 125.683160841983721, 6.049656887227258 ], [ 125.396511672060655, 5.58100332277229 ], [ 124.21978763234236, 6.161355495626182 ], [ 123.938719517106932, 6.885135606306122 ], [ 124.243662144061346, 7.360610459823661 ], [ 123.61021243702757, 7.833527329942754 ], [ 123.296071405125218, 7.418875637232787 ], [ 122.825505812675402, 7.457374579290217 ], [ 122.085499302255784, 6.899424139834849 ], [ 121.919928013192617, 7.192119452336073 ], [ 122.31235884001714, 8.034962063016508 ], [ 122.942397902519673, 8.316236883981176 ], [ 123.487687616063539, 8.693009751821194 ], [ 123.841154412939858, 8.240324204944386 ], [ 124.601469761250229, 8.514157619659017 ], [ 124.764612257995651, 8.96040945071546 ], [ 125.471390822451582, 8.986996975129642 ], [ 125.412117954612796, 9.760334784377548 ], [ 126.222714471543185, 9.286074327018852 ], [ 126.306636997585116, 8.782487494334575 ], [ 126.37681359263749, 8.414706325713354 ] ] ], [ [ [ 123.982437778825812, 10.278778591345812 ], [ 123.623183221532798, 9.950090643753299 ], [ 123.309920688979361, 9.318268744336677 ], [ 122.99588300994165, 9.0221886255204 ], [ 122.380054966319477, 9.713360907424203 ], [ 122.5860889018671, 9.981044826696106 ], [ 122.837081333508735, 10.261156927934238 ], [ 122.947410516451924, 10.881868394408031 ], [ 123.498849725438475, 10.940624497923949 ], [ 123.33777428598475, 10.267383938025446 ], [ 124.077935825701246, 11.23272553145371 ], [ 123.982437778825812, 10.278778591345812 ] ] ], [ [ [ 118.504580926590364, 9.316382554558089 ], [ 117.174274530100689, 8.367499904814665 ], [ 117.664477166821399, 9.066888739452935 ], [ 118.386913690261764, 9.684499619989225 ], [ 118.987342157061079, 10.376292019080509 ], [ 119.511496209797571, 11.369668077027214 ], [ 119.689676548339918, 10.554291490109875 ], [ 119.029458449379007, 10.003653265823871 ], [ 118.504580926590364, 9.316382554558089 ] ] ], [ [ [ 121.883547804859148, 11.89175507247198 ], [ 122.483821242361472, 11.582187404827508 ], [ 123.120216506035973, 11.58366018314787 ], [ 123.100837843926485, 11.16593374271649 ], [ 122.637713657726721, 10.741308498574227 ], [ 122.002610304859587, 10.441016750526089 ], [ 121.967366978036551, 10.905691229694625 ], [ 122.038370396005547, 11.41584096928004 ], [ 121.883547804859148, 11.89175507247198 ] ] ], [ [ [ 125.502551711123516, 12.162694606978349 ], [ 125.78346479706218, 11.046121934447768 ], [ 125.011883986512288, 11.31145457605038 ], [ 125.032761265158143, 10.975816148314706 ], [ 125.277449172060273, 10.358722032101312 ], [ 124.801819289245742, 10.134678859899893 ], [ 124.760168084818503, 10.837995103392302 ], [ 124.459101190286077, 10.889929917845635 ], [ 124.302521600441736, 11.495370998577229 ], [ 124.891012811381614, 11.415582587118593 ], [ 124.87799035044398, 11.794189968304991 ], [ 124.266761509295719, 12.557760931849685 ], [ 125.227116327007849, 12.535720933477194 ], [ 125.502551711123516, 12.162694606978349 ] ] ], [ [ [ 121.52739383350351, 13.069590155484519 ], [ 121.262190382981572, 12.205560207564403 ], [ 120.833896112146562, 12.704496161342419 ], [ 120.323436313967505, 13.46641347905387 ], [ 121.180128208502168, 13.429697373910443 ], [ 121.52739383350351, 13.069590155484519 ] ] ], [ [ [ 121.321308221523594, 18.504064642811016 ], [ 121.937601353036399, 18.218552354398383 ], [ 122.246006300954292, 18.478949896717097 ], [ 122.336956821787993, 18.224882717354177 ], [ 122.174279412933203, 17.810282701076375 ], [ 122.515653924653378, 17.093504746971973 ], [ 122.252310825693911, 16.262444362854126 ], [ 121.662786086108298, 15.931017564350128 ], [ 121.50506961475341, 15.124813544164624 ], [ 121.728828566577278, 14.328376369682246 ], [ 122.258925409027341, 14.218202216035976 ], [ 122.701275669445664, 14.336541245984421 ], [ 123.950295037940265, 13.78213064214107 ], [ 123.855107049658642, 13.237771104378467 ], [ 124.181288690284902, 12.997527370653472 ], [ 124.077419061378265, 12.536676947474575 ], [ 123.298035109552274, 13.027525539598983 ], [ 122.928651971529945, 13.552919826710408 ], [ 122.671355015148691, 13.185836289925135 ], [ 122.034649692880549, 13.784481919810347 ], [ 121.126384718918615, 13.636687323455561 ], [ 120.628637323083325, 13.857655747935652 ], [ 120.679383579593861, 14.271015529838323 ], [ 120.991819289230563, 14.525392767795083 ], [ 120.693336216312701, 14.756670640517285 ], [ 120.564145135583004, 14.396279201713824 ], [ 120.070428501466409, 14.970869452367097 ], [ 119.92092858284613, 15.40634674729074 ], [ 119.883773228028275, 16.363704331929966 ], [ 120.28648766487882, 16.034628811095331 ], [ 120.390047235191759, 17.599081122299509 ], [ 120.715867140791914, 18.505227362537539 ], [ 121.321308221523594, 18.504064642811016 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Papua New Guinea", "iso_a2": "PG" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 155.88002566957843, -6.81999684003776 ], [ 155.599991082988794, -6.919990736522493 ], [ 155.166994256815116, -6.535931491729301 ], [ 154.729191522438356, -5.900828138862209 ], [ 154.514114211239672, -5.139117526880014 ], [ 154.652503696917364, -5.04243092206184 ], [ 154.759990676084414, -5.339983819198494 ], [ 155.062917922179366, -5.566791680527487 ], [ 155.547746209941721, -6.200654799019659 ], [ 156.019965448224781, -6.540013929880388 ], [ 155.88002566957843, -6.81999684003776 ] ] ], [ [ [ 151.98279585185449, -5.478063246282346 ], [ 151.459106887008687, -5.560280450058741 ], [ 151.301390415653913, -5.840728448106702 ], [ 150.754447056276689, -6.083762709175389 ], [ 150.241196730753842, -6.317753594592986 ], [ 149.709963006793345, -6.316513360218053 ], [ 148.89006473205049, -6.026040134305433 ], [ 148.318936802360753, -5.74714242922613 ], [ 148.401825799756892, -5.437755629094724 ], [ 149.298411900020852, -5.583741550319218 ], [ 149.845561965127246, -5.505503431829339 ], [ 149.996250441690307, -5.026101169457675 ], [ 150.139755894164949, -5.001348158389789 ], [ 150.236907586873514, -5.532220147324281 ], [ 150.807467075808091, -5.455842380396888 ], [ 151.089672072554009, -5.113692722192368 ], [ 151.647880894170868, -4.757073662946169 ], [ 151.537861769821546, -4.16780730552189 ], [ 152.136791620084381, -4.14879037843852 ], [ 152.338743117481016, -4.312966403829762 ], [ 152.318692661751783, -4.86766122805075 ], [ 151.98279585185449, -5.478063246282346 ] ] ], [ [ [ 147.191873814074967, -7.38802418378998 ], [ 148.084635858349401, -8.044108168167611 ], [ 148.734105259393601, -9.104663588093757 ], [ 149.306835158484461, -9.071435642130069 ], [ 149.266630894161352, -9.514406019736029 ], [ 150.038728469034339, -9.684318129111702 ], [ 149.73879845601229, -9.872937106977005 ], [ 150.801627638959161, -10.293686618697421 ], [ 150.690574985963877, -10.582712904505868 ], [ 150.028393182575854, -10.652476088099931 ], [ 149.782310012002, -10.393267103723943 ], [ 148.923137648717244, -10.280922539921363 ], [ 147.913018426708021, -10.130440769087471 ], [ 147.135443150012264, -9.492443536012019 ], [ 146.567880894150647, -8.942554619994155 ], [ 146.048481073184945, -8.06741423913131 ], [ 144.744167922138018, -7.630128269077474 ], [ 143.89708784400969, -7.915330498896282 ], [ 143.286375767184296, -8.245491224809058 ], [ 143.413913202080693, -8.983068942910947 ], [ 142.628431431244252, -9.326820570516503 ], [ 142.068258905200224, -9.159595635620036 ], [ 141.033851760013903, -9.117892754760419 ], [ 141.017056919519035, -5.859021905138022 ], [ 141.000210402591875, -2.600151055515624 ], [ 142.7352466167915, -3.289152927263217 ], [ 144.583970982033264, -3.861417738463402 ], [ 145.273179559509998, -4.373737888205028 ], [ 145.829786411725678, -4.876497897972683 ], [ 145.981921828392984, -5.465609226100014 ], [ 147.648073358347602, -6.083659356310804 ], [ 147.891107619416204, -6.614014580922316 ], [ 146.97090538959489, -6.721656589386257 ], [ 147.191873814074967, -7.38802418378998 ] ] ], [ [ [ 153.140037876598768, -4.499983412294114 ], [ 152.827292108368312, -4.766427097190999 ], [ 152.638673130503008, -4.176127211120928 ], [ 152.406025832324957, -3.789742526874562 ], [ 151.953236932583565, -3.462062269711822 ], [ 151.384279413050052, -3.035421644710112 ], [ 150.662049595338857, -2.741486097833956 ], [ 150.939965448204561, -2.500002129734028 ], [ 151.479984165654542, -2.779985039891386 ], [ 151.820015090135115, -2.999971612157907 ], [ 152.239989455371102, -3.240008640153661 ], [ 152.640016717742554, -3.659983005389648 ], [ 153.01999352438466, -3.980015150573294 ], [ 153.140037876598768, -4.499983412294114 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Poland", "iso_a2": "PL" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 15.016995883858669, 51.10667409932158 ], [ 14.607098422919535, 51.745188096719971 ], [ 14.685026482815687, 52.089947414755201 ], [ 14.437599725002201, 52.62485016540839 ], [ 14.074521111719491, 52.981262518925433 ], [ 14.353315463934138, 53.248171291712971 ], [ 14.119686313542587, 53.75702912049104 ], [ 14.802900424873458, 54.050706285205749 ], [ 16.363477003655731, 54.513158677785725 ], [ 17.622831658608675, 54.851535956432912 ], [ 18.620858595461641, 54.682605699270781 ], [ 18.696254510175464, 54.43871877706929 ], [ 19.660640089606403, 54.426083889373928 ], [ 20.892244500418627, 54.312524929412533 ], [ 22.731098667092652, 54.327536932993326 ], [ 23.243987257589509, 54.220566718149144 ], [ 23.484127638449849, 53.912497667041137 ], [ 23.527535841575002, 53.470121568406555 ], [ 23.804934930117781, 53.089731350306074 ], [ 23.799198846133379, 52.691099351606567 ], [ 23.199493849386187, 52.486977444053672 ], [ 23.508002150168693, 52.023646552124731 ], [ 23.527070753684374, 51.57845408793024 ], [ 24.029985792748903, 50.705406602575181 ], [ 23.922757195743262, 50.424881089878753 ], [ 23.426508416444392, 50.308505764357456 ], [ 22.518450148211603, 49.476773586619743 ], [ 22.776418898212626, 49.027395331409622 ], [ 22.558137648211755, 49.085738023467144 ], [ 21.607808058364213, 49.470107326854091 ], [ 20.887955356538413, 49.32877228453583 ], [ 20.415839471119853, 49.431453355499769 ], [ 19.825022820726872, 49.217125352569226 ], [ 19.320712517990472, 49.571574001659194 ], [ 18.909574822676319, 49.435845852244576 ], [ 18.853144158613617, 49.496229763377642 ], [ 18.392913852622172, 49.988628648470751 ], [ 17.649445021238989, 50.049038397819956 ], [ 17.554567091551121, 50.362145901076417 ], [ 16.868769158605659, 50.47397370055603 ], [ 16.719475945714436, 50.215746568393541 ], [ 16.176253289462267, 50.422607326857907 ], [ 16.238626743238569, 50.697732652379841 ], [ 15.490972120839729, 50.784729926143207 ], [ 15.016995883858669, 51.10667409932158 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Puerto Rico", "iso_a2": "PR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -66.282434455008215, 18.514761664295364 ], [ -65.7713028632093, 18.426679185453878 ], [ -65.591003790942949, 18.228034979723915 ], [ -65.847163865813769, 17.975905666571862 ], [ -66.599934455009489, 17.981822618069273 ], [ -67.184162360285271, 17.946553453030077 ], [ -67.242427537694354, 18.374460150622937 ], [ -67.10067908391774, 18.520601101144351 ], [ -66.282434455008215, 18.514761664295364 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Dem. Rep. Korea", "iso_a2": "KP" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 130.640015903852429, 42.395009467125277 ], [ 130.78000735893113, 42.22000722916885 ], [ 130.400030552289024, 42.280003567059708 ], [ 129.965948521037262, 41.94136790625106 ], [ 129.667362095254816, 41.601104437825228 ], [ 129.705189243692473, 40.882827867184332 ], [ 129.188114862179987, 40.661807766271991 ], [ 129.010399611528214, 40.485436102859815 ], [ 128.63336836152672, 40.189846910150308 ], [ 127.96741417858135, 40.025412502597561 ], [ 127.533435500194173, 39.756850083976701 ], [ 127.502119582225305, 39.323930772451533 ], [ 127.385434198110275, 39.213472398427655 ], [ 127.783342726757724, 39.050898342437421 ], [ 128.349716424676615, 38.61224294692785 ], [ 128.205745884311455, 38.370397243801889 ], [ 127.780035435091008, 38.304535630845891 ], [ 127.07330854706737, 38.2561148137884 ], [ 126.683719924018931, 37.804772854151182 ], [ 126.237338901881756, 37.840377916000278 ], [ 126.174758742376241, 37.74968577732804 ], [ 125.689103631697208, 37.940010077459021 ], [ 125.568439162295704, 37.752088731429623 ], [ 125.275330438336198, 37.669070542952724 ], [ 125.240087111513162, 37.857224432927438 ], [ 124.981033156433966, 37.94882090916478 ], [ 124.71216067921938, 38.10834605564979 ], [ 124.985994093933982, 38.54847422947968 ], [ 125.221948683778706, 38.665857245430672 ], [ 125.132858514507518, 38.848559271798592 ], [ 125.386589797060594, 39.387957872061165 ], [ 125.321115757346817, 39.55138458918421 ], [ 124.737482131042398, 39.660344346671621 ], [ 124.265624627785314, 39.928493353834156 ], [ 125.079941847840644, 40.569823716792449 ], [ 126.18204511932943, 41.107336127276369 ], [ 126.869083286649868, 41.81656932226619 ], [ 127.343782993683021, 41.503151760415967 ], [ 128.208433058790661, 41.466771552082491 ], [ 128.05221520397231, 41.994284572917948 ], [ 129.596668735879518, 42.424981797854556 ], [ 129.994267205933227, 42.985386867843786 ], [ 130.640015903852429, 42.395009467125277 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Portugal", "iso_a2": "PT" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -9.034817674180246, 41.880570583659676 ], [ -8.67194576662672, 42.134689439454959 ], [ -8.263856980817792, 42.28046865495034 ], [ -8.013174607769912, 41.790886135417125 ], [ -7.422512986673795, 41.792074693359837 ], [ -7.251308966490824, 41.918346055665047 ], [ -6.668605515967656, 41.883386949219584 ], [ -6.389087693700915, 41.381815497394655 ], [ -6.851126674822552, 41.111082668617527 ], [ -6.864019944679385, 40.330871893874829 ], [ -7.026413133156595, 40.184524237624245 ], [ -7.066591559263529, 39.711891587882775 ], [ -7.498632371439726, 39.629571031241809 ], [ -7.098036668313128, 39.030072740223787 ], [ -7.374092169616318, 38.373058580064921 ], [ -7.029281175148796, 38.075764065089771 ], [ -7.166507941099865, 37.803894354802225 ], [ -7.537105475281024, 37.428904323876239 ], [ -7.453725551778092, 37.097787583966067 ], [ -7.855613165711986, 36.838268540996268 ], [ -8.382816127953689, 36.978880113262463 ], [ -8.898856980820327, 36.868809312480778 ], [ -8.746101446965554, 37.651345526676607 ], [ -8.83999752443988, 38.266243394517616 ], [ -9.287463751655224, 38.358485826158599 ], [ -9.526570603869715, 38.737429104154913 ], [ -9.446988898140233, 39.39206614842837 ], [ -9.048305223008427, 39.755093085278773 ], [ -8.977353481471681, 40.159306138665812 ], [ -8.768684047877102, 40.760638943030187 ], [ -8.79085323733031, 41.184334011391257 ], [ -8.990789353867569, 41.543459377603639 ], [ -9.034817674180246, 41.880570583659676 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Paraguay", "iso_a2": "PY" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -62.685057135657885, -22.249029229422387 ], [ -62.291179368729225, -21.051634616787393 ], [ -62.265961269770798, -20.513734633061276 ], [ -61.786326463453769, -19.633736667562964 ], [ -60.043564622626491, -19.342746677327426 ], [ -59.115042487206111, -19.356906019775401 ], [ -58.183471442280506, -19.868399346600363 ], [ -58.166392381408045, -20.176700941653678 ], [ -57.8706739976178, -20.732687676681952 ], [ -57.937155727761294, -22.090175876557172 ], [ -56.881509568902899, -22.282153822521479 ], [ -56.473317430229393, -22.086300144135283 ], [ -55.797958136606908, -22.356929620047822 ], [ -55.610682745981144, -22.655619398694846 ], [ -55.517639329639636, -23.571997572526637 ], [ -55.400747239795422, -23.956935316668805 ], [ -55.02790178080955, -24.001273695575229 ], [ -54.652834235235133, -23.839578138933959 ], [ -54.292959560754518, -24.021014092710729 ], [ -54.293476325077449, -24.570799655863965 ], [ -54.428946092330591, -25.162184747012166 ], [ -54.625290696823576, -25.739255466415514 ], [ -54.788794928595053, -26.621785577096134 ], [ -55.695845506398157, -27.387837009390864 ], [ -56.486701626192996, -27.548499037386293 ], [ -57.609759690976141, -27.395898532828387 ], [ -58.618173590719749, -27.123718763947096 ], [ -57.633660040911131, -25.603656508081642 ], [ -57.777217169817938, -25.16233977630904 ], [ -58.807128465394982, -24.771459242453311 ], [ -60.02896603050403, -24.032796319273274 ], [ -60.846564704009914, -23.880712579038292 ], [ -62.685057135657885, -22.249029229422387 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Palestine", "iso_a2": "PS" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 35.545665317534542, 32.393992011030576 ], [ 35.545251906076203, 31.782504787720839 ], [ 35.397560662586045, 31.489086005167582 ], [ 34.927408481594568, 31.353435370401414 ], [ 34.970506626125996, 31.61677846936081 ], [ 35.22589155451243, 31.754341132121766 ], [ 34.974640740709333, 31.866582343059722 ], [ 35.183930291491436, 32.532510687788943 ], [ 35.545665317534542, 32.393992011030576 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Qatar", "iso_a2": "QA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 50.810108270069577, 24.754742539971378 ], [ 50.743910760303692, 25.482424221289396 ], [ 51.013351678273494, 26.006991685484195 ], [ 51.286461622936059, 26.114582017515868 ], [ 51.589078810437258, 25.801112779233382 ], [ 51.606700473848811, 25.215670477798739 ], [ 51.38960778179063, 24.627385972588058 ], [ 51.112415398977021, 24.556330878186724 ], [ 50.810108270069577, 24.754742539971378 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Romania", "iso_a2": "RO" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 22.710531447040495, 47.882193915389408 ], [ 23.142236362406805, 48.096341050806949 ], [ 23.760958286237411, 47.985598456405455 ], [ 24.402056105250381, 47.981877753280429 ], [ 24.866317172960578, 47.737525743188314 ], [ 25.207743361112989, 47.891056423527473 ], [ 25.945941196402401, 47.987148749374214 ], [ 26.197450392366932, 48.220881252630349 ], [ 26.619336785597795, 48.220726223333472 ], [ 26.924176059687568, 48.123264472030996 ], [ 27.233872918412743, 47.826770941756379 ], [ 27.551166212684848, 47.405117092470832 ], [ 28.128030226359044, 46.810476386088254 ], [ 28.160017937947714, 46.371562608417221 ], [ 28.054442986775399, 45.944586086605625 ], [ 28.233553501099042, 45.488283189468376 ], [ 28.679779493939382, 45.304030870131704 ], [ 29.149724969201653, 45.464925442072456 ], [ 29.603289015427436, 45.293308010431126 ], [ 29.626543409958771, 45.035390936862399 ], [ 29.141611769331835, 44.820210272799045 ], [ 28.8378577003202, 44.913873806328056 ], [ 28.558081495891997, 43.707461656258133 ], [ 27.970107049275075, 43.812468166675217 ], [ 27.242399529740908, 44.175986029632405 ], [ 26.065158725699746, 43.943493760751267 ], [ 25.569271681426926, 43.688444729174719 ], [ 24.100679152124172, 43.741051337247853 ], [ 23.332302280376325, 43.897010809904714 ], [ 22.944832391051847, 43.82378530534713 ], [ 22.657149692482989, 44.234923000661283 ], [ 22.474008416440601, 44.409227606781769 ], [ 22.705725538837356, 44.578002834647023 ], [ 22.459022251075936, 44.702517198254299 ], [ 22.145087924902811, 44.478422349620587 ], [ 21.562022739353608, 44.7689472519655 ], [ 21.483526238702236, 45.18117015235778 ], [ 20.874312778413355, 45.416375433934235 ], [ 20.762174920339987, 45.734573065771443 ], [ 20.220192498462836, 46.127468980486555 ], [ 21.021952345471249, 46.316087958351901 ], [ 21.626514926853872, 46.994237779318162 ], [ 22.099767693782837, 47.672439276716702 ], [ 22.710531447040495, 47.882193915389408 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Russia", "iso_a2": "RU" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 143.648007440362875, 50.747600409541519 ], [ 144.654147577085638, 48.976390692737596 ], [ 143.173927850517231, 49.306551418650372 ], [ 142.558668247650104, 47.861575018904915 ], [ 143.533492466404056, 46.836728013692493 ], [ 143.505277134372619, 46.137907619809482 ], [ 142.747700636973917, 46.740764878926569 ], [ 142.092030064054512, 45.966755276058791 ], [ 141.906925083585037, 46.805928860046549 ], [ 142.018442824470895, 47.780132961612935 ], [ 141.904444614835057, 48.85918854429957 ], [ 142.135800002205684, 49.615163072297463 ], [ 142.179983351815309, 50.952342434281917 ], [ 141.594075962490052, 51.935434882202543 ], [ 141.68254601457366, 53.301966457728781 ], [ 142.606934035410774, 53.762145087287905 ], [ 142.209748976815405, 54.225475979216867 ], [ 142.65478641171299, 54.365880845753878 ], [ 142.914615513276573, 53.704577541714741 ], [ 143.260847609632066, 52.740760403039047 ], [ 143.235267775647657, 51.756660264688747 ], [ 143.648007440362875, 50.747600409541519 ] ] ], [ [ [ 22.731098667092652, 54.327536932993326 ], [ 20.892244500418656, 54.312524929412575 ], [ 19.660640089606403, 54.426083889373984 ], [ 19.888481479581344, 54.866160386771497 ], [ 21.268448927503499, 55.190481675835287 ], [ 22.315723504330606, 55.0152985703659 ], [ 22.757763706155288, 54.856574408581423 ], [ 22.651051873472568, 54.582740993866707 ], [ 22.731098667092652, 54.327536932993326 ] ] ], [ [ [ -175.01425, 66.58435 ], [ -174.33983, 66.33556 ], [ -174.57182, 67.06219 ], [ -171.85731, 66.91308 ], [ -169.89958, 65.97724 ], [ -170.89107, 65.54139 ], [ -172.53025, 65.43791 ], [ -172.555, 64.46079 ], [ -172.95533, 64.25269 ], [ -173.89184, 64.2826 ], [ -174.65392, 64.63125 ], [ -175.98353, 64.92288 ], [ -176.20716, 65.35667 ], [ -177.22266, 65.52024 ], [ -178.35993, 65.39052 ], [ -178.90332, 65.74044 ], [ -178.68611, 66.11211 ], [ -179.88377, 65.87456 ], [ -179.43268, 65.40411 ], [ -180.0, 64.979708702198366 ], [ -180.0, 68.963636363636368 ], [ -177.55, 68.2 ], [ -174.92825, 67.20589 ], [ -175.01425, 66.58435 ] ] ], [ [ [ 180.000000000000142, 70.832199208546683 ], [ 178.903425000000112, 70.78114 ], [ 178.7253, 71.0988 ], [ 180.000000000000142, 71.51571433642826 ], [ 180.000000000000142, 70.832199208546683 ] ] ], [ [ [ -178.69378, 70.89302 ], [ -180.0, 70.832199208546683 ], [ -180.0, 71.51571433642826 ], [ -179.87187, 71.55762 ], [ -179.02433, 71.55553 ], [ -177.577945, 71.26948 ], [ -177.663575, 71.13277 ], [ -178.69378, 70.89302 ] ] ], [ [ [ 143.60385, 73.21244 ], [ 142.08763, 73.20544 ], [ 140.038155, 73.31692 ], [ 139.86312, 73.36983 ], [ 140.81171, 73.76506 ], [ 142.06207, 73.85758 ], [ 143.48283, 73.47525 ], [ 143.60385, 73.21244 ] ] ], [ [ [ 150.73167, 75.08406 ], [ 149.575925, 74.68892 ], [ 147.97746, 74.778355 ], [ 146.11919, 75.17298 ], [ 146.358485, 75.49682 ], [ 148.22223, 75.345845 ], [ 150.73167, 75.08406 ] ] ], [ [ [ 145.086285, 75.56262 ], [ 144.3, 74.82 ], [ 140.61381, 74.84768 ], [ 138.95544, 74.61148 ], [ 136.97439, 75.26167 ], [ 137.51176, 75.94917 ], [ 138.831075, 76.13676 ], [ 141.47161, 76.09289 ], [ 145.086285, 75.56262 ] ] ], [ [ [ 57.5356925799924, 70.72046397570216 ], [ 56.944979282463947, 70.632743231886678 ], [ 53.677375115784201, 70.76265778266847 ], [ 53.412016635965387, 71.206661688920207 ], [ 51.601894565645722, 71.474759019650492 ], [ 51.455753615124223, 72.014881089965144 ], [ 52.478275180883571, 72.22944163684096 ], [ 52.444168735570855, 72.774731350384855 ], [ 54.427613559797663, 73.627547512497586 ], [ 53.50828982932515, 73.749813951300155 ], [ 55.902458937407658, 74.627486477345343 ], [ 55.631932814359715, 75.081412258597169 ], [ 57.868643833248854, 75.609390367323215 ], [ 61.170044386647504, 76.251883450008137 ], [ 64.498368361270224, 76.439055487769281 ], [ 66.210977003855106, 76.809782213031241 ], [ 68.157059767534832, 76.939696763812918 ], [ 68.852211134725138, 76.544811306454619 ], [ 68.180572544227658, 76.23364166940911 ], [ 64.637326287703019, 75.737754625136233 ], [ 61.583507521414759, 75.260884507946798 ], [ 58.47708214705338, 74.309056301562833 ], [ 56.986785516188007, 73.333043524866241 ], [ 55.419335971910954, 72.371267605265984 ], [ 55.622837762276305, 71.54059479439033 ], [ 57.5356925799924, 70.72046397570216 ] ] ], [ [ [ 106.970130000000125, 76.97419 ], [ 107.240000000000151, 76.48 ], [ 108.1538, 76.723350000000153 ], [ 111.077260000000166, 76.71 ], [ 113.33151, 76.22224 ], [ 114.13417, 75.84764 ], [ 113.88539, 75.327790000000135 ], [ 112.77918, 75.03186 ], [ 110.151250000000203, 74.47673 ], [ 109.4, 74.18 ], [ 110.64, 74.04 ], [ 112.11919, 73.787740000000127 ], [ 113.019540000000262, 73.976930000000152 ], [ 113.529580000000323, 73.335050000000109 ], [ 113.96881, 73.594880000000103 ], [ 115.56782, 73.75285 ], [ 118.776330000000229, 73.58772 ], [ 119.02, 73.12 ], [ 123.200660000000113, 72.97122 ], [ 123.257770000000193, 73.735030000000108 ], [ 125.380000000000194, 73.56 ], [ 126.97644, 73.56549 ], [ 128.59126, 73.03871 ], [ 129.05157, 72.39872 ], [ 128.460000000000122, 71.98 ], [ 129.715990000000232, 71.19304 ], [ 131.28858000000028, 70.786990000000117 ], [ 132.253500000000173, 71.836300000000108 ], [ 133.857660000000322, 71.386420000000157 ], [ 135.56193, 71.655250000000137 ], [ 137.49755, 71.34763 ], [ 138.23409000000018, 71.62803 ], [ 139.869830000000121, 71.487830000000145 ], [ 139.14791, 72.416190000000114 ], [ 140.46817, 72.849410000000148 ], [ 149.5, 72.2 ], [ 150.351180000000198, 71.60643 ], [ 152.968900000000218, 70.84222 ], [ 157.00688, 71.03141 ], [ 158.99779, 70.86672 ], [ 159.830310000000253, 70.45324 ], [ 159.70866, 69.72198 ], [ 160.940530000000336, 69.437280000000101 ], [ 162.279070000000132, 69.64204 ], [ 164.052480000000145, 69.66823 ], [ 165.940370000000229, 69.47199 ], [ 167.83567, 69.58269 ], [ 169.577630000000198, 68.6938 ], [ 170.816880000000282, 69.01363 ], [ 170.008200000000187, 69.65276 ], [ 170.453450000000288, 70.09703 ], [ 173.643910000000261, 69.81743 ], [ 175.724030000000226, 69.877250000000231 ], [ 178.6, 69.4 ], [ 180.000000000000142, 68.963636363636567 ], [ 180.000000000000142, 64.979708702198479 ], [ 179.99281, 64.97433 ], [ 178.707200000000256, 64.53493 ], [ 177.411280000000176, 64.60821 ], [ 178.313000000000244, 64.07593 ], [ 178.908250000000209, 63.251970000000142 ], [ 179.37034, 62.982620000000111 ], [ 179.48636, 62.56894 ], [ 179.228250000000145, 62.304100000000147 ], [ 177.3643, 62.5219 ], [ 174.569290000000223, 61.76915 ], [ 173.68013, 61.65261 ], [ 172.15, 60.95 ], [ 170.698500000000109, 60.33618 ], [ 170.330850000000311, 59.88177 ], [ 168.90046, 60.57355 ], [ 166.294980000000322, 59.788550000000214 ], [ 165.840000000000231, 60.16 ], [ 164.87674, 59.7316 ], [ 163.539290000000136, 59.86871 ], [ 163.217110000000247, 59.21101 ], [ 162.017330000000101, 58.24328 ], [ 162.05297, 57.83912 ], [ 163.19191, 57.615030000000104 ], [ 163.057940000000173, 56.159240000000125 ], [ 162.129580000000232, 56.12219 ], [ 161.70146, 55.285680000000156 ], [ 162.117490000000174, 54.85514 ], [ 160.368770000000353, 54.34433 ], [ 160.021730000000247, 53.20257 ], [ 158.530940000000186, 52.958680000000243 ], [ 158.23118, 51.94269 ], [ 156.789790000000295, 51.01105 ], [ 156.420000000000158, 51.7 ], [ 155.99182, 53.15895 ], [ 155.433660000000117, 55.381030000000123 ], [ 155.91442000000032, 56.767920000000146 ], [ 156.75815, 57.3647 ], [ 156.810350000000113, 57.83204 ], [ 158.364330000000194, 58.05575 ], [ 160.150640000000152, 59.314770000000124 ], [ 161.87204, 60.343000000000131 ], [ 163.66969, 61.140900000000101 ], [ 164.473550000000131, 62.55061 ], [ 163.2584200000002, 62.46627 ], [ 162.65791, 61.6425 ], [ 160.121480000000105, 60.54423 ], [ 159.30232, 61.773960000000102 ], [ 156.720680000000101, 61.43442 ], [ 154.218060000000349, 59.758180000000124 ], [ 155.04375, 59.14495 ], [ 152.81185, 58.88385 ], [ 151.265730000000275, 58.78089 ], [ 151.338150000000127, 59.50396 ], [ 149.78371, 59.655730000000148 ], [ 148.54481, 59.16448 ], [ 145.48722, 59.33637 ], [ 142.197820000000178, 59.03998 ], [ 138.958480000000321, 57.08805 ], [ 135.12619, 54.72959 ], [ 136.70171, 54.603550000000126 ], [ 137.19342, 53.97732 ], [ 138.1647, 53.755010000000254 ], [ 138.80463, 54.254550000000108 ], [ 139.90151, 54.18968000000018 ], [ 141.34531, 53.089570000000123 ], [ 141.37923, 52.23877 ], [ 140.597420000000199, 51.239670000000103 ], [ 140.51308, 50.045530000000127 ], [ 140.061930000000217, 48.446710000000166 ], [ 138.554720000000231, 46.99965 ], [ 138.21971, 46.30795 ], [ 136.86232, 45.143500000000188 ], [ 135.515350000000211, 43.989 ], [ 134.869390000000266, 43.39821 ], [ 133.536870000000278, 42.81147 ], [ 132.906270000000148, 42.798490000000101 ], [ 132.27807000000027, 43.284560000000113 ], [ 130.935870000000165, 42.55274 ], [ 130.78, 42.220000000000198 ], [ 130.640000000000185, 42.395 ], [ 130.63386640840983, 42.903014634770557 ], [ 131.14468794161499, 42.929989732426947 ], [ 131.288555129115622, 44.111519680348266 ], [ 131.025190000000265, 44.96796 ], [ 131.88345421765959, 45.321161607436522 ], [ 133.097120000000217, 45.14409 ], [ 133.769643996313192, 46.116926988299156 ], [ 134.112350000000191, 47.212480000000141 ], [ 134.50081, 47.578450000000146 ], [ 135.026311476786788, 48.478229885443909 ], [ 133.373595819228029, 48.183441677434843 ], [ 132.506690000000134, 47.78896 ], [ 130.987260000000134, 47.79013 ], [ 130.582293328982672, 48.729687404976204 ], [ 129.397817824420514, 49.440600084015614 ], [ 127.657400000000365, 49.76027 ], [ 127.287455682484932, 50.739797268265448 ], [ 126.939156528837856, 51.35389415140591 ], [ 126.564399041857001, 51.784255479532703 ], [ 125.946348911646481, 52.79279857035695 ], [ 125.068211297710462, 53.161044826868931 ], [ 123.57147, 53.4588 ], [ 122.245747918793057, 53.431725979213695 ], [ 121.003084751470368, 53.251401068731241 ], [ 120.177088657716894, 52.753886216841209 ], [ 120.725789015792003, 52.516226304730907 ], [ 120.7382, 51.96411 ], [ 120.182080000000184, 51.64355 ], [ 119.27939, 50.58292 ], [ 119.288460728025854, 50.142882798861962 ], [ 117.879244419426499, 49.510983384797044 ], [ 116.678800897286209, 49.888531399121405 ], [ 115.485695428531443, 49.805177313834747 ], [ 114.962109816550395, 50.140247300815133 ], [ 114.362456496235353, 50.248302720737485 ], [ 112.897739699354389, 49.543565375356991 ], [ 111.581230910286678, 49.377968248077678 ], [ 110.662010532678863, 49.130128078805853 ], [ 109.402449171996722, 49.292960516957692 ], [ 108.475167270951289, 49.282547715850711 ], [ 107.86817589725112, 49.793705145865886 ], [ 106.888804152455322, 50.27429596618029 ], [ 105.886591424586896, 50.406019192092174 ], [ 104.62158, 50.275320000000164 ], [ 103.676545444760364, 50.089966132195144 ], [ 102.255890000000107, 50.510560000000112 ], [ 102.06521, 51.259910000000104 ], [ 100.889480421962645, 51.516855780638423 ], [ 99.981732212323578, 51.634006252643957 ], [ 98.861490513100506, 52.047366034546712 ], [ 97.825739780674525, 51.01099518493325 ], [ 98.231761509191728, 50.42240062112873 ], [ 97.259760000000227, 49.72605 ], [ 95.81402000000017, 49.977460000000121 ], [ 94.815949334698786, 50.013433335970888 ], [ 94.147566359435615, 50.480536607457168 ], [ 93.10421, 50.49529 ], [ 92.23471154171969, 50.802170722041751 ], [ 90.713667433640779, 50.331811835321105 ], [ 88.805566847695587, 49.470520738312473 ], [ 87.751264276076853, 49.297197984405557 ], [ 87.359970330762707, 49.214980780629162 ], [ 86.829356723989662, 49.82667470966814 ], [ 85.5412699726825, 49.692858588248157 ], [ 85.11555952346211, 50.117302964877638 ], [ 84.416377394553052, 50.311399644565824 ], [ 83.935114780618932, 50.889245510453577 ], [ 83.383003778012466, 51.069182847693895 ], [ 81.945985548839957, 50.812195949906339 ], [ 80.56844689323546, 51.388336493528442 ], [ 80.035559523441719, 50.864750881547224 ], [ 77.800915561844334, 53.404414984747547 ], [ 76.525179477854778, 54.177003485727141 ], [ 76.891100294913457, 54.490524400441927 ], [ 74.384820000000133, 53.54685000000012 ], [ 73.425678745420527, 53.489810289109755 ], [ 73.508516066384374, 54.035616766976602 ], [ 72.224150018202209, 54.376655381886792 ], [ 71.180131056609497, 54.133285224008262 ], [ 70.865266554655165, 55.169733588270105 ], [ 69.068166945272907, 55.385250149143502 ], [ 68.169100376258911, 54.97039175070438 ], [ 65.666870000000102, 54.601250000000164 ], [ 65.178533563095954, 54.354227810272079 ], [ 61.436600000000141, 54.00625 ], [ 60.97806644068325, 53.664993394579142 ], [ 61.699986199800634, 52.979996446334269 ], [ 60.739993117114551, 52.719986477257748 ], [ 60.927268507740251, 52.447548326215014 ], [ 59.967533807215574, 51.960420437215674 ], [ 61.588003371024143, 51.272658799843185 ], [ 61.337424350841019, 50.799070136104262 ], [ 59.932807244715576, 50.842194118851836 ], [ 59.642282342370578, 50.545442206415714 ], [ 58.36332000000013, 51.06364 ], [ 56.77798, 51.04355 ], [ 55.716940000000108, 50.621710000000149 ], [ 54.532878452376195, 51.026239732459373 ], [ 52.328723585831057, 51.718652248738096 ], [ 50.766648390512188, 51.692762356159875 ], [ 48.702381626181051, 50.605128485712839 ], [ 48.577841424357615, 49.874759629915644 ], [ 47.549480421749394, 50.454698391311126 ], [ 46.751596307162771, 49.356005764353739 ], [ 47.043671502476599, 49.152038886097586 ], [ 46.466445753776298, 48.39415233010493 ], [ 47.315240000000159, 47.71585 ], [ 48.05725, 47.74377 ], [ 48.694733514201886, 47.075628160177899 ], [ 48.593250000000154, 46.561040000000105 ], [ 49.101160000000135, 46.399330000000106 ], [ 48.645410000000112, 45.80629 ], [ 47.67591, 45.641490000000118 ], [ 46.68201, 44.609200000000101 ], [ 47.59094, 43.660160000000133 ], [ 47.49252, 42.98658 ], [ 48.584370000000177, 41.80888 ], [ 47.98728315612604, 41.405819200194401 ], [ 47.81566572448466, 41.151416124021353 ], [ 47.373315464066394, 41.219732367511142 ], [ 46.686070591016716, 41.827137152669906 ], [ 46.404950799348939, 41.860675157227433 ], [ 45.7764, 42.092440000000238 ], [ 45.470279168485916, 42.502780666670049 ], [ 44.537622918482072, 42.711992702803684 ], [ 43.931210000000107, 42.554960000000108 ], [ 43.755990000000196, 42.74083 ], [ 42.394400000000161, 43.2203 ], [ 40.922190000000143, 43.382150000000138 ], [ 40.076964959479852, 43.553104153002494 ], [ 39.955008579271095, 43.434997666999294 ], [ 38.68, 44.28 ], [ 37.539120000000111, 44.65721 ], [ 36.675460000000129, 45.24469 ], [ 37.40317, 45.404510000000101 ], [ 38.23295, 46.24087 ], [ 37.67372, 46.63657 ], [ 39.14767, 47.044750000000136 ], [ 39.12120000000013, 47.26336 ], [ 38.223538038899477, 47.102189846375978 ], [ 38.255112339029807, 47.54640045835697 ], [ 38.77057, 47.825620000000242 ], [ 39.738277622238996, 47.898937079452082 ], [ 39.89562000000015, 48.23241 ], [ 39.67465, 48.783820000000134 ], [ 40.080789015469492, 49.307429917999372 ], [ 40.069040000000115, 49.60105 ], [ 38.59498823421356, 49.926461900423732 ], [ 38.010631137857075, 49.915661526074729 ], [ 37.393459506995242, 50.383953355503678 ], [ 36.626167840325394, 50.225590928745135 ], [ 35.356116163888117, 50.577197374059153 ], [ 35.37791, 50.77394 ], [ 35.022183058417937, 51.207572333371502 ], [ 34.224815708154409, 51.255993150428935 ], [ 34.141978387190619, 51.566413479206204 ], [ 34.391730584457235, 51.768881740925906 ], [ 33.752699822735877, 52.33507457133166 ], [ 32.71576053236717, 52.238465481162166 ], [ 32.412058139787774, 52.288694973349777 ], [ 32.159440000000217, 52.061250000000115 ], [ 31.78597, 52.10168 ], [ 31.540018344862261, 52.742052313846443 ], [ 31.305200636527985, 53.073995876673308 ], [ 31.49764, 53.167430000000138 ], [ 32.304519484188376, 53.132726141972853 ], [ 32.693643019346126, 53.351420803432148 ], [ 32.405598585751164, 53.618045355842014 ], [ 31.731272820774592, 53.794029446012019 ], [ 31.791424187962406, 53.974638576872195 ], [ 31.384472283663825, 54.157056382862379 ], [ 30.757533807098781, 54.811770941784403 ], [ 30.971835971813249, 55.081547756564134 ], [ 30.873909132620071, 55.550976467503517 ], [ 29.896294386522442, 55.789463202530499 ], [ 29.37157189303079, 55.670090643936277 ], [ 29.229513380660393, 55.918344224666413 ], [ 28.17670942557794, 56.169129950578792 ], [ 27.855282016722526, 56.759326483784378 ], [ 27.770015903440992, 57.244258124411203 ], [ 27.288184848751655, 57.474528306703917 ], [ 27.716685825315778, 57.79189911562446 ], [ 27.420150000000206, 58.724570000000142 ], [ 28.131699253051863, 59.300825100330997 ], [ 27.98112, 59.47537 ], [ 29.1177, 60.028050000000121 ], [ 28.07, 60.503520000000151 ], [ 30.211107212044652, 61.780027777749694 ], [ 31.139991082491036, 62.357692776124452 ], [ 31.516092156711267, 62.867687486412905 ], [ 30.035872430142803, 63.552813625738565 ], [ 30.44468468600374, 64.204453436939076 ], [ 29.544429559047018, 64.948671576590556 ], [ 30.21765, 65.80598 ], [ 29.054588657352383, 66.944286200622031 ], [ 29.977426385220696, 67.698297024192755 ], [ 28.445943637818772, 68.364612942164001 ], [ 28.591929559043365, 69.064776923286701 ], [ 29.39955, 69.156920000000184 ], [ 31.10108000000011, 69.55811 ], [ 32.132720000000262, 69.905950000000246 ], [ 33.77547, 69.301420000000121 ], [ 36.51396, 69.06342 ], [ 40.292340000000166, 67.9324 ], [ 41.059870000000132, 67.45713000000012 ], [ 41.125950000000188, 66.791580000000124 ], [ 40.01583, 66.266180000000134 ], [ 38.38295, 65.999530000000107 ], [ 33.918710000000175, 66.75961 ], [ 33.18444, 66.63253 ], [ 34.81477, 65.900150000000139 ], [ 34.878574253078767, 65.436212877048206 ], [ 34.943910000000159, 64.414370000000162 ], [ 36.23129, 64.10945 ], [ 37.012730000000118, 63.849830000000111 ], [ 37.141970000000157, 64.33471 ], [ 36.539579035089815, 64.76446 ], [ 37.176040000000143, 65.143220000000127 ], [ 39.59345, 64.520790000000176 ], [ 40.435600000000107, 64.76446 ], [ 39.762600000000162, 65.49682 ], [ 42.093090000000103, 66.47623 ], [ 43.016040000000118, 66.418580000000105 ], [ 43.949750000000137, 66.06908 ], [ 44.53226, 66.756340000000137 ], [ 43.69839, 67.35245 ], [ 44.187950000000143, 67.95051 ], [ 43.45282, 68.57079 ], [ 46.250000000000142, 68.25 ], [ 46.821340000000163, 67.68997 ], [ 45.55517, 67.56652 ], [ 45.562020000000103, 67.010050000000206 ], [ 46.349150000000151, 66.667670000000101 ], [ 47.894160000000255, 66.884550000000161 ], [ 48.13876, 67.52238 ], [ 50.227660000000157, 67.998670000000146 ], [ 53.717430000000178, 68.85738000000012 ], [ 54.47171, 68.80815 ], [ 53.485820000000132, 68.20131 ], [ 54.72628, 68.09702 ], [ 55.442680000000138, 68.43866 ], [ 57.317020000000156, 68.46628 ], [ 58.80200000000022, 68.88082 ], [ 59.941420000000193, 68.278440000000103 ], [ 61.07784000000018, 68.94069 ], [ 60.03, 69.52 ], [ 60.55, 69.85 ], [ 63.504000000000161, 69.54739 ], [ 64.888115, 69.234835000000146 ], [ 68.512160000000137, 68.092330000000175 ], [ 69.18068, 68.615630000000124 ], [ 68.16444, 69.14436 ], [ 68.13522, 69.35649 ], [ 66.930080000000117, 69.454610000000116 ], [ 67.25976, 69.92873 ], [ 66.724920000000139, 70.708890000000139 ], [ 66.69466, 71.028970000000243 ], [ 68.540060000000125, 71.934500000000241 ], [ 69.196360000000112, 72.84336000000016 ], [ 69.94, 73.040000000000134 ], [ 72.58754, 72.776290000000103 ], [ 72.79603, 72.22006 ], [ 71.848110000000105, 71.40898 ], [ 72.47011, 71.09019 ], [ 72.79188, 70.39114 ], [ 72.564700000000215, 69.02085 ], [ 73.66787, 68.4079 ], [ 73.2387, 67.7404 ], [ 71.280000000000115, 66.320000000000164 ], [ 72.423010000000176, 66.172670000000181 ], [ 72.82077, 66.53267 ], [ 73.92099000000016, 66.789460000000133 ], [ 74.186510000000197, 67.28429 ], [ 75.052, 67.760470000000169 ], [ 74.469260000000162, 68.32899 ], [ 74.935840000000127, 68.98918 ], [ 73.84236, 69.07146 ], [ 73.601870000000218, 69.62763 ], [ 74.3998, 70.63175 ], [ 73.1011, 71.447170000000256 ], [ 74.890820000000218, 72.12119 ], [ 74.65926, 72.83227 ], [ 75.158010000000189, 72.854970000000122 ], [ 75.68351, 72.300560000000132 ], [ 75.288980000000123, 71.33556 ], [ 76.35911, 71.152870000000149 ], [ 75.903130000000175, 71.87401 ], [ 77.576650000000114, 72.26717 ], [ 79.652020000000135, 72.32011 ], [ 81.5, 71.75 ], [ 80.610710000000125, 72.582850000000121 ], [ 80.51109, 73.6482 ], [ 82.25, 73.850000000000108 ], [ 84.65526, 73.805910000000182 ], [ 86.82230000000024, 73.93688 ], [ 86.00956, 74.459670000000159 ], [ 87.166820000000172, 75.11643 ], [ 88.315710000000109, 75.14393 ], [ 90.26, 75.64 ], [ 92.90058, 75.77333 ], [ 93.234210000000161, 76.0472 ], [ 95.860000000000156, 76.1400000000001 ], [ 96.67821, 75.91548 ], [ 98.922540000000225, 76.44689 ], [ 100.759670000000227, 76.43028 ], [ 101.03532, 76.86189 ], [ 101.990840000000134, 77.287540000000206 ], [ 104.351600000000104, 77.69792 ], [ 106.066640000000149, 77.37389 ], [ 104.70500000000024, 77.1274 ], [ 106.970130000000125, 76.97419 ] ] ], [ [ [ 105.07547, 78.30689 ], [ 99.43814, 77.921 ], [ 101.2649, 79.23399 ], [ 102.08635, 79.34641 ], [ 102.837815, 79.28129 ], [ 105.37243, 78.71334 ], [ 105.07547, 78.30689 ] ] ], [ [ [ 51.13618655783128, 80.547280178540944 ], [ 49.793684523320707, 80.415427761548216 ], [ 48.894411248577541, 80.339566758943704 ], [ 48.754936557821765, 80.175468248200843 ], [ 47.586119012244154, 80.010181179515342 ], [ 46.502825962109654, 80.247246812654367 ], [ 47.072455275262911, 80.559424140129465 ], [ 44.846958042181114, 80.589809882317184 ], [ 46.799138624871233, 80.771917629713641 ], [ 48.318477410684665, 80.784009914869955 ], [ 48.522806023966695, 80.514568996900152 ], [ 49.097189568890911, 80.753985907708426 ], [ 50.039767693894618, 80.918885403151819 ], [ 51.522932977103693, 80.69972565380192 ], [ 51.13618655783128, 80.547280178540944 ] ] ], [ [ [ 99.93976, 78.88094 ], [ 97.75794, 78.7562 ], [ 94.97259, 79.044745 ], [ 93.31288, 79.4265 ], [ 92.5454, 80.14379 ], [ 91.18107, 80.34146 ], [ 93.77766, 81.0246 ], [ 95.940895, 81.2504 ], [ 97.88385, 80.746975 ], [ 100.186655, 79.780135 ], [ 99.93976, 78.88094 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Rwanda", "iso_a2": "RW" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 30.419104852019245, -1.134659112150416 ], [ 30.816134881317712, -1.698914076345389 ], [ 30.758308953583111, -2.287250257988369 ], [ 30.469696079232989, -2.413857517103459 ], [ 29.938359002407939, -2.348486830254238 ], [ 29.632176141078588, -2.917857761246097 ], [ 29.024926385216787, -2.839257907730158 ], [ 29.117478875451553, -2.292211195488385 ], [ 29.254834832483343, -2.215109958508911 ], [ 29.291886834436614, -1.620055840667987 ], [ 29.579466180140884, -1.341313164885626 ], [ 29.821518588996014, -1.443322442229785 ], [ 30.419104852019245, -1.134659112150416 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "W. Sahara", "iso_a2": "EH" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -8.794883999049077, 27.120696316022507 ], [ -8.817828334986672, 27.656425889592356 ], [ -8.665589565454809, 27.656425889592356 ], [ -8.665124477564191, 27.589479071558227 ], [ -8.684399786809053, 27.395744126896005 ], [ -8.6872936670174, 25.881056219988906 ], [ -11.969418911171161, 25.933352769468268 ], [ -11.937224493853321, 23.374594224536168 ], [ -12.874221564169575, 23.284832261645178 ], [ -13.118754441774712, 22.771220201096256 ], [ -12.929101935263532, 21.327070624267563 ], [ -16.845193650773993, 21.333323472574879 ], [ -17.063423224342571, 20.999752102130827 ], [ -17.020428432675743, 21.422310288981478 ], [ -17.002961798561088, 21.420734157796577 ], [ -14.750954555713534, 21.500600083903663 ], [ -14.630832688851072, 21.860939846274903 ], [ -14.221167771857253, 22.310163072188161 ], [ -13.891110398809047, 23.691009019459305 ], [ -12.50096269372537, 24.7701162785782 ], [ -12.030758836301615, 26.030866197203043 ], [ -11.718219773800357, 26.104091701760623 ], [ -11.392554897496979, 26.883423977154365 ], [ -10.551262579785273, 26.990807603456886 ], [ -10.189424200877582, 26.860944729107405 ], [ -9.735343390328879, 26.860944729107405 ], [ -9.413037482124466, 27.088476060488517 ], [ -8.794883999049077, 27.120696316022507 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Saudi Arabia", "iso_a2": "SA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 42.77933230975097, 16.347891343648683 ], [ 42.649572788266084, 16.774635321514964 ], [ 42.347989129410713, 17.075805568912003 ], [ 42.270887892431226, 17.474721787989125 ], [ 41.754381951673963, 17.833046169500975 ], [ 41.22139122901558, 18.67159963630121 ], [ 40.93934126156654, 19.486485297111756 ], [ 40.247652215339826, 20.174634507726491 ], [ 39.801684604660949, 20.338862209550058 ], [ 39.139399448408284, 21.291904812092934 ], [ 39.023695916506796, 21.986875311770195 ], [ 39.066328973147591, 22.57965566659027 ], [ 38.492772251140082, 23.688451036060854 ], [ 38.023860304523623, 24.078685614512935 ], [ 37.483634881344386, 24.285494696545015 ], [ 37.154817742671185, 24.858482977797308 ], [ 37.209491408036001, 25.084541530858107 ], [ 36.93162723160259, 25.602959499610179 ], [ 36.639603712721225, 25.826227525327223 ], [ 36.249136590323815, 26.570135606384881 ], [ 35.640181512196392, 27.376520494083422 ], [ 35.130186801907882, 28.063351955674719 ], [ 34.632336053207979, 28.058546047471566 ], [ 34.787778761541944, 28.607427273059699 ], [ 34.832220493312946, 28.957483425404845 ], [ 34.956037225084259, 29.356554673778845 ], [ 36.068940870922063, 29.197494615184453 ], [ 36.50121422704359, 29.505253607698705 ], [ 36.74052778498725, 29.86528331147619 ], [ 37.503581984209035, 30.003776150018407 ], [ 37.668119744626381, 30.338665269485901 ], [ 37.998848911294374, 30.508499864213135 ], [ 37.002165561681011, 31.508412990844747 ], [ 39.004885695152552, 32.010216986614978 ], [ 39.195468377444968, 32.161008816042667 ], [ 40.399994337736246, 31.889991766887935 ], [ 41.889980910007836, 31.190008653278369 ], [ 44.709498732284743, 29.178891099559383 ], [ 46.568713413281756, 29.09902517345229 ], [ 47.459821811722833, 29.002519436147224 ], [ 47.708850538937384, 28.526062730416143 ], [ 48.416094191283946, 28.55200429942667 ], [ 48.807594842327177, 27.689627997339883 ], [ 49.299554477745829, 27.461218166609811 ], [ 49.470913527225662, 27.109999294538085 ], [ 50.152422316290881, 26.689663194275997 ], [ 50.212935418504685, 26.277026882425375 ], [ 50.113303257045942, 25.943972276304251 ], [ 50.239858839728754, 25.608049628190926 ], [ 50.527386509000735, 25.327808335872103 ], [ 50.660556675016892, 24.999895534764022 ], [ 50.810108270069577, 24.754742539971378 ], [ 51.112415398977021, 24.556330878186724 ], [ 51.38960778179063, 24.627385972588058 ], [ 51.579518670463273, 24.245497137951105 ], [ 51.617707553926977, 24.014219265228832 ], [ 52.000733270074335, 23.00115448657894 ], [ 55.006803012924905, 22.496947536707136 ], [ 55.208341098863194, 22.708329982997046 ], [ 55.666659376859826, 22.000001125572339 ], [ 54.999981723862362, 19.999994004796108 ], [ 52.000009800022241, 19.000003363516058 ], [ 49.116671583864871, 18.616667588774945 ], [ 48.183343540241339, 18.166669216377315 ], [ 47.466694777217633, 17.116681626854884 ], [ 47.000004917189756, 16.949999294497445 ], [ 46.749994337761649, 17.283338120996177 ], [ 46.366658563020536, 17.233315334537636 ], [ 45.399999220568759, 17.333335069238558 ], [ 45.216651238797191, 17.433328965723334 ], [ 44.062613152855079, 17.410358791569593 ], [ 43.791518589051918, 17.319976711491108 ], [ 43.380794305196105, 17.579986680567671 ], [ 43.115797560403358, 17.088440456607373 ], [ 43.218375278502748, 16.66688996018641 ], [ 42.77933230975097, 16.347891343648683 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Sudan", "iso_a2": "SD" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 33.963392794971185, 9.464285229420625 ], [ 33.824963480907513, 9.484060845715362 ], [ 33.842130853028152, 9.981914637215993 ], [ 33.721959248183111, 10.325262079630193 ], [ 33.206938084561784, 10.720111638406593 ], [ 33.086766479716744, 11.441141267476496 ], [ 33.206938084561784, 12.179338268667095 ], [ 32.743419037302544, 12.248007757149992 ], [ 32.674749548819648, 12.02483191958072 ], [ 32.073891524594785, 11.973329803218519 ], [ 32.314234734284753, 11.681484477166521 ], [ 32.400071594888345, 11.080626452941488 ], [ 31.850715687025513, 10.531270545078826 ], [ 31.352861895524882, 9.810240916008695 ], [ 30.837840731903384, 9.70723668328452 ], [ 29.996639497988554, 10.290927335388687 ], [ 29.618957311332849, 10.084918869940225 ], [ 29.515953078608618, 9.793073543888056 ], [ 29.000931914987177, 9.604232450560289 ], [ 28.966597170745786, 9.398223985111656 ], [ 27.970889587744352, 9.398223985111656 ], [ 27.833550610778786, 9.604232450560289 ], [ 27.112520981708883, 9.638567194801624 ], [ 26.752006167173818, 9.466893473594496 ], [ 26.477328213242515, 9.552730334198088 ], [ 25.962307049621018, 10.136420986302426 ], [ 25.790633328413946, 10.411098940233728 ], [ 25.069603699343986, 10.273759963267992 ], [ 24.794925745412684, 9.810240916008695 ], [ 24.53741516360202, 8.91753756573172 ], [ 24.19406772118765, 8.728696472403897 ], [ 23.886979580860668, 8.619729712933065 ], [ 23.805813429466752, 8.666318874542526 ], [ 23.459012892355986, 8.954285793489021 ], [ 23.394779087017298, 9.265067857292252 ], [ 23.557249790142919, 9.68121816653877 ], [ 23.554304233502194, 10.08925527591532 ], [ 22.977543572692753, 10.71446259199854 ], [ 22.864165480244253, 11.142395127807617 ], [ 22.87622, 11.384610000000123 ], [ 22.50869, 11.67936 ], [ 22.49762, 12.26024 ], [ 22.28801, 12.64605 ], [ 21.93681, 12.588180000000136 ], [ 22.03759, 12.95546 ], [ 22.29658, 13.37232 ], [ 22.18329, 13.78648 ], [ 22.51202, 14.09318 ], [ 22.30351, 14.32682 ], [ 22.56795000000011, 14.944290000000137 ], [ 23.024590000000103, 15.68072 ], [ 23.886890000000108, 15.61084 ], [ 23.837660000000142, 19.580470000000105 ], [ 23.850000000000136, 20.0 ], [ 25.000000000000114, 20.00304 ], [ 25.000000000000114, 22.0 ], [ 29.02, 22.0 ], [ 32.9, 22.0 ], [ 36.86623, 22.0 ], [ 37.188720000000103, 21.01885 ], [ 36.96941, 20.837440000000129 ], [ 37.114700000000141, 19.80796 ], [ 37.481790000000103, 18.61409 ], [ 37.86276, 18.36786 ], [ 38.410089959473225, 17.998307399970315 ], [ 37.90400000000011, 17.42754 ], [ 37.16747, 17.263140000000135 ], [ 36.852530000000115, 16.95655 ], [ 36.75389, 16.29186 ], [ 36.32322, 14.82249 ], [ 36.42951, 14.42211 ], [ 36.27022, 13.563330000000121 ], [ 35.86363, 12.57828 ], [ 35.26049, 12.08286 ], [ 34.831630000000132, 11.318960000000118 ], [ 34.731150000000127, 10.910170000000107 ], [ 34.25745, 10.63009 ], [ 33.96162, 9.58358 ], [ 33.963392794971185, 9.464285229420625 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "S. Sudan", "iso_a2": "SS" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 33.963392794971185, 9.464285229420625 ], [ 33.97498, 8.68456 ], [ 33.825500000000147, 8.37916 ], [ 33.294800000000123, 8.35458 ], [ 32.95418, 7.784970000000101 ], [ 33.568290000000104, 7.71334 ], [ 34.0751, 7.22595 ], [ 34.25032, 6.82607 ], [ 34.70702, 6.594220000000121 ], [ 35.298007118233102, 5.506 ], [ 34.620196267853942, 4.847122742082036 ], [ 34.005, 4.249884947362148 ], [ 33.3900000000001, 3.79 ], [ 32.68642, 3.79232 ], [ 31.881450000000143, 3.55827 ], [ 31.24556, 3.7819 ], [ 30.83385, 3.50917 ], [ 29.95349, 4.1737 ], [ 29.71599531425602, 4.600804755060153 ], [ 29.159078403446642, 4.389267279473245 ], [ 28.696677687298802, 4.455077215996994 ], [ 28.428993768026999, 4.287154649264608 ], [ 27.979977247842953, 4.408413397637389 ], [ 27.374226108517632, 5.233944403500175 ], [ 27.213409051225256, 5.550953477394614 ], [ 26.465909458123292, 5.946717434101856 ], [ 26.21341840994512, 6.546603298362129 ], [ 25.796647983511264, 6.97931590415817 ], [ 25.124130893664812, 7.500085150579423 ], [ 25.114932488716875, 7.825104071479245 ], [ 24.567369012152199, 8.229187933785454 ], [ 23.886979580860668, 8.619729712933065 ], [ 24.19406772118765, 8.728696472403897 ], [ 24.53741516360202, 8.91753756573172 ], [ 24.794925745412684, 9.810240916008695 ], [ 25.069603699343986, 10.273759963267992 ], [ 25.790633328413946, 10.411098940233728 ], [ 25.962307049621018, 10.136420986302426 ], [ 26.477328213242515, 9.552730334198088 ], [ 26.752006167173818, 9.466893473594496 ], [ 27.112520981708883, 9.638567194801624 ], [ 27.833550610778786, 9.604232450560289 ], [ 27.970889587744352, 9.398223985111656 ], [ 28.966597170745786, 9.398223985111656 ], [ 29.000931914987177, 9.604232450560289 ], [ 29.515953078608618, 9.793073543888056 ], [ 29.618957311332849, 10.084918869940225 ], [ 29.996639497988554, 10.290927335388687 ], [ 30.837840731903384, 9.70723668328452 ], [ 31.352861895524882, 9.810240916008695 ], [ 31.850715687025513, 10.531270545078826 ], [ 32.400071594888345, 11.080626452941488 ], [ 32.314234734284753, 11.681484477166521 ], [ 32.073891524594785, 11.973329803218519 ], [ 32.674749548819648, 12.02483191958072 ], [ 32.743419037302544, 12.248007757149992 ], [ 33.206938084561784, 12.179338268667095 ], [ 33.086766479716744, 11.441141267476496 ], [ 33.206938084561784, 10.720111638406593 ], [ 33.721959248183111, 10.325262079630193 ], [ 33.842130853028152, 9.981914637215993 ], [ 33.824963480907513, 9.484060845715362 ], [ 33.963392794971185, 9.464285229420625 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Senegal", "iso_a2": "SN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -16.713728807023472, 13.594958604379855 ], [ -17.126106736712615, 14.373515733289224 ], [ -17.625042690490659, 14.729540513564073 ], [ -17.185172898822231, 14.919477240452862 ], [ -16.700706346085923, 15.621527411354108 ], [ -16.463098110407884, 16.13503611903846 ], [ -16.120690070041931, 16.455662543193384 ], [ -15.623666144258692, 16.369337063049812 ], [ -15.135737270558819, 16.587282416240782 ], [ -14.577347581428981, 16.598263658102809 ], [ -14.099521450242179, 16.304302273010492 ], [ -13.435737677453062, 16.039383042866191 ], [ -12.830658331747516, 15.303691514542948 ], [ -12.170750291380301, 14.616834214735505 ], [ -12.124887457721259, 13.994727484589788 ], [ -11.927716030311615, 13.422075100147396 ], [ -11.553397793005431, 13.141213690641067 ], [ -11.467899135778524, 12.754518947800975 ], [ -11.513942836950591, 12.442987575729418 ], [ -11.658300950557932, 12.386582749882836 ], [ -12.203564825885634, 12.465647691289405 ], [ -12.27859900557344, 12.354440008997287 ], [ -12.499050665730564, 12.332089952031057 ], [ -13.217818162478238, 12.575873521367967 ], [ -13.700476040084325, 12.586182969610194 ], [ -15.54847693527401, 12.628170070847347 ], [ -15.816574266004254, 12.515567124883347 ], [ -16.147716844130585, 12.547761542201187 ], [ -16.677451951554573, 12.384851589401052 ], [ -16.841524624081273, 13.151393947802561 ], [ -15.931295945692211, 13.130284125211332 ], [ -15.691000535534995, 13.270353094938457 ], [ -15.511812506562933, 13.278569647672867 ], [ -15.141163295949468, 13.509511623585238 ], [ -14.712197231494628, 13.298206691943777 ], [ -14.277701788784555, 13.280585028532244 ], [ -13.844963344772408, 13.505041612192002 ], [ -14.046992356817482, 13.794067898000449 ], [ -14.376713833055788, 13.625680243377374 ], [ -14.687030808968487, 13.630356960499784 ], [ -15.081735398813819, 13.876491807505985 ], [ -15.39877031092446, 13.860368760630919 ], [ -15.624596320039942, 13.623587347869559 ], [ -16.713728807023472, 13.594958604379855 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Solomon Is.", "iso_a2": "SB" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 162.11902469304087, -10.482719008021135 ], [ 162.398645868172224, -10.826367282762121 ], [ 161.700032180018383, -10.820011081590224 ], [ 161.319796991214758, -10.204751478723125 ], [ 161.91738325423799, -10.446700534713656 ], [ 162.11902469304087, -10.482719008021135 ] ] ], [ [ [ 160.85222863183796, -9.872937106977005 ], [ 160.462588332357285, -9.895209649294841 ], [ 159.849447463214204, -9.794027194867368 ], [ 159.640002883135168, -9.639979750205271 ], [ 159.702944777666659, -9.242949720906779 ], [ 160.362956170898457, -9.400304457235535 ], [ 160.688517694337207, -9.610162448772812 ], [ 160.85222863183796, -9.872937106977005 ] ] ], [ [ [ 161.679981724289149, -9.599982191611375 ], [ 161.529396600590559, -9.784312025596435 ], [ 160.788253208660564, -8.91754322676492 ], [ 160.579997186524366, -8.320008640173967 ], [ 160.920028111004939, -8.320008640173967 ], [ 161.280006138349989, -9.120011488484451 ], [ 161.679981724289149, -9.599982191611375 ] ] ], [ [ [ 159.875027297198613, -8.337320244991716 ], [ 159.917401971678004, -8.538289890174866 ], [ 159.133677199539392, -8.1141814103554 ], [ 158.586113722974716, -7.754823500197716 ], [ 158.211149530264862, -7.421872246941149 ], [ 158.359977655265453, -7.320017998893917 ], [ 158.820001255527728, -7.560003350457393 ], [ 159.640002883135168, -8.020026950719569 ], [ 159.875027297198613, -8.337320244991716 ] ] ], [ [ [ 157.538425734689298, -7.347819919466929 ], [ 157.339419793933274, -7.404767347852555 ], [ 156.902030471014797, -7.176874281445393 ], [ 156.491357863591332, -6.765943291860395 ], [ 156.542827590153962, -6.59933847415148 ], [ 157.140000441718911, -7.021638278840655 ], [ 157.538425734689298, -7.347819919466929 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Sierra Leone", "iso_a2": "SL" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -11.438779466182055, 6.785916856305747 ], [ -11.70819454593574, 6.860098374860726 ], [ -12.428098924193819, 7.26294200279203 ], [ -12.949049038128194, 7.798645738145738 ], [ -13.124025437868482, 8.163946438016978 ], [ -13.246550258832515, 8.903048610871508 ], [ -12.71195756677308, 9.342711696810767 ], [ -12.59671912276221, 9.620188300001971 ], [ -12.425928514037565, 9.835834051955956 ], [ -12.150338100625005, 9.858571682164381 ], [ -11.917277390988659, 10.046983954300558 ], [ -11.11748124840733, 10.045872911006285 ], [ -10.839151984083301, 9.688246161330369 ], [ -10.622395188835041, 9.267910061068278 ], [ -10.654770473665891, 8.977178452994195 ], [ -10.494315151399633, 8.715540676300435 ], [ -10.505477260774668, 8.348896389189605 ], [ -10.23009355309128, 8.406205552601293 ], [ -10.695594855176481, 7.939464016141088 ], [ -11.146704270868383, 7.396706447779536 ], [ -11.199801805048279, 7.105845648624737 ], [ -11.438779466182055, 6.785916856305747 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "El Salvador", "iso_a2": "SV" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -87.793111131526572, 13.384480495655055 ], [ -87.904112108089521, 13.149016831917137 ], [ -88.48330156121682, 13.163951320849492 ], [ -88.84322791212972, 13.259733588102478 ], [ -89.256742723329296, 13.458532823129303 ], [ -89.812393561547665, 13.520622056527998 ], [ -90.095554572290979, 13.735337632700734 ], [ -90.064677903996596, 13.881969509328925 ], [ -89.721933966820728, 14.134228013561696 ], [ -89.534219326520514, 14.244815578666305 ], [ -89.587342698916558, 14.36258616785949 ], [ -89.3533259752828, 14.424132798719114 ], [ -89.058511929057659, 14.340029405164087 ], [ -88.843072882832843, 14.140506700085171 ], [ -88.541230841816002, 13.980154730683479 ], [ -88.503997972349708, 13.845485948130857 ], [ -88.065342576840138, 13.964625962779778 ], [ -87.859515347021599, 13.893312486216983 ], [ -87.723502977229401, 13.785050360565506 ], [ -87.793111131526572, 13.384480495655055 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Somaliland", "iso_a2": "-99" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 48.938129510296505, 9.451748968946674 ], [ 48.486735874227008, 8.837626247589981 ], [ 47.78942, 8.003 ], [ 46.948328484897957, 7.996876532417389 ], [ 43.67875, 9.18358000000012 ], [ 43.296975132018758, 9.540477403191744 ], [ 42.92812, 10.021940000000143 ], [ 42.55876, 10.57258000000013 ], [ 42.776851841000962, 10.92687856693442 ], [ 43.145304803242141, 11.462039699748857 ], [ 43.470659620951665, 11.277709865763882 ], [ 43.666668328634842, 10.864169216348159 ], [ 44.11780358254282, 10.445538438351605 ], [ 44.614259067570856, 10.442205308468942 ], [ 45.556940545439147, 10.698029486529776 ], [ 46.645401238803004, 10.816549383991173 ], [ 47.525657586462785, 11.12722809492999 ], [ 48.021596307167783, 11.193063869669743 ], [ 48.37878380716927, 11.375481675660126 ], [ 48.948206414593471, 11.41062164961852 ], [ 48.942005242718437, 11.394266058798166 ], [ 48.938491245322609, 10.982327378783452 ], [ 48.93823286316109, 9.973500067581483 ], [ 48.938129510296505, 9.451748968946674 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Somalia", "iso_a2": "SO" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 49.72862, 11.5789 ], [ 50.25878, 11.67957 ], [ 50.73202, 12.0219 ], [ 51.1112, 12.02464 ], [ 51.13387, 11.74815 ], [ 51.04153, 11.16651 ], [ 51.04531, 10.6409 ], [ 50.83418, 10.27972 ], [ 50.55239, 9.19874 ], [ 50.07092, 8.08173 ], [ 49.4527, 6.80466 ], [ 48.59455, 5.33911 ], [ 47.74079, 4.2194 ], [ 46.56476, 2.85529 ], [ 45.56399, 2.04576 ], [ 44.06815, 1.05283 ], [ 43.13597, 0.2922 ], [ 42.04157, -0.91916 ], [ 41.81095, -1.44647 ], [ 41.58513, -1.68325 ], [ 40.993, -0.85829 ], [ 40.98105, 2.78452 ], [ 41.855083092643973, 3.918911920483727 ], [ 42.12861, 4.23413 ], [ 42.76967, 4.25259 ], [ 43.66087, 4.95755 ], [ 44.9636, 5.00162 ], [ 47.78942, 8.003 ], [ 48.486735874226952, 8.837626247589995 ], [ 48.938129510296449, 9.451748968946617 ], [ 48.938232863161033, 9.973500067581512 ], [ 48.938491245322496, 10.982327378783467 ], [ 48.942005242718352, 11.394266058798138 ], [ 48.948204758509739, 11.410617281697963 ], [ 49.26776, 11.43033 ], [ 49.72862, 11.5789 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Serbia", "iso_a2": "RS" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 20.874312778413412, 45.41637543393432 ], [ 21.483526238702211, 45.181170152357879 ], [ 21.562022739353722, 44.768947251965642 ], [ 22.145087924902896, 44.478422349620587 ], [ 22.459022251075965, 44.702517198254441 ], [ 22.705725538837441, 44.578002834647009 ], [ 22.474008416440654, 44.409227606781769 ], [ 22.657149692483074, 44.234923000661354 ], [ 22.410446404721597, 44.008063462900054 ], [ 22.500156691180223, 43.642814439461006 ], [ 22.986018507588483, 43.211161200527101 ], [ 22.604801466571359, 42.898518785161116 ], [ 22.436594679461393, 42.580321153323951 ], [ 22.54501183440965, 42.46136200618804 ], [ 22.380525750424681, 42.320259507815081 ], [ 21.917080000000112, 42.30364 ], [ 21.576635989402121, 42.245224397061861 ], [ 21.54332, 42.320250000000101 ], [ 21.66292, 42.43922 ], [ 21.77505, 42.6827 ], [ 21.63302, 42.67717 ], [ 21.43866, 42.86255 ], [ 21.27421, 42.90959 ], [ 21.143395, 43.06868500000013 ], [ 20.95651, 43.13094 ], [ 20.81448, 43.27205 ], [ 20.63508, 43.21671 ], [ 20.49679, 42.88469 ], [ 20.25758, 42.812750000000108 ], [ 20.3398, 42.89852 ], [ 19.95857, 43.10604 ], [ 19.63, 43.213779970270537 ], [ 19.48389, 43.35229 ], [ 19.21852, 43.52384 ], [ 19.454, 43.568100000000129 ], [ 19.59976, 44.03847 ], [ 19.11761, 44.423070000000109 ], [ 19.36803, 44.863 ], [ 19.00548, 44.86023 ], [ 19.390475701584592, 45.236515611342384 ], [ 19.072768995854176, 45.521511135432092 ], [ 18.82982, 45.90888 ], [ 19.59604454924164, 46.171729844744561 ], [ 20.220192498462893, 46.127468980486583 ], [ 20.762174920339987, 45.734573065771485 ], [ 20.874312778413412, 45.41637543393432 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Suriname", "iso_a2": "SR" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -57.147436489476888, 5.973149929219161 ], [ -55.9493184067898, 5.772877915872002 ], [ -55.841779751190415, 5.95312531170606 ], [ -55.033250291551774, 6.025291449401664 ], [ -53.958044603070903, 5.756548163267765 ], [ -54.478632981979231, 4.896755682795586 ], [ -54.399542202356514, 4.212611395683467 ], [ -54.006930508019011, 3.620037746592558 ], [ -54.181726040246275, 3.189779771330421 ], [ -54.269705166223197, 2.732391669115046 ], [ -54.524754197799716, 2.311848863123785 ], [ -55.097587449755139, 2.523748073736613 ], [ -55.569755011605999, 2.421506252447131 ], [ -55.973322109589375, 2.510363877773017 ], [ -56.073341844290297, 2.220794989425499 ], [ -55.905600145070885, 2.02199575439866 ], [ -55.995698004771754, 1.817667141116601 ], [ -56.539385748914555, 1.899522609866921 ], [ -57.150097825739913, 2.768926906745406 ], [ -57.28143347840971, 3.333491929534119 ], [ -57.60156897645787, 3.334654649260685 ], [ -58.044694383360678, 4.060863552258382 ], [ -57.860209520078698, 4.57680105226045 ], [ -57.914288906472137, 4.812626451024414 ], [ -57.307245856339506, 5.073566595882227 ], [ -57.147436489476888, 5.973149929219161 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Slovakia", "iso_a2": "SK" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 18.853144158613617, 49.496229763377642 ], [ 18.909574822676319, 49.435845852244576 ], [ 19.320712517990472, 49.571574001659194 ], [ 19.825022820726872, 49.217125352569226 ], [ 20.415839471119853, 49.431453355499769 ], [ 20.887955356538413, 49.32877228453583 ], [ 21.607808058364213, 49.470107326854091 ], [ 22.558137648211755, 49.085738023467144 ], [ 22.28084191253356, 48.825392157580673 ], [ 22.085608351334855, 48.422264309271789 ], [ 21.872236362401736, 48.319970811550021 ], [ 20.801293979584926, 48.623854071642384 ], [ 20.473562045989866, 48.562850043321816 ], [ 20.239054396249347, 48.327567247096923 ], [ 19.769470656013112, 48.202691148463614 ], [ 19.661363559658497, 48.266614895208662 ], [ 19.174364861739889, 48.111378892603867 ], [ 18.777024773847671, 48.081768296900634 ], [ 18.696512892336926, 47.880953681014404 ], [ 17.857132602620027, 47.758428860050373 ], [ 17.48847293464982, 47.867466132186216 ], [ 16.979666782304037, 48.123497015976305 ], [ 16.879982944413001, 48.47001333270947 ], [ 16.960288120194576, 48.5969823268506 ], [ 17.101984897538898, 48.816968899117114 ], [ 17.545006951577108, 48.80001902932537 ], [ 17.886484816161811, 48.903475246773709 ], [ 17.913511590250465, 48.996492824899086 ], [ 18.104972771891852, 49.043983466175312 ], [ 18.170498488037964, 49.271514797556435 ], [ 18.399993523846177, 49.315000515330041 ], [ 18.554971144289482, 49.495015367218784 ], [ 18.853144158613617, 49.496229763377642 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Slovenia", "iso_a2": "SI" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 13.806475457421527, 46.509306138691215 ], [ 14.632471551174829, 46.431817328469549 ], [ 15.137091912504985, 46.65870270444703 ], [ 16.011663852612656, 46.683610744811702 ], [ 16.202298211337364, 46.852385972676963 ], [ 16.370504998447416, 46.841327216166505 ], [ 16.564808383864857, 46.50375092221983 ], [ 15.768732944408553, 46.238108222023449 ], [ 15.671529575267556, 45.834153550797879 ], [ 15.323953891672405, 45.73178253842768 ], [ 15.327674594797429, 45.452316392593232 ], [ 14.935243767972935, 45.471695054702685 ], [ 14.595109490627806, 45.634940904312714 ], [ 14.411968214585414, 45.46616567644746 ], [ 13.715059848697223, 45.500323798192376 ], [ 13.937630242578308, 45.591015936864622 ], [ 13.698109978905478, 46.016778062517353 ], [ 13.806475457421527, 46.509306138691215 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Sweden", "iso_a2": "SE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 22.18317345550193, 65.723740546320172 ], [ 21.21351687997722, 65.026005357515274 ], [ 21.369631381930958, 64.413587958424287 ], [ 19.77887576669022, 63.609554348395037 ], [ 17.847779168375212, 62.74940013289681 ], [ 17.119554884518124, 61.341165676510968 ], [ 17.831346062906391, 60.636583360427409 ], [ 18.787721795332089, 60.081914374422595 ], [ 17.86922488777634, 58.953766181058697 ], [ 16.829185011470088, 58.719826972073392 ], [ 16.447709588291474, 57.041118069071885 ], [ 15.879785597403783, 56.104301866268663 ], [ 14.666681349352075, 56.200885118222175 ], [ 14.100721062891465, 55.407781073622651 ], [ 12.942910597392057, 55.361737372450577 ], [ 12.625100538797028, 56.30708018658197 ], [ 11.787942335668674, 57.441817125063068 ], [ 11.027368605196868, 58.856149400459358 ], [ 11.468271925511146, 59.432393296946039 ], [ 12.300365838274899, 60.117932847730032 ], [ 12.631146681375185, 61.293571682370136 ], [ 11.992064243221563, 61.80036245385655 ], [ 11.930569288794231, 63.128317572676977 ], [ 12.579935336973934, 64.066218980558332 ], [ 13.571916131248713, 64.04911408146971 ], [ 13.919905226302204, 64.44542064071608 ], [ 13.555689731509091, 64.787027696381514 ], [ 15.108411492583002, 66.193866889095474 ], [ 16.108712192456778, 67.302455552836889 ], [ 16.768878614985482, 68.013936672631402 ], [ 17.729181756265348, 68.010551866316277 ], [ 17.993868442464333, 68.567391262477358 ], [ 19.878559604581255, 68.407194322372575 ], [ 20.025268995857886, 69.065138658312705 ], [ 20.645592889089528, 69.106247260200874 ], [ 21.978534783626117, 68.616845608180697 ], [ 23.539473097434438, 67.93600861273525 ], [ 23.565879754335583, 66.396050930437426 ], [ 23.903378533633802, 66.006927395279618 ], [ 22.18317345550193, 65.723740546320172 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Swaziland", "iso_a2": "SZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 32.071665480281069, -26.733820082304909 ], [ 31.86806033705108, -27.177927341421277 ], [ 31.282773064913329, -27.285879408478998 ], [ 30.68596194837448, -26.743845310169533 ], [ 30.67660851412964, -26.398078301704608 ], [ 30.949666782359913, -26.022649021104151 ], [ 31.044079624157149, -25.731452325139443 ], [ 31.333157586397903, -25.66019052500895 ], [ 31.83777794772806, -25.843331801051349 ], [ 31.985779249811969, -26.291779880480227 ], [ 32.071665480281069, -26.733820082304909 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Syria", "iso_a2": "SY" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 38.792340529136084, 33.378686428352225 ], [ 36.834062127435544, 32.312937526980775 ], [ 35.719918247222751, 32.709192409794866 ], [ 35.700797967274752, 32.716013698857381 ], [ 35.836396925608625, 32.868123277308513 ], [ 35.821100701650238, 33.277426459276299 ], [ 36.066460402172055, 33.82491242119255 ], [ 36.611750115715893, 34.201788641897181 ], [ 36.448194207512103, 34.593935248344067 ], [ 35.998402540843642, 34.644914048800004 ], [ 35.905023227692226, 35.410009467097325 ], [ 36.149762811026534, 35.821534735653671 ], [ 36.417550083163036, 36.04061697035506 ], [ 36.685389031731802, 36.259699205056464 ], [ 36.739494256341402, 36.817520453431086 ], [ 37.066761102045831, 36.623036200500621 ], [ 38.167727492024198, 36.901210435527773 ], [ 38.699891391765902, 36.712927354472342 ], [ 39.522580193852548, 36.716053778625991 ], [ 40.673259311695688, 37.091276353497292 ], [ 41.212089471203051, 37.074352321921694 ], [ 42.349591098811771, 37.229872544904097 ], [ 41.837064243340961, 36.605853786763575 ], [ 41.289707472505455, 36.358814602192268 ], [ 41.383965285005814, 35.628316555314356 ], [ 41.006158888519934, 34.419372260062119 ], [ 38.792340529136084, 33.378686428352225 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Chad", "iso_a2": "TD" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 14.495787387762903, 12.859396267137356 ], [ 14.595781284247607, 13.330426947477861 ], [ 13.95447675950561, 13.353448798063766 ], [ 13.956698846094127, 13.996691189016929 ], [ 13.540393507550789, 14.367133693901224 ], [ 13.97217, 15.68437 ], [ 15.247731154041844, 16.627305813050782 ], [ 15.300441114979719, 17.927949937405003 ], [ 15.685740594147774, 19.957180080642388 ], [ 15.903246697664315, 20.387618923417506 ], [ 15.487148064850146, 20.730414537025638 ], [ 15.47106, 21.04845 ], [ 15.096887648181848, 21.308518785074909 ], [ 14.8513, 22.862950000000126 ], [ 15.86085, 23.40972 ], [ 19.84926, 21.49509 ], [ 23.837660000000142, 19.580470000000105 ], [ 23.886890000000108, 15.61084 ], [ 23.024590000000103, 15.68072 ], [ 22.56795000000011, 14.944290000000137 ], [ 22.30351, 14.32682 ], [ 22.51202, 14.09318 ], [ 22.18329, 13.78648 ], [ 22.29658, 13.37232 ], [ 22.03759, 12.95546 ], [ 21.93681, 12.588180000000136 ], [ 22.28801, 12.64605 ], [ 22.49762, 12.26024 ], [ 22.50869, 11.67936 ], [ 22.87622, 11.384610000000123 ], [ 22.864165480244253, 11.142395127807617 ], [ 22.23112918466876, 10.97188873946061 ], [ 21.723821648859541, 10.567055568885962 ], [ 21.000868361096309, 9.47598521569148 ], [ 20.059685499764271, 9.012706000194839 ], [ 19.094008009526078, 9.074846910025769 ], [ 18.812009718509273, 8.982914536978626 ], [ 18.911021762780592, 8.630894680206438 ], [ 18.389554884523307, 8.281303615751881 ], [ 17.964929640380888, 7.890914008002994 ], [ 16.705988396886369, 7.508327541529979 ], [ 16.456184523187403, 7.73477366783294 ], [ 16.290561557691888, 7.754307359239419 ], [ 16.106231723706742, 7.497087917506462 ], [ 15.279460483469165, 7.421924546738012 ], [ 15.436091749745742, 7.692812404811889 ], [ 15.120865512765306, 8.382150173369439 ], [ 14.979995558337691, 8.796104234243444 ], [ 14.544466586981855, 8.96586131432224 ], [ 13.954218377344091, 9.549494940626687 ], [ 14.171466098699113, 10.021378282100045 ], [ 14.62720055508106, 9.920919297724595 ], [ 14.9093538753948, 9.99212942142276 ], [ 15.467872755605242, 9.982336737503545 ], [ 14.923564894275046, 10.891325181517516 ], [ 14.960151808337685, 11.555574042197236 ], [ 14.89336, 12.21905 ], [ 14.495787387762903, 12.859396267137356 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Togo", "iso_a2": "TG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 1.865240512712319, 6.142157701029731 ], [ 1.060121697604927, 5.928837388528876 ], [ 0.836931186536333, 6.279978745952149 ], [ 0.570384148774849, 6.914358628767189 ], [ 0.490957472342245, 7.411744289576475 ], [ 0.712029249686879, 8.312464504423829 ], [ 0.461191847342121, 8.677222601756014 ], [ 0.365900506195885, 9.465003973829482 ], [ 0.367579990245389, 10.19121287682718 ], [ -0.049784715159944, 10.706917832883931 ], [ 0.023802524423701, 11.018681748900804 ], [ 0.899563022474069, 10.99733938236426 ], [ 0.772335646171484, 10.470808213742359 ], [ 1.077795037448738, 10.175606594275024 ], [ 1.425060662450136, 9.825395412633 ], [ 1.46304284018467, 9.334624335157088 ], [ 1.664477573258381, 9.128590399609379 ], [ 1.618950636409238, 6.832038072126238 ], [ 1.865240512712319, 6.142157701029731 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Thailand", "iso_a2": "TH" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 102.584932489026698, 12.186594956913282 ], [ 101.687157830819956, 12.645740057826572 ], [ 100.831809523524868, 12.627084865769206 ], [ 100.978467238369205, 13.412721665902566 ], [ 100.097797479251113, 13.406856390837433 ], [ 100.018732537844556, 12.307001044153354 ], [ 99.47892052612363, 10.846366685423547 ], [ 99.153772414143162, 9.963061428258555 ], [ 99.222398716226763, 9.239255479362427 ], [ 99.873831821698133, 9.20786204674512 ], [ 100.279646844486223, 8.295152899606052 ], [ 100.459274123132758, 7.429572658717177 ], [ 101.017327915452725, 6.856868597842478 ], [ 101.62307905477806, 6.74062246340192 ], [ 102.141186964936381, 6.221636053894628 ], [ 101.814281854257985, 5.810808417174242 ], [ 101.154218784593866, 5.691384182147715 ], [ 101.075515578213356, 6.204867051615921 ], [ 100.259596388756961, 6.642824815289543 ], [ 100.085756870527106, 6.464489447450291 ], [ 99.690690545655755, 6.848212795433597 ], [ 99.519641554769635, 7.34345388430276 ], [ 98.988252801512303, 7.907993068875328 ], [ 98.503786248775995, 8.382305202666288 ], [ 98.339661899817003, 7.794511623562386 ], [ 98.150009393305822, 8.350007432483878 ], [ 98.259150018306258, 8.973922837759801 ], [ 98.553550653073046, 9.932959906448545 ], [ 99.038120558673981, 10.960545762572437 ], [ 99.587286004639722, 11.892762762901697 ], [ 99.196353794351666, 12.80474843998867 ], [ 99.212011753336085, 13.269293728076464 ], [ 99.097755161538757, 13.827502549693278 ], [ 98.430819126379873, 14.622027696180837 ], [ 98.192074009191401, 15.123702500870351 ], [ 98.537375929765716, 15.308497422746084 ], [ 98.903348423256759, 16.177824204976119 ], [ 98.49376102091135, 16.837835598207931 ], [ 97.859122755934862, 17.567946071843664 ], [ 97.375896437573545, 18.445437730375815 ], [ 97.797782830804408, 18.627080389881755 ], [ 98.25372399291561, 19.708203029860044 ], [ 98.959675734454876, 19.752980658440947 ], [ 99.543309360759309, 20.186597601802063 ], [ 100.115987583417848, 20.417849636308187 ], [ 100.548881056726884, 20.109237982661128 ], [ 100.606293573003157, 19.508344427971224 ], [ 101.282014601651696, 19.462584947176765 ], [ 101.035931431077771, 18.408928330961615 ], [ 101.059547560635167, 17.51249725999449 ], [ 102.113591750092482, 18.109101670804165 ], [ 102.413004998791621, 17.932781683824288 ], [ 102.998705682387708, 17.961694647691601 ], [ 103.20019209189374, 18.309632066312773 ], [ 103.956476678485302, 18.240954087796879 ], [ 104.716947056092494, 17.428858954330082 ], [ 104.779320509868796, 16.441864935771449 ], [ 105.589038527450157, 15.570316066952858 ], [ 105.544338413517693, 14.723933620660418 ], [ 105.218776890078885, 14.273211778210694 ], [ 104.281418084736615, 14.416743068901367 ], [ 102.988422072361629, 14.225721136934467 ], [ 102.348099399833018, 13.394247341358223 ], [ 102.584932489026698, 12.186594956913282 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Tajikistan", "iso_a2": "TJ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 71.01419803252017, 40.244365546218233 ], [ 70.648018833299972, 39.935753892571171 ], [ 69.559609816368521, 40.103211371412982 ], [ 69.46488691597753, 39.526683254548701 ], [ 70.549161818325615, 39.604197902986499 ], [ 71.784693637992007, 39.27946320246437 ], [ 73.675379266254794, 39.431236884105601 ], [ 73.928852166646436, 38.505815334622739 ], [ 74.257514276022732, 38.606506862943448 ], [ 74.864815708316826, 38.378846340481601 ], [ 74.829985792952101, 37.990007025701402 ], [ 74.980002475895418, 37.419990139305895 ], [ 73.9486959166465, 37.4215662704908 ], [ 73.260055779925011, 37.495256862939002 ], [ 72.636889682917285, 37.047558091778356 ], [ 72.193040805962397, 36.948287665345674 ], [ 71.844638299450594, 36.738171291646921 ], [ 71.448693475230243, 37.06564484308052 ], [ 71.541917759084782, 37.905774441065645 ], [ 71.239403924448169, 37.953265082341886 ], [ 71.348131137990265, 38.258905341132163 ], [ 70.806820509732887, 38.486281643216415 ], [ 70.376304152309302, 38.138395901027522 ], [ 70.270574171840138, 37.735164699854025 ], [ 70.116578403610333, 37.588222764632093 ], [ 69.518785434857961, 37.60899669041342 ], [ 69.196272820924378, 37.151143500307427 ], [ 68.859445835245936, 37.344335842430596 ], [ 68.135562371701383, 37.023115139304309 ], [ 67.829999627559516, 37.144994004864685 ], [ 68.392032505165957, 38.157025254868742 ], [ 68.176025018185925, 38.901553453113905 ], [ 67.442219679641312, 39.140143541005486 ], [ 67.701428664017357, 39.580478420564532 ], [ 68.536416456989429, 39.533452867178937 ], [ 69.011632928345506, 40.086158148756667 ], [ 69.329494663372827, 40.727824408524853 ], [ 70.666622348925046, 40.960213324541414 ], [ 70.458159621059622, 40.496494859370287 ], [ 70.601406691372688, 40.218527330072291 ], [ 71.01419803252017, 40.244365546218233 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Turkmenistan", "iso_a2": "TM" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 61.210817091725744, 35.650072333309225 ], [ 61.123070509694145, 36.491597194966246 ], [ 60.377637973883878, 36.527383124328367 ], [ 59.234761997316809, 37.412987982730343 ], [ 58.436154412678206, 37.522309475243802 ], [ 57.330433790928986, 38.02922943781094 ], [ 56.619366082592819, 38.121394354803485 ], [ 56.180374790273333, 37.93512665460743 ], [ 55.511578403551908, 37.964117133123167 ], [ 54.800303989486565, 37.392420762678185 ], [ 53.921597934795557, 37.198918361961262 ], [ 53.735511102112518, 37.906136176091692 ], [ 53.880928582581845, 38.952093003895357 ], [ 53.101027866432901, 39.290573635407128 ], [ 53.35780805849123, 39.975286363274449 ], [ 52.693972609269821, 40.033629055331971 ], [ 52.915251092343624, 40.876523342444727 ], [ 53.858139275941134, 40.631034450842179 ], [ 54.73684533063215, 40.951014919593462 ], [ 54.008310988181314, 41.551210842447418 ], [ 53.72171349469059, 42.12319143327003 ], [ 52.916749708880076, 41.868116563477329 ], [ 52.814688755103617, 41.135370591794711 ], [ 52.502459751196149, 41.78331553808637 ], [ 52.944293247291654, 42.116034247397593 ], [ 54.079417759014952, 42.324109402020831 ], [ 54.755345493392639, 42.043971462566574 ], [ 55.45525109235377, 41.25985911718584 ], [ 55.968191359282912, 41.308641669269363 ], [ 57.096391229079103, 41.322310085610567 ], [ 56.932215203687804, 41.826026109375604 ], [ 57.786529982337079, 42.170552883465518 ], [ 58.62901085799146, 42.751551011723052 ], [ 59.976422153569786, 42.223081976890207 ], [ 60.083340691981675, 41.425146185871405 ], [ 60.465952996670694, 41.220326646482548 ], [ 61.547178989513561, 41.266370347654615 ], [ 61.882714064384693, 41.084856879229406 ], [ 62.374260288345006, 40.053886216790389 ], [ 63.518014764261032, 39.363256537425642 ], [ 64.170223016216767, 38.892406724598246 ], [ 65.215998976507393, 38.4026950139843 ], [ 66.546150343700219, 37.974684963526869 ], [ 66.51860680528867, 37.362784328758792 ], [ 66.217384881459338, 37.39379018813392 ], [ 65.745630731066825, 37.661164048812068 ], [ 65.588947788357842, 37.305216783185642 ], [ 64.746105177677407, 37.111817735333304 ], [ 64.546479119733903, 36.312073269184268 ], [ 63.98289594915871, 36.007957465146603 ], [ 63.193538445900352, 35.857165635718914 ], [ 62.98466230657661, 35.404040839167621 ], [ 62.230651483005886, 35.270663967422294 ], [ 61.210817091725744, 35.650072333309225 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Timor-Leste", "iso_a2": "TL" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 124.968682489116233, -8.892790215697083 ], [ 125.086246372580263, -8.65688730228468 ], [ 125.947072381698263, -8.432094821815035 ], [ 126.644704217638548, -8.398246758663852 ], [ 126.957243280139835, -8.273344821814398 ], [ 127.33592817597463, -8.397316582882603 ], [ 126.967991978056546, -8.668256117388893 ], [ 125.925885044458596, -9.106007175333353 ], [ 125.088520135601087, -9.393173109579294 ], [ 125.070019972840612, -9.089987481322872 ], [ 124.968682489116233, -8.892790215697083 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Trinidad and Tobago", "iso_a2": "TT" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -61.68, 10.76 ], [ -61.105, 10.89 ], [ -60.895, 10.855 ], [ -60.935, 10.11 ], [ -61.77, 10.0 ], [ -61.95, 10.09 ], [ -61.66, 10.365 ], [ -61.68, 10.76 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Tunisia", "iso_a2": "TN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 9.482139926805274, 30.307556057246188 ], [ 9.055602654668149, 32.102691962201291 ], [ 8.439102817426118, 32.506284898400821 ], [ 8.430472853233368, 32.748337307255952 ], [ 7.612641635782182, 33.344114895148962 ], [ 7.524481642292244, 34.09737641045146 ], [ 8.140981479534304, 34.65514598239379 ], [ 8.376367628623768, 35.479876003555944 ], [ 8.217824334352315, 36.433176988260286 ], [ 8.420964389691676, 36.946427313783161 ], [ 9.509993523810607, 37.349994411766545 ], [ 10.210002475636317, 37.230001735984814 ], [ 10.180650262094531, 36.724037787415085 ], [ 11.02886722173335, 37.092103176413957 ], [ 11.100025668999251, 36.899996039368915 ], [ 10.600004510143094, 36.410000108377375 ], [ 10.593286573945138, 35.947444362932814 ], [ 10.939518670300687, 35.698984076473494 ], [ 10.807847120821009, 34.83350718844919 ], [ 10.149592726287125, 34.330773016897709 ], [ 10.339658644256616, 33.785741685515319 ], [ 10.856836378633687, 33.768740139291282 ], [ 11.108500603895122, 33.293342800422195 ], [ 11.488787469131012, 33.136995754523141 ], [ 11.432253452203696, 32.368903103152874 ], [ 10.944789666394456, 32.081814683555365 ], [ 10.636901482799487, 31.761420803345757 ], [ 9.950225050505082, 31.376069647745258 ], [ 10.056575148161755, 30.961831366493598 ], [ 9.970017124072854, 30.53932485607524 ], [ 9.482139926805274, 30.307556057246188 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Turkey", "iso_a2": "TR" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 36.913127068842158, 41.335358384764305 ], [ 38.347664829264517, 40.948586127275718 ], [ 39.512606642420252, 41.102762763018575 ], [ 40.373432651538252, 41.013672593747344 ], [ 41.554084100110714, 41.535656236327611 ], [ 42.619548781104555, 41.583172715819927 ], [ 43.582745802592711, 41.092143256182567 ], [ 43.752657911968498, 40.740200914058818 ], [ 43.65643639504097, 40.253563951166171 ], [ 44.400008579288766, 40.005000311842309 ], [ 44.793989699082005, 39.713002631177034 ], [ 44.109225294782362, 39.428136298168056 ], [ 44.421402622257602, 38.281281236314527 ], [ 44.225755649600529, 37.971584377589352 ], [ 44.772699008977753, 37.170444647768448 ], [ 44.293451775902867, 37.00151439060636 ], [ 43.942258742047358, 37.256227525372935 ], [ 42.779125604021857, 37.385263576805812 ], [ 42.349591098811771, 37.229872544904111 ], [ 41.212089471203029, 37.074352321921737 ], [ 40.673259311695716, 37.091276353497364 ], [ 39.522580193852519, 36.716053778626019 ], [ 38.699891391765931, 36.712927354472328 ], [ 38.16772749202417, 36.901210435527787 ], [ 37.066761102045831, 36.623036200500621 ], [ 36.739494256341374, 36.817520453431115 ], [ 36.68538903173183, 36.259699205056506 ], [ 36.417550083163093, 36.040616970355103 ], [ 36.149762811026591, 35.821534735653671 ], [ 35.782084995269855, 36.274995429014922 ], [ 36.160821567537056, 36.650605577128374 ], [ 35.550936313628341, 36.565442816711339 ], [ 34.714553256984374, 36.795532131490916 ], [ 34.02689497247647, 36.219960028623973 ], [ 32.509158156064103, 36.1075637883892 ], [ 31.699595167779563, 36.644275214172609 ], [ 30.621624790171069, 36.677864895162315 ], [ 30.391096225717121, 36.26298065850699 ], [ 29.699975620245567, 36.144357408181008 ], [ 28.732902866335394, 36.676831366516438 ], [ 27.64118655773737, 36.658822129862756 ], [ 27.048767937943296, 37.653360907536012 ], [ 26.318218214633049, 38.208133246405396 ], [ 26.804700148228733, 38.985760199533559 ], [ 26.170785353304382, 39.463612168936464 ], [ 27.280019972449395, 40.420013739578309 ], [ 28.81997765474722, 40.460011298172219 ], [ 29.240003696415584, 41.219990749672689 ], [ 31.145933872204438, 41.087621568357065 ], [ 32.347979363745793, 41.736264146484643 ], [ 33.513282911927519, 42.018960069337311 ], [ 35.16770389175187, 42.040224921225445 ], [ 36.913127068842158, 41.335358384764305 ] ] ], [ [ [ 27.192376743282409, 40.690565700842455 ], [ 26.35800906749779, 40.151993923496491 ], [ 26.043351271272542, 40.617753607743168 ], [ 26.056942172965336, 40.824123440100749 ], [ 26.294602085075695, 40.936261298174173 ], [ 26.604195590936285, 41.56211456966102 ], [ 26.117041863720829, 41.826904608724561 ], [ 27.135739373490509, 42.141484890301314 ], [ 27.996720411905414, 42.007358710287775 ], [ 28.115524529744448, 41.622886054036286 ], [ 28.98844282401879, 41.299934190428189 ], [ 28.806438429486747, 41.054962063148537 ], [ 27.619017368284119, 40.999823309893117 ], [ 27.192376743282409, 40.690565700842455 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Taiwan", "iso_a2": "TW" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 121.777817824389928, 24.3942735865194 ], [ 121.175632358892742, 22.790857245367167 ], [ 120.747079705896226, 21.970571397382113 ], [ 120.220083449383679, 22.814860948166739 ], [ 120.106188592612398, 23.556262722258236 ], [ 120.694679803552248, 24.538450832613737 ], [ 121.495044386888779, 25.295458889257386 ], [ 121.951243931161457, 24.997595933527037 ], [ 121.777817824389928, 24.3942735865194 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Tanzania", "iso_a2": "TZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 33.903711197104599, -0.95 ], [ 34.07262, -1.05982 ], [ 37.69869, -3.09699 ], [ 37.7669, -3.67712 ], [ 39.20222, -4.67677 ], [ 38.74054, -5.90895 ], [ 38.79977, -6.47566 ], [ 39.44, -6.839999999999861 ], [ 39.470000000000141, -7.1 ], [ 39.19469, -7.7039 ], [ 39.25203, -8.00781 ], [ 39.18652, -8.48551 ], [ 39.53574, -9.112369999999885 ], [ 39.9496, -10.0984 ], [ 40.31659, -10.317099999999868 ], [ 39.521, -10.89688 ], [ 38.427556593587781, -11.285202325081627 ], [ 37.82764, -11.26879 ], [ 37.47129, -11.56876 ], [ 36.775150994622891, -11.594537448780784 ], [ 36.514081658684404, -11.720938002166747 ], [ 35.312397902169153, -11.439146416879169 ], [ 34.559989047999466, -11.520020033415847 ], [ 34.28, -10.16 ], [ 33.940837724096525, -9.693673841980285 ], [ 33.73972, -9.41715 ], [ 32.75937544122138, -9.230599053589003 ], [ 32.191864861791942, -8.930358981973257 ], [ 31.556348097466639, -8.762048841998649 ], [ 31.157751336950071, -8.594578747317314 ], [ 30.74, -8.34 ], [ 30.2, -7.08 ], [ 29.62, -6.52 ], [ 29.419992710088309, -5.939998874539299 ], [ 29.51998660657307, -5.419978936386258 ], [ 29.339997592900374, -4.499983412294114 ], [ 29.753512404099865, -4.452389418153302 ], [ 30.11632, -4.09012 ], [ 30.50554, -3.56858 ], [ 30.75224, -3.35931 ], [ 30.74301, -3.03431 ], [ 30.52766, -2.80762 ], [ 30.46967, -2.41383 ], [ 30.758308953583139, -2.287250257988376 ], [ 30.816134881317851, -1.698914076345375 ], [ 30.419104852019302, -1.134659112150416 ], [ 30.769860000000108, -1.01455 ], [ 31.86617, -1.02736 ], [ 33.903711197104599, -0.95 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Uganda", "iso_a2": "UG" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 31.86617, -1.02736 ], [ 30.769860000000108, -1.01455 ], [ 30.419104852019302, -1.134659112150416 ], [ 29.821518588996128, -1.443322442229771 ], [ 29.579466180141026, -1.341313164885605 ], [ 29.587837762172171, -0.587405694179381 ], [ 29.8195, -0.2053 ], [ 29.875778842902434, 0.597379868976361 ], [ 30.086153598762792, 1.062312730306417 ], [ 30.468507521290292, 1.583805446779706 ], [ 30.85267011894814, 1.849396470543752 ], [ 31.17414920423596, 2.204465236821306 ], [ 30.77332, 2.339890000000139 ], [ 30.83385, 3.50917 ], [ 31.24556, 3.7819 ], [ 31.88145, 3.55827 ], [ 32.68642, 3.79232 ], [ 33.3900000000001, 3.79 ], [ 34.005, 4.249884947362148 ], [ 34.47913, 3.5556 ], [ 34.59607, 3.053740000000118 ], [ 35.03599, 1.90584 ], [ 34.6721, 1.17694 ], [ 34.18, 0.515 ], [ 33.893568969667001, 0.109813537861839 ], [ 33.903711197104599, -0.95 ], [ 31.86617, -1.02736 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Ukraine", "iso_a2": "UA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 31.785998162571587, 52.101677964885454 ], [ 32.159412062312668, 52.061266994833218 ], [ 32.412058139787632, 52.288694973349749 ], [ 32.715760532366971, 52.238465481162052 ], [ 33.752699822735707, 52.335074571331695 ], [ 34.391730584457008, 51.768881740925792 ], [ 34.141978387190392, 51.566413479206233 ], [ 34.224815708154267, 51.255993150428957 ], [ 35.02218305841788, 51.207572333371459 ], [ 35.377923618315123, 50.77395539001035 ], [ 35.356116163887947, 50.577197374059061 ], [ 36.626167840325337, 50.225590928745135 ], [ 37.393459506995072, 50.383953355503593 ], [ 38.010631137856905, 49.915661526074629 ], [ 38.594988234213417, 49.926461900423632 ], [ 40.069058465339111, 49.601055406281702 ], [ 40.08078901546935, 49.307429917999286 ], [ 39.674663934087533, 48.783818467801879 ], [ 39.895632358567582, 48.232405097031432 ], [ 39.738277622238826, 47.89893707945199 ], [ 38.7705847511412, 47.825608222029814 ], [ 38.255112339029751, 47.546400458356814 ], [ 38.22353803889942, 47.102189846375886 ], [ 37.425137159989987, 47.022220567404204 ], [ 36.75985477066439, 46.698700263040934 ], [ 35.823684523264831, 46.645964463887069 ], [ 34.962341749823878, 46.273196519549643 ], [ 35.020787794745985, 45.651218980484657 ], [ 35.510008579253167, 45.409993394546191 ], [ 36.529997999830158, 45.469989732437057 ], [ 36.33471276219916, 45.113215643893966 ], [ 35.239999220528119, 44.939996242851606 ], [ 33.882511020652885, 44.361478583344073 ], [ 33.326420932760044, 44.564877020844889 ], [ 33.546924269349461, 45.03477081967489 ], [ 32.454174432105503, 45.327466132176077 ], [ 32.630804477679135, 45.519185695978912 ], [ 33.588162062318389, 45.851568508480241 ], [ 33.298567335754711, 46.080598456397844 ], [ 31.744140252415178, 46.333347886737386 ], [ 31.675307244602408, 46.706245022155542 ], [ 30.748748813609101, 46.583100084004002 ], [ 30.377608676888883, 46.03241018328567 ], [ 29.603289015427436, 45.293308010431126 ], [ 29.149724969201653, 45.464925442072456 ], [ 28.679779493939382, 45.304030870131704 ], [ 28.233553501099042, 45.488283189468376 ], [ 28.485269402792767, 45.596907050145902 ], [ 28.659987420371579, 45.939986884131642 ], [ 28.933717482221624, 46.258830471372498 ], [ 28.862972446414062, 46.437889309263831 ], [ 29.072106967899291, 46.517677720722496 ], [ 29.170653924279886, 46.3792623968287 ], [ 29.759971958136394, 46.349987697935362 ], [ 30.024658644335375, 46.42393667254504 ], [ 29.838210076626297, 46.525325832701689 ], [ 29.908851759569302, 46.674360663431457 ], [ 29.559674106573112, 46.928582872091326 ], [ 29.415135125452736, 47.346645209332578 ], [ 29.050867954227328, 47.510226955752501 ], [ 29.122698195113031, 47.849095160506465 ], [ 28.670891147585166, 48.118148505234103 ], [ 28.259546746541844, 48.155562242213421 ], [ 27.522537469195157, 48.467119452501116 ], [ 26.857823520624805, 48.368210761094495 ], [ 26.619336785597795, 48.220726223333472 ], [ 26.197450392366932, 48.220881252630349 ], [ 25.945941196402401, 47.987148749374214 ], [ 25.207743361112989, 47.891056423527473 ], [ 24.866317172960578, 47.737525743188314 ], [ 24.402056105250381, 47.981877753280429 ], [ 23.760958286237411, 47.985598456405455 ], [ 23.142236362406805, 48.096341050806949 ], [ 22.710531447040495, 47.882193915389408 ], [ 22.640819939878753, 48.150239569687358 ], [ 22.085608351334855, 48.422264309271789 ], [ 22.28084191253356, 48.825392157580673 ], [ 22.558137648211755, 49.085738023467144 ], [ 22.776418898212626, 49.027395331409622 ], [ 22.518450148211603, 49.476773586619743 ], [ 23.426508416444392, 50.308505764357456 ], [ 23.922757195743262, 50.424881089878753 ], [ 24.029985792748903, 50.705406602575181 ], [ 23.527070753684374, 51.57845408793024 ], [ 24.00507775238421, 51.617443956094462 ], [ 24.553106316839518, 51.888461005249184 ], [ 25.327787713327009, 51.910656032918553 ], [ 26.337958611768556, 51.832288723347929 ], [ 27.454066196408434, 51.592303371784467 ], [ 28.241615024536571, 51.572227077839067 ], [ 28.617612745892249, 51.427713934934843 ], [ 28.992835320763533, 51.602044379271476 ], [ 29.254938185347925, 51.368234361366895 ], [ 30.157363722460897, 51.416138414101468 ], [ 30.555117221811457, 51.319503485715657 ], [ 30.619454380014844, 51.822806098022376 ], [ 30.927549269338982, 52.04235342061439 ], [ 31.785998162571587, 52.101677964885454 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Uruguay", "iso_a2": "UY" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -57.625133429582959, -30.216294854454262 ], [ -56.976025763564735, -30.109686374636127 ], [ -55.973244594940937, -30.883075860316303 ], [ -55.601510179249345, -30.853878676071393 ], [ -54.572451544805119, -31.494511407193748 ], [ -53.787951626182192, -32.047242526987624 ], [ -53.209588995971544, -32.727666110974724 ], [ -53.650543992718099, -33.20200408298183 ], [ -53.373661668498244, -33.768377780900764 ], [ -53.806425950726535, -34.396814874002231 ], [ -54.93586605489773, -34.952646579733624 ], [ -55.674089728403288, -34.752658786764073 ], [ -56.215297003796067, -34.859835707337417 ], [ -57.139685024633103, -34.430456231424245 ], [ -57.81786068381551, -34.462547295877499 ], [ -58.427074144104388, -33.909454441057576 ], [ -58.349611172098875, -33.263188978815407 ], [ -58.132647671121447, -33.040566908502015 ], [ -58.142440355040762, -32.044503676076154 ], [ -57.874937303281882, -31.016556084926208 ], [ -57.625133429582959, -30.216294854454262 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "United States", "iso_a2": "US" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -155.54211, 19.08348 ], [ -155.68817, 18.91619 ], [ -155.93665, 19.05939 ], [ -155.90806, 19.33888 ], [ -156.07347, 19.70294 ], [ -156.02368, 19.81422 ], [ -155.85008, 19.97729 ], [ -155.91907, 20.17395 ], [ -155.86108, 20.26721 ], [ -155.78505, 20.2487 ], [ -155.40214, 20.07975 ], [ -155.22452, 19.99302 ], [ -155.06226, 19.8591 ], [ -154.80741, 19.50871 ], [ -154.83147, 19.45328 ], [ -155.22217, 19.23972 ], [ -155.54211, 19.08348 ] ] ], [ [ [ -156.07926, 20.64397 ], [ -156.41445, 20.57241 ], [ -156.58673, 20.783 ], [ -156.70167, 20.8643 ], [ -156.71055, 20.92676 ], [ -156.61258, 21.01249 ], [ -156.25711, 20.91745 ], [ -155.99566, 20.76404 ], [ -156.07926, 20.64397 ] ] ], [ [ [ -156.75824, 21.17684 ], [ -156.78933, 21.06873 ], [ -157.32521, 21.09777 ], [ -157.25027, 21.21958 ], [ -156.75824, 21.17684 ] ] ], [ [ [ -157.65283, 21.32217 ], [ -157.70703, 21.26442 ], [ -157.7786, 21.27729 ], [ -158.12667, 21.31244 ], [ -158.2538, 21.53919 ], [ -158.29265, 21.57912 ], [ -158.0252, 21.71696 ], [ -157.94161, 21.65272 ], [ -157.65283, 21.32217 ] ] ], [ [ [ -159.34512, 21.982 ], [ -159.46372, 21.88299 ], [ -159.80051, 22.06533 ], [ -159.74877, 22.1382 ], [ -159.5962, 22.23618 ], [ -159.36569, 22.21494 ], [ -159.34512, 21.982 ] ] ], [ [ [ -94.81758, 49.38905 ], [ -94.639999999999873, 48.840000000000117 ], [ -94.32914, 48.670740000000109 ], [ -93.63087, 48.60926 ], [ -92.61, 48.45 ], [ -91.64, 48.14 ], [ -90.83, 48.27 ], [ -89.6, 48.010000000000105 ], [ -89.272917446636683, 48.019808254582841 ], [ -88.378114183286527, 48.30291758889382 ], [ -87.439792623300235, 47.94 ], [ -86.46199083122815, 47.553338019392044 ], [ -85.65236324740323, 47.220218817730512 ], [ -84.876079881514869, 46.900083319682381 ], [ -84.779238247399832, 46.637101955749131 ], [ -84.543748745445669, 46.538684190449231 ], [ -84.6049, 46.4396 ], [ -84.3367, 46.408770000000118 ], [ -84.142119513673293, 46.512225857115737 ], [ -84.091851264161477, 46.27541860613826 ], [ -83.890765347005669, 46.116926988299156 ], [ -83.616130947590506, 46.116926988299156 ], [ -83.469550747394635, 45.994686387712591 ], [ -83.592850714843081, 45.81689362241255 ], [ -82.550924648758183, 45.34751658790546 ], [ -82.337763125431081, 44.44 ], [ -82.13764238150398, 43.571087551440002 ], [ -82.43, 42.980000000000103 ], [ -82.899999999999892, 42.430000000000149 ], [ -83.119999999999891, 42.08 ], [ -83.141999681312569, 41.975681057293002 ], [ -83.029810146806938, 41.832795722006011 ], [ -82.690089280920176, 41.675105088867326 ], [ -82.439277716791622, 41.675105088867326 ], [ -81.277746548167073, 42.209025987306859 ], [ -80.247447679347857, 42.366199856122677 ], [ -78.939362148743697, 42.863611355148123 ], [ -78.92, 42.965 ], [ -79.009999999999877, 43.27 ], [ -79.171673550111876, 43.466339423184309 ], [ -78.720279914042379, 43.62508942318496 ], [ -77.737885097957616, 43.629055589363389 ], [ -76.820034145805579, 43.628784288093755 ], [ -76.5, 44.018458893758606 ], [ -76.375, 44.09631 ], [ -75.31821, 44.816450000000174 ], [ -74.867, 45.000480000000124 ], [ -73.34783, 45.00738 ], [ -71.505059999999872, 45.008200000000102 ], [ -71.405, 45.255000000000138 ], [ -71.08482, 45.305240000000168 ], [ -70.659999999999798, 45.46 ], [ -70.305, 45.915 ], [ -69.99997, 46.69307 ], [ -69.23722, 47.447781 ], [ -68.905, 47.185 ], [ -68.23444, 47.35486 ], [ -67.79046, 47.06636 ], [ -67.79134, 45.702810000000142 ], [ -67.13741, 45.13753 ], [ -66.96466, 44.809700000000163 ], [ -68.03252, 44.3252 ], [ -69.059999999999889, 43.98 ], [ -70.11617, 43.684050000000155 ], [ -70.645475633410996, 43.09023834896405 ], [ -70.81489, 42.8653 ], [ -70.825, 42.335 ], [ -70.495, 41.805 ], [ -70.08, 41.78 ], [ -70.185, 42.145 ], [ -69.88497, 41.922830000000118 ], [ -69.96503, 41.637170000000168 ], [ -70.64, 41.475 ], [ -71.12039, 41.494450000000171 ], [ -71.859999999999843, 41.32 ], [ -72.295, 41.27 ], [ -72.87643, 41.22065 ], [ -73.71, 40.931102351654488 ], [ -72.24126, 41.119480000000152 ], [ -71.944999999999823, 40.93 ], [ -73.345, 40.63 ], [ -73.982, 40.628 ], [ -73.95232, 40.75075 ], [ -74.25671, 40.47351 ], [ -73.96244, 40.42763 ], [ -74.17838, 39.70926 ], [ -74.90604, 38.93954 ], [ -74.98041, 39.1964 ], [ -75.20002, 39.248450000000105 ], [ -75.52805, 39.4985 ], [ -75.32, 38.96 ], [ -75.071834764789799, 38.782032230179283 ], [ -75.05673, 38.40412000000012 ], [ -75.37747, 38.01551 ], [ -75.94023, 37.21689 ], [ -76.03127, 37.2566 ], [ -75.722049999999797, 37.937050000000113 ], [ -76.23287, 38.319215 ], [ -76.35, 39.15 ], [ -76.54272, 38.717615000000109 ], [ -76.32933, 38.08326 ], [ -76.989997931613544, 38.239991766913391 ], [ -76.30162, 37.91794 ], [ -76.25874, 36.966400000000107 ], [ -75.9718, 36.89726 ], [ -75.868039999999837, 36.55125 ], [ -75.72749, 35.550740000000133 ], [ -76.36318, 34.808540000000136 ], [ -77.397634999999894, 34.51201 ], [ -78.05496, 33.92547 ], [ -78.554349999999829, 33.861330000000123 ], [ -79.06067, 33.49395 ], [ -79.20357, 33.15839 ], [ -80.30132, 32.509355 ], [ -80.86498, 32.0333 ], [ -81.33629, 31.44049 ], [ -81.49042, 30.729990000000129 ], [ -81.31371, 30.035520000000105 ], [ -80.98, 29.180000000000121 ], [ -80.535584999999884, 28.47213 ], [ -80.529999999999802, 28.040000000000106 ], [ -80.056539284977561, 26.880000000000138 ], [ -80.08801, 26.205765 ], [ -80.131559999999865, 25.816775 ], [ -80.38103, 25.20616 ], [ -80.679999999999893, 25.08 ], [ -81.17213, 25.201260000000133 ], [ -81.33, 25.64 ], [ -81.709999999999809, 25.87 ], [ -82.24, 26.730000000000132 ], [ -82.70515, 27.49504 ], [ -82.85526, 27.88624 ], [ -82.65, 28.550000000000153 ], [ -82.929999999999893, 29.100000000000136 ], [ -83.70959, 29.93656 ], [ -84.1, 30.090000000000117 ], [ -85.10882, 29.63615 ], [ -85.28784, 29.68612000000013 ], [ -85.7731, 30.152610000000124 ], [ -86.399999999999892, 30.400000000000119 ], [ -87.53036, 30.27433 ], [ -88.41782, 30.3849 ], [ -89.18049, 30.31598 ], [ -89.593831178419777, 30.159994004836847 ], [ -89.41373, 29.89419 ], [ -89.43, 29.48864 ], [ -89.21767, 29.29108 ], [ -89.40823, 29.15961 ], [ -89.77928, 29.307140000000146 ], [ -90.15463, 29.11743 ], [ -90.88022, 29.148535000000123 ], [ -91.62678499999987, 29.677000000000135 ], [ -92.49906, 29.5523 ], [ -93.22637, 29.78375 ], [ -93.84842, 29.71363 ], [ -94.69, 29.480000000000132 ], [ -95.60026, 28.73863 ], [ -96.59404, 28.30748 ], [ -97.139999999999816, 27.83 ], [ -97.37, 27.38 ], [ -97.379999999999882, 26.69 ], [ -97.33, 26.210000000000122 ], [ -97.139999999999816, 25.87 ], [ -97.529999999999887, 25.84 ], [ -98.24, 26.060000000000116 ], [ -99.019999999999882, 26.37 ], [ -99.3, 26.84 ], [ -99.519999999999868, 27.54 ], [ -100.11, 28.110000000000127 ], [ -100.45584, 28.696120000000121 ], [ -100.9576, 29.380710000000136 ], [ -101.6624, 29.77930000000012 ], [ -102.48, 29.76 ], [ -103.11, 28.97 ], [ -103.94, 29.27 ], [ -104.456969999999842, 29.57196 ], [ -104.70575, 30.12173 ], [ -105.03737, 30.64402 ], [ -105.63159, 31.08383000000012 ], [ -106.1429, 31.39995 ], [ -106.507589999999823, 31.75452 ], [ -108.24, 31.754853718166402 ], [ -108.24194, 31.34222 ], [ -109.035, 31.341940000000164 ], [ -111.02361, 31.33472 ], [ -113.30498, 32.03914 ], [ -114.815, 32.52528 ], [ -114.721389999999872, 32.72083 ], [ -115.99135, 32.612390000000147 ], [ -117.127759999999796, 32.53534 ], [ -117.295937691273892, 33.046224615203897 ], [ -117.944, 33.621236431201396 ], [ -118.410602275897503, 33.740909223124504 ], [ -118.519894822799714, 34.027781577575752 ], [ -119.081, 34.078 ], [ -119.438840642016686, 34.348477178284298 ], [ -120.36778, 34.44711 ], [ -120.62286, 34.60855 ], [ -120.74433, 35.156860000000108 ], [ -121.714569999999881, 36.16153 ], [ -122.54747, 37.551760000000115 ], [ -122.51201, 37.783390000000139 ], [ -122.95319, 38.113710000000111 ], [ -123.7272, 38.951660000000118 ], [ -123.86517, 39.766990000000135 ], [ -124.39807, 40.3132 ], [ -124.17886, 41.142020000000116 ], [ -124.2137, 41.999640000000142 ], [ -124.53284, 42.765990000000102 ], [ -124.14214, 43.70838 ], [ -124.020535, 44.615895 ], [ -123.89893, 45.52341 ], [ -124.079635, 46.86475 ], [ -124.39567, 47.72017000000011 ], [ -124.687210083007827, 48.184432983398551 ], [ -124.566101074218764, 48.379714965820398 ], [ -123.12, 48.04 ], [ -122.58736, 47.096 ], [ -122.34, 47.36 ], [ -122.5, 48.18 ], [ -122.84, 49.000000000000114 ], [ -120.0, 49.000000000000114 ], [ -117.03121, 49.000000000000114 ], [ -116.04818, 49.000000000000114 ], [ -113.0, 49.000000000000114 ], [ -110.049999999999841, 49.000000000000114 ], [ -107.05, 49.000000000000114 ], [ -104.04826, 48.99986 ], [ -100.65, 49.000000000000114 ], [ -97.228720000004728, 49.000700000000109 ], [ -95.159069509171957, 49.000000000000114 ], [ -95.15609, 49.38425 ], [ -94.81758, 49.38905 ] ] ], [ [ [ -153.006314053336894, 57.115842190165893 ], [ -154.005090298458128, 56.734676825581062 ], [ -154.516402757770095, 56.992748928446701 ], [ -154.670992804971149, 57.4611957871725 ], [ -153.762779507441479, 57.81657461204378 ], [ -153.228729417921102, 57.968968410872435 ], [ -152.564790615835136, 57.901427313866975 ], [ -152.14114722390633, 57.591058661521998 ], [ -153.006314053336894, 57.115842190165893 ] ] ], [ [ [ -165.579164191733582, 59.90998688418756 ], [ -166.192770148767266, 59.754440822988983 ], [ -166.848337368822001, 59.941406155020957 ], [ -167.455277066090076, 60.213069159579391 ], [ -166.467792121424623, 60.384169826897789 ], [ -165.674429694663672, 60.293606879306253 ], [ -165.579164191733582, 59.90998688418756 ] ] ], [ [ [ -171.731656867539414, 63.78251536727592 ], [ -171.114433560245232, 63.592191067144995 ], [ -170.491112433940714, 63.694975490973519 ], [ -169.682505459653584, 63.431115627691156 ], [ -168.68943946030069, 63.297506212000599 ], [ -168.771940884454608, 63.188598130945451 ], [ -169.529439867205042, 62.976931464277897 ], [ -170.290556200215974, 63.194437567794466 ], [ -170.671385667990876, 63.375821845138972 ], [ -171.55306311753867, 63.317789211675091 ], [ -171.791110602891195, 63.405845852300502 ], [ -171.731656867539414, 63.78251536727592 ] ] ], [ [ [ -155.06779029032424, 71.147776394323699 ], [ -154.344165208941234, 70.696408596470206 ], [ -153.90000627339262, 70.889988511835696 ], [ -152.210006069935304, 70.829992173944845 ], [ -152.270002407826155, 70.600006212029854 ], [ -150.739992438744537, 70.430016588005714 ], [ -149.720003018167517, 70.530010484490447 ], [ -147.613361579357075, 70.214034939241799 ], [ -145.689989800225305, 70.120009670686755 ], [ -144.920010959076421, 69.989991767040493 ], [ -143.589446180425199, 70.152514146598321 ], [ -142.072510348713422, 69.851938178172645 ], [ -140.98598752156073, 69.711998399526379 ], [ -140.985988329004897, 69.711998399526379 ], [ -140.992498752029405, 66.000028591568679 ], [ -140.997769748123147, 60.3063967962986 ], [ -140.012997816153103, 60.276837877027589 ], [ -139.039000420315858, 60.000007229240026 ], [ -138.34089, 59.56211000000016 ], [ -137.4525, 58.905000000000115 ], [ -136.4797200000001, 59.46389 ], [ -135.47583, 59.78778 ], [ -134.945, 59.270560000000131 ], [ -134.27111, 58.86111 ], [ -133.355548882207216, 58.410285142645165 ], [ -132.73042, 57.692890000000119 ], [ -131.707809999999881, 56.55212 ], [ -130.00778, 55.91583 ], [ -129.979994263358293, 55.284997870497222 ], [ -130.536110189467252, 54.802753404349403 ], [ -131.085818237972148, 55.178906155002039 ], [ -131.967211467142306, 55.497775580459063 ], [ -132.250010742859473, 56.369996242897457 ], [ -133.539181084356414, 57.178887437562139 ], [ -134.078062920296048, 58.12306753196691 ], [ -135.038211032279065, 58.187714748763938 ], [ -136.628062309954657, 58.212209377670462 ], [ -137.800006279686045, 58.499995429103791 ], [ -139.86778704141301, 59.537761542389148 ], [ -140.825273817133052, 59.727517401765084 ], [ -142.574443535564455, 60.084446519604995 ], [ -143.958880994879905, 59.999180406323404 ], [ -145.92555681682785, 60.458609727614288 ], [ -147.114373949146682, 60.884656073644635 ], [ -148.224306200127671, 60.672989406977166 ], [ -148.018065558850765, 59.978328965893638 ], [ -148.570822516860886, 59.914172675203304 ], [ -149.727857835875881, 59.705658270905559 ], [ -150.60824337461645, 59.368211168039494 ], [ -151.716392788683322, 59.155821031319988 ], [ -151.859433153267162, 59.744984035879611 ], [ -151.409719001247197, 60.725802720779399 ], [ -150.346941494732533, 61.033587551509868 ], [ -150.621110806256979, 61.284424953854455 ], [ -151.895839199816862, 60.727197984451294 ], [ -152.578329841095609, 60.061657212964292 ], [ -154.019172126257615, 59.350279446034278 ], [ -153.287511359653195, 58.864727688219801 ], [ -154.232492438758499, 58.146373602930538 ], [ -155.307491421510235, 57.727794501366333 ], [ -156.30833472392311, 57.42277435976365 ], [ -156.556097378546326, 56.979984849670643 ], [ -158.117216559867757, 56.46360809999419 ], [ -158.433321296197164, 55.994153550838547 ], [ -159.603327399717443, 55.56668610292013 ], [ -160.289719611634212, 55.643580634170576 ], [ -161.223047655257801, 55.364734605523495 ], [ -162.237766079741078, 55.024186916720112 ], [ -163.069446581046407, 54.689737046927178 ], [ -164.785569221027203, 54.404173082082167 ], [ -164.942226325520039, 54.572224839895341 ], [ -163.848339606765677, 55.039431464246121 ], [ -162.870001390615926, 55.348043117893212 ], [ -161.804174974596037, 55.894986477270436 ], [ -160.563604702781163, 56.008054511125039 ], [ -160.070559862284512, 56.418055324928758 ], [ -158.684442918919444, 57.016675116597867 ], [ -158.461097378553973, 57.21692129172888 ], [ -157.722770352183886, 57.570000515363063 ], [ -157.550274421193592, 58.328326321030232 ], [ -157.041674974577006, 58.918884589261722 ], [ -158.194731208305484, 58.615802313869835 ], [ -158.517217984023091, 58.787781480537319 ], [ -159.058606126928737, 58.424186102931685 ], [ -159.711667040017346, 58.931390285876347 ], [ -159.981288825500201, 58.572549140041644 ], [ -160.355271165996527, 59.071123358793642 ], [ -161.355003425115058, 58.670837714260756 ], [ -161.96889360252635, 58.671664537177378 ], [ -162.054986538724677, 59.26692536074745 ], [ -161.874170702135359, 59.633621324290601 ], [ -162.518059048492091, 59.989723619213919 ], [ -163.818341437820152, 59.798055731843391 ], [ -164.662217577146464, 60.26748444278266 ], [ -165.346387702474829, 60.50749563256241 ], [ -165.350831875651863, 61.073895168697504 ], [ -166.121379157555964, 61.500019029376233 ], [ -165.734451870770528, 62.074996853271813 ], [ -164.919178636717845, 62.63307648380794 ], [ -164.562507901039368, 63.146378485763051 ], [ -163.753332485997021, 63.219448961023772 ], [ -163.067224494457889, 63.059458726648018 ], [ -162.260555386381725, 63.541935736741181 ], [ -161.534449836248598, 63.455816962326764 ], [ -160.772506680321129, 63.766108100023274 ], [ -160.958335130842556, 64.222798570402773 ], [ -161.518068407212212, 64.402787584075327 ], [ -160.777777676414757, 64.788603827566419 ], [ -161.391926235987626, 64.777235012462342 ], [ -162.453050096668846, 64.55944468856822 ], [ -162.757786017894091, 64.338605455168818 ], [ -163.546394212884309, 64.559160468190498 ], [ -164.96082984114517, 64.446945095468863 ], [ -166.425288255864501, 64.68667206487072 ], [ -166.845004238939055, 65.088895575614544 ], [ -168.110560065767174, 65.669997056736747 ], [ -166.705271166021959, 66.088317776139405 ], [ -164.474709642575505, 66.576660061297503 ], [ -163.652511766595666, 66.576660061297503 ], [ -163.788601651036174, 66.077207343196676 ], [ -161.67777442121016, 66.116119696712417 ], [ -162.489714525380009, 66.735565090595117 ], [ -163.719716966791111, 67.116394558370104 ], [ -164.43099138085654, 67.616338202577793 ], [ -165.39028683170676, 68.042772121850248 ], [ -166.764440680996017, 68.358876858179684 ], [ -166.204707404626618, 68.883030910916176 ], [ -164.430810513343488, 68.915535386827742 ], [ -163.168613654614518, 69.371114813912897 ], [ -162.930566169262022, 69.858061835399269 ], [ -161.908897264635527, 70.333329983187639 ], [ -160.934796515933698, 70.447689927849581 ], [ -159.039175788387155, 70.89164215766894 ], [ -158.119722866833968, 70.824721177851046 ], [ -156.580824551398052, 71.35776357694175 ], [ -155.06779029032424, 71.147776394323699 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Uzbekistan", "iso_a2": "UZ" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 66.51860680528867, 37.362784328758792 ], [ 66.546150343700219, 37.974684963526869 ], [ 65.215998976507393, 38.4026950139843 ], [ 64.170223016216767, 38.892406724598246 ], [ 63.518014764261032, 39.363256537425642 ], [ 62.374260288345006, 40.053886216790389 ], [ 61.882714064384693, 41.084856879229406 ], [ 61.547178989513561, 41.266370347654615 ], [ 60.465952996670694, 41.220326646482548 ], [ 60.083340691981675, 41.425146185871405 ], [ 59.976422153569786, 42.223081976890207 ], [ 58.62901085799146, 42.751551011723052 ], [ 57.786529982337079, 42.170552883465518 ], [ 56.932215203687804, 41.826026109375604 ], [ 57.096391229079103, 41.322310085610567 ], [ 55.968191359282912, 41.308641669269363 ], [ 55.928917270741096, 44.995858466159113 ], [ 58.503127068928471, 45.586804307632832 ], [ 58.689989048095896, 45.500013739598629 ], [ 60.239971958258337, 44.784036770194732 ], [ 61.058319940032447, 44.405816962250512 ], [ 62.01330040878625, 43.504476630215649 ], [ 63.185786981056573, 43.650074978198006 ], [ 64.900824415959278, 43.728080552742583 ], [ 66.098012322865088, 42.997660020513095 ], [ 66.023391554635623, 41.994646307943981 ], [ 66.510648634715722, 41.987644151368443 ], [ 66.714047072216516, 41.1684435084615 ], [ 67.98585574735182, 41.13599070898222 ], [ 68.25989586779562, 40.662324530594901 ], [ 68.632482944620023, 40.668680731766813 ], [ 69.07002729683532, 41.38424428971237 ], [ 70.388964878220804, 42.081307684897453 ], [ 70.962314894499144, 42.266154283205495 ], [ 71.259247674448233, 42.167710679689463 ], [ 70.42002241402821, 41.519998277343142 ], [ 71.157858514291604, 41.143587144529121 ], [ 71.870114780570475, 41.392900092121266 ], [ 73.05541710804917, 40.866033026689465 ], [ 71.77487511585656, 40.145844428053778 ], [ 71.01419803252017, 40.244365546218233 ], [ 70.601406691372688, 40.218527330072291 ], [ 70.458159621059622, 40.496494859370287 ], [ 70.666622348925046, 40.960213324541414 ], [ 69.329494663372827, 40.727824408524853 ], [ 69.011632928345506, 40.086158148756667 ], [ 68.536416456989429, 39.533452867178937 ], [ 67.701428664017357, 39.580478420564532 ], [ 67.442219679641312, 39.140143541005486 ], [ 68.176025018185925, 38.901553453113905 ], [ 68.392032505165957, 38.157025254868742 ], [ 67.829999627559516, 37.144994004864685 ], [ 67.075782098259623, 37.356143907209287 ], [ 66.51860680528867, 37.362784328758792 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Venezuela", "iso_a2": "VE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -71.331583624950298, 11.776284084515808 ], [ -71.360005662710819, 11.539993597861212 ], [ -71.947049933546509, 11.423282375530022 ], [ -71.620868292920193, 10.969459947142795 ], [ -71.633063930941091, 10.446494452349029 ], [ -72.074173956984509, 9.865651353388373 ], [ -71.695644090446535, 9.072263088411248 ], [ -71.264559292267734, 9.137194525585983 ], [ -71.03999935574339, 9.859992784052409 ], [ -71.350083787710787, 10.211935126176215 ], [ -71.400623338492238, 10.968969021036015 ], [ -70.155298834906517, 11.375481675660041 ], [ -70.29384334988103, 11.846822414594214 ], [ -69.943244594996827, 12.162307033736099 ], [ -69.584300096297468, 11.459610907431212 ], [ -68.882999233664449, 11.443384507691563 ], [ -68.23327145045873, 10.885744126829946 ], [ -68.194126552997631, 10.554653225135922 ], [ -67.296248541926332, 10.54586823164631 ], [ -66.227864142507997, 10.648626817258688 ], [ -65.655237596281751, 10.200798855017323 ], [ -64.89045223657817, 10.077214667191299 ], [ -64.329478725833738, 10.38959870039568 ], [ -64.318006557864948, 10.64141795495398 ], [ -63.079322475828732, 10.7017243514386 ], [ -61.880946010980196, 10.715625311725104 ], [ -62.730118984616411, 10.420268662960906 ], [ -62.388511928950976, 9.94820445397464 ], [ -61.58876746280194, 9.873066921422264 ], [ -60.830596686431718, 9.381339829948942 ], [ -60.671252407459733, 8.580174261911878 ], [ -60.15009558779618, 8.602756862823426 ], [ -59.758284878159195, 8.367034816924047 ], [ -60.5505879380582, 7.779602972846178 ], [ -60.637972785063766, 7.414999904810855 ], [ -60.295668097562398, 7.043911444522919 ], [ -60.543999192940987, 6.856584377464883 ], [ -61.159336310456482, 6.696077378766319 ], [ -61.139415045807951, 6.234296779806144 ], [ -61.410302903881956, 5.959068101419618 ], [ -60.733574184803722, 5.200277207861901 ], [ -60.601179165271944, 4.91809804933213 ], [ -60.966893276601539, 4.536467596856639 ], [ -62.085429653559132, 4.162123521334308 ], [ -62.804533047116706, 4.006965033377952 ], [ -63.093197597899106, 3.770571193858785 ], [ -63.888342861574159, 4.020530096854571 ], [ -64.628659430587547, 4.14848094320925 ], [ -64.816064012294021, 4.056445217297423 ], [ -64.368494432214106, 3.797210394705246 ], [ -64.408827887617917, 3.126786200366624 ], [ -64.269999152265797, 2.497005520025567 ], [ -63.422867397705119, 2.411067613124175 ], [ -63.368788011311665, 2.200899562993129 ], [ -64.083085496666087, 1.91636912679408 ], [ -64.199305792890513, 1.49285492594602 ], [ -64.611011928959869, 1.328730576987042 ], [ -65.354713304288367, 1.0952822941085 ], [ -65.548267381437569, 0.78925446207603 ], [ -66.325765143484958, 0.724452215982012 ], [ -66.87632585312258, 1.253360500489336 ], [ -67.18129431829307, 2.250638129074062 ], [ -67.447092047786313, 2.600280869960869 ], [ -67.809938117123707, 2.820655015469569 ], [ -67.303173183853445, 3.31845408773718 ], [ -67.337563849543685, 3.542342230641722 ], [ -67.621835903581285, 3.839481716319995 ], [ -67.823012254493548, 4.503937282728899 ], [ -67.744696621355217, 5.221128648291668 ], [ -67.521531948502755, 5.556870428891969 ], [ -67.341439581965574, 6.095468044454023 ], [ -67.695087246355016, 6.267318020040647 ], [ -68.26505245631823, 6.153268133972475 ], [ -68.985318569602356, 6.206804917826858 ], [ -69.389479946557117, 6.099860541198836 ], [ -70.093312954372422, 6.96037649172311 ], [ -70.674233567981517, 7.087784735538719 ], [ -71.960175747348643, 6.991614895043539 ], [ -72.198352423781884, 7.340430813013683 ], [ -72.444487270788073, 7.423784898300482 ], [ -72.479678921178845, 7.632506008327354 ], [ -72.360900641555972, 8.002638454617895 ], [ -72.439862230097958, 8.405275376820029 ], [ -72.660494757768106, 8.625287787302682 ], [ -72.788729824500393, 9.085027167187334 ], [ -73.304951544880055, 9.151999823437606 ], [ -73.027604132769568, 9.736770331252444 ], [ -72.905286017534706, 10.450344346554772 ], [ -72.614657762325209, 10.821975409381778 ], [ -72.227575446242938, 11.108702093953241 ], [ -71.973921678338286, 11.60867157637712 ], [ -71.331583624950298, 11.776284084515808 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Vietnam", "iso_a2": "VN" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 108.050180291782937, 21.552379869060118 ], [ 106.715067987090094, 20.696850694252021 ], [ 105.881682163519031, 19.752050482659698 ], [ 105.662005649846307, 19.05816518806057 ], [ 106.42681684776602, 18.004120998603227 ], [ 107.361953566519745, 16.697456569887052 ], [ 108.269495070429628, 16.079742336486149 ], [ 108.877106561317476, 15.27669057867044 ], [ 109.335269810017223, 13.426028347217724 ], [ 109.200135939573983, 11.666859239137764 ], [ 108.366129998815452, 11.008320624226272 ], [ 107.220928582795239, 10.364483954301832 ], [ 106.405112746203429, 9.530839748569321 ], [ 105.15826378786511, 8.599759629750494 ], [ 104.795185174582386, 9.241038316276502 ], [ 105.076201613385621, 9.918490505406808 ], [ 104.334334751403475, 10.48654368737523 ], [ 105.199914992292349, 10.889309800658097 ], [ 106.249670037869464, 10.961811835163587 ], [ 105.81052371625313, 11.567614650921229 ], [ 107.49140302941089, 12.337205918827948 ], [ 107.61454796756243, 13.535530707244206 ], [ 107.382727492301086, 14.202440904186972 ], [ 107.564525181103903, 15.202173163305559 ], [ 107.312705926545604, 15.908538316303179 ], [ 106.556007928495688, 16.604283962464805 ], [ 105.925762160264028, 17.485315456608959 ], [ 105.094598423281525, 18.66697459561108 ], [ 103.896532017026715, 19.265180975821806 ], [ 104.183387892678937, 19.624668077060221 ], [ 104.822573683697101, 19.886641750563882 ], [ 104.435000441508052, 20.758733221921531 ], [ 103.203861118586445, 20.766562201413748 ], [ 102.754896274834664, 21.675137233969465 ], [ 102.170435825613581, 22.464753119389304 ], [ 102.706992222100098, 22.708795070887675 ], [ 103.50451460166056, 22.703756618739209 ], [ 104.476858351664475, 22.819150092046968 ], [ 105.329209425886631, 23.352063300056912 ], [ 105.811247186305224, 22.976892401617903 ], [ 106.725403273548466, 22.794267889898421 ], [ 106.567273390735323, 22.218204860924772 ], [ 107.043420037872636, 21.811898912029914 ], [ 108.050180291782937, 21.552379869060118 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Vanuatu", "iso_a2": "VU" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 167.844876743845106, -16.466333103097156 ], [ 167.515181105822904, -16.59784962327997 ], [ 167.18000776597782, -16.15999521247096 ], [ 167.216801385769628, -15.891846205308454 ], [ 167.844876743845106, -16.466333103097156 ] ] ], [ [ [ 167.107712437201513, -14.933920179913954 ], [ 167.270028111030257, -15.740020847234874 ], [ 167.001207310247963, -15.614602146062495 ], [ 166.793157993840879, -15.668810723536723 ], [ 166.649859247095577, -15.392703545801197 ], [ 166.629136997746485, -14.626497084209603 ], [ 167.107712437201513, -14.933920179913954 ] ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Yemen", "iso_a2": "YE" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 53.108572625547509, 16.651051133688952 ], [ 52.385205926325881, 16.382411200419654 ], [ 52.19172936382509, 15.93843313238402 ], [ 52.1681649107, 15.597420355689948 ], [ 51.172515089732485, 15.175249742081492 ], [ 49.57457645040315, 14.708766587782748 ], [ 48.679230584514158, 14.00320241948566 ], [ 48.238947381387419, 13.948089504446372 ], [ 47.938914015500785, 14.007233181204427 ], [ 47.354453566279716, 13.592219753468383 ], [ 46.717076450391744, 13.399699204965019 ], [ 45.877592807810267, 13.347764390511685 ], [ 45.625050083199881, 13.290946153206763 ], [ 45.406458774605255, 13.026905422411433 ], [ 45.144355910020863, 12.953938300015309 ], [ 44.989533318874415, 12.69958690027471 ], [ 44.494576450382851, 12.721652736863348 ], [ 44.175112745954493, 12.585950425664876 ], [ 43.482958611837127, 12.636800035040084 ], [ 43.222871128112132, 13.220950425667425 ], [ 43.25144819516953, 13.767583726450852 ], [ 43.087943963398061, 14.062630316621309 ], [ 42.892245314308724, 14.802249253798749 ], [ 42.60487267433362, 15.213335272680595 ], [ 42.805015496600049, 15.261962795467255 ], [ 42.702437778500659, 15.718885809791999 ], [ 42.823670688657415, 15.911742255105267 ], [ 42.77933230975097, 16.347891343648683 ], [ 43.218375278502748, 16.66688996018641 ], [ 43.115797560403358, 17.088440456607373 ], [ 43.380794305196105, 17.579986680567671 ], [ 43.791518589051918, 17.319976711491108 ], [ 44.062613152855079, 17.410358791569593 ], [ 45.216651238797191, 17.433328965723334 ], [ 45.399999220568759, 17.333335069238558 ], [ 46.366658563020536, 17.233315334537636 ], [ 46.749994337761649, 17.283338120996177 ], [ 47.000004917189756, 16.949999294497445 ], [ 47.466694777217633, 17.116681626854884 ], [ 48.183343540241339, 18.166669216377315 ], [ 49.116671583864871, 18.616667588774945 ], [ 52.000009800022241, 19.000003363516058 ], [ 52.782184279192052, 17.349742336491232 ], [ 53.108572625547509, 16.651051133688952 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "South Africa", "iso_a2": "ZA" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 31.521001417778876, -29.257386976846256 ], [ 31.325561150851001, -29.401977634398914 ], [ 30.901762729625347, -29.909956963828037 ], [ 30.622813348113819, -30.423775730106129 ], [ 30.055716180142781, -31.140269463832958 ], [ 28.925552605919538, -32.172041110972501 ], [ 28.2197558936771, -32.771952813448856 ], [ 27.464608188595975, -33.226963799778801 ], [ 26.419452345492825, -33.614950453426189 ], [ 25.909664340933489, -33.667040297176399 ], [ 25.780628289500697, -33.944646091448341 ], [ 25.172861769315972, -33.796851495093584 ], [ 24.677853224392123, -33.987175795224552 ], [ 23.594043409934642, -33.794474379208154 ], [ 22.988188917744736, -33.916430759416983 ], [ 22.574157342222236, -33.864082533505311 ], [ 21.542799106541025, -34.258838799782936 ], [ 20.689052768647002, -34.417175388325234 ], [ 20.071261020597632, -34.795136814107991 ], [ 19.616405063564571, -34.819166355123713 ], [ 19.193278435958717, -34.462598972309792 ], [ 18.85531456876987, -34.444305515278465 ], [ 18.42464318204938, -33.99787281670897 ], [ 18.377410922934615, -34.136520684548067 ], [ 18.24449913907992, -33.86775156019803 ], [ 18.250080193767445, -33.281430759414441 ], [ 17.925190463948439, -32.611290785453427 ], [ 18.247909783611192, -32.42913136162457 ], [ 18.221761508871481, -31.661632989225669 ], [ 17.566917758868868, -30.725721123987547 ], [ 17.064416131262703, -29.878641045859162 ], [ 17.062917514726223, -29.875953871379984 ], [ 16.344976840895242, -28.576705010697701 ], [ 16.824017368240902, -28.08216155366447 ], [ 17.218928663815404, -28.355943291946812 ], [ 17.387497185951503, -28.783514092729781 ], [ 17.83615197110953, -28.856377862261319 ], [ 18.464899122804752, -29.045461928017279 ], [ 19.002127312911085, -28.972443129188868 ], [ 19.894734327888614, -28.461104831660776 ], [ 19.895767856534434, -24.767790215760591 ], [ 20.165725538827189, -24.917961928000771 ], [ 20.758609246511838, -25.86813648855145 ], [ 20.66647016773544, -26.477453301704923 ], [ 20.889609002371738, -26.828542982695915 ], [ 21.605896030369394, -26.726533705351756 ], [ 22.105968865657868, -26.280256036079138 ], [ 22.579531691180591, -25.979447523708146 ], [ 22.824271274514899, -25.500458672794771 ], [ 23.312096795350186, -25.26868987396572 ], [ 23.73356977712271, -25.390129489851617 ], [ 24.211266717228796, -25.670215752873574 ], [ 25.025170525825786, -25.719670098576898 ], [ 25.664666375437719, -25.486816094669713 ], [ 25.76584882986521, -25.174845472923678 ], [ 25.941652052522159, -24.696373386333221 ], [ 26.485753208123299, -24.616326592713104 ], [ 26.786406691197413, -24.240690606383485 ], [ 27.119409620886245, -23.574323011979775 ], [ 28.017235955525251, -22.827753594659079 ], [ 29.43218834810904, -22.091312758067588 ], [ 29.839036899542972, -22.102216485281176 ], [ 30.322883335091774, -22.271611830333935 ], [ 30.65986535006709, -22.151567478119915 ], [ 31.191409132621288, -22.251509698172399 ], [ 31.670397983534656, -23.658969008073864 ], [ 31.930588820124253, -24.369416599222539 ], [ 31.752408481581881, -25.484283949487413 ], [ 31.83777794772806, -25.843331801051349 ], [ 31.333157586397903, -25.66019052500895 ], [ 31.044079624157149, -25.731452325139443 ], [ 30.949666782359913, -26.022649021104151 ], [ 30.67660851412964, -26.398078301704608 ], [ 30.68596194837448, -26.743845310169533 ], [ 31.282773064913329, -27.285879408478998 ], [ 31.86806033705108, -27.177927341421277 ], [ 32.071665480281069, -26.733820082304909 ], [ 32.830120477028885, -26.742191664336197 ], [ 32.580264926897684, -27.470157566031816 ], [ 32.462132602678452, -28.301011244420557 ], [ 32.203388706193039, -28.752404880490069 ], [ 31.521001417778876, -29.257386976846256 ] ], [ [ 28.978262566857243, -28.955596612261711 ], [ 28.541700066855498, -28.647501722937569 ], [ 28.074338413207784, -28.851468601193588 ], [ 27.532511020627478, -29.24271087007536 ], [ 26.999261915807637, -29.875953871379984 ], [ 27.749397006956485, -30.645105889612225 ], [ 28.107204624145425, -30.545732110314951 ], [ 28.29106937023991, -30.2262167294543 ], [ 28.848399692507741, -30.070050551068256 ], [ 29.018415154748027, -29.743765557577369 ], [ 29.325166456832591, -29.257386976846256 ], [ 28.978262566857243, -28.955596612261711 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Zambia", "iso_a2": "ZM" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 32.759375441221323, -9.23059905358906 ], [ 33.231387973775298, -9.676721693564801 ], [ 33.485687697083591, -10.525558770391115 ], [ 33.315310499817286, -10.796549981329697 ], [ 33.114289178201915, -11.607198174692314 ], [ 33.306422153463075, -12.435778090060218 ], [ 32.991764357237884, -12.783870537978274 ], [ 32.688165317523129, -13.712857761289277 ], [ 33.214024692525214, -13.971860039936153 ], [ 30.17948123548183, -14.796099134991529 ], [ 30.27425581230511, -15.507786960515213 ], [ 29.516834344203147, -15.644677829656388 ], [ 28.947463413211267, -16.04305144619444 ], [ 28.825868768028499, -16.389748630440614 ], [ 28.467906121542683, -16.468400160388846 ], [ 27.59824344250276, -17.290830580314008 ], [ 27.044427117630732, -17.938026218337434 ], [ 26.70677330903564, -17.961228936436484 ], [ 26.381935255648926, -17.846042168857899 ], [ 25.264225701608012, -17.736539808831417 ], [ 25.084443393664571, -17.661815687737374 ], [ 25.076950310982259, -17.578823337476621 ], [ 24.682349074001507, -17.353410739819473 ], [ 24.033861525170778, -17.295843194246324 ], [ 23.215048455506064, -17.523116143465984 ], [ 22.562478468524262, -16.898451429921813 ], [ 21.887842644953874, -16.08031015387688 ], [ 21.933886346125917, -12.898437188369359 ], [ 24.016136508894675, -12.911046237848574 ], [ 23.930922072045377, -12.565847670138856 ], [ 24.079905226342845, -12.191296888887365 ], [ 23.904153680118185, -11.722281589406322 ], [ 24.017893507592589, -11.23729827234709 ], [ 23.912215203555718, -10.926826267137514 ], [ 24.257155389103989, -10.951992689663657 ], [ 24.314516228947952, -11.26282642989927 ], [ 24.783169793402951, -11.238693536018964 ], [ 25.418118116973204, -11.330935967659961 ], [ 25.752309604604733, -11.784965101776358 ], [ 26.553087599399618, -11.924439792532127 ], [ 27.164419793412463, -11.608748467661075 ], [ 27.388798862423783, -12.132747491100666 ], [ 28.155108676879987, -12.272480564017897 ], [ 28.523561639121027, -12.698604424696683 ], [ 28.934285922976837, -13.248958428605135 ], [ 29.699613885219492, -13.257226657771831 ], [ 29.61600141777123, -12.178894545137311 ], [ 29.34154788586909, -12.360743910372413 ], [ 28.642417433392353, -11.971568698782315 ], [ 28.372253045370428, -11.793646742401393 ], [ 28.49606977714177, -10.789883721564046 ], [ 28.673681674928929, -9.605924981324932 ], [ 28.449871046672826, -9.164918308146085 ], [ 28.734866570762502, -8.526559340044578 ], [ 29.00291222506047, -8.407031752153472 ], [ 30.346086053190817, -8.238256524288218 ], [ 30.740015496551791, -8.340007419470915 ], [ 31.157751336950049, -8.594578747317366 ], [ 31.556348097466497, -8.762048841998642 ], [ 32.19186486179197, -8.930358981973278 ], [ 32.759375441221323, -9.23059905358906 ] ] ] } }, +{ "type": "Feature", "properties": { "name": "Zimbabwe", "iso_a2": "ZW" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 31.191409132621288, -22.251509698172399 ], [ 30.65986535006709, -22.151567478119915 ], [ 30.322883335091774, -22.271611830333935 ], [ 29.839036899542972, -22.102216485281176 ], [ 29.43218834810904, -22.091312758067588 ], [ 28.794656202924216, -21.639454034107452 ], [ 28.021370070108617, -21.485975030200585 ], [ 27.727227817503259, -20.851801853114715 ], [ 27.724747348753255, -20.499058526290391 ], [ 27.296504754350508, -20.391519870690999 ], [ 26.164790887158485, -19.293085625894939 ], [ 25.850391473094732, -18.714412937090536 ], [ 25.649163445750162, -18.536025892818991 ], [ 25.264225701608012, -17.736539808831417 ], [ 26.381935255648926, -17.846042168857899 ], [ 26.70677330903564, -17.961228936436484 ], [ 27.044427117630732, -17.938026218337434 ], [ 27.59824344250276, -17.290830580314008 ], [ 28.467906121542683, -16.468400160388846 ], [ 28.825868768028499, -16.389748630440614 ], [ 28.947463413211267, -16.04305144619444 ], [ 29.516834344203147, -15.644677829656388 ], [ 30.27425581230511, -15.507786960515213 ], [ 30.338954705534544, -15.880839125230246 ], [ 31.17306399915768, -15.860943698797874 ], [ 31.636498243951195, -16.071990248277885 ], [ 31.852040643040599, -16.319417006091378 ], [ 32.328238966610229, -16.392074069893752 ], [ 32.847638787575846, -16.713398125884616 ], [ 32.849860874164392, -17.979057305577179 ], [ 32.654885695127149, -18.672089939043495 ], [ 32.611994256324891, -19.419382826416275 ], [ 32.772707960752626, -19.715592136313298 ], [ 32.65974327976258, -20.304290052982317 ], [ 32.508693068173443, -20.395292250248307 ], [ 32.244988234188014, -21.116488539313693 ], [ 31.191409132621288, -22.251509698172399 ] ] ] } } +] +} diff --git a/data/fells_loop.gpx b/data/fells_loop.gpx new file mode 100755 index 0000000..d8a1df5 --- /dev/null +++ b/data/fells_loop.gpx @@ -0,0 +1,1077 @@ + + + + + + 44.586548 + + 5066 + + Crossing + + + + 57.607200 + + 5067 + + Dot + + + + 44.826904 + + 5096 + + Dot + + + + 50.594727 + + 5142 + + Dot + + + + 127.711200 + + 5156 + + Dot + + + + 96.926400 + + 5224 + + Dot + + + + 82.600800 + + 5229 + + Dot + + + + 82.905600 + + 5237 + + Dot + + + + 66.696655 + + 5254 + + Dot + + + + 74.627442 + + 5258 + + Dot + + + + 65.254761 + + 5264 + + Dot + + + + 77.419200 + + 526708 + + Dot + + + + 74.676000 + + 526750 + + Dot + + + + 78.713135 + + 527614 + + Dot + + + + 78.713135 + + 527631 + + Dot + + + + 68.275200 + + 5278 + + Dot + + + + 64.008000 + + 5289 + + Dot + + + + 52.997925 + + 5374FIRE + + Dot + + + + 56.388000 + + 5376 + + Dot + + + + 56.388000 + + 6006 + + Dot + + + + 46.028564 + + 6006BLUE + + Dot + + + + 37.616943 + + 6014MEADOW + + Dot + + + + 56.388000 + + 6029 + + Dot + + + + 50.292000 + + 6053 + + Dot + + + + 25.603200 + + 6066 + + Dot + + + + 34.442400 + + 6067 + + Dot + + + + 30.480000 + + 6071 + + Dot + + + + 15.240000 + + 6073 + + Dot + + + + 37.795200 + + 6084 + + Dot + + + + 64.008000 + + 6130 + + Dot + + + + 64.008000 + + 6131 + + Dot + + + + 62.788800 + + 6153 + + Dot + + + + 55.473600 + + 6171 + + Dot + + + + 62.484000 + + 6176 + + Dot + + + + 62.179200 + + 6177 + + Dot + + + + 69.799200 + + 6272 + + Dot + + + + 73.152000 + + 6272 + + Dot + + + + 70.104000 + + 6278 + + Dot + + + + 57.564209 + + 6280 + + Dot + + + + 66.696655 + + 6283 + + Dot + + + + 72.945191 + + 6289 + + Dot + + + + 72.847200 + + 6297 + + Dot + + + + 53.644800 + + 6328 + + Dot + + + + 43.891200 + + 6354 + + Dot + + + + 48.768000 + + 635722 + + Dot + + + + 49.072800 + + 635783 + + Dot + + + + 62.484000 + + 6373 + + Dot + + + + 3.962400 + + 6634 + + Dot + + + + 13.411200 + + 6979 + + Dot + + + + 34.012085 + + 6997 + + Dot + + + + 87.782400 + + BEAR HILL + BEAR HILL TOWER + + Tall Tower + + + + 23.469600 + + BELLEVUE + BELLEVUE + + Parking Area + + + + 43.384766 + + 6016 + + Trailhead + + + + 89.916000 + + 5236BRIDGE + + Bridge + + + + 55.473600 + + 5376BRIDGE + + Bridge + + + + 52.730400 + + 6181CROSS + + Crossing + + + + 45.110400 + + 6042CROSS + + Crossing + + + + DARKHOLLPO + + Fishing Area + + + 56.083200 + + 6121DEAD + + Danger Area + + + + 117.043200 + + 5179DEAD + + Danger Area + + + + 69.494400 + + 5299DEAD + + Danger Area + + + + 56.997600 + + 5376DEAD + + Danger Area + + + + 46.939200 + + 6353DEAD + + Danger Area + + + + 61.264800 + + 6155DEAD + + Danger Area + + + + 110.947200 + + GATE14 + + Truck Stop + + + + 77.724000 + + GATE16 + + Truck Stop + + + + 65.836800 + + GATE17 + + Truck Stop + + + + 57.302400 + + GATE19 + + Truck Stop + + + + 49.377600 + + GATE21 + + Truck Stop + + + + 81.076800 + + GATE24 + + Truck Stop + + + + 21.515015 + + GATE5 + + Truck Stop + + + + 26.561890 + + GATE6 + + Trailhead + + + + 32.004000 + + 6077LOGS + + Amusement Park + + + + 119.809082 + + 5148NANEPA + + Trailhead + + + + 73.761600 + + 5267OBSTAC + + Amusement Park + + + + 45.307495 + + PANTHRCAVE + + Tunnel + + + + 77.992066 + + 5252PURPLE + + Summit + + + + 67.970400 + + 5287WATER + + Swimming Area + + + + 81.076800 + + 5239ROAD + + Truck Stop + + + + 67.360800 + + 5278ROAD + + Truck Stop + + + + 53.949600 + + 5058ROAD + ROAD CROSSING + + Dot + + + + 69.799200 + + SHEEPFOLD + + Parking Area + + + + 64.008000 + + SOAPBOX + + Cemetery + + + + 64.533692 + + 5376STREAM + + Bridge + + + + 61.649902 + + 5144SUMMIT + + Summit + + + + 67.360800 + + 5150TANK + WATER TANK + + Museum + + + + BELLEVUE + + 1 + + 23.469600 + + BELLEVUE + BELLEVUE + + Parking Area + + + + 26.561890 + + GATE6 + + Trailhead + + + + 45.307495 + + PANTHRCAVE + + Tunnel + + + + 37.616943 + + 6014MEADOW + + Dot + + + + 56.388000 + + 6006 + + Dot + + + + 46.028564 + + 6006BLUE + + Dot + + + + 44.826904 + + 5096 + + Dot + + + + 44.586548 + + 5066 + + Crossing + + + + 57.607200 + + 5067 + + Dot + + + + 53.949600 + + 5058ROAD + ROAD CROSSING + + Dot + + + + 67.360800 + + 5150TANK + WATER TANK + + Museum + + + + 50.594727 + + 5142 + + Dot + + + + 61.649902 + + 5144SUMMIT + + Summit + + + + 127.711200 + + 5156 + + Dot + + + + 119.809082 + + 5148NANEPA + + Trailhead + + + + 74.627442 + + 5258 + + Dot + + + + 77.992066 + + 5252PURPLE + + Summit + + + + 78.713135 + + 527631 + + Dot + + + + 78.713135 + + 527614 + + Dot + + + + 73.761600 + + 5267OBSTAC + + Amusement Park + + + + 68.275200 + + 5278 + + Dot + + + + 64.008000 + + 5289 + + Dot + + + + 52.997925 + + 5374FIRE + + Dot + + + + 56.388000 + + 5376 + + Dot + + + + 64.533692 + + 5376STREAM + + Bridge + + + + 53.644800 + + 6328 + + Dot + + + + 48.768000 + + 635722 + + Dot + + + + 49.072800 + + 635783 + + Dot + + + + 62.484000 + + 6373 + + Dot + + + + 87.782400 + + BEAR HILL + BEAR HILL TOWER + + Tall Tower + + + + 72.945191 + + 6289 + + Dot + + + + 72.847200 + + 6297 + + Dot + + + + 66.696655 + + 6283 + + Dot + + + + 57.564209 + + 6280 + + Dot + + + + 62.179200 + + 6177 + + Dot + + + + 62.484000 + + 6176 + + Dot + + + + 62.788800 + + 6153 + + Dot + + + + 55.473600 + + 6171 + + Dot + + + + 64.008000 + + 6131 + + Dot + + + + 64.008000 + + 6130 + + Dot + + + + 56.388000 + + 6029 + + Dot + + + + 56.388000 + + 6006 + + Dot + + + + 37.616943 + + 6014MEADOW + + Dot + + + + 45.307495 + + PANTHRCAVE + + Tunnel + + + + 26.561890 + + GATE6 + + Trailhead + + + + 23.469600 + + BELLEVUE + BELLEVUE + + Parking Area + + + + \ No newline at end of file diff --git a/data/geojson/photovoltaic.json b/data/geojson/photovoltaic.json new file mode 100755 index 0000000..d2b35e7 --- /dev/null +++ b/data/geojson/photovoltaic.json @@ -0,0 +1,343 @@ +{ + "type": "FeatureCollection", + "totalFeatures": 1046, + "features": [ + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f67", + "geometry": { + "type": "Point", + "coordinates": [ + 16.349805849210597, + 48.25017142860945 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "LEISTUNG": 5.7, + "icon": 2, + "popup": "test" + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f68", + "geometry": { + "type": "Point", + "coordinates": [ + 16.31467754920881, + 48.15703986239329 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3559, + "BEZ": 1230, + "BAUJAHR": 2012, + "PVID": "PV842", + "LEISTUNG": 6.24, + "SE_ANNO_CAD_DATA": null + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f69", + "geometry": { + "type": "Point", + "coordinates": [ + 16.308305377224514, + 48.22034516003518 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3560, + "BEZ": 1160, + "BAUJAHR": 2013, + "PVID": "PV844", + "LEISTUNG": 4.29, + "SE_ANNO_CAD_DATA": null, + "author": 5 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6a", + "geometry": { + "type": "Point", + "coordinates": [ + 16.33275095625591, + 48.16179398555423 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3561, + "BEZ": 1120, + "BAUJAHR": 2013, + "PVID": "PV845", + "LEISTUNG": 3.9, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6b", + "geometry": { + "type": "Point", + "coordinates": [ + 16.504359669913917, + 48.24089953373162 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3562, + "BEZ": 1220, + "BAUJAHR": 2013, + "PVID": "PV846", + "LEISTUNG": 3.36, + "SE_ANNO_CAD_DATA": null, + "author": 1 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6c", + "geometry": { + "type": "Point", + "coordinates": [ + 16.40266752923873, + 48.20312696321299 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3563, + "BEZ": 1020, + "BAUJAHR": 2013, + "PVID": "PV847", + "LEISTUNG": 7.99, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6d", + "geometry": { + "type": "Point", + "coordinates": [ + 16.511705685818, + 48.208327900902106 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3564, + "BEZ": 1220, + "BAUJAHR": 2012, + "PVID": "PV849", + "LEISTUNG": 3.12, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6e", + "geometry": { + "type": "Point", + "coordinates": [ + 16.421723096267158, + 48.25005414108675 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3565, + "BEZ": 1210, + "BAUJAHR": 2013, + "PVID": "PV850", + "LEISTUNG": 2.2, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6f", + "geometry": { + "type": "Point", + "coordinates": [ + 16.277447919342887, + 48.19733447095196 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3566, + "BEZ": 1140, + "BAUJAHR": 2013, + "PVID": "PV852", + "LEISTUNG": 8.33, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f69", + "geometry": { + "type": "Point", + "coordinates": [ + 16.308305377224514, + 48.22034516003518 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3560, + "BEZ": 1160, + "BAUJAHR": 2013, + "PVID": "PV844", + "LEISTUNG": 4.29, + "SE_ANNO_CAD_DATA": null, + "author": 5 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-52fe0c36_17dec082096_4f6a", + "geometry": { + "type": "Point", + "coordinates": [ + 16.33275095625591, + -48.16179398555423 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3561, + "BEZ": 1120, + "BAUJAHR": 2013, + "PVID": "PV845", + "LEISTUNG": 3.9, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-ee", + "geometry": { + "type": "Point", + "coordinates": [ + 16.504359669913917, + -48.24089953373162 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3562, + "BEZ": 1220, + "BAUJAHR": 2013, + "PVID": "PV846", + "LEISTUNG": 3.36, + "SE_ANNO_CAD_DATA": null, + "author": 1 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-ff", + "geometry": { + "type": "Point", + "coordinates": [ + 16.40266752923873, + -48.20312696321299 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3563, + "BEZ": 1020, + "BAUJAHR": 2013, + "PVID": "PV847", + "LEISTUNG": 7.99, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-dd", + "geometry": { + "type": "Point", + "coordinates": [ + 16.511705685818, + -48.208327900902106 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3564, + "BEZ": 1220, + "BAUJAHR": 2012, + "PVID": "PV849", + "LEISTUNG": 3.12, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-a", + "geometry": { + "type": "Point", + "coordinates": [ + -16.421723096267158, + 48.25005414108675 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3565, + "BEZ": 1210, + "BAUJAHR": 2013, + "PVID": "PV850", + "LEISTUNG": 2.2, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + }, + { + "type": "Feature", + "id": "ENGEFPVANLOGD.fid-d", + "geometry": { + "type": "Point", + "coordinates": [ + -16.277447919342887, + 48.19733447095196 + ] + }, + "geometry_name": "SHAPE", + "properties": { + "OBJECTID": 3566, + "BEZ": 1140, + "BAUJAHR": 2013, + "PVID": "PV852", + "LEISTUNG": 8.33, + "SE_ANNO_CAD_DATA": null, + "author": 2 + } + } + ], + "crs": { + "type": "name", + "properties": { + "name": "urn:ogc:def:crs:EPSG::4326" + } + } +} diff --git a/data/geojson/travel.json b/data/geojson/travel.json new file mode 100755 index 0000000..398b8aa --- /dev/null +++ b/data/geojson/travel.json @@ -0,0 +1,3 @@ +{ + "name": "raphael" +} diff --git a/data/icons/frog.svg b/data/icons/frog.svg new file mode 100755 index 0000000..0d299c5 --- /dev/null +++ b/data/icons/frog.svg @@ -0,0 +1,172 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/logo-slim.svg b/data/icons/logo-slim.svg new file mode 100755 index 0000000..36f0cf9 --- /dev/null +++ b/data/icons/logo-slim.svg @@ -0,0 +1,177 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/icons/markerSolid.svg b/data/icons/markerSolid.svg new file mode 100755 index 0000000..00accfe --- /dev/null +++ b/data/icons/markerSolid.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/data/layerConfig.json b/data/layerConfig.json new file mode 100755 index 0000000..65cb935 --- /dev/null +++ b/data/layerConfig.json @@ -0,0 +1,219 @@ +[ + { + "layer": "osm", + "config": { + }, + "label": "osm (free)", + "active": false + }, + { + "layer": "stamen", + "config": { + "layer": "terrain" + }, + "label": "stamen terrain (free)", + "active": false + }, + { + "layer": "stamen", + "config": { + "layer": "watercolor" + }, + "label": "stamen watercolor (free)", + "active": true + }, + { + "layer": "stamen", + "config": { + "layer": "toner" + }, + "label": "stamen toner (free)", + "active": false + }, + + { + "layer": "thunderforest", + "config": { + "layer": "cycle" + }, + "label": "thunderforest openCycleMap (cycle)", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "transport" + }, + "label": "thunderforest transport", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "landscape" + }, + "label": "thunderforest landscape", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "outdoors" + }, + "label": "thunderforest outdoors", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "atlas" + }, + "label": "thunderforest atlas", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "transport-dark" + }, + "label": "thunderforest transport-dark", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "spinal-map" + }, + "label": "thunderforest spinal-map", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "pioneer" + }, + "label": "thunderforest pioneer", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "neighbourhood" + }, + "label": "thunderforest neighbourhood", + "active": false + }, + { + "layer": "thunderforest", + "config": { + "layer": "mobile-atlas" + }, + "label": "thunderforest mobile-atlas", + "active": false + }, + + { + "layer": "maptiler", + "config": { + "layer": "basic" + }, + "label": "maptiler basic", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "basic-4326" + }, + "label": "maptiler basic (EPSG:4326)", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "bright" + }, + "label": "maptiler bright", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "openstreetmap" + }, + "label": "maptiler openstreetmap", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "outdoor" + }, + "label": "maptiler outdoor", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "pastel" + }, + "label": "maptiler pastel", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "hybrid" + }, + "label": "maptiler satelite hybrid", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "streets" + }, + "label": "maptiler streets", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "toner" + }, + "label": "maptiler toner", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "topo" + }, + "label": "maptiler topo", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "topographique" + }, + "label": "maptiler topographique", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "voyager" + }, + "label": "maptiler voyager", + "active": false + }, + { + "layer": "maptiler", + "config": { + "layer": "winter" + }, + "label": "maptiler winter", + "active": false + } +] diff --git a/dist/assets/index.2f260c05.css b/dist/assets/index.2f260c05.css new file mode 100755 index 0000000..6903de1 --- /dev/null +++ b/dist/assets/index.2f260c05.css @@ -0,0 +1 @@ +.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid rgb(179,197,219);background-color:#fff6}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:12px;z-index:11;color:#000;text-shadow:-2px 0 #FFFFFF,0 2px #FFFFFF,2px 0 #FFFFFF,0 -2px #FFFFFF}.ol-scale-text{position:absolute;font-size:14px;text-align:center;bottom:25px;color:#000;text-shadow:-2px 0 #FFFFFF,0 2px #FFFFFF,2px 0 #FFFFFF,0 -2px #FFFFFF}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid black}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ol-viewport canvas{all:unset}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:#fff6;border-radius:4px;padding:2px}.ol-control:hover{background-color:#fff9}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:#003c8880;border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;background-color:#003c88b3}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:#003c88b3;text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:#000;text-shadow:0 0 2px #fff;font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:2px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}html,body{margin:0;height:100%}.a2g-map{width:100%;height:450px;background:#85ccf9;position:relative}@keyframes spinner{to{transform:rotate(360deg)}}.spinner:after{content:"";box-sizing:border-box;position:absolute;top:50%;left:50%;width:40px;height:40px;margin-top:-20px;margin-left:-20px;border-radius:50%;border:5px solid rgba(180,180,180,.6);border-top-color:#0009;animation:spinner .6s linear infinite}.ol-popup{position:absolute;background-color:#fff;box-shadow:0 1px 4px #0003;padding:15px;border-radius:5px;border:1px solid #cccccc;bottom:12px;left:-50px;min-width:250px}.ol-popup:after,.ol-popup:before{top:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.ol-popup:after{border-top-color:#fff;border-width:10px;left:48px;margin-left:-10px}.ol-popup:before{border-top-color:#ccc;border-width:11px;left:48px;margin-left:-11px}.ol-popup-closer{text-decoration:none;position:absolute;top:2px;right:8px}.ol-popup-closer:after{content:"\2716"}.a2g-map:-webkit-full-screen{height:100%;margin:0}.a2g-map:-ms-fullscreen{height:100%}.a2g-map:fullscreen{height:100%}.a2g-map .ol-rotate{top:3em} diff --git a/dist/assets/index.4e9346ea.js b/dist/assets/index.4e9346ea.js new file mode 100755 index 0000000..cd69aa6 --- /dev/null +++ b/dist/assets/index.4e9346ea.js @@ -0,0 +1,10 @@ +var Yl=Object.defineProperty,Ul=Object.defineProperties;var Wl=Object.getOwnPropertyDescriptors;var Vo=Object.getOwnPropertySymbols;var Bl=Object.prototype.hasOwnProperty,Zl=Object.prototype.propertyIsEnumerable;var Ho=(i,r,t)=>r in i?Yl(i,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[r]=t,$o=(i,r)=>{for(var t in r||(r={}))Bl.call(r,t)&&Ho(i,t,r[t]);if(Vo)for(var t of Vo(r))Zl.call(r,t)&&Ho(i,t,r[t]);return i},qo=(i,r)=>Ul(i,Wl(r));const zl=function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))e(n);new MutationObserver(n=>{for(const o of n)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&e(a)}).observe(document,{childList:!0,subtree:!0});function t(n){const o={};return n.integrity&&(o.integrity=n.integrity),n.referrerpolicy&&(o.referrerPolicy=n.referrerpolicy),n.crossorigin==="use-credentials"?o.credentials="include":n.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function e(n){if(n.ep)return;n.ep=!0;const o=t(n);fetch(n.href,o)}};zl();function F(){return function(){throw new Error("Unimplemented abstract method.")}()}var Kl=0;function H(i){return i.ol_uid||(i.ol_uid=String(++Kl))}var Vl="6.14.1",Hl=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),$l=function(i){Hl(r,i);function r(t){var e=this,n="v"+Vl.split("-")[0],o="Assertion failed. See https://openlayers.org/en/"+n+"/doc/errors/#"+t+" for details.";return e=i.call(this,o)||this,e.code=t,e.name="AssertionError",e.message=o,e}return r}(Error),Ja=$l,ql=function(){function i(r){this.propagationStopped,this.defaultPrevented,this.type=r,this.target=null}return i.prototype.preventDefault=function(){this.defaultPrevented=!0},i.prototype.stopPropagation=function(){this.propagationStopped=!0},i}();function Jl(i){i.stopPropagation()}var Ht=ql,Er={PROPERTYCHANGE:"propertychange"},Ql=function(){function i(){this.disposed=!1}return i.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},i.prototype.disposeInternal=function(){},i}(),eo=Ql;function tu(i,r,t){for(var e,n,o=t||Ke,a=0,s=i.length,l=!1;a>1),n=+o(i[e],r),n<0?a=e+1:(s=e,l=!n);return l?a:~a}function Ke(i,r){return i>r?1:i=0}function ro(i,r,t){var e=i.length;if(i[0]<=r)return 0;if(r<=i[e-1])return e-1;var n=void 0;if(t>0){for(n=1;n0?n-1:n:i[n-1]-r0||t&&a===0)})}function _r(){return!0}function ei(){return!1}function Ve(){}function nu(i){var r=!1,t,e,n;return function(){var o=Array.prototype.slice.call(arguments);return(!r||this!==n||!qe(o,e))&&(r=!0,n=this,e=o,t=i.apply(this,arguments)),t}}var ut=typeof Object.assign=="function"?Object.assign:function(i,r){if(i==null)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(i),e=1,n=arguments.length;e0:!1},r.prototype.removeEventListener=function(t,e){var n=this.listeners_&&this.listeners_[t];if(n){var o=n.indexOf(e);o!==-1&&(this.pendingRemovals_&&t in this.pendingRemovals_?(n[o]=Ve,++this.pendingRemovals_[t]):(n.splice(o,1),n.length===0&&delete this.listeners_[t]))}},r}(eo),xr=ou,G={CHANGE:"change",ERROR:"error",BLUR:"blur",CLEAR:"clear",CONTEXTMENU:"contextmenu",CLICK:"click",DBLCLICK:"dblclick",DRAGENTER:"dragenter",DRAGOVER:"dragover",DROP:"drop",FOCUS:"focus",KEYDOWN:"keydown",KEYPRESS:"keypress",LOAD:"load",RESIZE:"resize",TOUCHMOVE:"touchmove",WHEEL:"wheel"};function W(i,r,t,e,n){if(e&&e!==i&&(t=t.bind(e)),n){var o=t;t=function(){i.removeEventListener(r,t),o.apply(this,arguments)}}var a={target:i,type:r,listener:t};return i.addEventListener(r,t),a}function kn(i,r,t,e){return W(i,r,t,e,!0)}function J(i){i&&i.target&&(i.target.removeEventListener(i.type,i.listener),tn(i))}var au=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),ri=function(i){au(r,i);function r(){var t=i.call(this)||this;return t.on=t.onInternal,t.once=t.onceInternal,t.un=t.unInternal,t.revision_=0,t}return r.prototype.changed=function(){++this.revision_,this.dispatchEvent(G.CHANGE)},r.prototype.getRevision=function(){return this.revision_},r.prototype.onInternal=function(t,e){if(Array.isArray(t)){for(var n=t.length,o=new Array(n),a=0;a0;)this.pop()},r.prototype.extend=function(t){for(var e=0,n=t.length;e=0||Se.match(/cpu (os|iphone os) 15_4 like mac os x/));var vu=Se.indexOf("webkit")!==-1&&Se.indexOf("edge")==-1,ns=Se.indexOf("macintosh")!==-1,is=typeof devicePixelRatio!="undefined"?devicePixelRatio:1,ni=typeof WorkerGlobalScope!="undefined"&&typeof OffscreenCanvas!="undefined"&&self instanceof WorkerGlobalScope,gu=typeof Image!="undefined"&&Image.prototype.decode,os=function(){var i=!1;try{var r=Object.defineProperty({},"passive",{get:function(){i=!0}});window.addEventListener("_",null,r),window.removeEventListener("_",null,r)}catch{}return i}();new Array(6);function Kt(){return[1,0,0,1,0,0]}function _u(i,r,t,e,n,o,a){return i[0]=r,i[1]=t,i[2]=e,i[3]=n,i[4]=o,i[5]=a,i}function yu(i,r){return i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],i[4]=r[4],i[5]=r[5],i}function st(i,r){var t=r[0],e=r[1];return r[0]=i[0]*t+i[2]*e+i[4],r[1]=i[1]*t+i[3]*e+i[5],r}function mu(i,r,t){return _u(i,r,0,0,t,0,0)}function se(i,r,t,e,n,o,a,s){var l=Math.sin(o),u=Math.cos(o);return i[0]=e*u,i[1]=n*l,i[2]=-e*l,i[3]=n*u,i[4]=a*e*u-s*e*l+r,i[5]=a*n*l+s*n*u+t,i}function no(i,r){var t=Eu(r);B(t!==0,32);var e=r[0],n=r[1],o=r[2],a=r[3],s=r[4],l=r[5];return i[0]=a/t,i[1]=-n/t,i[2]=-o/t,i[3]=e/t,i[4]=(o*l-a*s)/t,i[5]=-(e*l-n*s)/t,i}function Eu(i){return i[0]*i[3]-i[1]*i[2]}var ea;function as(i){var r="matrix("+i.join(", ")+")";if(ni)return r;var t=ea||(ea=document.createElement("div"));return t.style.transform=r,t.style.transform}var Xr={BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right",TOP_LEFT:"top-left",TOP_RIGHT:"top-right"},vt={UNKNOWN:0,INTERSECTING:1,ABOVE:2,RIGHT:4,BELOW:8,LEFT:16};function ra(i){for(var r=Pt(),t=0,e=i.length;tn&&(l=l|vt.RIGHT),so&&(l=l|vt.ABOVE),l===vt.UNKNOWN&&(l=vt.INTERSECTING),l}function Pt(){return[1/0,1/0,-1/0,-1/0]}function le(i,r,t,e,n){return n?(n[0]=i,n[1]=r,n[2]=t,n[3]=e,n):[i,r,t,e]}function rn(i){return le(1/0,1/0,-1/0,-1/0,i)}function ls(i,r){var t=i[0],e=i[1];return le(t,e,t,e,r)}function us(i,r,t,e,n){var o=rn(n);return hs(o,i,r,t,e)}function zr(i,r){return i[0]==r[0]&&i[2]==r[2]&&i[1]==r[1]&&i[3]==r[3]}function oo(i,r){return r[0]i[2]&&(i[2]=r[2]),r[1]i[3]&&(i[3]=r[3]),i}function Br(i,r){r[0]i[2]&&(i[2]=r[0]),r[1]i[3]&&(i[3]=r[1])}function hs(i,r,t,e,n){for(;tr[0]?e[0]=i[0]:e[0]=r[0],i[1]>r[1]?e[1]=i[1]:e[1]=r[1],i[2]=r[0]&&i[1]<=r[3]&&i[3]>=r[1]}function ao(i){return i[2]=a&&v<=l),!e&&!!(o&vt.RIGHT)&&!(n&vt.RIGHT)&&(g=p-(c-l)*d,e=g>=s&&g<=u),!e&&!!(o&vt.BELOW)&&!(n&vt.BELOW)&&(v=c-(p-s)/d,e=v>=a&&v<=l),!e&&!!(o&vt.LEFT)&&!(n&vt.LEFT)&&(g=p-(c-a)*d,e=g>=s&&g<=u)}return e}function wu(i,r){var t=r.getExtent(),e=Re(i);if(r.canWrapX()&&(e[0]=t[2])){var n=it(t),o=Math.floor((e[0]-t[0])/n),a=o*n;i[0]-=a,i[2]-=a}return i}var Su=function(){function i(r){this.code_=r.code,this.units_=r.units,this.extent_=r.extent!==void 0?r.extent:null,this.worldExtent_=r.worldExtent!==void 0?r.worldExtent:null,this.axisOrientation_=r.axisOrientation!==void 0?r.axisOrientation:"enu",this.global_=r.global!==void 0?r.global:!1,this.canWrapX_=!!(this.global_&&this.extent_),this.getPointResolutionFunc_=r.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=r.metersPerUnit}return i.prototype.canWrapX=function(){return this.canWrapX_},i.prototype.getCode=function(){return this.code_},i.prototype.getExtent=function(){return this.extent_},i.prototype.getUnits=function(){return this.units_},i.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||Vt[this.units_]},i.prototype.getWorldExtent=function(){return this.worldExtent_},i.prototype.getAxisOrientation=function(){return this.axisOrientation_},i.prototype.isGlobal=function(){return this.global_},i.prototype.setGlobal=function(r){this.global_=r,this.canWrapX_=!!(r&&this.extent_)},i.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},i.prototype.setDefaultTileGrid=function(r){this.defaultTileGrid_=r},i.prototype.setExtent=function(r){this.extent_=r,this.canWrapX_=!!(this.global_&&r)},i.prototype.setWorldExtent=function(r){this.worldExtent_=r},i.prototype.setGetPointResolution=function(r){this.getPointResolutionFunc_=r},i.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},i}(),fs=Su;function ot(i,r,t){return Math.min(Math.max(i,r),t)}var Ru=function(){var i;return"cosh"in Math?i=Math.cosh:i=function(r){var t=Math.exp(r);return(t+1/t)/2},i}(),Pu=function(){var i;return"log2"in Math?i=Math.log2:i=function(r){return Math.log(r)*Math.LOG2E},i}();function Lu(i,r,t,e,n,o){var a=n-t,s=o-e;if(a!==0||s!==0){var l=((i-t)*a+(r-e)*s)/(a*a+s*s);l>1?(t=n,e=o):l>0&&(t+=a*l,e+=s*l)}return Be(i,r,t,e)}function Be(i,r,t,e){var n=t-i,o=e-r;return n*n+o*o}function Iu(i){for(var r=i.length,t=0;tn&&(n=a,e=o)}if(n===0)return null;var s=i[e];i[e]=i[t],i[t]=s;for(var l=t+1;l=0;c--){f[c]=i[c][r]/i[c][c];for(var p=c-1;p>=0;p--)i[p][r]-=i[p][c]*f[c]}return f}function na(i){return i*180/Math.PI}function Ze(i){return i*Math.PI/180}function yr(i,r){var t=i%r;return t*r<0?t+r:t}function ie(i,r,t){return i+t*(r-i)}function ps(i,r){var t=Math.pow(10,r);return Math.round(i*t)/t}function Cn(i,r){return Math.floor(ps(i,r))}function xn(i,r){return Math.ceil(ps(i,r))}var Au=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),nn=6378137,gr=Math.PI*nn,Mu=[-gr,-gr,gr,gr],Fu=[-180,-85,180,85],On=nn*Math.log(Math.tan(Math.PI/2)),sr=function(i){Au(r,i);function r(t){return i.call(this,{code:t,units:oe.METERS,extent:Mu,global:!0,worldExtent:Fu,getPointResolution:function(e,n){return e/Ru(n[1]/nn)}})||this}return r}(fs),ia=[new sr("EPSG:3857"),new sr("EPSG:102100"),new sr("EPSG:102113"),new sr("EPSG:900913"),new sr("http://www.opengis.net/def/crs/EPSG/0/3857"),new sr("http://www.opengis.net/gml/srs/epsg.xml#3857")];function Nu(i,r,t){var e=i.length,n=t>1?t:2,o=r;o===void 0&&(n>2?o=i.slice():o=new Array(e));for(var a=0;aOn?s=On:s<-On&&(s=-On),o[a+1]=s}return o}function Du(i,r,t){var e=i.length,n=t>1?t:2,o=r;o===void 0&&(n>2?o=i.slice():o=new Array(e));for(var a=0;ar?e:new Array(1+r-n).join("0")+e}function ds(i,r){return i[0]+=+r[0],i[1]+=+r[1],i}function jn(i,r){for(var t=!0,e=i.length-1;e>=0;--e)if(i[e]!=r[e]){t=!1;break}return t}function so(i,r){var t=Math.cos(r),e=Math.sin(r),n=i[0]*t-i[1]*e,o=i[1]*t+i[0]*e;return i[0]=n,i[1]=o,i}function vs(i,r){return i[0]*=r,i[1]*=r,i}function gs(i,r){if(r.canWrapX()){var t=it(r.getExtent()),e=Uu(i,r,t);e&&(i[0]-=e*t)}return i}function Uu(i,r,t){var e=r.getExtent(),n=0;if(r.canWrapX()&&(i[0]e[2])){var o=t||it(e);n=Math.floor((i[0]-e[0])/o)}return n}var _s=63710088e-1;function sa(i,r,t){var e=t||_s,n=Ze(i[1]),o=Ze(r[1]),a=(o-n)/2,s=Ze(r[0]-i[0])/2,l=Math.sin(a)*Math.sin(a)+Math.sin(s)*Math.sin(s)*Math.cos(n)*Math.cos(o);return 2*e*Math.atan2(Math.sqrt(l),Math.sqrt(1-l))}function Wu(i,r,t,e){var n=e||_s,o=Ze(i[1]),a=Ze(i[0]),s=r/n,l=Math.asin(Math.sin(o)*Math.cos(s)+Math.cos(o)*Math.sin(s)*Math.cos(t)),u=a+Math.atan2(Math.sin(t)*Math.sin(s)*Math.cos(o),Math.cos(s)-Math.sin(o)*Math.sin(l));return[na(u),na(l)]}var Wi=!0;function ys(i){var r=i===void 0?!0:i;Wi=!r}function lo(i,r,t){var e;if(r!==void 0){for(var n=0,o=i.length;n=-180&&i[0]<=180&&i[1]>=-90&&i[1]<=90&&(Wi=!1,console.warn("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),i}function Es(i,r){return i}function Xe(i,r){return i}function $u(){ua(ia),ua(aa),zu(aa,ia,Nu,Du)}$u();function ze(i,r,t,e,n,o){for(var a=o||[],s=0,l=r;l1)f=t;else if(c>0){for(var p=0;pn&&(n=u),o=s,a=l}return n}function fo(i,r,t,e,n){for(var o=0,a=t.length;o0;){for(var f=u.pop(),c=u.pop(),p=0,d=i[c],v=i[c+1],g=i[f],m=i[f+1],_=c+e;_p&&(h=_,p=T)}p>n&&(l[(h-r)/e]=1,c+e0&&v>p)&&(d<0&&g0&&g>d)){u=f,h=c;continue}o[a++]=u,o[a++]=h,s=u,l=h,u=f,h=c}}return o[a++]=u,o[a++]=h,a}function xs(i,r,t,e,n,o,a,s){for(var l=0,u=t.length;lo&&(u-s)*(o-l)-(n-s)*(h-l)>0&&a++:h<=o&&(u-s)*(o-l)-(n-s)*(h-l)<0&&a--,s=u,l=h}return a!==0}function yo(i,r,t,e,n,o){if(t.length===0||!Ye(i,r,t[0],e,n,o))return!1;for(var a=1,s=t.length;aE&&(u=(h+f)/2,yo(i,r,t,e,u,d)&&(y=u,E=T)),h=f}return isNaN(y)&&(y=n[o]),a?(a.push(y,d,E),a):[y,d,E]}function mh(i,r,t,e,n){for(var o=[],a=0,s=t.length;a=n[0]&&o[2]<=n[2]||o[1]>=n[1]&&o[3]<=n[3]?!0:Rs(i,r,t,e,function(a,s){return Ou(n,a,s)}):!1}function Eh(i,r,t,e,n){for(var o=0,a=t.length;o0}function Is(i,r,t,e,n){for(var o=n!==void 0?n:!1,a=0,s=t.length;a1?a:2,E=o||new Array(y),d=0;d>1;n0&&i[1]>0}function Dh(i,r,t){return t===void 0&&(t=[0,0]),t[0]=i[0]*r+.5|0,t[1]=i[1]*r+.5|0,t}function Ft(i,r){return Array.isArray(i)?i:(r===void 0?r=[i,i]:(r[0]=i,r[1]=i),r)}var Gh=function(){function i(r){this.opacity_=r.opacity,this.rotateWithView_=r.rotateWithView,this.rotation_=r.rotation,this.scale_=r.scale,this.scaleArray_=Ft(r.scale),this.displacement_=r.displacement}return i.prototype.clone=function(){var r=this.getScale();return new i({opacity:this.getOpacity(),scale:Array.isArray(r)?r.slice():r,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},i.prototype.getOpacity=function(){return this.opacity_},i.prototype.getRotateWithView=function(){return this.rotateWithView_},i.prototype.getRotation=function(){return this.rotation_},i.prototype.getScale=function(){return this.scale_},i.prototype.getScaleArray=function(){return this.scaleArray_},i.prototype.getDisplacement=function(){return this.displacement_},i.prototype.getAnchor=function(){return F()},i.prototype.getImage=function(r){return F()},i.prototype.getHitDetectionImage=function(){return F()},i.prototype.getPixelRatio=function(r){return 1},i.prototype.getImageState=function(){return F()},i.prototype.getImageSize=function(){return F()},i.prototype.getOrigin=function(){return F()},i.prototype.getSize=function(){return F()},i.prototype.setDisplacement=function(r){this.displacement_=r},i.prototype.setOpacity=function(r){this.opacity_=r},i.prototype.setRotateWithView=function(r){this.rotateWithView_=r},i.prototype.setRotation=function(r){this.rotation_=r},i.prototype.setScale=function(r){this.scale_=r,this.scaleArray_=Ft(r)},i.prototype.listenImageChange=function(r){F()},i.prototype.load=function(){F()},i.prototype.unlistenImageChange=function(r){F()},i}(),Ns=Gh,kh=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,bh=/^([a-z]*)$|^hsla?\(.*\)$/i;function Ds(i){return typeof i=="string"?i:Gs(i)}function jh(i){var r=document.createElement("div");if(r.style.color=i,r.style.color!==""){document.body.appendChild(r);var t=getComputedStyle(r).color;return document.body.removeChild(r),t}else return""}var Xh=function(){var i=1024,r={},t=0;return function(e){var n;if(r.hasOwnProperty(e))n=r[e];else{if(t>=i){var o=0;for(var a in r)(o++&3)===0&&(delete r[a],--t)}n=Yh(e),r[e]=n,++t}return n}}();function Wn(i){return Array.isArray(i)?i:Xh(i)}function Yh(i){var r,t,e,n,o;if(bh.exec(i)&&(i=jh(i)),kh.exec(i)){var a=i.length-1,s=void 0;a<=4?s=1:s=2;var l=a===4||a===8;r=parseInt(i.substr(1+0*s,s),16),t=parseInt(i.substr(1+1*s,s),16),e=parseInt(i.substr(1+2*s,s),16),l?n=parseInt(i.substr(1+3*s,s),16):n=255,s==1&&(r=(r<<4)+r,t=(t<<4)+t,e=(e<<4)+e,l&&(n=(n<<4)+n)),o=[r,t,e,n/255]}else i.indexOf("rgba(")==0?(o=i.slice(5,-1).split(",").map(Number),_a(o)):i.indexOf("rgb(")==0?(o=i.slice(4,-1).split(",").map(Number),o.push(1),_a(o)):B(!1,14);return o}function _a(i){return i[0]=ot(i[0]+.5|0,0,255),i[1]=ot(i[1]+.5|0,0,255),i[2]=ot(i[2]+.5|0,0,255),i[3]=ot(i[3],0,1),i}function Gs(i){var r=i[0];r!=(r|0)&&(r=r+.5|0);var t=i[1];t!=(t|0)&&(t=t+.5|0);var e=i[2];e!=(e|0)&&(e=e+.5|0);var n=i[3]===void 0?1:Math.round(i[3]*100)/100;return"rgba("+r+","+t+","+e+","+n+")"}function zt(i){return Array.isArray(i)?Gs(i):i}function kt(i,r,t,e){var n;return t&&t.length?n=t.shift():ni?n=new OffscreenCanvas(i||300,r||300):n=document.createElement("canvas"),i&&(n.width=i),r&&(n.height=r),n.getContext("2d",e)}function Uh(i){var r=i.offsetWidth,t=getComputedStyle(i);return r+=parseInt(t.marginLeft,10)+parseInt(t.marginRight,10),r}function Wh(i){var r=i.offsetHeight,t=getComputedStyle(i);return r+=parseInt(t.marginTop,10)+parseInt(t.marginBottom,10),r}function Bn(i,r){var t=r.parentNode;t&&t.replaceChild(i,r)}function Zn(i){return i&&i.parentNode?i.parentNode.removeChild(i):null}function ks(i){for(;i.lastChild;)i.removeChild(i.lastChild)}function Bh(i,r){for(var t=i.childNodes,e=0;;++e){var n=t[e],o=r[e];if(!n&&!o)break;if(n!==o){if(!n){i.appendChild(o);continue}if(!o){i.removeChild(n),--e;continue}i.insertBefore(o,n)}}}var wn="ol-hidden",Zh="ol-selectable",He="ol-unselectable",ya="ol-unsupported",on="ol-control",ma="ol-collapsed",zh=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))",`?\\s*([-,\\"\\'\\sa-z]+?)\\s*$`].join(""),"i"),Ea=["style","variant","weight","size","lineHeight","family"],bs=function(i){var r=i.match(zh);if(!r)return null;for(var t={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},e=0,n=Ea.length;e=i.maxResolution)return!1;var e=r.zoom;return e>i.minZoom&&e<=i.maxZoom}var ci=fc;function pc(i,r,t,e,n){Zs(i,r,t||0,e||i.length-1,n||dc)}function Zs(i,r,t,e,n){for(;e>t;){if(e-t>600){var o=e-t+1,a=r-t+1,s=Math.log(o),l=.5*Math.exp(2*s/3),u=.5*Math.sqrt(s*l*(o-l)/o)*(a-o/2<0?-1:1),h=Math.max(t,Math.floor(r-a*l/o+u)),f=Math.min(e,Math.floor(r+(o-a)*l/o+u));Zs(i,r,h,f,n)}var c=i[r],p=t,d=e;for(kr(i,t,r),n(i[e],c)>0&&kr(i,t,e);p0;)d--}n(i[t],c)===0?kr(i,t,d):(d++,kr(i,d,e)),d<=r&&(t=d+1),r<=d&&(e=d-1)}}function kr(i,r,t){var e=i[r];i[r]=i[t],i[t]=e}function dc(i,r){return ir?1:0}class zs{constructor(r=9){this._maxEntries=Math.max(4,r),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(r){let t=this.data;const e=[];if(!Rn(r,t))return e;const n=this.toBBox,o=[];for(;t;){for(let a=0;a=0&&o[t].children.length>this._maxEntries;)this._split(o,t),t--;this._adjustParentBBoxes(n,o,t)}_split(r,t){const e=r[t],n=e.children.length,o=this._minEntries;this._chooseSplitAxis(e,o,n);const a=this._chooseSplitIndex(e,o,n),s=pr(e.children.splice(a,e.children.length-a));s.height=e.height,s.leaf=e.leaf,lr(e,this.toBBox),lr(s,this.toBBox),t?r[t-1].children.push(s):this._splitRoot(e,s)}_splitRoot(r,t){this.data=pr([r,t]),this.data.height=r.height+1,this.data.leaf=!1,lr(this.data,this.toBBox)}_chooseSplitIndex(r,t,e){let n,o=1/0,a=1/0;for(let s=t;s<=e-t;s++){const l=Yr(r,0,s,this.toBBox),u=Yr(r,s,e,this.toBBox),h=mc(l,u),f=Ci(l)+Ci(u);h=t;u--){const h=r.children[u];Ur(s,r.leaf?o(h):h),l+=Sn(s)}return l}_adjustParentBBoxes(r,t,e){for(let n=e;n>=0;n--)Ur(t[n],r)}_condense(r){for(let t=r.length-1,e;t>=0;t--)r[t].children.length===0?t>0?(e=r[t-1].children,e.splice(e.indexOf(r[t]),1)):this.clear():lr(r[t],this.toBBox)}}function vc(i,r,t){if(!t)return r.indexOf(i);for(let e=0;e=i.minX&&r.maxY>=i.minY}function pr(i){return{children:i,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function xa(i,r,t,e,n){const o=[r,t];for(;o.length;){if(t=o.pop(),r=o.pop(),t-r<=e)continue;const a=r+Math.ceil((t-r)/e/2)*e;pc(i,a,r,t,n),o.push(r,a,a,t)}}var Ec=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Oa={RENDER_ORDER:"renderOrder"},Tc=function(i){Ec(r,i);function r(t){var e=this,n=t||{},o=ut({},n);return delete o.style,delete o.renderBuffer,delete o.updateWhileAnimating,delete o.updateWhileInteracting,e=i.call(this,o)||this,e.declutter_=n.declutter!==void 0?n.declutter:!1,e.renderBuffer_=n.renderBuffer!==void 0?n.renderBuffer:100,e.style_=null,e.styleFunction_=void 0,e.setStyle(n.style),e.updateWhileAnimating_=n.updateWhileAnimating!==void 0?n.updateWhileAnimating:!1,e.updateWhileInteracting_=n.updateWhileInteracting!==void 0?n.updateWhileInteracting:!1,e}return r.prototype.getDeclutter=function(){return this.declutter_},r.prototype.getFeatures=function(t){return i.prototype.getFeatures.call(this,t)},r.prototype.getRenderBuffer=function(){return this.renderBuffer_},r.prototype.getRenderOrder=function(){return this.get(Oa.RENDER_ORDER)},r.prototype.getStyle=function(){return this.style_},r.prototype.getStyleFunction=function(){return this.styleFunction_},r.prototype.getUpdateWhileAnimating=function(){return this.updateWhileAnimating_},r.prototype.getUpdateWhileInteracting=function(){return this.updateWhileInteracting_},r.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new zs(9)),this.getRenderer().renderDeclutter(t)},r.prototype.setRenderOrder=function(t){this.set(Oa.RENDER_ORDER,t)},r.prototype.setStyle=function(t){this.style_=t!==void 0?t:oc,this.styleFunction_=t===null?void 0:ic(this.style_),this.changed()},r}(ci),Cc=Tc,an={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},Pn=[an.FILL],xe=[an.STROKE],We=[an.BEGIN_PATH],wa=[an.CLOSE_PATH],N=an,xc=function(){function i(){}return i.prototype.drawCustom=function(r,t,e,n){},i.prototype.drawGeometry=function(r){},i.prototype.setStyle=function(r){},i.prototype.drawCircle=function(r,t){},i.prototype.drawFeature=function(r,t){},i.prototype.drawGeometryCollection=function(r,t){},i.prototype.drawLineString=function(r,t){},i.prototype.drawMultiLineString=function(r,t){},i.prototype.drawMultiPoint=function(r,t){},i.prototype.drawMultiPolygon=function(r,t){},i.prototype.drawPoint=function(r,t){},i.prototype.drawPolygon=function(r,t){},i.prototype.drawText=function(r,t){},i.prototype.setFillStrokeStyle=function(r,t){},i.prototype.setImageStyle=function(r,t){},i.prototype.setTextStyle=function(r,t){},i}(),Ks=xc,Oc=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),wc=function(i){Oc(r,i);function r(t,e,n,o){var a=i.call(this)||this;return a.tolerance=t,a.maxExtent=e,a.pixelRatio=o,a.maxLineWidth=0,a.resolution=n,a.beginGeometryInstruction1_=null,a.beginGeometryInstruction2_=null,a.bufferedMaxExtent_=null,a.instructions=[],a.coordinates=[],a.tmpCoordinate_=[],a.hitDetectionInstructions=[],a.state={},a}return r.prototype.applyPixelRatio=function(t){var e=this.pixelRatio;return e==1?t:t.map(function(n){return n*e})},r.prototype.appendFlatPointCoordinates=function(t,e){for(var n=this.getBufferedMaxExtent(),o=this.tmpCoordinate_,a=this.coordinates,s=a.length,l=0,u=t.length;ll&&(this.instructions.push([N.CUSTOM,l,h,t,n,Ce]),this.hitDetectionInstructions.push([N.CUSTOM,l,h,t,o||n,Ce]));break;case P.POINT:u=t.getFlatCoordinates(),this.coordinates.push(u[0],u[1]),h=this.coordinates.length,this.instructions.push([N.CUSTOM,l,h,t,n]),this.hitDetectionInstructions.push([N.CUSTOM,l,h,t,o||n]);break}this.endGeometry(e)},r.prototype.beginGeometry=function(t,e){this.beginGeometryInstruction1_=[N.BEGIN_GEOMETRY,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[N.BEGIN_GEOMETRY,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)},r.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},r.prototype.reverseHitDetectionInstructions=function(){var t=this.hitDetectionInstructions;t.reverse();var e,n=t.length,o,a,s=-1;for(e=0;ethis.maxLineWidth&&(this.maxLineWidth=n.lineWidth,this.bufferedMaxExtent_=null)}else n.strokeStyle=void 0,n.lineCap=void 0,n.lineDash=null,n.lineDashOffset=void 0,n.lineJoin=void 0,n.lineWidth=void 0,n.miterLimit=void 0},r.prototype.createFill=function(t){var e=t.fillStyle,n=[N.SET_FILL_STYLE,e];return typeof e!="string"&&n.push(!0),n},r.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},r.prototype.createStroke=function(t){return[N.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},r.prototype.updateFillStyle=function(t,e){var n=t.fillStyle;(typeof n!="string"||t.currentFillStyle!=n)&&(n!==void 0&&this.instructions.push(e.call(this,t)),t.currentFillStyle=n)},r.prototype.updateStrokeStyle=function(t,e){var n=t.strokeStyle,o=t.lineCap,a=t.lineDash,s=t.lineDashOffset,l=t.lineJoin,u=t.lineWidth,h=t.miterLimit;(t.currentStrokeStyle!=n||t.currentLineCap!=o||a!=t.currentLineDash&&!qe(t.currentLineDash,a)||t.currentLineDashOffset!=s||t.currentLineJoin!=l||t.currentLineWidth!=u||t.currentMiterLimit!=h)&&(n!==void 0&&e.call(this,t),t.currentStrokeStyle=n,t.currentLineCap=o,t.currentLineDash=a,t.currentLineDashOffset=s,t.currentLineJoin=l,t.currentLineWidth=u,t.currentMiterLimit=h)},r.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[N.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},r.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=ss(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;ii(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},r}(Ks),sn=wc,Sc=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Rc=function(i){Sc(r,i);function r(t,e,n,o){var a=i.call(this,t,e,n,o)||this;return a.hitDetectionImage_=null,a.image_=null,a.imagePixelRatio_=void 0,a.anchorX_=void 0,a.anchorY_=void 0,a.height_=void 0,a.opacity_=void 0,a.originX_=void 0,a.originY_=void 0,a.rotateWithView_=void 0,a.rotation_=void 0,a.scale_=void 0,a.width_=void 0,a.declutterImageWithText_=void 0,a}return r.prototype.drawPoint=function(t,e){if(!!this.image_){this.beginGeometry(t,e);var n=t.getFlatCoordinates(),o=t.getStride(),a=this.coordinates.length,s=this.appendFlatPointCoordinates(n,o);this.instructions.push([N.DRAW_IMAGE,a,s,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([N.DRAW_IMAGE,a,s,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},r.prototype.drawMultiPoint=function(t,e){if(!!this.image_){this.beginGeometry(t,e);var n=t.getFlatCoordinates(),o=t.getStride(),a=this.coordinates.length,s=this.appendFlatPointCoordinates(n,o);this.instructions.push([N.DRAW_IMAGE,a,s,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([N.DRAW_IMAGE,a,s,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},r.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,i.prototype.finish.call(this)},r.prototype.setImageStyle=function(t,e){var n=t.getAnchor(),o=t.getSize(),a=t.getHitDetectionImage(),s=t.getImage(this.pixelRatio),l=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=n[0],this.anchorY_=n[1],this.hitDetectionImage_=a,this.image_=s,this.height_=o[1],this.opacity_=t.getOpacity(),this.originX_=l[0]*this.imagePixelRatio_,this.originY_=l[1]*this.imagePixelRatio_,this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=o[0],this.declutterImageWithText_=e},r}(sn),Pc=Rc,Lc=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Ic=function(i){Lc(r,i);function r(t,e,n,o){return i.call(this,t,e,n,o)||this}return r.prototype.drawFlatCoordinates_=function(t,e,n,o){var a=this.coordinates.length,s=this.appendFlatLineCoordinates(t,e,n,o,!1,!1),l=[N.MOVE_TO_LINE_TO,a,s];return this.instructions.push(l),this.hitDetectionInstructions.push(l),n},r.prototype.drawLineString=function(t,e){var n=this.state,o=n.strokeStyle,a=n.lineWidth;if(!(o===void 0||a===void 0)){this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([N.SET_STROKE_STYLE,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,Vr,Hr],We);var s=t.getFlatCoordinates(),l=t.getStride();this.drawFlatCoordinates_(s,0,s.length,l),this.hitDetectionInstructions.push(xe),this.endGeometry(e)}},r.prototype.drawMultiLineString=function(t,e){var n=this.state,o=n.strokeStyle,a=n.lineWidth;if(!(o===void 0||a===void 0)){this.updateStrokeStyle(n,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([N.SET_STROKE_STYLE,n.strokeStyle,n.lineWidth,n.lineCap,n.lineJoin,n.miterLimit,n.lineDash,n.lineDashOffset],We);for(var s=t.getEnds(),l=t.getFlatCoordinates(),u=t.getStride(),h=0,f=0,c=s.length;fi&&(l>s&&(s=l,o=u,a=f),l=0,u=f-n)),c=p,g=_,m=y),d=E,v=T}return l+=p,l>s?[u,f]:[o,a]}var Dc=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),$n={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Gc=function(i){Dc(r,i);function r(t,e,n,o){var a=i.call(this,t,e,n,o)||this;return a.labels_=null,a.text_="",a.textOffsetX_=0,a.textOffsetY_=0,a.textRotateWithView_=void 0,a.textRotation_=0,a.textFillState_=null,a.fillStates={},a.textStrokeState_=null,a.strokeStates={},a.textState_={},a.textStates={},a.textKey_="",a.fillKey_="",a.strokeKey_="",a.declutterImageWithText_=void 0,a}return r.prototype.finish=function(){var t=i.prototype.finish.call(this);return t.textStates=this.textStates,t.fillStates=this.fillStates,t.strokeStates=this.strokeStates,t},r.prototype.drawText=function(t,e){var n=this.textFillState_,o=this.textStrokeState_,a=this.textState_;if(!(this.text_===""||!a||!n&&!o)){var s=this.coordinates,l=s.length,u=t.getType(),h=null,f=t.getStride();if(a.placement===Ws.LINE&&(u==P.LINE_STRING||u==P.MULTI_LINE_STRING||u==P.POLYGON||u==P.MULTI_POLYGON)){if(!Rt(this.getBufferedMaxExtent(),t.getExtent()))return;var c=void 0;if(h=t.getFlatCoordinates(),u==P.LINE_STRING)c=[h.length];else if(u==P.MULTI_LINE_STRING)c=t.getEnds();else if(u==P.POLYGON)c=t.getEnds().slice(0,1);else if(u==P.MULTI_POLYGON){var p=t.getEndss();c=[];for(var d=0,v=p.length;dI[2]}else b=E>R;var j=Math.PI,U=[],A=x+e===r;r=x,g=0,m=w,c=i[r],p=i[r+1];var k;if(A){_(),k=Math.atan2(p-v,c-d),b&&(k+=k>0?-j:j);var L=(R+E)/2,z=(M+T)/2;return U[0]=[L,z,(O-o)/2,k,n],U}for(var Z=0,V=n.length;Z0?-j:j),k!==void 0){var C=Q-k;if(C+=C>j?-2*j:C<-j?2*j:0,Math.abs(C)>a)return null}k=Q;for(var lt=Z,X=0;Z0&&i.push(` +`,""),i.push(r,""),i}var qc=function(){function i(r,t,e,n){this.overlaps=e,this.pixelRatio=t,this.resolution=r,this.alignFill_,this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=Kt(),this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={}}return i.prototype.createLabel=function(r,t,e,n){var o=r+t+e+n;if(this.labels_[o])return this.labels_[o];var a=n?this.strokeStates[n]:null,s=e?this.fillStates[e]:null,l=this.textStates[t],u=this.pixelRatio,h=[l.scale[0]*u,l.scale[1]*u],f=Array.isArray(r),c=La(f?r[0]:r,l.textAlign||Jr),p=n&&a.lineWidth?a.lineWidth:0,d=f?r:r.split(` +`).reduce($c,[]),v=$h(l,d),g=v.width,m=v.height,_=v.widths,y=v.heights,E=v.lineWidths,T=g+p,x=[],w=(T+2)*h[0],O=(m+p)*h[1],R={width:w<0?Math.floor(w):Math.ceil(w),height:O<0?Math.floor(O):Math.ceil(O),contextInstructions:x};if((h[0]!=1||h[1]!=1)&&x.push("scale",h),n){x.push("strokeStyle",a.strokeStyle),x.push("lineWidth",p),x.push("lineCap",a.lineCap),x.push("lineJoin",a.lineJoin),x.push("miterLimit",a.miterLimit);var M=ni?OffscreenCanvasRenderingContext2D:CanvasRenderingContext2D;M.prototype.setLineDash&&(x.push("setLineDash",[a.lineDash]),x.push("lineDashOffset",a.lineDashOffset))}e&&x.push("fillStyle",s.fillStyle),x.push("textBaseline","middle"),x.push("textAlign","center");for(var b=.5-c,I=c*T+b*p,j=[],U=[],A=0,k=0,L=0,z=0,Z,V=0,Q=d.length;Vr?r-u:o,E=a+h>t?t-h:a,T=d[3]+y*c[0]+d[1],x=d[0]+E*c[1]+d[2],w=m-d[3],O=_-d[0];(v||f!==0)&&(fe[0]=w,pe[0]=w,fe[1]=O,qt[1]=O,qt[0]=w+T,Jt[0]=qt[0],Jt[1]=O+x,pe[1]=Jt[1]);var R;return f!==0?(R=se(Kt(),e,n,1,1,f,-e,-n),st(R,fe),st(R,qt),st(R,Jt),st(R,pe),le(Math.min(fe[0],qt[0],Jt[0],pe[0]),Math.min(fe[1],qt[1],Jt[1],pe[1]),Math.max(fe[0],qt[0],Jt[0],pe[0]),Math.max(fe[1],qt[1],Jt[1],pe[1]),ur)):le(Math.min(w,w+T),Math.min(O,O+x),Math.max(w,w+T),Math.max(O,O+x),ur),p&&(m=Math.round(m),_=Math.round(_)),{drawImageX:m,drawImageY:_,drawImageW:y,drawImageH:E,originX:u,originY:h,declutterBox:{minX:ur[0],minY:ur[1],maxX:ur[2],maxY:ur[3],value:g},canvasTransform:R,scale:c}},i.prototype.replayImageOrLabel_=function(r,t,e,n,o,a,s){var l=!!(a||s),u=n.declutterBox,h=r.canvas,f=s?s[2]*n.scale[0]/2:0,c=u.minX-f<=h.width/t&&u.maxX+f>=0&&u.minY-f<=h.height/t&&u.maxY+f>=0;return c&&(l&&this.replayTextBackground_(r,fe,qt,Jt,pe,a,s),qh(r,n.canvasTransform,o,e,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0},i.prototype.fill_=function(r){if(this.alignFill_){var t=st(this.renderedTransform_,[0,0]),e=512*this.pixelRatio;r.save(),r.translate(t[0]%e,t[1]%e),r.rotate(this.viewRotation_)}r.fill(),this.alignFill_&&r.restore()},i.prototype.setStrokeStyle_=function(r,t){r.strokeStyle=t[1],r.lineWidth=t[2],r.lineCap=t[3],r.lineJoin=t[4],r.miterLimit=t[5],r.setLineDash&&(r.lineDashOffset=t[7],r.setLineDash(t[6]))},i.prototype.drawLabelWithPointPlacement_=function(r,t,e,n){var o=this.textStates[t],a=this.createLabel(r,t,n,e),s=this.strokeStates[e],l=this.pixelRatio,u=La(Array.isArray(r)?r[0]:r,o.textAlign||Jr),h=$n[o.textBaseline||Kn],f=s&&s.lineWidth?s.lineWidth:0,c=a.width/l-2*o.scale[0],p=u*c+2*(.5-u)*f,d=h*a.height/l+2*(.5-h)*f;return{label:a,anchorX:p,anchorY:d}},i.prototype.execute_=function(r,t,e,n,o,a,s,l){var u;this.pixelCoordinates_&&qe(e,this.renderedTransform_)?u=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),u=ze(this.coordinates,0,this.coordinates.length,2,e,this.pixelCoordinates_),yu(this.renderedTransform_,e));for(var h=0,f=n.length,c=0,p,d,v,g,m,_,y,E,T,x,w,O,R=0,M=0,b=null,I=null,j=this.coordinateCache_,U=this.viewRotation_,A=Math.round(Math.atan2(-e[1],e[0])*1e12)/1e12,k={context:r,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:U},L=this.instructions!=n||this.overlaps?0:200,z,Z,V,Q;hL&&(this.fill_(r),R=0),M>L&&(r.stroke(),M=0),!R&&!M&&(r.beginPath(),g=NaN,m=NaN),++h;break;case N.CIRCLE:c=C[1];var X=u[c],ct=u[c+1],Lt=u[c+2],It=u[c+3],xt=Lt-X,At=It-ct,rr=Math.sqrt(xt*xt+At*At);r.moveTo(X+rr,ct),r.arc(X,ct,rr,0,2*Math.PI,!0),++h;break;case N.CLOSE_PATH:r.closePath(),++h;break;case N.CUSTOM:c=C[1],p=C[2];var Wt=C[3],fn=C[4],pn=C.length==6?C[5]:void 0;k.geometry=Wt,k.feature=z,h in j||(j[h]=[]);var ue=j[h];pn?pn(u,c,p,2,ue):(ue[0]=u[c],ue[1]=u[c+1],ue.length=2),fn(ue,k),++h;break;case N.DRAW_IMAGE:c=C[1],p=C[2],E=C[3],d=C[4],v=C[5];var nr=C[6],dn=C[7],Rr=C[8],vn=C[9],Ie=C[10],Pr=C[11],gn=C[12],ir=C[13],he=C[14];if(!E&&C.length>=19){T=C[18],x=C[19],w=C[20],O=C[21];var or=this.drawLabelWithPointPlacement_(T,x,w,O);E=or.label,C[3]=E;var gi=C[22];d=(or.anchorX-gi)*this.pixelRatio,C[4]=d;var _n=C[23];v=(or.anchorY-_n)*this.pixelRatio,C[5]=v,nr=E.height,C[6]=nr,ir=E.width,C[13]=ir}var Lr=void 0;C.length>24&&(Lr=C[24]);var $t=void 0,Bt=void 0,Ae=void 0;C.length>16?($t=C[15],Bt=C[16],Ae=C[17]):($t=Ue,Bt=!1,Ae=!1),Ie&&A?Pr+=U:!Ie&&!A&&(Pr-=U);for(var Ir=0;c0){if(!a||p!==nt.IMAGE&&p!==nt.TEXT||a.indexOf(x)!==-1){var b=(c[R]-3)/4,I=n-b%s,j=n-(b/s|0),U=o(x,w,I*I+j*j);if(U)return U}h.clearRect(0,0,s,s);break}}var v=Object.keys(this.executorsByZIndex_).map(Number);v.sort(Ke);var g,m,_,y,E;for(g=v.length-1;g>=0;--g){var T=v[g].toString();for(_=this.executorsByZIndex_[T],m=Oi.length-1;m>=0;--m)if(p=Oi[m],y=_[p],y!==void 0&&(E=y.executeHitDetection(h,l,e,d,f),E))return E}},i.prototype.getClipCoords=function(r){var t=this.maxExtent_;if(!t)return null;var e=t[0],n=t[1],o=t[2],a=t[3],s=[e,n,e,a,o,a,o,n];return ze(s,0,8,2,r,s),s},i.prototype.isEmpty=function(){return Tr(this.executorsByZIndex_)},i.prototype.execute=function(r,t,e,n,o,a,s){var l=Object.keys(this.executorsByZIndex_).map(Number);l.sort(Ke),this.maxExtent_&&(r.save(),this.clip(r,e));var u=a||Oi,h,f,c,p,d,v;for(s&&l.reverse(),h=0,f=l.length;ht)break;var s=e[a];s||(s=[],e[a]=s),s.push(((i+n)*r+(i+o))*4+3),n>0&&s.push(((i-n)*r+(i+o))*4+3),o>0&&(s.push(((i+n)*r+(i-o))*4+3),n>0&&s.push(((i-n)*r+(i-o))*4+3))}for(var l=[],n=0,u=e.length;nthis.maxCacheSize_},i.prototype.expire=function(){if(this.canExpireCache()){var r=0;for(var t in this.cache_){var e=this.cache_[t];(r++&3)===0&&!e.hasListener()&&(delete this.cache_[t],--this.cacheSize_)}}},i.prototype.get=function(r,t,e){var n=Aa(r,t,e);return n in this.cache_?this.cache_[n]:null},i.prototype.set=function(r,t,e,n){var o=Aa(r,t,e);this.cache_[o]=n,++this.cacheSize_},i.prototype.setSize=function(r){this.maxCacheSize_=r,this.expire()},i}();function Aa(i,r,t){var e=t?Ds(t):"null";return r+":"+i+":"+e}var qn=new of,af=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),sf=function(i){af(r,i);function r(t,e,n,o){var a=i.call(this)||this;return a.extent=t,a.pixelRatio_=n,a.resolution=e,a.state=o,a}return r.prototype.changed=function(){this.dispatchEvent(G.CHANGE)},r.prototype.getExtent=function(){return this.extent},r.prototype.getImage=function(){return F()},r.prototype.getPixelRatio=function(){return this.pixelRatio_},r.prototype.getResolution=function(){return this.resolution},r.prototype.getState=function(){return this.state},r.prototype.load=function(){F()},r}(xr),lf=sf,uf=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}();(function(i){uf(r,i);function r(t,e,n,o,a,s){var l=i.call(this,t,e,n,tt.IDLE)||this;return l.src_=o,l.image_=new Image,a!==null&&(l.image_.crossOrigin=a),l.unlisten_=null,l.state=tt.IDLE,l.imageLoadFunction_=s,l}return r.prototype.getImage=function(){return this.image_},r.prototype.handleImageError_=function(){this.state=tt.ERROR,this.unlistenImage_(),this.changed()},r.prototype.handleImageLoad_=function(){this.resolution===void 0&&(this.resolution=Ut(this.extent)/this.image_.height),this.state=tt.LOADED,this.unlistenImage_(),this.changed()},r.prototype.load=function(){(this.state==tt.IDLE||this.state==tt.ERROR)&&(this.state=tt.LOADING,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=Eo(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},r.prototype.setImage=function(t){this.image_=t,this.resolution=Ut(this.extent)/this.image_.height},r.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},r})(lf);function Eo(i,r,t){var e=i,n=!0,o=!1,a=!1,s=[kn(e,G.LOAD,function(){a=!0,o||r()})];return e.src&&gu?(o=!0,e.decode().then(function(){n&&r()}).catch(function(l){n&&(a?r():t())})):s.push(kn(e,G.ERROR,t)),function(){n=!1,s.forEach(J)}}var hf=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),br=null,cf=function(i){hf(r,i);function r(t,e,n,o,a,s){var l=i.call(this)||this;return l.hitDetectionImage_=null,l.image_=t||new Image,o!==null&&(l.image_.crossOrigin=o),l.canvas_={},l.color_=s,l.unlisten_=null,l.imageState_=a,l.size_=n,l.src_=e,l.tainted_,l}return r.prototype.isTainted_=function(){if(this.tainted_===void 0&&this.imageState_===tt.LOADED){br||(br=kt(1,1)),br.drawImage(this.image_,0,0);try{br.getImageData(0,0,1,1),this.tainted_=!1}catch{br=null,this.tainted_=!0}}return this.tainted_===!0},r.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(G.CHANGE)},r.prototype.handleImageError_=function(){this.imageState_=tt.ERROR,this.unlistenImage_(),this.dispatchChangeEvent_()},r.prototype.handleImageLoad_=function(){this.imageState_=tt.LOADED,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},r.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},r.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},r.prototype.getImageState=function(){return this.imageState_},r.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],n=kt(t,e);n.fillRect(0,0,t,e),this.hitDetectionImage_=n.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},r.prototype.getSize=function(){return this.size_},r.prototype.getSrc=function(){return this.src_},r.prototype.load=function(){if(this.imageState_==tt.IDLE){this.imageState_=tt.LOADING;try{this.image_.src=this.src_}catch{this.handleImageError_()}this.unlisten_=Eo(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},r.prototype.replaceColor_=function(t){if(!(!this.color_||this.canvas_[t]||this.imageState_!==tt.LOADED)){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var n=e.getContext("2d");if(n.scale(t,t),n.drawImage(this.image_,0,0),n.globalCompositeOperation="multiply",n.globalCompositeOperation==="multiply"||this.isTainted_())n.fillStyle=Ds(this.color_),n.fillRect(0,0,e.width/t,e.height/t),n.globalCompositeOperation="destination-in",n.drawImage(this.image_,0,0);else{for(var o=n.getImageData(0,0,e.width,e.height),a=o.data,s=this.color_[0]/255,l=this.color_[1]/255,u=this.color_[2]/255,h=this.color_[3],f=0,c=a.length;f0,6);var f=n.src!==void 0?tt.IDLE:tt.LOADED;return e.color_=n.color!==void 0?Wn(n.color):null,e.iconImage_=ff(u,h,e.imgSize_!==void 0?e.imgSize_:null,e.crossOrigin_,f,e.color_),e.offset_=n.offset!==void 0?n.offset:[0,0],e.offsetOrigin_=n.offsetOrigin!==void 0?n.offsetOrigin:Dt.TOP_LEFT,e.origin_=null,e.size_=n.size!==void 0?n.size:null,e}return r.prototype.clone=function(){var t=this.getScale();return new r({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,imgSize:this.imgSize_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:Array.isArray(t)?t.slice():t,size:this.size_!==null?this.size_.slice():void 0,src:this.getSrc()})},r.prototype.getAnchor=function(){var t=this.normalizedAnchor_;if(!t){t=this.anchor_;var e=this.getSize();if(this.anchorXUnits_==ye.FRACTION||this.anchorYUnits_==ye.FRACTION){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==ye.FRACTION&&(t[0]*=e[0]),this.anchorYUnits_==ye.FRACTION&&(t[1]*=e[1])}if(this.anchorOrigin_!=Dt.TOP_LEFT){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),(this.anchorOrigin_==Dt.TOP_RIGHT||this.anchorOrigin_==Dt.BOTTOM_RIGHT)&&(t[0]=-t[0]+e[0]),(this.anchorOrigin_==Dt.BOTTOM_LEFT||this.anchorOrigin_==Dt.BOTTOM_RIGHT)&&(t[1]=-t[1]+e[1])}this.normalizedAnchor_=t}var n=this.getDisplacement();return[t[0]-n[0],t[1]+n[1]]},r.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},r.prototype.getColor=function(){return this.color_},r.prototype.getImage=function(t){return this.iconImage_.getImage(t)},r.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},r.prototype.getImageSize=function(){return this.iconImage_.getSize()},r.prototype.getImageState=function(){return this.iconImage_.getImageState()},r.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},r.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_;if(this.offsetOrigin_!=Dt.TOP_LEFT){var e=this.getSize(),n=this.iconImage_.getSize();if(!e||!n)return null;t=t.slice(),(this.offsetOrigin_==Dt.TOP_RIGHT||this.offsetOrigin_==Dt.BOTTOM_RIGHT)&&(t[0]=n[0]-e[0]-t[0]),(this.offsetOrigin_==Dt.BOTTOM_LEFT||this.offsetOrigin_==Dt.BOTTOM_RIGHT)&&(t[1]=n[1]-e[1]-t[1])}return this.origin_=t,this.origin_},r.prototype.getSrc=function(){return this.iconImage_.getSrc()},r.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},r.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(G.CHANGE,t)},r.prototype.load=function(){this.iconImage_.load()},r.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(G.CHANGE,t)},r}(Ns),Gn=df,Zt=.5;function vf(i,r,t,e,n,o,a){var s=i[0]*Zt,l=i[1]*Zt,u=kt(s,l);u.imageSmoothingEnabled=!1;for(var h=u.canvas,f=new nf(u,Zt,n,null,a),c=t.length,p=Math.floor((256*256*256-1)/c),d={},v=1;v<=c;++v){var g=t[v-1],m=g.getStyleFunction()||e;if(!!e){var _=m(g,o);if(!!_){Array.isArray(_)||(_=[_]);for(var y=v*p,E="#"+("000000"+y.toString(16)).slice(-6),T=0,x=_.length;Tv[2];)++_,y=m*_,f.push(this.getRenderTransform(o,a,s,Zt,c,p,y).slice()),g-=m}this.hitDetectionImageData_=vf(n,f,this.renderedFeatures_,h.getStyleFunction(),u,a,s)}e(gf(t,this.renderedFeatures_,this.hitDetectionImageData_))}.bind(this))},r.prototype.forEachFeatureAtCoordinate=function(t,e,n,o,a){var s=this;if(!!this.replayGroup_){var l=e.viewState.resolution,u=e.viewState.rotation,h=this.getLayer(),f={},c=function(v,g,m){var _=H(v),y=f[_];if(y){if(y!==!0&&mT[0]&&O[2]>T[2]&&E.push([O[0]-x,O[1],O[2]-x,O[3]])}if(!this.dirty_&&this.renderedResolution_==c&&this.renderedRevision_==d&&this.renderedRenderOrder_==g&&je(this.wrappedRenderedExtent_,_))return qe(this.renderedExtent_,y)||(this.hitDetectionImageData_=null,this.renderedExtent_=y),this.renderedCenter_=m,this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var R=new Ra($i(c,p),_,c,p),M;this.getLayer().getDeclutter()&&(M=new Ra($i(c,p),_,c,p));for(var b,I,j,I=0,j=E.length;I=200&&s.status<300){var u=r.getType(),h=void 0;u==be.JSON||u==be.TEXT?h=s.responseText:u==be.XML?(h=s.responseXML,h||(h=new DOMParser().parseFromString(s.responseText,"application/xml"))):u==be.ARRAY_BUFFER&&(h=s.response),h?o(r.readFeatures(h,{extent:t,featureProjection:n}),r.readProjection(h)):a()}else a()},s.onerror=a,s.send()}function Da(i,r){return function(t,e,n,o,a){var s=this;jf(i,r,t,e,n,function(l,u){s.addFeatures(l),o!==void 0&&o(l)},a||Ve)}}var Qs=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),de=function(i){Qs(r,i);function r(t,e,n){var o=i.call(this,t)||this;return o.feature=e,o.features=n,o}return r}(Ht),Xf=function(i){Qs(r,i);function r(t){var e=this,n=t||{};e=i.call(this,{attributions:n.attributions,interpolate:!0,projection:void 0,state:$e.READY,wrapX:n.wrapX!==void 0?n.wrapX:!0})||this,e.on,e.once,e.un,e.loader_=Ve,e.format_=n.format,e.overlaps_=n.overlaps===void 0?!0:n.overlaps,e.url_=n.url,n.loader!==void 0?e.loader_=n.loader:e.url_!==void 0&&(B(e.format_,7),e.loader_=Da(e.url_,e.format_)),e.strategy_=n.strategy!==void 0?n.strategy:kf;var o=n.useSpatialIndex!==void 0?n.useSpatialIndex:!0;e.featuresRtree_=o?new Fa:null,e.loadedExtentsRtree_=new Fa,e.loadingExtentsCount_=0,e.nullGeometryFeatures_={},e.idIndex_={},e.uidIndex_={},e.featureChangeKeys_={},e.featuresCollection_=null;var a,s;return Array.isArray(n.features)?s=n.features:n.features&&(a=n.features,s=a.getArray()),!o&&a===void 0&&(a=new Gt(s)),s!==void 0&&e.addFeaturesInternal(s),a!==void 0&&e.bindFeaturesCollection_(a),e}return r.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},r.prototype.addFeatureInternal=function(t){var e=H(t);if(!this.addToIndex_(e,t)){this.featuresCollection_&&this.featuresCollection_.remove(t);return}this.setupChangeEvents_(e,t);var n=t.getGeometry();if(n){var o=n.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(o,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new de(jt.ADDFEATURE,t))},r.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[W(e,G.CHANGE,this.handleFeatureChange_,this),W(e,Er.PROPERTYCHANGE,this.handleFeatureChange_,this)]},r.prototype.addToIndex_=function(t,e){var n=!0,o=e.getId();return o!==void 0&&(o.toString()in this.idIndex_?n=!1:this.idIndex_[o.toString()]=e),n&&(B(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),n},r.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},r.prototype.addFeaturesInternal=function(t){for(var e=[],n=[],o=[],a=0,s=t.length;a0},r.prototype.refresh=function(){this.clear(!0),this.loadedExtentsRtree_.clear(),i.prototype.refresh.call(this)},r.prototype.removeLoadedExtent=function(t){var e=this.loadedExtentsRtree_,n;e.forEachInExtent(t,function(o){if(zr(o.extent,t))return n=o,!0}),n&&e.remove(n)},r.prototype.removeFeature=function(t){if(!!t){var e=H(t);e in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[e]:this.featuresRtree_&&this.featuresRtree_.remove(t);var n=this.removeFeatureInternal(t);n&&this.changed()}},r.prototype.removeFeatureInternal=function(t){var e=H(t),n=this.featureChangeKeys_[e];if(!!n){n.forEach(J),delete this.featureChangeKeys_[e];var o=t.getId();return o!==void 0&&delete this.idIndex_[o.toString()],delete this.uidIndex_[e],this.dispatchEvent(new de(jt.REMOVEFEATURE,t)),t}},r.prototype.removeFromIdIndex_=function(t){var e=!1;for(var n in this.idIndex_)if(this.idIndex_[n]===t){delete this.idIndex_[n],e=!0;break}return e},r.prototype.setLoader=function(t){this.loader_=t},r.prototype.setUrl=function(t){B(this.format_,7),this.url_=t,this.setLoader(Da(t,this.format_))},r}(Js),dr=Xf;function Ln(i,r){return st(i.inversePixelTransform,r.slice(0))}var D={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4};function tl(i){return Math.pow(i,3)}function er(i){return 1-tl(1-i)}function Yf(i){return 3*i*i-2*i*i*i}function Uf(i){return i}var Wf=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Bf=function(i){Wf(r,i);function r(t,e,n){var o=i.call(this)||this,a=n||{};return o.tileCoord=t,o.state=e,o.interimTile=null,o.key="",o.transition_=a.transition===void 0?250:a.transition,o.transitionStarts_={},o.interpolate=!!a.interpolate,o}return r.prototype.changed=function(){this.dispatchEvent(G.CHANGE)},r.prototype.release=function(){},r.prototype.getKey=function(){return this.key+"/"+this.tileCoord},r.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==D.LOADED)return this.transition_=0,t;t=t.interimTile}while(t);return this},r.prototype.refreshInterimChain=function(){if(!!this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==D.LOADED){t.interimTile=null;break}else t.getState()==D.LOADING?e=t:t.getState()==D.IDLE?e.interimTile=t.interimTile:e=t;t=e.interimTile}while(t)}},r.prototype.getTileCoord=function(){return this.tileCoord},r.prototype.getState=function(){return this.state},r.prototype.setState=function(t){if(this.state!==D.ERROR&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},r.prototype.load=function(){F()},r.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var n=this.transitionStarts_[t];if(!n)n=e,this.transitionStarts_[t]=n;else if(n===-1)return 1;var o=e-n+1e3/60;return o>=this.transition_?1:tl(o/this.transition_)},r.prototype.inTransition=function(t){return this.transition_?this.transitionStarts_[t]!==-1:!1},r.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},r}(xr),el=Bf,Zf=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),zf=function(i){Zf(r,i);function r(t,e,n,o,a,s){var l=i.call(this,t,e,s)||this;return l.crossOrigin_=o,l.src_=n,l.key=n,l.image_=new Image,o!==null&&(l.image_.crossOrigin=o),l.unlisten_=null,l.tileLoadFunction_=a,l}return r.prototype.getImage=function(){return this.image_},r.prototype.setImage=function(t){this.image_=t,this.state=D.LOADED,this.unlistenImage_(),this.changed()},r.prototype.handleImageError_=function(){this.state=D.ERROR,this.unlistenImage_(),this.image_=Kf(),this.changed()},r.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=D.LOADED:this.state=D.EMPTY,this.unlistenImage_(),this.changed()},r.prototype.load=function(){this.state==D.ERROR&&(this.state=D.IDLE,this.image_=new Image,this.crossOrigin_!==null&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==D.IDLE&&(this.state=D.LOADING,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Eo(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},r.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},r}(el);function Kf(){var i=kt(1,1);return i.fillStyle="rgba(0,0,0,0)",i.fillRect(0,0,1,1),i.canvas}var rl=zf,Vf=function(){function i(r,t,e){this.decay_=r,this.minVelocity_=t,this.delay_=e,this.points_=[],this.angle_=0,this.initialVelocity_=0}return i.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},i.prototype.update=function(r,t){this.points_.push(r,t,Date.now())},i.prototype.end=function(){if(this.points_.length<6)return!1;var r=Date.now()-this.delay_,t=this.points_.length-3;if(this.points_[t+2]0&&this.points_[e+2]>r;)e-=3;var n=this.points_[t+2]-this.points_[e+2];if(n<1e3/60)return!1;var o=this.points_[t]-this.points_[e],a=this.points_[t+1]-this.points_[e+1];return this.angle_=Math.atan2(a,o),this.initialVelocity_=Math.sqrt(o*o+a*a)/n,this.initialVelocity_>this.minVelocity_},i.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},i.prototype.getAngle=function(){return this.angle_},i}(),Hf=Vf,$f=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),qf=function(i){$f(r,i);function r(t){var e=i.call(this)||this;return e.map_=t,e}return r.prototype.dispatchRenderEvent=function(t,e){F()},r.prototype.calculateMatrices2D=function(t){var e=t.viewState,n=t.coordinateToPixelTransform,o=t.pixelToCoordinateTransform;se(n,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),no(o,n)},r.prototype.forEachFeatureAtCoordinate=function(t,e,n,o,a,s,l,u){var h,f=e.viewState;function c(A,k,L,z){return a.call(s,k,A?L:null,z)}var p=f.projection,d=gs(t.slice(),p),v=[[0,0]];if(p.canWrapX()&&o){var g=p.getExtent(),m=it(g);v.push([-m,0],[m,0])}for(var _=e.layerStatesArray,y=_.length,E=[],T=[],x=0;x=0;--w){var O=_[w],R=O.layer;if(R.hasRenderer()&&Hn(O,f)&&l.call(u,R)){var M=R.getRenderer(),b=R.getSource();if(M&&b){var I=b.getWrapX()?d:t,j=c.bind(null,O.managed);T[0]=I[0]+v[x][0],T[1]=I[1]+v[x][1],h=M.forEachFeatureAtCoordinate(T,e,n,j,E)}if(h)return h}}if(E.length!==0){var U=1/E.length;return E.forEach(function(A,k){return A.distanceSq+=k*U}),E.sort(function(A,k){return A.distanceSq-k.distanceSq}),E.some(function(A){return h=A.callback(A.feature,A.layer,A.geometry)}),h}},r.prototype.forEachLayerAtPixel=function(t,e,n,o,a){return F()},r.prototype.hasFeatureAtCoordinate=function(t,e,n,o,a,s){var l=this.forEachFeatureAtCoordinate(t,e,n,o,_r,this,a,s);return l!==void 0},r.prototype.getMap=function(){return this.map_},r.prototype.renderFrame=function(t){F()},r.prototype.scheduleExpireIconCache=function(t){qn.canExpireCache()&&t.postRenderFunctions.push(Jf)},r}(eo);function Jf(i,r){qn.expire()}var Qf=qf,tp=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),ep=function(i){tp(r,i);function r(t){var e=i.call(this,t)||this;e.fontChangeListenerKey_=W(ee,Er.PROPERTYCHANGE,t.redrawText.bind(t)),e.element_=document.createElement("div");var n=e.element_.style;n.position="absolute",n.width="100%",n.height="100%",n.zIndex="0",e.element_.className=He+" ol-layers";var o=t.getViewport();return o.insertBefore(e.element_,o.firstChild||null),e.children_=[],e.renderedVisible_=!0,e}return r.prototype.dispatchRenderEvent=function(t,e){var n=this.getMap();if(n.hasListener(t)){var o=new Vs(t,void 0,e);n.dispatchEvent(o)}},r.prototype.disposeInternal=function(){J(this.fontChangeListenerKey_),this.element_.parentNode.removeChild(this.element_),i.prototype.disposeInternal.call(this)},r.prototype.renderFrame=function(t){if(!t){this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1);return}this.calculateMatrices2D(t),this.dispatchRenderEvent(we.PRECOMPOSE,t);var e=t.layerStatesArray.sort(function(p,d){return p.zIndex-d.zIndex}),n=t.viewState;this.children_.length=0;for(var o=[],a=null,s=0,l=e.length;s=0;--s)o[s].renderDeclutter(t);Bh(this.element_,this.children_),this.dispatchRenderEvent(we.POSTCOMPOSE,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)},r.prototype.forEachLayerAtPixel=function(t,e,n,o,a){for(var s=e.viewState,l=e.layerStatesArray,u=l.length,h=u-1;h>=0;--h){var f=l[h],c=f.layer;if(c.hasRenderer()&&Hn(f,s)&&a(c)){var p=c.getRenderer(),d=p.getDataAtPixel(t,e,n);if(d){var v=o(c,d);if(v)return v}}}},r}(Qf),rp=ep,nl=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),me=function(i){nl(r,i);function r(t,e){var n=i.call(this,t)||this;return n.layer=e,n}return r}(Ht),Si={LAYERS:"layers"},np=function(i){nl(r,i);function r(t){var e=this,n=t||{},o=ut({},n);delete o.layers;var a=n.layers;return e=i.call(this,o)||this,e.on,e.once,e.un,e.layersListenerKeys_=[],e.listenerKeys_={},e.addChangeListener(Si.LAYERS,e.handleLayersChanged_),a?Array.isArray(a)?a=new Gt(a.slice(),{unique:!0}):B(typeof a.getArray=="function",43):a=new Gt(void 0,{unique:!0}),e.setLayers(a),e}return r.prototype.handleLayerChange_=function(){this.changed()},r.prototype.handleLayersChanged_=function(){this.layersListenerKeys_.forEach(J),this.layersListenerKeys_.length=0;var t=this.getLayers();this.layersListenerKeys_.push(W(t,St.ADD,this.handleLayersAdd_,this),W(t,St.REMOVE,this.handleLayersRemove_,this));for(var e in this.listenerKeys_)this.listenerKeys_[e].forEach(J);tn(this.listenerKeys_);for(var n=t.getArray(),o=0,a=n.length;othis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},r.prototype.disposeInternal=function(){this.relayedListenerKey_&&(J(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(G.TOUCHMOVE,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(J(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(J),this.dragListenerKeys_.length=0,this.element_=null,i.prototype.disposeInternal.call(this)},r}(xr),hp=up,re={POSTRENDER:"postrender",MOVESTART:"movestart",MOVEEND:"moveend",LOADSTART:"loadstart",LOADEND:"loadend"},dt={LAYERGROUP:"layergroup",SIZE:"size",TARGET:"target",VIEW:"view"},Jn=1/0,cp=function(){function i(r,t){this.priorityFunction_=r,this.keyFunction_=t,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return i.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,tn(this.queuedElements_)},i.prototype.dequeue=function(){var r=this.elements_,t=this.priorities_,e=r[0];r.length==1?(r.length=0,t.length=0):(r[0]=r.pop(),t[0]=t.pop(),this.siftUp_(0));var n=this.keyFunction_(e);return delete this.queuedElements_[n],e},i.prototype.enqueue=function(r){B(!(this.keyFunction_(r)in this.queuedElements_),31);var t=this.priorityFunction_(r);return t!=Jn?(this.elements_.push(r),this.priorities_.push(t),this.queuedElements_[this.keyFunction_(r)]=!0,this.siftDown_(0,this.elements_.length-1),!0):!1},i.prototype.getCount=function(){return this.elements_.length},i.prototype.getLeftChildIndex_=function(r){return r*2+1},i.prototype.getRightChildIndex_=function(r){return r*2+2},i.prototype.getParentIndex_=function(r){return r-1>>1},i.prototype.heapify_=function(){var r;for(r=(this.elements_.length>>1)-1;r>=0;r--)this.siftUp_(r)},i.prototype.isEmpty=function(){return this.elements_.length===0},i.prototype.isKeyQueued=function(r){return r in this.queuedElements_},i.prototype.isQueued=function(r){return this.isKeyQueued(this.keyFunction_(r))},i.prototype.siftUp_=function(r){for(var t=this.elements_,e=this.priorities_,n=t.length,o=t[r],a=e[r],s=r;r>1;){var l=this.getLeftChildIndex_(r),u=this.getRightChildIndex_(r),h=ur;){var s=this.getParentIndex_(t);if(n[s]>a)e[t]=e[s],n[t]=n[s],t=s;else break}e[t]=o,n[t]=a},i.prototype.reprioritize=function(){var r=this.priorityFunction_,t=this.elements_,e=this.priorities_,n=0,o=t.length,a,s,l;for(s=0;s0;)a=this.dequeue()[0],s=a.getKey(),o=a.getState(),o===D.IDLE&&!(s in this.tilesLoadingKeys_)&&(this.tilesLoadingKeys_[s]=!0,++this.tilesLoading_,++n,a.load())},r}(fp),vp=dp;function gp(i,r,t,e,n){if(!i||!(t in i.wantedTiles)||!i.wantedTiles[t][r.getKey()])return Jn;var o=i.viewState.center,a=e[0]-o[0],s=e[1]-o[1];return 65536*Math.log(n)+Math.sqrt(a*a+s*s)/n}var Xt={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"},_p=42,To=256;function Ga(i,r,t){return function(e,n,o,a,s){if(!!e){if(!n&&!r)return e;var l=r?0:o[0]*n,u=r?0:o[1]*n,h=s?s[0]:0,f=s?s[1]:0,c=i[0]+l/2+h,p=i[2]-l/2+h,d=i[1]+u/2+f,v=i[3]-u/2+f;c>p&&(c=(p+c)/2,p=c),d>v&&(d=(v+d)/2,v=d);var g=ot(e[0],c,p),m=ot(e[1],d,v);if(a&&t&&n){var _=30*n;g+=-_*Math.log(1+Math.max(0,c-e[0])/_)+_*Math.log(1+Math.max(0,e[0]-p)/_),m+=-_*Math.log(1+Math.max(0,d-e[1])/_)+_*Math.log(1+Math.max(0,e[1]-v)/_)}return[g,m]}}}function yp(i){return i}function Co(i,r,t,e){var n=it(r)/t[0],o=Ut(r)/t[1];return e?Math.min(i,Math.max(n,o)):Math.min(i,Math.min(n,o))}function xo(i,r,t){var e=Math.min(i,r),n=50;return e*=Math.log(1+n*Math.max(0,i/r-1))/n+1,t&&(e=Math.max(e,t),e/=Math.log(1+n*Math.max(0,t/i-1))/n+1),ot(e,t/2,r*2)}function mp(i,r,t,e){return function(n,o,a,s){if(n!==void 0){var l=i[0],u=i[i.length-1],h=t?Co(l,t,a,e):l;if(s){var f=r!==void 0?r:!0;return f?xo(n,h,u):ot(n,u,h)}var c=Math.min(h,n),p=Math.floor(ro(i,c,o));return i[p]>h&&p1&&typeof arguments[e-1]=="function"&&(n=arguments[e-1],--e);for(var o=0;o0},r.prototype.getInteracting=function(){return this.hints_[Ct.INTERACTING]>0},r.prototype.cancelAnimations=function(){this.setHint(Ct.ANIMATING,-this.hints_[Ct.ANIMATING]);for(var t,e=0,n=this.animations_.length;e=0;--n){for(var o=this.animations_[n],a=!0,s=0,l=o.length;s0?h/u.duration:1;f>=1?(u.complete=!0,f=1):a=!1;var c=u.easing(f);if(u.sourceCenter){var p=u.sourceCenter[0],d=u.sourceCenter[1],v=u.targetCenter[0],g=u.targetCenter[1];this.nextCenter_=u.targetCenter;var m=p+c*(v-p),_=d+c*(g-d);this.targetCenter_=[m,_]}if(u.sourceResolution&&u.targetResolution){var y=c===1?u.targetResolution:u.sourceResolution+c*(u.targetResolution-u.sourceResolution);if(u.anchor){var E=this.getViewportSize_(this.getRotation()),T=this.constraints_.resolution(y,0,E,!0);this.targetCenter_=this.calculateCenterZoom(T,u.anchor)}this.nextResolution_=u.targetResolution,this.targetResolution_=y,this.applyTargetState_(!0)}if(u.sourceRotation!==void 0&&u.targetRotation!==void 0){var x=c===1?yr(u.targetRotation+Math.PI,2*Math.PI)-Math.PI:u.sourceRotation+c*(u.targetRotation-u.sourceRotation);if(u.anchor){var w=this.constraints_.rotation(x,!0);this.targetCenter_=this.calculateCenterRotate(w,u.anchor)}this.nextRotation_=u.targetRotation,this.targetRotation_=x}if(this.applyTargetState_(!0),e=!0,!u.complete)break}}if(a){this.animations_[n]=null,this.setHint(Ct.ANIMATING,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;var O=o[0].callback;O&&In(O,!0)}}this.animations_=this.animations_.filter(Boolean),e&&this.updateAnimationKey_===void 0&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},r.prototype.calculateCenterRotate=function(t,e){var n,o=this.getCenterInternal();return o!==void 0&&(n=[o[0]-e[0],o[1]-e[1]],so(n,t-this.getRotation()),ds(n,e)),n},r.prototype.calculateCenterZoom=function(t,e){var n,o=this.getCenterInternal(),a=this.getResolution();if(o!==void 0&&a!==void 0){var s=e[0]-t*(e[0]-o[0])/a,l=e[1]-t*(e[1]-o[1])/a;n=[s,l]}return n},r.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var n=e[0],o=e[1];return[Math.abs(n*Math.cos(t))+Math.abs(o*Math.sin(t)),Math.abs(n*Math.sin(t))+Math.abs(o*Math.cos(t))]}else return e},r.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},r.prototype.getCenter=function(){var t=this.getCenterInternal();return t&&Bi(t,this.getProjection())},r.prototype.getCenterInternal=function(){return this.get(Xt.CENTER)},r.prototype.getConstraints=function(){return this.constraints_},r.prototype.getConstrainResolution=function(){return this.get("constrainResolution")},r.prototype.getHints=function(t){return t!==void 0?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},r.prototype.calculateExtent=function(t){var e=this.calculateExtentInternal(t);return Es(e,this.getProjection())},r.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSizeMinusPadding_(),n=this.getCenterInternal();B(n,1);var o=this.getResolution();B(o!==void 0,2);var a=this.getRotation();return B(a!==void 0,3),Yi(n,o,a,e)},r.prototype.getMaxResolution=function(){return this.maxResolution_},r.prototype.getMinResolution=function(){return this.minResolution_},r.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},r.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},r.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},r.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},r.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},r.prototype.getProjection=function(){return this.projection_},r.prototype.getResolution=function(){return this.get(Xt.RESOLUTION)},r.prototype.getResolutions=function(){return this.resolutions_},r.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(Xe(t,this.getProjection()),e)},r.prototype.getResolutionForExtentInternal=function(t,e){var n=e||this.getViewportSizeMinusPadding_(),o=it(t)/n[0],a=Ut(t)/n[1];return Math.max(o,a)},r.prototype.getResolutionForValueFunction=function(t){var e=t||2,n=this.getConstrainedResolution(this.maxResolution_),o=this.minResolution_,a=Math.log(n/o)/Math.log(e);return function(s){var l=n/Math.pow(e,s*a);return l}},r.prototype.getRotation=function(){return this.get(Xt.ROTATION)},r.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),n=this.getConstrainedResolution(this.maxResolution_),o=this.minResolution_,a=Math.log(n/o)/e;return function(s){var l=Math.log(n/s)/e/a;return l}},r.prototype.getViewportSizeMinusPadding_=function(t){var e=this.getViewportSize_(t),n=this.padding_;return n&&(e=[e[0]-n[1]-n[3],e[1]-n[0]-n[2]]),e},r.prototype.getState=function(){var t=this.getProjection(),e=this.getResolution(),n=this.getRotation(),o=this.getCenterInternal(),a=this.padding_;if(a){var s=this.getViewportSizeMinusPadding_();o=Pi(o,this.getViewportSize_(),[s[0]/2+a[3],s[1]/2+a[0]],e,n)}return{center:o.slice(0),projection:t!==void 0?t:null,resolution:e,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:n,zoom:this.getZoom()}},r.prototype.getZoom=function(){var t,e=this.getResolution();return e!==void 0&&(t=this.getZoomForResolution(e)),t},r.prototype.getZoomForResolution=function(t){var e=this.minZoom_||0,n,o;if(this.resolutions_){var a=ro(this.resolutions_,t,1);e=a,n=this.resolutions_[a],a==this.resolutions_.length-1?o=2:o=n/this.resolutions_[a+1]}else n=this.maxResolution_,o=this.zoomFactor_;return e+Math.log(n/t)/Math.log(o)},r.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=ot(Math.floor(t),0,this.resolutions_.length-2),n=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(n,ot(t-e,0,1))}else return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},r.prototype.fit=function(t,e){var n;if(B(Array.isArray(t)||typeof t.getSimplifiedGeometry=="function",24),Array.isArray(t)){B(!ao(t),25);var o=Xe(t,this.getProjection());n=va(o)}else if(t.getType()===P.CIRCLE){var o=Xe(t.getExtent(),this.getProjection());n=va(o),n.rotate(this.getRotation(),Re(o))}else{var a=Hu();a?n=t.clone().transform(a,this.getProjection()):n=t}this.fitInternal(n,e)},r.prototype.rotatedExtentForGeometry=function(t){for(var e=this.getRotation(),n=Math.cos(e),o=Math.sin(-e),a=t.getFlatCoordinates(),s=t.getStride(),l=1/0,u=1/0,h=-1/0,f=-1/0,c=0,p=a.length;c=0;u--){var h=l[u];if(!(h.getMap()!==this||!h.getActive()||!this.getTargetElement())){var f=h.handleEvent(t);if(!f||t.propagationStopped)break}}}},r.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var n=this.maxTilesLoading_,o=n;if(t){var a=t.viewHints;if(a[Ct.ANIMATING]||a[Ct.INTERACTING]){var s=Date.now()-t.time>8;n=s?0:8,o=s?0:2}}e.getTilesLoading()0;if(this.renderedVisible_!=n&&(this.element.style.display=n?"":"none",this.renderedVisible_=n),!qe(e,this.renderedAttributions_)){ks(this.ulElement_);for(var o=0,a=e.length;o0&&n%(2*Math.PI)!==0?e.animate({rotation:0,duration:this.duration_,easing:er}):e.setRotation(0))}},r.prototype.render=function(t){var e=t.frameState;if(!!e){var n=e.viewState.rotation;if(n!=this.rotation_){var o="rotate("+n+"rad)";if(this.autoHide_){var a=this.element.classList.contains(wn);!a&&n===0?this.element.classList.add(wn):a&&n!==0&&this.element.classList.remove(wn)}this.label_.style.transform=o}this.rotation_=n}},r}(ln),Xp=jp,Yp=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Up=function(i){Yp(r,i);function r(t){var e=this,n=t||{};e=i.call(this,{element:document.createElement("div"),target:n.target})||this;var o=n.className!==void 0?n.className:"ol-zoom",a=n.delta!==void 0?n.delta:1,s=n.zoomInClassName!==void 0?n.zoomInClassName:o+"-in",l=n.zoomOutClassName!==void 0?n.zoomOutClassName:o+"-out",u=n.zoomInLabel!==void 0?n.zoomInLabel:"+",h=n.zoomOutLabel!==void 0?n.zoomOutLabel:"\u2013",f=n.zoomInTipLabel!==void 0?n.zoomInTipLabel:"Zoom in",c=n.zoomOutTipLabel!==void 0?n.zoomOutTipLabel:"Zoom out",p=document.createElement("button");p.className=s,p.setAttribute("type","button"),p.title=f,p.appendChild(typeof u=="string"?document.createTextNode(u):u),p.addEventListener(G.CLICK,e.handleClick_.bind(e,a),!1);var d=document.createElement("button");d.className=l,d.setAttribute("type","button"),d.title=c,d.appendChild(typeof h=="string"?document.createTextNode(h):h),d.addEventListener(G.CLICK,e.handleClick_.bind(e,-a),!1);var v=o+" "+He+" "+on,g=e.element;return g.className=v,g.appendChild(p),g.appendChild(d),e.duration_=n.duration!==void 0?n.duration:250,e}return r.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},r.prototype.zoomByDelta_=function(t){var e=this.getMap(),n=e.getView();if(!!n){var o=n.getZoom();if(o!==void 0){var a=n.getConstrainedZoom(o+t);this.duration_>0?(n.getAnimating()&&n.cancelAnimations(),n.animate({zoom:a,duration:this.duration_,easing:er})):n.setZoom(a)}}},r}(ln),Wp=Up,Bp=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),ja=["fullscreenchange","webkitfullscreenchange","MSFullscreenChange"],Xa={ENTERFULLSCREEN:"enterfullscreen",LEAVEFULLSCREEN:"leavefullscreen"},Zp=function(i){Bp(r,i);function r(t){var e=this,n=t||{};e=i.call(this,{element:document.createElement("div"),target:n.target})||this,e.on,e.once,e.un,e.keys_=n.keys!==void 0?n.keys:!1,e.source_=n.source,e.isInFullscreen_=!1,e.boundHandleMapTargetChange_=e.handleMapTargetChange_.bind(e),e.cssClassName_=n.className!==void 0?n.className:"ol-full-screen",e.documentListeners_=[],e.activeClassName_=n.activeClassName!==void 0?n.activeClassName.split(" "):[e.cssClassName_+"-true"],e.inactiveClassName_=n.inactiveClassName!==void 0?n.inactiveClassName.split(" "):[e.cssClassName_+"-false"];var o=n.label!==void 0?n.label:"\u2922";e.labelNode_=typeof o=="string"?document.createTextNode(o):o;var a=n.labelActive!==void 0?n.labelActive:"\xD7";e.labelActiveNode_=typeof a=="string"?document.createTextNode(a):a;var s=n.tipLabel?n.tipLabel:"Toggle full-screen";return e.button_=document.createElement("button"),e.button_.title=s,e.button_.setAttribute("type","button"),e.button_.appendChild(e.labelNode_),e.button_.addEventListener(G.CLICK,e.handleClick_.bind(e),!1),e.setClassName_(e.button_,e.isInFullscreen_),e.element.className="".concat(e.cssClassName_," ").concat(He," ").concat(on),e.element.appendChild(e.button_),e}return r.prototype.handleClick_=function(t){t.preventDefault(),this.handleFullScreen_()},r.prototype.handleFullScreen_=function(){var t=this.getMap();if(!!t){var e=t.getOwnerDocument();if(!!Ya(e))if(Ua(e))Kp(e);else{var n=void 0;this.source_?n=typeof this.source_=="string"?e.getElementById(this.source_):this.source_:n=t.getTargetElement(),this.keys_?zp(n):al(n)}}},r.prototype.handleFullScreenChange_=function(){var t=this.getMap();if(!!t){var e=this.isInFullscreen_;this.isInFullscreen_=Ua(t.getOwnerDocument()),e!==this.isInFullscreen_&&(this.setClassName_(this.button_,this.isInFullscreen_),this.isInFullscreen_?(Bn(this.labelActiveNode_,this.labelNode_),this.dispatchEvent(Xa.ENTERFULLSCREEN)):(Bn(this.labelNode_,this.labelActiveNode_),this.dispatchEvent(Xa.LEAVEFULLSCREEN)),t.updateSize())}},r.prototype.setClassName_=function(t,e){var n,o,a,s;e?((n=t.classList).remove.apply(n,this.inactiveClassName_),(o=t.classList).add.apply(o,this.activeClassName_)):((a=t.classList).remove.apply(a,this.activeClassName_),(s=t.classList).add.apply(s,this.inactiveClassName_))},r.prototype.setMap=function(t){var e=this.getMap();e&&e.removeChangeListener(dt.TARGET,this.boundHandleMapTargetChange_),i.prototype.setMap.call(this,t),this.handleMapTargetChange_(),t&&t.addChangeListener(dt.TARGET,this.boundHandleMapTargetChange_)},r.prototype.handleMapTargetChange_=function(){for(var t=this.documentListeners_,e=0,n=t.length;en?(this.direction_=jr.HORIZONTAL,this.widthLimit_=e-l):(this.direction_=jr.VERTICAL,this.heightLimit_=n-u),this.sliderInitialized_=!0},r.prototype.handleContainerClick_=function(t){var e=this.getMap().getView(),n=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),o=this.getResolutionForPosition_(n),a=e.getConstrainedZoom(e.getZoomForResolution(o));e.animateInternal({zoom:a,duration:this.duration_,easing:er})},r.prototype.handleDraggerStart_=function(t){if(!this.dragging_&&t.target===this.element.firstElementChild){var e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,this.dragListenerKeys_.length===0){var n=this.handleDraggerDrag_,o=this.handleDraggerEnd_,a=this.getMap().getOwnerDocument();this.dragListenerKeys_.push(W(a,Ee.POINTERMOVE,n,this),W(a,Ee.POINTERUP,o,this))}}},r.prototype.handleDraggerDrag_=function(t){if(this.dragging_){var e=t.clientX-this.startX_,n=t.clientY-this.startY_,o=this.getRelativePosition_(e,n);this.currentResolution_=this.getResolutionForPosition_(o),this.getMap().getView().setResolution(this.currentResolution_)}},r.prototype.handleDraggerEnd_=function(t){if(this.dragging_){var e=this.getMap().getView();e.endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(J),this.dragListenerKeys_.length=0}},r.prototype.setThumbPosition_=function(t){var e=this.getPositionForResolution_(t),n=this.element.firstElementChild;this.direction_==jr.HORIZONTAL?n.style.left=this.widthLimit_*e+"px":n.style.top=this.heightLimit_*e+"px"},r.prototype.getRelativePosition_=function(t,e){var n;return this.direction_===jr.HORIZONTAL?n=t/this.widthLimit_:n=e/this.heightLimit_,ot(n,0,1)},r.prototype.getResolutionForPosition_=function(t){var e=this.getMap().getView().getResolutionForValueFunction();return e(1-t)},r.prototype.getPositionForResolution_=function(t){var e=this.getMap().getView().getValueForResolutionFunction();return ot(1-e(t),0,1)},r.prototype.render=function(t){if(!!t.frameState&&!(!this.sliderInitialized_&&!this.initSlider_())){var e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}},r}(ln),td=Qp;function sl(i){var r=i||{},t=new Gt,e=r.zoom!==void 0?r.zoom:!0;e&&t.push(new Wp(r.zoomOptions));var n=r.rotate!==void 0?r.rotate:!0;n&&t.push(new Xp(r.rotateOptions));var o=r.attribution!==void 0?r.attribution:!0;return o&&t.push(new kp(r.attributionOptions)),t}var Wa={ACTIVE:"active"},ed=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),rd=function(i){ed(r,i);function r(t){var e=i.call(this)||this;return e.on,e.once,e.un,t&&t.handleEvent&&(e.handleEvent=t.handleEvent),e.map_=null,e.setActive(!0),e}return r.prototype.getActive=function(){return this.get(Wa.ACTIVE)},r.prototype.getMap=function(){return this.map_},r.prototype.handleEvent=function(t){return!0},r.prototype.setActive=function(t){this.set(Wa.ACTIVE,t)},r.prototype.setMap=function(t){this.map_=t},r}(bt);function nd(i,r,t){var e=i.getCenterInternal();if(e){var n=[e[0]+r[0],e[1]+r[1]];i.animateInternal({duration:t!==void 0?t:250,easing:Uf,center:i.getConstrainedCenter(n)})}}function wo(i,r,t,e){var n=i.getZoom();if(n!==void 0){var o=i.getConstrainedZoom(n+r),a=i.getResolutionForZoom(o);i.getAnimating()&&i.cancelAnimations(),i.animate({resolution:a,anchor:t,duration:e!==void 0?e:250,easing:er})}}var un=rd,id=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),od=function(i){id(r,i);function r(t){var e=i.call(this)||this,n=t||{};return e.delta_=n.delta?n.delta:1,e.duration_=n.duration!==void 0?n.duration:250,e}return r.prototype.handleEvent=function(t){var e=!1;if(t.type==et.DBLCLICK){var n=t.originalEvent,o=t.map,a=t.coordinate,s=n.shiftKey?-this.delta_:this.delta_,l=o.getView();wo(l,s,a,this.duration_),n.preventDefault(),e=!0}return!e},r}(un),ad=od,sd=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),ld=function(i){sd(r,i);function r(t){var e=this,n=t||{};return e=i.call(this,n)||this,n.handleDownEvent&&(e.handleDownEvent=n.handleDownEvent),n.handleDragEvent&&(e.handleDragEvent=n.handleDragEvent),n.handleMoveEvent&&(e.handleMoveEvent=n.handleMoveEvent),n.handleUpEvent&&(e.handleUpEvent=n.handleUpEvent),n.stopDown&&(e.stopDown=n.stopDown),e.handlingDownUpSequence=!1,e.trackedPointers_={},e.targetPointers=[],e}return r.prototype.getPointerCount=function(){return this.targetPointers.length},r.prototype.handleDownEvent=function(t){return!1},r.prototype.handleDragEvent=function(t){},r.prototype.handleEvent=function(t){if(!t.originalEvent)return!0;var e=!1;if(this.updateTrackedPointers_(t),this.handlingDownUpSequence){if(t.type==et.POINTERDRAG)this.handleDragEvent(t),t.originalEvent.preventDefault();else if(t.type==et.POINTERUP){var n=this.handleUpEvent(t);this.handlingDownUpSequence=n&&this.targetPointers.length>0}}else if(t.type==et.POINTERDOWN){var o=this.handleDownEvent(t);this.handlingDownUpSequence=o,e=this.stopDown(o)}else t.type==et.POINTERMOVE&&this.handleMoveEvent(t);return!e},r.prototype.handleMoveEvent=function(t){},r.prototype.handleUpEvent=function(t){return!1},r.prototype.stopDown=function(t){return t},r.prototype.updateTrackedPointers_=function(t){if(ud(t)){var e=t.originalEvent,n=e.pointerId.toString();t.type==et.POINTERUP?delete this.trackedPointers_[n]:t.type==et.POINTERDOWN?this.trackedPointers_[n]=e:n in this.trackedPointers_&&(this.trackedPointers_[n]=e),this.targetPointers=Qa(this.trackedPointers_)}},r}(un);function So(i){for(var r=i.length,t=0,e=0,n=0;n0&&this.condition_(t)){var e=t.map,n=e.getView();return this.lastCentroid=null,n.getAnimating()&&n.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}else return!1},r}(hn),fl=gd,_d=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),yd=function(i){_d(r,i);function r(t){var e=this,n=t||{};return e=i.call(this,{stopDown:ei})||this,e.condition_=n.condition?n.condition:hd,e.lastAngle_=void 0,e.duration_=n.duration!==void 0?n.duration:250,e}return r.prototype.handleDragEvent=function(t){if(!!Li(t)){var e=t.map,n=e.getView();if(n.getConstraints().rotation!==Oo){var o=e.getSize(),a=t.pixel,s=Math.atan2(o[1]/2-a[1],a[0]-o[0]/2);if(this.lastAngle_!==void 0){var l=s-this.lastAngle_;n.adjustRotationInternal(-l)}this.lastAngle_=s}}},r.prototype.handleUpEvent=function(t){if(!Li(t))return!0;var e=t.map,n=e.getView();return n.endInteraction(this.duration_),!1},r.prototype.handleDownEvent=function(t){if(!Li(t))return!1;if(ul(t)&&this.condition_(t)){var e=t.map;return e.getView().beginInteraction(),this.lastAngle_=void 0,!0}else return!1},r}(hn),md=yd,Ed=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Td=function(i){Ed(r,i);function r(t){var e=i.call(this)||this;return e.geometry_=null,e.element_=document.createElement("div"),e.element_.style.position="absolute",e.element_.style.pointerEvents="auto",e.element_.className="ol-box "+t,e.map_=null,e.startPixel_=null,e.endPixel_=null,e}return r.prototype.disposeInternal=function(){this.setMap(null)},r.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,n="px",o=this.element_.style;o.left=Math.min(t[0],e[0])+n,o.top=Math.min(t[1],e[1])+n,o.width=Math.abs(e[0]-t[0])+n,o.height=Math.abs(e[1]-t[1])+n},r.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},r.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},r.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,n=[t,[t[0],e[1]],e,[e[0],t[1]]],o=n.map(this.map_.getCoordinateFromPixelInternal,this.map_);o[4]=o[0].slice(),this.geometry_?this.geometry_.setCoordinates([o]):this.geometry_=new Yn([o])},r.prototype.getGeometry=function(){return this.geometry_},r}(eo),Cd=Td,pl=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),An={BOXSTART:"boxstart",BOXDRAG:"boxdrag",BOXEND:"boxend",BOXCANCEL:"boxcancel"},Ii=function(i){pl(r,i);function r(t,e,n){var o=i.call(this,t)||this;return o.coordinate=e,o.mapBrowserEvent=n,o}return r}(Ht),xd=function(i){pl(r,i);function r(t){var e=i.call(this)||this;e.on,e.once,e.un;var n=t||{};return e.box_=new Cd(n.className||"ol-dragbox"),e.minArea_=n.minArea!==void 0?n.minArea:64,n.onBoxEnd&&(e.onBoxEnd=n.onBoxEnd),e.startPixel_=null,e.condition_=n.condition?n.condition:ul,e.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:e.defaultBoxEndCondition,e}return r.prototype.defaultBoxEndCondition=function(t,e,n){var o=n[0]-e[0],a=n[1]-e[1];return o*o+a*a>=this.minArea_},r.prototype.getGeometry=function(){return this.box_.getGeometry()},r.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Ii(An.BOXDRAG,t.coordinate,t))},r.prototype.handleUpEvent=function(t){this.box_.setMap(null);var e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new Ii(e?An.BOXEND:An.BOXCANCEL,t.coordinate,t)),!1},r.prototype.handleDownEvent=function(t){return this.condition_(t)?(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Ii(An.BOXSTART,t.coordinate,t)),!0):!1},r.prototype.onBoxEnd=function(t){},r}(hn),Od=xd,wd=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Sd=function(i){wd(r,i);function r(t){var e=this,n=t||{},o=n.condition?n.condition:pd;return e=i.call(this,{condition:o,className:n.className||"ol-dragzoom",minArea:n.minArea})||this,e.duration_=n.duration!==void 0?n.duration:200,e.out_=n.out!==void 0?n.out:!1,e}return r.prototype.onBoxEnd=function(t){var e=this.getMap(),n=e.getView(),o=this.getGeometry();if(this.out_){var a=n.rotatedExtentForGeometry(o),s=n.getResolutionForExtentInternal(a),l=n.getResolution()/s;o=o.clone(),o.scale(l*l)}n.fitInternal(o,{duration:this.duration_,easing:er})},r}(Od),Rd=Sd,Ne={LEFT:37,UP:38,RIGHT:39,DOWN:40},Pd=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Ld=function(i){Pd(r,i);function r(t){var e=i.call(this)||this,n=t||{};return e.defaultCondition_=function(o){return hl(o)&&cl(o)},e.condition_=n.condition!==void 0?n.condition:e.defaultCondition_,e.duration_=n.duration!==void 0?n.duration:100,e.pixelDelta_=n.pixelDelta!==void 0?n.pixelDelta:128,e}return r.prototype.handleEvent=function(t){var e=!1;if(t.type==G.KEYDOWN){var n=t.originalEvent,o=n.keyCode;if(this.condition_(t)&&(o==Ne.DOWN||o==Ne.LEFT||o==Ne.RIGHT||o==Ne.UP)){var a=t.map,s=a.getView(),l=s.getResolution()*this.pixelDelta_,u=0,h=0;o==Ne.DOWN?h=-l:o==Ne.LEFT?u=-l:o==Ne.RIGHT?u=l:h=l;var f=[u,h];so(f,s.getRotation()),nd(s,f,this.duration_),n.preventDefault(),e=!0}}return!e},r}(un),Id=Ld,Ad=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Md=function(i){Ad(r,i);function r(t){var e=i.call(this)||this,n=t||{};return e.condition_=n.condition?n.condition:cl,e.delta_=n.delta?n.delta:1,e.duration_=n.duration!==void 0?n.duration:100,e}return r.prototype.handleEvent=function(t){var e=!1;if(t.type==G.KEYDOWN||t.type==G.KEYPRESS){var n=t.originalEvent,o=n.charCode;if(this.condition_(t)&&(o=="+".charCodeAt(0)||o=="-".charCodeAt(0))){var a=t.map,s=o=="+".charCodeAt(0)?this.delta_:-this.delta_,l=a.getView();wo(l,s,void 0,this.duration_),n.preventDefault(),e=!0}}return!e},r}(un),Fd=Md,Nd=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Ai={TRACKPAD:"trackpad",WHEEL:"wheel"},Dd=function(i){Nd(r,i);function r(t){var e=this,n=t||{};e=i.call(this,n)||this,e.totalDelta_=0,e.lastDelta_=0,e.maxDelta_=n.maxDelta!==void 0?n.maxDelta:1,e.duration_=n.duration!==void 0?n.duration:250,e.timeout_=n.timeout!==void 0?n.timeout:80,e.useAnchor_=n.useAnchor!==void 0?n.useAnchor:!0,e.constrainResolution_=n.constrainResolution!==void 0?n.constrainResolution:!1;var o=n.condition?n.condition:fd;return e.condition_=n.onFocusOnly?qi(ll,o):o,e.lastAnchor_=null,e.startTime_=void 0,e.timeoutId_,e.mode_=void 0,e.trackpadEventGap_=400,e.trackpadTimeoutId_,e.deltaPerZoom_=300,e}return r.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0;var t=this.getMap().getView();t.endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},r.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;var e=t.type;if(e!==G.WHEEL)return!0;var n=t.map,o=t.originalEvent;o.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate);var a;if(t.type==G.WHEEL&&(a=o.deltaY,pu&&o.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(a/=is),o.deltaMode===WheelEvent.DOM_DELTA_LINE&&(a*=40)),a===0)return!1;this.lastDelta_=a;var s=Date.now();this.startTime_===void 0&&(this.startTime_=s),(!this.mode_||s-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(a)<4?Ai.TRACKPAD:Ai.WHEEL);var l=n.getView();if(this.mode_===Ai.TRACKPAD&&!(l.getConstrainResolution()||this.constrainResolution_))return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(l.getAnimating()&&l.cancelAnimations(),l.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),l.adjustZoom(-a/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=s,!1;this.totalDelta_+=a;var u=Math.max(this.timeout_-(s-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,n),u),!1},r.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var n=-ot(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(n=n?n>0?1:-1:0),wo(e,n,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},r.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},r}(un),dl=Dd,Gd=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),kd=function(i){Gd(r,i);function r(t){var e=this,n=t||{},o=n;return o.stopDown||(o.stopDown=ei),e=i.call(this,o)||this,e.anchor_=null,e.lastAngle_=void 0,e.rotating_=!1,e.rotationDelta_=0,e.threshold_=n.threshold!==void 0?n.threshold:.3,e.duration_=n.duration!==void 0?n.duration:250,e}return r.prototype.handleDragEvent=function(t){var e=0,n=this.targetPointers[0],o=this.targetPointers[1],a=Math.atan2(o.clientY-n.clientY,o.clientX-n.clientX);if(this.lastAngle_!==void 0){var s=a-this.lastAngle_;this.rotationDelta_+=s,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=s}this.lastAngle_=a;var l=t.map,u=l.getView();if(u.getConstraints().rotation!==Oo){var h=l.getViewport().getBoundingClientRect(),f=So(this.targetPointers);f[0]-=h.left,f[1]-=h.top,this.anchor_=l.getCoordinateFromPixelInternal(f),this.rotating_&&(l.render(),u.adjustRotationInternal(e,this.anchor_))}},r.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map,n=e.getView();return n.endInteraction(this.duration_),!1}else return!0},r.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}else return!1},r}(hn),bd=kd,jd=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Xd=function(i){jd(r,i);function r(t){var e=this,n=t||{},o=n;return o.stopDown||(o.stopDown=ei),e=i.call(this,o)||this,e.anchor_=null,e.duration_=n.duration!==void 0?n.duration:400,e.lastDistance_=void 0,e.lastScaleDelta_=1,e}return r.prototype.handleDragEvent=function(t){var e=1,n=this.targetPointers[0],o=this.targetPointers[1],a=n.clientX-o.clientX,s=n.clientY-o.clientY,l=Math.sqrt(a*a+s*s);this.lastDistance_!==void 0&&(e=this.lastDistance_/l),this.lastDistance_=l;var u=t.map,h=u.getView();e!=1&&(this.lastScaleDelta_=e);var f=u.getViewport().getBoundingClientRect(),c=So(this.targetPointers);c[0]-=f.left,c[1]-=f.top,this.anchor_=u.getCoordinateFromPixelInternal(c),u.render(),h.adjustResolutionInternal(e,this.anchor_)},r.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map,n=e.getView(),o=this.lastScaleDelta_>1?1:-1;return n.endInteraction(this.duration_,o),!1}else return!0},r.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}else return!1},r}(hn),Yd=Xd,Ud=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Wd=function(i){Ud(r,i);function r(t,e,n){var o=i.call(this)||this;if(o.ends_=[],o.maxDelta_=-1,o.maxDeltaRevision_=-1,Array.isArray(t[0]))o.setCoordinates(t,e);else if(e!==void 0&&n)o.setFlatCoordinates(e,t),o.ends_=n;else{for(var a=o.getLayout(),s=t,l=[],u=[],h=0,f=s.length;h0&&this.getCount()>this.highWaterMark},i.prototype.expireCache=function(r){for(;this.canExpireCache();)this.pop()},i.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},i.prototype.containsKey=function(r){return this.entries_.hasOwnProperty(r)},i.prototype.forEach=function(r){for(var t=this.oldest_;t;)r(t.value_,t.key_,this),t=t.newer},i.prototype.get=function(r,t){var e=this.entries_[r];return B(e!==void 0,15),e===this.newest_||(e===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(e.newer.older=e.older,e.older.newer=e.newer),e.newer=null,e.older=this.newest_,this.newest_.newer=e,this.newest_=e),e.value_},i.prototype.remove=function(r){var t=this.entries_[r];return B(t!==void 0,15),t===this.newest_?(this.newest_=t.older,this.newest_&&(this.newest_.newer=null)):t===this.oldest_?(this.oldest_=t.newer,this.oldest_&&(this.oldest_.older=null)):(t.newer.older=t.older,t.older.newer=t.newer),delete this.entries_[r],--this.count_,t.value_},i.prototype.getCount=function(){return this.count_},i.prototype.getKeys=function(){var r=new Array(this.count_),t=0,e;for(e=this.newest_;e;e=e.older)r[t++]=e.key_;return r},i.prototype.getValues=function(){var r=new Array(this.count_),t=0,e;for(e=this.newest_;e;e=e.older)r[t++]=e.value_;return r},i.prototype.peekLast=function(){return this.oldest_.value_},i.prototype.peekLastKey=function(){return this.oldest_.key_},i.prototype.peekFirstKey=function(){return this.newest_.key_},i.prototype.pop=function(){var r=this.oldest_;return delete this.entries_[r.key_],r.newer&&(r.newer.older=null),this.oldest_=r.newer,this.oldest_||(this.newest_=null),--this.count_,r.value_},i.prototype.replace=function(r,t){this.get(r),this.entries_[r].value_=t},i.prototype.set=function(r,t){B(!(r in this.entries_),16);var e={key_:r,newer:null,older:this.newest_,value_:t};this.newest_?this.newest_.newer=e:this.oldest_=e,this.newest_=e,this.entries_[r]=e,++this.count_},i.prototype.setSize=function(r){this.highWaterMark=r},i}(),tv=Qd;function Za(i,r,t,e){return e!==void 0?(e[0]=i,e[1]=r,e[2]=t,e):[i,r,t]}function pi(i,r,t){return i+"/"+r+"/"+t}function yl(i){return pi(i[0],i[1],i[2])}function ev(i){return i.split("/").map(Number)}function rv(i){return(i[1]<t||t>r.getMaxZoom())return!1;var o=r.getFullTileRange(t);return o?o.containsXY(e,n):!0}var iv=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),ov=function(i){iv(r,i);function r(){return i!==null&&i.apply(this,arguments)||this}return r.prototype.expireCache=function(t){for(;this.canExpireCache();){var e=this.peekLast();if(e.getKey()in t)break;this.pop().release()}},r.prototype.pruneExceptNewestZ=function(){if(this.getCount()!==0){var t=this.peekFirstKey(),e=ev(t),n=e[0];this.forEach(function(o){o.tileCoord[0]!==n&&(this.remove(yl(o.tileCoord)),o.release())}.bind(this))}},r}(tv),ml=ov,El=function(){function i(r,t,e,n){this.minX=r,this.maxX=t,this.minY=e,this.maxY=n}return i.prototype.contains=function(r){return this.containsXY(r[1],r[2])},i.prototype.containsTileRange=function(r){return this.minX<=r.minX&&r.maxX<=this.maxX&&this.minY<=r.minY&&r.maxY<=this.maxY},i.prototype.containsXY=function(r,t){return this.minX<=r&&r<=this.maxX&&this.minY<=t&&t<=this.maxY},i.prototype.equals=function(r){return this.minX==r.minX&&this.minY==r.minY&&this.maxX==r.maxX&&this.maxY==r.maxY},i.prototype.extend=function(r){r.minXthis.maxX&&(this.maxX=r.maxX),r.minYthis.maxY&&(this.maxY=r.maxY)},i.prototype.getHeight=function(){return this.maxY-this.minY+1},i.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},i.prototype.getWidth=function(){return this.maxX-this.minX+1},i.prototype.intersects=function(r){return this.minX<=r.maxX&&this.maxX>=r.minX&&this.minY<=r.maxY&&this.maxY>=r.minY},i}();function cr(i,r,t,e,n){return n!==void 0?(n.minX=i,n.maxX=r,n.minY=t,n.maxY=e,n):new El(i,r,t,e)}var Tl=El,Cl=function(){function i(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.supportedMediaTypes=null}return i.prototype.getReadOptions=function(r,t){var e;if(t){var n=t.dataProjection?at(t.dataProjection):this.readProjection(r);t.extent&&n&&n.getUnits()===oe.TILE_PIXELS&&(n=at(n),n.setWorldExtent(t.extent)),e={dataProjection:n,featureProjection:t.featureProjection}}return this.adaptOptions(e)},i.prototype.adaptOptions=function(r){return ut({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection},r)},i.prototype.getType=function(){return F()},i.prototype.readFeature=function(r,t){return F()},i.prototype.readFeatures=function(r,t){return F()},i.prototype.readGeometry=function(r,t){return F()},i.prototype.readProjection=function(r){return F()},i.prototype.writeFeature=function(r,t){return F()},i.prototype.writeFeatures=function(r,t){return F()},i.prototype.writeGeometry=function(r,t){return F()},i}();function Le(i,r,t){var e=t?at(t.featureProjection):null,n=t?at(t.dataProjection):null,o;if(e&&n&&!ke(e,n)?o=(r?i.clone():i).transform(r?e:n,r?n:e):o=i,r&&t&&t.decimals!==void 0){var a=Math.pow(10,t.decimals),s=function(l){for(var u=0,h=l.length;u0?n[0]:null},r.prototype.readFeatureFromNode=function(t,e){return null},r.prototype.readFeatures=function(t,e){if(t)if(typeof t=="string"){var n=Nn(t);return this.readFeaturesFromDocument(n,e)}else return Fn(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e);else return[]},r.prototype.readFeaturesFromDocument=function(t,e){for(var n=[],o=t.firstChild;o;o=o.nextSibling)o.nodeType==Node.ELEMENT_NODE&&Yt(n,this.readFeaturesFromNode(o,e));return n},r.prototype.readFeaturesFromNode=function(t,e){return F()},r.prototype.readGeometry=function(t,e){if(t)if(typeof t=="string"){var n=Nn(t);return this.readGeometryFromDocument(n,e)}else return Fn(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e);else return null},r.prototype.readGeometryFromDocument=function(t,e){return null},r.prototype.readGeometryFromNode=function(t,e){return null},r.prototype.readProjection=function(t){if(t)if(typeof t=="string"){var e=Nn(t);return this.readProjectionFromDocument(e)}else return Fn(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t);else return null},r.prototype.readProjectionFromDocument=function(t){return this.dataProjection},r.prototype.readProjectionFromNode=function(t){return this.dataProjection},r.prototype.writeFeature=function(t,e){var n=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(n)},r.prototype.writeFeatureNode=function(t,e){return null},r.prototype.writeFeatures=function(t,e){var n=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(n)},r.prototype.writeFeaturesNode=function(t,e){return null},r.prototype.writeGeometry=function(t,e){var n=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(n)},r.prototype.writeGeometryNode=function(t,e){return null},r}(Cl),Av=Iv;function Ao(i){var r=di(i,!1),t=Date.parse(r);return isNaN(t)?void 0:t/1e3}function ne(i){var r=di(i,!1);return Mv(r)}function Mv(i){var r=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(i);if(r)return parseFloat(r[1])}function Qn(i){var r=di(i,!1);return Fv(r)}function Fv(i){var r=/^\s*(\d+)\s*$/.exec(i);if(r)return parseInt(r[1],10)}function ft(i){return di(i,!1).trim()}function Nv(i,r){var t=new Date(r*1e3),e=t.getUTCFullYear()+"-"+Gr(t.getUTCMonth()+1,2)+"-"+Gr(t.getUTCDate(),2)+"T"+Gr(t.getUTCHours(),2)+":"+Gr(t.getUTCMinutes(),2)+":"+Gr(t.getUTCSeconds(),2)+"Z";i.appendChild(cn().createTextNode(e))}function De(i,r){var t=r.toPrecision();i.appendChild(cn().createTextNode(t))}function ti(i,r){var t=r.toString();i.appendChild(cn().createTextNode(t))}function pt(i,r){i.appendChild(cn().createTextNode(r))}var Dv=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),ht=[null,"http://www.topografix.com/GPX/1/0","http://www.topografix.com/GPX/1/1"],Gv="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd",kv={rte:Sl,trk:Rl,wpt:Pl},bv=gt(ht,{rte:Mi(Sl),trk:Mi(Rl),wpt:Mi(Pl)}),jv=gt(ht,{text:K(ft,"linkText"),type:K(ft,"linkType")}),Xv=gt(ht,{rte:Y(hg),trk:Y(cg),wpt:Y(pg)}),Yv=function(i){Dv(r,i);function r(t){var e=i.call(this)||this,n=t||{};return e.dataProjection=at("EPSG:4326"),e.readExtensions_=n.readExtensions,e}return r.prototype.handleReadExtensions_=function(t){t||(t=[]);for(var e=0,n=t.length;ethis.sourceWorldWidth_/2){var E=[[y.source[0][0],y.source[0][1]],[y.source[1][0],y.source[1][1]],[y.source[2][0],y.source[2][1]]];E[0][0]-_>this.sourceWorldWidth_/2&&(E[0][0]-=this.sourceWorldWidth_),E[1][0]-_>this.sourceWorldWidth_/2&&(E[1][0]-=this.sourceWorldWidth_),E[2][0]-_>this.sourceWorldWidth_/2&&(E[2][0]-=this.sourceWorldWidth_);var T=Math.min(E[0][0],E[1][0],E[2][0]),x=Math.max(E[0][0],E[1][0],E[2][0]);x-T.5&&f<1,d=!1;if(u>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){var v=ra([r,t,e,n]),g=it(v)/this.targetWorldWidth_;d=g>Ha||d}!p&&this.sourceProj_.isGlobal()&&f&&(d=f>Ha||d)}if(!(!d&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3])&&!Rt(h,this.maxSourceExtent_))){var m=0;if(!d&&(!isFinite(o[0])||!isFinite(o[1])||!isFinite(a[0])||!isFinite(a[1])||!isFinite(s[0])||!isFinite(s[1])||!isFinite(l[0])||!isFinite(l[1]))){if(u>0)d=!0;else if(m=(!isFinite(o[0])||!isFinite(o[1])?8:0)+(!isFinite(a[0])||!isFinite(a[1])?4:0)+(!isFinite(s[0])||!isFinite(s[1])?2:0)+(!isFinite(l[0])||!isFinite(l[1])?1:0),m!=1&&m!=2&&m!=4&&m!=8)return}if(u>0){if(!d){var _=[(r[0]+e[0])/2,(r[1]+e[1])/2],y=this.transformInv_(_),E=void 0;if(p){var T=(yr(o[0],c)+yr(s[0],c))/2;E=T-yr(y[0],c)}else E=(o[0]+s[0])/2-y[0];var x=(o[1]+s[1])/2-y[1],w=E*E+x*x;d=w>this.errorThresholdSquared_}if(d){if(Math.abs(r[0]-e[0])<=Math.abs(r[1]-e[1])){var O=[(t[0]+e[0])/2,(t[1]+e[1])/2],R=this.transformInv_(O),M=[(n[0]+r[0])/2,(n[1]+r[1])/2],b=this.transformInv_(M);this.addQuad_(r,t,O,M,o,a,R,b,u-1),this.addQuad_(M,O,e,n,b,R,s,l,u-1)}else{var I=[(r[0]+t[0])/2,(r[1]+t[1])/2],j=this.transformInv_(I),U=[(e[0]+n[0])/2,(e[1]+n[1])/2],A=this.transformInv_(U);this.addQuad_(r,I,U,n,o,j,A,l,u-1),this.addQuad_(I,t,e,U,j,a,s,A,u-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}(m&11)==0&&this.addTriangle_(r,e,n,o,s,l),(m&14)==0&&this.addTriangle_(r,e,t,o,s,a),m&&((m&13)==0&&this.addTriangle_(t,n,r,a,l,o),(m&7)==0&&this.addTriangle_(t,n,e,a,l,s))}},i.prototype.calculateSourceExtent=function(){var r=Pt();return this.triangles_.forEach(function(t,e,n){var o=t.source;Br(r,o[0]),Br(r,o[1]),Br(r,o[2])}),r},i.prototype.getTriangles=function(){return this.triangles_},i}(),yg=_g,to={imageSmoothingEnabled:!1,msImageSmoothingEnabled:!1},mg={imageSmoothingEnabled:!0,msImageSmoothingEnabled:!0},Di;function $a(i,r,t,e,n){i.beginPath(),i.moveTo(0,0),i.lineTo(r,t),i.lineTo(e,n),i.closePath(),i.save(),i.clip(),i.fillRect(0,0,Math.max(r,e)+1,Math.max(t,n)),i.restore()}function Gi(i,r){return Math.abs(i[r*4]-210)>2||Math.abs(i[r*4+3]-.75*255)>2}function Eg(){if(Di===void 0){var i=document.createElement("canvas").getContext("2d");i.globalCompositeOperation="lighter",i.fillStyle="rgba(210, 0, 0, 0.75)",$a(i,4,5,4,0),$a(i,4,5,0,5);var r=i.getImageData(0,0,3,3).data;Di=Gi(r,0)||Gi(r,4)||Gi(r,8)}return Di}function qa(i,r,t,e){var n=ms(t,r,i),o=la(r,e,t),a=r.getMetersPerUnit();a!==void 0&&(o*=a);var s=i.getMetersPerUnit();s!==void 0&&(o/=s);var l=i.getExtent();if(!l||en(l,n)){var u=la(i,o,n)/o;isFinite(u)&&u>0&&(o/=u)}return o}function Tg(i,r,t,e){var n=Re(t),o=qa(i,r,n,e);return(!isFinite(o)||o<=0)&&cs(t,function(a){return o=qa(i,r,a,e),isFinite(o)&&o>0}),o}function Cg(i,r,t,e,n,o,a,s,l,u,h,f){var c=kt(Math.round(t*i),Math.round(t*r));if(f||ut(c,to),l.length===0)return c.canvas;c.scale(t,t);function p(E){return Math.round(E*t)/t}c.globalCompositeOperation="lighter";var d=Pt();l.forEach(function(E,T,x){oo(d,E.extent)});var v=it(d),g=Ut(d),m=kt(Math.round(t*v/e),Math.round(t*g/e));f||ut(m,to);var _=t/e;l.forEach(function(E,T,x){var w=E.extent[0]-d[0],O=-(E.extent[3]-d[3]),R=it(E.extent),M=Ut(E.extent);E.image.width>0&&E.image.height>0&&m.drawImage(E.image,u,u,E.image.width-2*u,E.image.height-2*u,w*_,O*_,R*_,M*_)});var y=Qe(a);return s.getTriangles().forEach(function(E,T,x){var w=E.source,O=E.target,R=w[0][0],M=w[0][1],b=w[1][0],I=w[1][1],j=w[2][0],U=w[2][1],A=p((O[0][0]-y[0])/o),k=p(-(O[0][1]-y[1])/o),L=p((O[1][0]-y[0])/o),z=p(-(O[1][1]-y[1])/o),Z=p((O[2][0]-y[0])/o),V=p(-(O[2][1]-y[1])/o),Q=R,C=M;R=0,M=0,b-=Q,I-=C,j-=Q,U-=C;var lt=[[b,I,0,0,L-A],[j,U,0,0,Z-A],[0,0,b,I,z-k],[0,0,j,U,V-k]],X=Iu(lt);if(!!X){if(c.save(),c.beginPath(),Eg()||!f){c.moveTo(L,z);for(var ct=4,Lt=A-L,It=k-z,xt=0;xt=this.minZoom;){if(this.zoomFactor_===2?(a=Math.floor(a/2),s=Math.floor(s/2),o=cr(a,a,s,s,e)):o=this.getTileRangeForExtentAndZ(l,u,e),t(u,o))return!0;--u}return!1},i.prototype.getExtent=function(){return this.extent_},i.prototype.getMaxZoom=function(){return this.maxZoom},i.prototype.getMinZoom=function(){return this.minZoom},i.prototype.getOrigin=function(r){return this.origin_?this.origin_:this.origins_[r]},i.prototype.getResolution=function(r){return this.resolutions_[r]},i.prototype.getResolutions=function(){return this.resolutions_},i.prototype.getTileCoordChildTileRange=function(r,t,e){if(r[0]this.maxZoom||t0?e:Math.max(a/s[0],o/s[1]),u=n+1,h=new Array(u),f=0;fn.highWaterMark&&(n.highWaterMark=t)},r.prototype.useTile=function(t,e,n,o){},r}(Js),Mg=function(i){Fl(r,i);function r(t,e){var n=i.call(this,t)||this;return n.tile=e,n}return r}(Ht),Fg=Ag;function Ng(i,r){var t=/\{z\}/g,e=/\{x\}/g,n=/\{y\}/g,o=/\{-y\}/g;return function(a,s,l){if(a)return i.replace(t,a[0].toString()).replace(e,a[1].toString()).replace(n,a[2].toString()).replace(o,function(){var u=a[0],h=r.getFullTileRange(u);B(h,55);var f=h.getHeight()-a[2]-1;return f.toString()})}}function Dg(i,r){for(var t=i.length,e=new Array(t),n=0;n=0;--o){var a=this.geometryFunction(t[o]);a?ds(n,a.getCoordinates()):t.splice(o,1)}vs(n,1/t.length);var s=Re(e),l=this.interpolationRatio,u=new Pe([n[0]*(1-l)+s[0]*l,n[1]*(1-l)+s[1]*l]);return this.createCustomCluster_?this.createCustomCluster_(u,t):new Oe({geometry:u,features:t})},r}(dr),Hg=Vg,$g=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),Nl='© OpenStreetMap contributors.',qg=function(i){$g(r,i);function r(t){var e=t||{},n=e.imageSmoothing!==void 0?e.imageSmoothing:!0;e.interpolate!==void 0&&(n=e.interpolate);var o;e.attributions!==void 0?o=e.attributions:o=[Nl];var a=e.crossOrigin!==void 0?e.crossOrigin:"anonymous",s=e.url!==void 0?e.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return i.call(this,{attributions:o,attributionsCollapsible:!1,cacheSize:e.cacheSize,crossOrigin:a,interpolate:n,maxZoom:e.maxZoom!==void 0?e.maxZoom:19,opaque:e.opaque!==void 0?e.opaque:!0,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileLoadFunction:e.tileLoadFunction,transition:e.transition,url:s,wrapX:e.wrapX,zDirection:e.zDirection})||this}return r}(jo),Jg=qg,Dn={PRELOAD:"preload",USE_INTERIM_TILES_ON_ERROR:"useInterimTilesOnError"},Qg=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),t_=function(i){Qg(r,i);function r(t){var e=this,n=t||{},o=ut({},n);return delete o.preload,delete o.useInterimTilesOnError,e=i.call(this,o)||this,e.on,e.once,e.un,e.setPreload(n.preload!==void 0?n.preload:0),e.setUseInterimTilesOnError(n.useInterimTilesOnError!==void 0?n.useInterimTilesOnError:!0),e}return r.prototype.getPreload=function(){return this.get(Dn.PRELOAD)},r.prototype.setPreload=function(t){this.set(Dn.PRELOAD,t)},r.prototype.getUseInterimTilesOnError=function(){return this.get(Dn.USE_INTERIM_TILES_ON_ERROR)},r.prototype.setUseInterimTilesOnError=function(t){this.set(Dn.USE_INTERIM_TILES_ON_ERROR,t)},r.prototype.getData=function(t){return i.prototype.getData.call(this,t)},r}(ci),e_=t_,r_=globalThis&&globalThis.__extends||function(){var i=function(r,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])},i(r,t)};return function(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");i(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}}(),n_=function(i){r_(r,i);function r(t){var e=i.call(this,t)||this;return e.extentChanged=!0,e.renderedExtent_=null,e.renderedPixelRatio,e.renderedProjection=null,e.renderedRevision,e.renderedTiles=[],e.newTiles_=!1,e.tmpExtent=Pt(),e.tmpTileRange_=new Tl(0,0,0,0),e}return r.prototype.isDrawableTile=function(t){var e=this.getLayer(),n=t.getState(),o=e.getUseInterimTilesOnError();return n==D.LOADED||n==D.EMPTY||n==D.ERROR&&!o},r.prototype.getTile=function(t,e,n,o){var a=o.pixelRatio,s=o.viewState.projection,l=this.getLayer(),u=l.getSource(),h=u.getTile(t,e,n,a,s);return h.getState()==D.ERROR&&(l.getUseInterimTilesOnError()?l.getPreload()>0&&(this.newTiles_=!0):h.setState(D.LOADED)),this.isDrawableTile(h)||(h=h.getInterimTile()),h},r.prototype.getData=function(t){var e=this.frameState;if(!e)return null;var n=this.getLayer(),o=st(e.pixelToCoordinateTransform,t.slice()),a=n.getExtent();if(a&&!en(a,o))return null;for(var s=e.pixelRatio,l=e.viewState.projection,u=e.viewState,h=n.getRenderSource(),f=h.getTileGridForProjection(u.projection),c=h.getTilePixelRatio(e.pixelRatio),p=f.getZForResolution(u.resolution);p>=f.getMinZoom();--p){var d=f.getTileCoordForCoordAndZ(o,p),v=h.getTile(p,d[1],d[2],s,l);if(!(v instanceof rl||v instanceof Ll))return null;if(v.getState()===D.LOADED){var g=f.getOrigin(p),m=Ft(f.getTileSize(p)),_=f.getResolution(p),y=Math.floor(c*((o[0]-g[0])/_-d[1]*m[0])),E=Math.floor(c*((g[1]-o[1])/_-d[2]*m[1]));return this.getImageData(v.getImage(),y,E)}}return null},r.prototype.loadedTileCallback=function(t,e,n){return this.isDrawableTile(n)?i.prototype.loadedTileCallback.call(this,t,e,n):!1},r.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},r.prototype.renderFrame=function(t,e){var n=t.layerStatesArray[t.layerIndex],o=t.viewState,a=o.projection,s=o.resolution,l=o.center,u=o.rotation,h=t.pixelRatio,f=this.getLayer(),c=f.getSource(),p=c.getRevision(),d=c.getTileGridForProjection(a),v=d.getZForResolution(s,c.zDirection),g=d.getResolution(v),m=t.extent,_=n.extent&&Xe(n.extent);_&&(m=Zr(m,Xe(n.extent)));var y=c.getTilePixelRatio(h),E=Math.round(t.size[0]*y),T=Math.round(t.size[1]*y);if(u){var x=Math.round(Math.sqrt(E*E+T*T));E=x,T=x}var w=g*E/2/y,O=g*T/2/y,R=[l[0]-w,l[1]-O,l[0]+w,l[1]+O],M=d.getTileRangeForExtentAndZ(m,v),b={};b[v]={};var I=this.createLoadedTileFinder(c,a,b),j=this.tmpExtent,U=this.tmpTileRange_;this.newTiles_=!1;for(var A=M.minX;A<=M.maxX;++A)for(var k=M.minY;k<=M.maxY;++k){var L=this.getTile(v,A,k,t);if(this.isDrawableTile(L)){var z=H(this);if(L.getState()==D.LOADED){b[v][L.tileCoord.toString()]=L;var Z=L.inTransition(z);!this.newTiles_&&(Z||this.renderedTiles.indexOf(L)===-1)&&(this.newTiles_=!0)}if(L.getAlpha(z,t.time)===1)continue}var V=d.getTileCoordChildTileRange(L.tileCoord,U,j),Q=!1;V&&(Q=I(v+1,V)),Q||d.forEachTileCoordParentTileRange(L.tileCoord,I,U,j)}var C=g/s;se(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/y,1/y,u,-E/2,-T/2);var lt=as(this.pixelTransform);this.useContainer(e,lt,n.opacity,this.getBackground(t));var X=this.context,ct=X.canvas;no(this.inversePixelTransform,this.pixelTransform),se(this.tempTransform,E/2,T/2,C,C,0,-E/2,-T/2),ct.width!=E||ct.height!=T?(ct.width=E,ct.height=T):this.containerReused||X.clearRect(0,0,E,T),_&&this.clipUnrotated(X,t,_),c.getInterpolate()||ut(X,to),this.preRender(X,t),this.renderedTiles.length=0;var Lt=Object.keys(b).map(Number);Lt.sort(Ke);var It,xt,At;n.opacity===1&&(!this.containerReused||c.getOpaque(t.viewState.projection))?Lt=Lt.reverse():(It=[],xt=[]);for(var rr=Lt.length-1;rr>=0;--rr){var Wt=Lt[rr],fn=c.getTilePixelSize(Wt,h,a),pn=d.getResolution(Wt),ue=pn/g,nr=fn[0]*ue*C,dn=fn[1]*ue*C,Rr=d.getTileCoordForCoordAndZ(Qe(R),Wt),vn=d.getTileCoordExtent(Rr),Ie=st(this.tempTransform,[y*(vn[0]-R[0])/g,y*(R[3]-vn[3])/g]),Pr=y*c.getGutterForProjection(a),gn=b[Wt];for(var ir in gn){var L=gn[ir],he=L.tileCoord,or=Rr[1]-he[1],gi=Math.round(Ie[0]-(or-1)*nr),_n=Rr[2]-he[2],Lr=Math.round(Ie[1]-(_n-1)*dn),A=Math.round(Ie[0]-or*nr),k=Math.round(Ie[1]-_n*dn),$t=gi-A,Bt=Lr-k,Ae=v===Wt,Z=Ae&&L.getAlpha(H(this),t.time)!==1,Ir=!1;if(!Z)if(It){At=[A,k,A+$t,k,A+$t,k+Bt,A,k+Bt];for(var Ot=0,yn=It.length;OtStamen Design, under CC BY 3.0.',Nl],u_={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},h_={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},c_=function(i){s_(r,i);function r(t){var e=t.imageSmoothing!==void 0?t.imageSmoothing:!0;t.interpolate!==void 0&&(e=t.interpolate);var n=t.layer.indexOf("-"),o=n==-1?t.layer:t.layer.slice(0,n),a=h_[o],s=u_[t.layer],l=t.url!==void 0?t.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+t.layer+"/{z}/{x}/{y}."+s.extension;return i.call(this,{attributions:l_,cacheSize:t.cacheSize,crossOrigin:"anonymous",interpolate:e,maxZoom:t.maxZoom!=null?t.maxZoom:a.maxZoom,minZoom:t.minZoom!=null?t.minZoom:a.minZoom,opaque:s.opaque,reprojectionErrorThreshold:t.reprojectionErrorThreshold,tileLoadFunction:t.tileLoadFunction,transition:t.transition,url:l,wrapX:t.wrapX,zDirection:t.zDirection})||this}return r}(jo),f_=c_;if(typeof Dl!="object")var Dl={};const S={mapWrapClass:"a2g-map-wrap",mapClass:"a2g-map",convexHullFill:null,convexHullStroke:null,textFill:null,textStroke:null,innerCircle:null,outerCircle:null,initMapConfig:function(i){this.layers.maptiler.a===null&&i.api&&i.api.maptiler&&i.api.maptiler.key&&(this.layers.maptiler.a=i.api.maptiler.key),this.layers.thunderforest.a===null&&i.api&&i.api.thunderforest&&i.api.thunderforest.key&&(this.layers.thunderforest.a=i.api.thunderforest.key),this.convexHullFill===null&&(i.style&&typeof i.style.convexHullFill=="object"?this.convexHullFill=new Tt(i.style.convexHullFill):this.convexHullFill=new Tt({color:"rgba(255, 153, 0, 0.4)"})),this.convexHullStroke===null&&(i.style&&typeof i.style.convexHullStroke=="object"?this.convexHullStroke=new Et(i.style.convexHullStroke):this.convexHullStroke=new Et({color:"rgba(255, 153, 0, 0.4)"})),this.textFill===null&&(i.style&&typeof i.style.textFill=="object"?this.textFill=new Tt(i.style.textFill):this.textFill=new Tt({color:"rgba(0, 0, 0, 0.9)"})),this.textStroke===null&&(i.style&&typeof i.style.textStroke=="object"?this.textStroke=new Et(i.style.textStroke):this.textStroke=new Et({color:"rgba(255, 153, 0, 0.4)"})),this.innerCircle===null&&(i.style&&typeof i.style.innerCircle=="object"?this.innerCircle=new ge({radius:i.style.innerCircle.radius,fill:new Tt(i.style.innerCircle.fill)}):this.innerCircle=new ge({radius:14,fill:new Tt({color:"rgba(255, 165, 0, 0.7)"})})),this.outerCircle===null&&(i.style&&typeof i.style.outerCircle=="object"?this.outerCircle=new ge({radius:i.style.outerCircle.radius,fill:new Tt(i.style.outerCircle.fill)}):this.outerCircle=new ge({radius:14,fill:new Tt({color:"rgba(255, 165, 0, 0.7)"})})),i.style&&i.style.gpx?this.gpx.initConfig(i.style.gpx):this.gpx.initConfig({})},styles:[],mapWraps:[],maps:[],mapConfigs:[],mapObjects:[],gpx:{mapSources:[],mapLayers:[],style:{Point:null,LineString:null,MultiLineString:null},initConfig:function(i){this.style.Point===null&&(typeof i.Point=="object"?this.style.Point=new yt({image:new ge({fill:new Tt(i.Point.image.fill),radius:i.Point.image.radius,stroke:new Et(i.Point.image.stroke)})}):this.style.Point=new yt({image:new ge({fill:new Tt({color:"rgba(255,255,0,0.4)"}),radius:5,stroke:new Et({color:"#ff0",width:1})})})),this.style.LineString===null&&(typeof i.LineString=="object"?this.style.LineString=new yt({stroke:new Et(i.LineString.stroke)}):this.style.LineString=new yt({stroke:new Et({color:"#f00",width:3})})),this.style.MultiLineString===null&&(typeof i.MultiLineString=="object"?this.style.MultiLineString=new yt({stroke:new Et(i.MultiLineString.stroke)}):this.style.MultiLineString=new yt({stroke:new Et({color:"#f00",width:3})}))},init:function(i){var r=this;typeof S.mapConfigs[i].gpxSource!="undefined"&&(r.mapSources[i]=new dr({url:S.mapConfigs[i].gpxSource,format:new dg}),r.mapLayers[i]=new hr({source:r.mapSources[i],style:function(t){return r.style[t.getGeometry().getType()]}}),S.layers.mapLayers[i].push(r.mapLayers[i]))}},geolocate:{locateMeDoms:[],checkboxClass:"a2g-map-geolocate-me",geolocations:[],positionFeature:new Oe,accuracyFeature:new Oe,mapSources:[],mapLayers:[],setPositionFeatureStyle:function(){this.positionFeature.setStyle(new yt({image:new ge({radius:6,fill:new Tt({color:"#3399CC"}),stroke:new Et({color:"#fff",width:2})})}))},setMapGeolocations:function(i){var r=this;r.geolocations[i]=new Lh({trackingOptions:{enableHighAccuracy:!0},projection:S.views[i].getProjection()}),r.geolocations[i].on("change:position",function(){const t=r.geolocations[i].getPosition();r.positionFeature.setGeometry(t?new Pe(t):null)}),r.geolocations[i].on("change:accuracyGeometry",function(){r.accuracyFeature.setGeometry(r.geolocations[i].getAccuracyGeometry())})},setGeolocateMeAction:function(i){var r=this;r.locateMeDoms[i]=S.mapWraps[i].getElementsByClassName(r.checkboxClass),r.locateMeDoms[i].length>0&&(r.setMapGeolocations(i),r.mapSources[i]=new dr({features:[r.accuracyFeature,r.positionFeature]}),r.mapLayers[i]=new hr({map:S.mapObjects[i],source:r.mapSources[i]}));for(var t=0;t altogether',attributionOpenStreetMap:'© OpenStreetMap',thunderforest:{a:null,baseUrl:"https://tile.thunderforest.com/",baseUrlSufix:"/{z}/{x}/{y}.png?apikey=",getUrl:function(i){return this.baseUrl+i+this.baseUrlSufix+this.a}},maptiler:{a:null,baseUrl:"https://api.maptiler.com/maps/",baseUrlSufix:"/{z}/{x}/{y}.png?key=",jpgUrlSufix:"/{z}/{x}/{y}.jpg?key=",getUrl:function(i){return i==="hybrid"||i==="openstreetmap"?this.baseUrl+i+this.jpgUrlSufix+this.a:this.baseUrl+i+this.baseUrlSufix+this.a}},countryLayerStyle:new yt({fill:new Tt({color:"#aaa"}),stroke:new Et({color:"#333"})}),setCountryLayer:function(i,r,t){var e=this;e.mapCountryOverlay[i]=r,e.mapLayerSources[i][r]=new dr({url:typeof t.countryGeoSource=="undefined"?e.coutriesGeojsonSource:t.countryGeoSource,format:new Ka}),e.mapLayers[i][r]=new hr({source:e.mapLayerSources[i][r],style:function(n){return e.countryLayerStyle.getFill().setColor("#aaa"),e.countryLayerStyle}})},setMapXyzLayer:function(i,r,t){this.mapLayerSources[i][r]=new jo(t),this.mapLayers[i][r]=new bi({source:this.mapLayerSources[i][r]})},setMapOsmLayer:function(i,r,t){this.mapLayerSources[i][r]=new Jg(t),this.mapLayers[i][r]=new bi({source:this.mapLayerSources[i][r]})},setMapStamenLayer:function(i,r,t){this.mapLayerSources[i][r]=new f_(t),this.mapLayers[i][r]=new bi({source:this.mapLayerSources[i][r]})},appendToMapLayerSwitcher:function(i,r,t){for(var e=0;e2&&this.mapLayers[i][a].setSource(null);else n>2&&this.mapLayers[i][a].setSource(null);this.appendToMapLayerSwitcher(i,t[a],a)}if(this.setLayerSwitcherAction(i),e){this.mapLayers[i][S.layers.mapLayers[i].length-1].setSource(S.layers.mapLayerSources[i][S.layers.mapLayerSources[i].length-1]);for(var a=0;a{typeof r.layers.mapCountryOverlay[i]!="undefined"&&(document.addEventListener("pointermove",function(){typeof r.executedInitActions[i]=="undefined"&&(r.views[i].fit(r.layers.mapLayerSources[i][r.layers.mapCountryOverlay[i]].getFeatures()[0].getGeometry(),{duration:500,padding:[170,50,30,150]}),r.executedInitActions[i]=!0)}),document.addEventListener("click",function(){typeof r.executedInitActions[i]=="undefined"&&(r.views[i].fit(r.layers.mapLayerSources[i][r.layers.mapCountryOverlay[i]].getFeatures()[0].getGeometry(),{duration:500,padding:[170,50,30,150]}),r.executedInitActions[i]=!0)}),document.addEventListener("focus",function(){typeof r.executedInitActions[i]=="undefined"&&(r.views[i].fit(r.layers.mapLayerSources[i][r.layers.mapCountryOverlay[i]].getFeatures()[0].getGeometry(),{duration:500,padding:[170,50,30,150]}),r.executedInitActions[i]=!0)}),document.addEventListener("scroll",function(){typeof r.executedInitActions[i]=="undefined"&&(r.views[i].fit(r.layers.mapLayerSources[i][r.layers.mapCountryOverlay[i]].getFeatures()[0].getGeometry(),{duration:500,padding:[170,50,30,150]}),r.executedInitActions[i]=!0)}))})},executedInitActions:[],featureOverlaySource:[],featureOverlayStyle:[],setFeatureOverlayStyle:function(i,r){typeof this.featureOverlayStyle[i]=="undefined"&&(r.style&&typeof r.style.featureOverlay=="object"?typeof r.style.featureOverlay.fill=="object"&&typeof r.style.featureOverlay.stroke=="object"?this.featureOverlayStyle[i]=new yt({fill:new Tt(r.style.featureOverlay.fill),stroke:new Et(r.style.featureOverlay.stroke)}):typeof r.style.featureOverlay.fill=="object"?this.featureOverlayStyle[i]=new yt({fill:new Tt(r.style.featureOverlay.fill)}):typeof r.style.featureOverlay.stroke=="object"&&(this.featureOverlayStyle[i]=new yt({stroke:new Et(r.style.featureOverlay.stroke)})):this.featureOverlayStyle[i]=new yt({stroke:new Et({color:"rgba(255,255,255, 0.6)",width:4})}))},featureOverlay:[],featureHighlight:[],setMapClickAction:function(i){S.layers.mapCountryOverlay[i]!==null&&S.mapObjects[i].on("pointermove",function(r){typeof S.layers.mapLayers[i][S.layers.mapCountryOverlay[i]]!="undefined"&&S.layers.mapLayers[i][S.layers.mapCountryOverlay[i]].getFeatures(r.pixel).then(function(t){const e=t.length?t[0]:void 0;e!==S.featureHighlight[i]&&(S.featureHighlight[i]&&S.featureOverlay[i].getSource().removeFeature(S.featureHighlight[i]),e&&S.featureOverlay[i].getSource().addFeature(e),S.featureHighlight[i]=e)})}),S.mapObjects[i].on("click",function(r){var t=!0;typeof S.marker.layers.mapClusters[i]!="undefined"&&S.marker.layers.mapClusters[i].getFeatures(r.pixel).then(function(e){if(e.length>0){t=!1;const n=e[0].get("features");if(n.length>1){const o=Pt();n.forEach(l=>oo(o,l.getGeometry().getExtent()));const a=S.mapObjects[i].getView(),s=S.mapObjects[i].getView().getResolution();a.getZoom()===a.getMaxZoom()?(clickFeature=e[0],clickResolution=s,S.marker.layers.mapClusterCircles[i].setStyle(S.marker.layers.clusterCircleStyle)):a.fit(o,{duration:500,padding:[170,50,30,150]})}else typeof n[0].values_.popup!="undefined"&&(S.popup.content[i].innerHTML=n[0].values_.popup,S.popup.overlay[i].setPosition(n[0].getGeometry().getCoordinates()))}}),S.layers.mapCountryOverlay[i]!==null&&typeof S.layers.mapLayers[i][S.layers.mapCountryOverlay[i]]!="undefined"&&S.layers.mapLayers[i][S.layers.mapCountryOverlay[i]].getFeatures(r.pixel).then(function(e){if(t){const u=e.length?e[0]:void 0;if(u!==void 0&&u.get("popup")!==void 0){S.popup.content[i].innerHTML=u.get("popup");for(var n=0,o=0,a=0,s=0;s1?[new yt({image:S.outerCircle}),new yt({image:S.innerCircle,text:new lc({text:r.toString(),fill:S.textFill,stroke:S.textStroke})})]:S.marker.icons.clusterMemberStyle(i.get("features")[0])},clusterCircleStyle:function(i,r){if(i!==S.clickFeature||r!==S.clickResolution)return;const t=i.get("features");return i.getGeometry().getCoordinates(),S.marker.layers.generatePointsCircle(t.length,i.getGeometry().getCoordinates(),r).reduce((e,n,o)=>{const a=new Pe(n);return e.push(S.marker.icons.clusterMemberStyle(new Oe(qo($o({},t[o].getProperties()),{geometry:a})))),e},[])},setMapMarkerLayer:function(i){typeof this.mapVectorSources[i]=="undefined"&&(S.mapConfigs[i].markerSource?this.mapVectorSources[i]=new dr({format:new Ka,url:S.mapConfigs[i].markerSource}):this.mapVectorSources[i]=null),typeof this.mapClusterSources[i]=="undefined"&&this.mapVectorSources[i]!==null&&(this.mapClusterSources[i]=new Hg({distance:this.clusterDistance,source:this.mapVectorSources[i]})),typeof this.mapClusters[i]=="undefined"&&typeof this.mapClusterSources[i]=="object"&&(this.mapClusters[i]=new hr({source:this.mapClusterSources[i],style:this.clusterStyle})),typeof this.mapClusterCircles[i]=="undefined"&&typeof this.mapClusterSources[i]=="object"&&(this.mapClusterCircles[i]=new hr({source:this.mapClusterSources[i],style:this.clusterCircleStyle})),this.mapVectorSources[i]!==null&&(S.layers.mapLayers[i].push(this.mapClusters[i]),S.layers.mapLayers[i].push(this.mapClusterCircles[i]))}}},clickFeature:null,clickResolution:null,fillMapConfigs:function(i){this.maps[i].dataset.mapConfig&&(this.mapConfigs[i]=JSON.parse(this.maps[i].dataset.mapConfig)),typeof this.mapConfigs[i]=="undefined"&&(this.mapConfigs[i]={}),this.maps[i].dataset.markers&&(this.mapConfigs[i].markers=this.maps[i].dataset.markers),this.maps[i].dataset.markerSource&&(this.mapConfigs[i].markerSource=this.maps[i].dataset.markerSource),this.maps[i].dataset.mapLayers&&(this.mapConfigs[i].mapLayers=JSON.parse(this.maps[i].dataset.mapLayers)),this.maps[i].dataset.gpxSource&&(this.mapConfigs[i].gpxSource=this.maps[i].dataset.gpxSource),this.maps[i].dataset.defaultMarkerIcon&&(this.mapConfigs[i].defaultMarkerIcon=this.maps[i].dataset.defaultMarkerIcon),this.maps[i].dataset.centerLon&&(this.mapConfigs[i].centerLon=this.maps[i].dataset.centerLon),this.maps[i].dataset.centerLat&&(this.mapConfigs[i].centerLat=this.maps[i].dataset.centerLat),this.maps[i].dataset.zoom&&(this.mapConfigs[i].zoom=this.maps[i].dataset.zoom),this.maps[i].dataset.maxZoom&&(this.mapConfigs[i].maxZoom=this.maps[i].dataset.maxZoom),this.maps[i].dataset.zoomSlider&&(this.mapConfigs[i].zoomSlider=this.maps[i].dataset.zoomSlider),this.maps[i].dataset.fullScreen&&(this.mapConfigs[i].fullScreen=this.maps[i].dataset.fullScreen)},init:function(i){this.initMapConfig(i);var r=document.getElementsByClassName(this.mapWrapClass);for(let t=0;t {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n};__VITE_IS_MODERN__&&p();","/**\n * @module ol/util\n */\n/**\n * @return {?} Any return.\n */\nexport function abstract() {\n return /** @type {?} */ ((function () {\n throw new Error('Unimplemented abstract method.');\n })());\n}\n/**\n * Counter for getUid.\n * @type {number}\n * @private\n */\nvar uidCounter_ = 0;\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. Unique IDs are generated\n * as a strictly increasing sequence. Adapted from goog.getUid.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {string} The unique ID for the object.\n * @api\n */\nexport function getUid(obj) {\n return obj.ol_uid || (obj.ol_uid = String(++uidCounter_));\n}\n/**\n * OpenLayers version.\n * @type {string}\n */\nexport var VERSION = '6.14.1';\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/AssertionError\n */\nimport { VERSION } from './util.js';\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nvar AssertionError = /** @class */ (function (_super) {\n __extends(AssertionError, _super);\n /**\n * @param {number} code Error code.\n */\n function AssertionError(code) {\n var _this = this;\n var path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n var message = 'Assertion failed. See https://openlayers.org/en/' +\n path +\n '/doc/errors/#' +\n code +\n ' for details.';\n _this = _super.call(this, message) || this;\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n _this.code = code;\n /**\n * @type {string}\n */\n _this.name = 'AssertionError';\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n _this.message = message;\n return _this;\n }\n return AssertionError;\n}(Error));\nexport default AssertionError;\n//# sourceMappingURL=AssertionError.js.map","/**\n * @module ol/events/Event\n */\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @param {string} type Type.\n */\n function BaseEvent(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n BaseEvent.prototype.preventDefault = function () {\n this.defaultPrevented = true;\n };\n /**\n * Stop event propagation.\n * @api\n */\n BaseEvent.prototype.stopPropagation = function () {\n this.propagationStopped = true;\n };\n return BaseEvent;\n}());\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\nexport default BaseEvent;\n//# sourceMappingURL=Event.js.map","/**\n * @module ol/ObjectEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n/**\n * @typedef {'propertychange'} Types\n */\n//# sourceMappingURL=ObjectEventType.js.map","/**\n * @module ol/Disposable\n */\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nvar Disposable = /** @class */ (function () {\n function Disposable() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n /**\n * Clean up.\n */\n Disposable.prototype.dispose = function () {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n };\n /**\n * Extension point for disposable objects.\n * @protected\n */\n Disposable.prototype.disposeInternal = function () { };\n return Disposable;\n}());\nexport default Disposable;\n//# sourceMappingURL=Disposable.js.map","/**\n * @module ol/array\n */\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [opt_comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, opt_comparator) {\n var mid, cmp;\n var comparator = opt_comparator || numberSafeCompareFunction;\n var low = 0;\n var high = haystack.length;\n var found = false;\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n }\n else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n /* Key not found. */\n return found ? low : ~low;\n}\n/**\n * Compare function for array sort that is safe for numbers.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function numberSafeCompareFunction(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n/**\n * Whether the array contains the given object.\n * @param {Array<*>} arr The array to test for the presence of the element.\n * @param {*} obj The object for which to test.\n * @return {boolean} The object is in the array.\n */\nexport function includes(arr, obj) {\n return arr.indexOf(obj) >= 0;\n}\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n/**\n * @param {Array} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n * 0 means return the nearest,\n * > 0 means return the largest nearest,\n * < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n var n = arr.length;\n if (arr[0] <= target) {\n return 0;\n }\n else if (target <= arr[n - 1]) {\n return n - 1;\n }\n else {\n var i = void 0;\n if (direction > 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n }\n else if (direction < 0) {\n for (i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n }\n else {\n for (i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n else if (arr[i] < target) {\n if (typeof direction === 'function') {\n if (direction(target, arr[i - 1], arr[i]) > 0) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n else if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n else {\n return i;\n }\n }\n }\n }\n return n - 1;\n }\n}\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n var tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n var extension = Array.isArray(data) ? data : [data];\n var length = extension.length;\n for (var i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n var i = arr.indexOf(obj);\n var found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n/**\n * @param {Array} arr The array to search in.\n * @param {function(VALUE, number, ?) : boolean} func The function to compare.\n * @template VALUE\n * @return {VALUE|null} The element found or null.\n */\nexport function find(arr, func) {\n var length = arr.length >>> 0;\n var value;\n for (var i = 0; i < length; i++) {\n value = arr[i];\n if (func(value, i, arr)) {\n return value;\n }\n }\n return null;\n}\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n var len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (var i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Sort the passed array such that the relative order of equal elements is preserved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n var length = arr.length;\n var tmp = Array(arr.length);\n var i;\n for (i = 0; i < length; i++) {\n tmp[i] = { index: i, value: arr[i] };\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n/**\n * @param {Array<*>} arr The array to search in.\n * @param {Function} func Comparison function.\n * @return {number} Return index.\n */\nexport function findIndex(arr, func) {\n var index;\n var found = !arr.every(function (el, idx) {\n index = idx;\n return !func(el, idx, arr);\n });\n return found ? index : -1;\n}\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [opt_func] Comparison function.\n * @param {boolean} [opt_strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, opt_func, opt_strict) {\n var compare = opt_func || numberSafeCompareFunction;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n var res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (opt_strict && res === 0));\n });\n}\n//# sourceMappingURL=array.js.map","/**\n * @module ol/functions\n */\nimport { equals as arrayEquals } from './array.js';\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n/**\n * Always returns false.\n * @return {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() { }\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n var called = false;\n /** @type {ReturnType} */\n var lastResult;\n /** @type {Array} */\n var lastArgs;\n var lastThis;\n return function () {\n var nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n/**\n * @template T\n * @param {function(): (T | Promise)} getter A function that returns a value or a promise for a value.\n * @return {Promise} A promise for the value.\n */\nexport function toPromise(getter) {\n function promiseGetter() {\n var value;\n try {\n value = getter();\n }\n catch (err) {\n return Promise.reject(err);\n }\n if (value instanceof Promise) {\n return value;\n }\n return Promise.resolve(value);\n }\n return promiseGetter();\n}\n//# sourceMappingURL=functions.js.map","/**\n * @module ol/obj\n */\n/**\n * Polyfill for Object.assign(). Assigns enumerable and own properties from\n * one or more source objects to a target object.\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.\n *\n * @param {!Object} target The target object.\n * @param {...Object} var_sources The source object(s).\n * @return {!Object} The modified target object.\n */\nexport var assign = typeof Object.assign === 'function'\n ? Object.assign\n : function (target, var_sources) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n var output = Object(target);\n for (var i = 1, ii = arguments.length; i < ii; ++i) {\n var source = arguments[i];\n if (source !== undefined && source !== null) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n output[key] = source[key];\n }\n }\n }\n }\n return output;\n };\n/**\n * Removes all properties from an object.\n * @param {Object} object The object to clear.\n */\nexport function clear(object) {\n for (var property in object) {\n delete object[property];\n }\n}\n/**\n * Polyfill for Object.values(). Get an array of property values from an object.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values\n *\n * @param {!Object} object The object from which to get the values.\n * @return {!Array} The property values.\n * @template K,V\n */\nexport var getValues = typeof Object.values === 'function'\n ? Object.values\n : function (object) {\n var values = [];\n for (var property in object) {\n values.push(object[property]);\n }\n return values;\n };\n/**\n * Determine if an object has any properties.\n * @param {Object} object The object to check.\n * @return {boolean} The object is empty.\n */\nexport function isEmpty(object) {\n var property;\n for (property in object) {\n return false;\n }\n return !property;\n}\n//# sourceMappingURL=obj.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport { VOID } from '../functions.js';\nimport { clear } from '../obj.js';\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nvar Target = /** @class */ (function (_super) {\n __extends(Target, _super);\n /**\n * @param {*} [opt_target] Default event target for dispatched events.\n */\n function Target(opt_target) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {*}\n */\n _this.eventTarget_ = opt_target;\n /**\n * @private\n * @type {Object}\n */\n _this.pendingRemovals_ = null;\n /**\n * @private\n * @type {Object}\n */\n _this.dispatching_ = null;\n /**\n * @private\n * @type {Object>}\n */\n _this.listeners_ = null;\n return _this;\n }\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.addEventListener = function (type, listener) {\n if (!type || !listener) {\n return;\n }\n var listeners = this.listeners_ || (this.listeners_ = {});\n var listenersForType = listeners[type] || (listeners[type] = []);\n if (listenersForType.indexOf(listener) === -1) {\n listenersForType.push(listener);\n }\n };\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n Target.prototype.dispatchEvent = function (event) {\n var isString = typeof event === 'string';\n var type = isString ? event : event.type;\n var listeners = this.listeners_ && this.listeners_[type];\n if (!listeners) {\n return;\n }\n var evt = isString ? new Event(event) : /** @type {Event} */ (event);\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n var dispatching = this.dispatching_ || (this.dispatching_ = {});\n var pendingRemovals = this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n var propagate;\n for (var i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (listeners[i]).handleEvent(evt);\n }\n else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (listeners[i]).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n if (--dispatching[type] === 0) {\n var pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n };\n /**\n * Clean up.\n */\n Target.prototype.disposeInternal = function () {\n this.listeners_ && clear(this.listeners_);\n };\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n Target.prototype.getListeners = function (type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n };\n /**\n * @param {string} [opt_type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n Target.prototype.hasListener = function (opt_type) {\n if (!this.listeners_) {\n return false;\n }\n return opt_type\n ? opt_type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n };\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n Target.prototype.removeEventListener = function (type, listener) {\n var listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n }\n else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n };\n return Target;\n}(Disposable));\nexport default Target;\n//# sourceMappingURL=Target.js.map","/**\n * @module ol/events/EventType\n */\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/events\n */\nimport { clear } from './obj.js';\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [opt_this] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [opt_once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, opt_this, opt_once) {\n if (opt_this && opt_this !== target) {\n listener = listener.bind(opt_this);\n }\n if (opt_once) {\n var originalListener_1 = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener_1.apply(this, arguments);\n };\n }\n var eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [opt_this] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, opt_this) {\n return listen(target, type, listener, opt_this, true);\n}\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n//# sourceMappingURL=events.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport { listen, listenOnce, unlistenByKey } from './events.js';\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n/***\n * @template Return\n * @typedef {OnSignature & CombinedOnSignature} ObservableOnSignature\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nvar Observable = /** @class */ (function (_super) {\n __extends(Observable, _super);\n function Observable() {\n var _this = _super.call(this) || this;\n _this.on =\n /** @type {ObservableOnSignature} */ (_this.onInternal);\n _this.once =\n /** @type {ObservableOnSignature} */ (_this.onceInternal);\n _this.un = /** @type {ObservableOnSignature} */ (_this.unInternal);\n /**\n * @private\n * @type {number}\n */\n _this.revision_ = 0;\n return _this;\n }\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n Observable.prototype.changed = function () {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n };\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n Observable.prototype.getRevision = function () {\n return this.revision_;\n };\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n Observable.prototype.onInternal = function (type, listener) {\n if (Array.isArray(type)) {\n var len = type.length;\n var keys = new Array(len);\n for (var i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n else {\n return listen(this, /** @type {string} */ (type), listener);\n }\n };\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n Observable.prototype.onceInternal = function (type, listener) {\n var key;\n if (Array.isArray(type)) {\n var len = type.length;\n key = new Array(len);\n for (var i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n }\n else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n };\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n Observable.prototype.unInternal = function (type, listener) {\n var key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n }\n else if (Array.isArray(type)) {\n for (var i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n }\n else {\n this.removeEventListener(type, listener);\n }\n };\n return Observable;\n}(EventTarget));\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (var i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n }\n else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\nexport default Observable;\n//# sourceMappingURL=Observable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport { assign, isEmpty } from './obj.js';\nimport { getUid } from './util.js';\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nvar ObjectEvent = /** @class */ (function (_super) {\n __extends(ObjectEvent, _super);\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n function ObjectEvent(type, key, oldValue) {\n var _this = _super.call(this, type) || this;\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n _this.key = key;\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n _this.oldValue = oldValue;\n return _this;\n }\n return ObjectEvent;\n}(Event));\nexport { ObjectEvent };\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ObjectOnSignature\n */\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable~Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nvar BaseObject = /** @class */ (function (_super) {\n __extends(BaseObject, _super);\n /**\n * @param {Object} [opt_values] An object with key-value pairs.\n */\n function BaseObject(opt_values) {\n var _this = _super.call(this) || this;\n /***\n * @type {ObjectOnSignature}\n */\n _this.on;\n /***\n * @type {ObjectOnSignature}\n */\n _this.once;\n /***\n * @type {ObjectOnSignature}\n */\n _this.un;\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(_this);\n /**\n * @private\n * @type {Object}\n */\n _this.values_ = null;\n if (opt_values !== undefined) {\n _this.setProperties(opt_values);\n }\n return _this;\n }\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n BaseObject.prototype.get = function (key) {\n var value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n };\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n BaseObject.prototype.getKeys = function () {\n return (this.values_ && Object.keys(this.values_)) || [];\n };\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n BaseObject.prototype.getProperties = function () {\n return (this.values_ && assign({}, this.values_)) || {};\n };\n /**\n * @return {boolean} The object has properties.\n */\n BaseObject.prototype.hasProperties = function () {\n return !!this.values_;\n };\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n BaseObject.prototype.notify = function (key, oldValue) {\n var eventType;\n eventType = \"change:\".concat(key);\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n eventType = ObjectEventType.PROPERTYCHANGE;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n };\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n BaseObject.prototype.addChangeListener = function (key, listener) {\n this.addEventListener(\"change:\".concat(key), listener);\n };\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n BaseObject.prototype.removeChangeListener = function (key, listener) {\n this.removeEventListener(\"change:\".concat(key), listener);\n };\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [opt_silent] Update without triggering an event.\n * @api\n */\n BaseObject.prototype.set = function (key, value, opt_silent) {\n var values = this.values_ || (this.values_ = {});\n if (opt_silent) {\n values[key] = value;\n }\n else {\n var oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n };\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean} [opt_silent] Update without triggering an event.\n * @api\n */\n BaseObject.prototype.setProperties = function (values, opt_silent) {\n for (var key in values) {\n this.set(key, values[key], opt_silent);\n }\n };\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n BaseObject.prototype.applyProperties = function (source) {\n if (!source.values_) {\n return;\n }\n assign(this.values_ || (this.values_ = {}), source.values_);\n };\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [opt_silent] Unset without triggering an event.\n * @api\n */\n BaseObject.prototype.unset = function (key, opt_silent) {\n if (this.values_ && key in this.values_) {\n var oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!opt_silent) {\n this.notify(key, oldValue);\n }\n }\n };\n return BaseObject;\n}(Observable));\nexport default BaseObject;\n//# sourceMappingURL=Object.js.map","/**\n * @module ol/CollectionEventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n//# sourceMappingURL=CollectionEventType.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n/**\n * @enum {string}\n * @private\n */\nvar Property = {\n LENGTH: 'length',\n};\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nvar CollectionEvent = /** @class */ (function (_super) {\n __extends(CollectionEvent, _super);\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {*} [opt_element] Element.\n * @param {number} [opt_index] The index of the added or removed element.\n */\n function CollectionEvent(type, opt_element, opt_index) {\n var _this = _super.call(this, type) || this;\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n _this.element = opt_element;\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n _this.index = opt_index;\n return _this;\n }\n return CollectionEvent;\n}(Event));\nexport { CollectionEvent };\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nvar Collection = /** @class */ (function (_super) {\n __extends(Collection, _super);\n /**\n * @param {Array} [opt_array] Array.\n * @param {Options} [opt_options] Collection options.\n */\n function Collection(opt_array, opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {CollectionOnSignature}\n */\n _this.on;\n /***\n * @type {CollectionOnSignature}\n */\n _this.once;\n /***\n * @type {CollectionOnSignature}\n */\n _this.un;\n var options = opt_options || {};\n /**\n * @private\n * @type {boolean}\n */\n _this.unique_ = !!options.unique;\n /**\n * @private\n * @type {!Array}\n */\n _this.array_ = opt_array ? opt_array : [];\n if (_this.unique_) {\n for (var i = 0, ii = _this.array_.length; i < ii; ++i) {\n _this.assertUnique_(_this.array_[i], i);\n }\n }\n _this.updateLength_();\n return _this;\n }\n /**\n * Remove all elements from the collection.\n * @api\n */\n Collection.prototype.clear = function () {\n while (this.getLength() > 0) {\n this.pop();\n }\n };\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n Collection.prototype.extend = function (arr) {\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n };\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n Collection.prototype.forEach = function (f) {\n var array = this.array_;\n for (var i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n };\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n Collection.prototype.getArray = function () {\n return this.array_;\n };\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n Collection.prototype.item = function (index) {\n return this.array_[index];\n };\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n Collection.prototype.getLength = function () {\n return this.get(Property.LENGTH);\n };\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.insertAt = function (index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n };\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n Collection.prototype.pop = function () {\n return this.removeAt(this.getLength() - 1);\n };\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n Collection.prototype.push = function (elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n var n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n };\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n Collection.prototype.remove = function (elem) {\n var arr = this.array_;\n for (var i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n };\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n Collection.prototype.removeAt = function (index) {\n var prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n return prev;\n };\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n Collection.prototype.setAt = function (index, elem) {\n var n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n var prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(new CollectionEvent(CollectionEventType.REMOVE, prev, index));\n this.dispatchEvent(new CollectionEvent(CollectionEventType.ADD, elem, index));\n }\n else {\n for (var j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n };\n /**\n * @private\n */\n Collection.prototype.updateLength_ = function () {\n this.set(Property.LENGTH, this.array_.length);\n };\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [opt_except] Optional index to ignore.\n */\n Collection.prototype.assertUnique_ = function (elem, opt_except) {\n for (var i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n };\n return Collection;\n}(BaseObject));\nexport default Collection;\n//# sourceMappingURL=Collection.js.map","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n//# sourceMappingURL=asserts.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport { assert } from './asserts.js';\nimport { listen, unlistenByKey } from './events.js';\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n/***\n * @template Geometry\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nvar Feature = /** @class */ (function (_super) {\n __extends(Feature, _super);\n /**\n * @param {Geometry|ObjectWithGeometry} [opt_geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n function Feature(opt_geometryOrProperties) {\n var _this = _super.call(this) || this;\n /***\n * @type {FeatureOnSignature}\n */\n _this.on;\n /***\n * @type {FeatureOnSignature}\n */\n _this.once;\n /***\n * @type {FeatureOnSignature}\n */\n _this.un;\n /**\n * @private\n * @type {number|string|undefined}\n */\n _this.id_ = undefined;\n /**\n * @type {string}\n * @private\n */\n _this.geometryName_ = 'geometry';\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n _this.style_ = null;\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n _this.styleFunction_ = undefined;\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n _this.geometryChangeKey_ = null;\n _this.addChangeListener(_this.geometryName_, _this.handleGeometryChanged_);\n if (opt_geometryOrProperties) {\n if (typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry) === 'function') {\n var geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n _this.setGeometry(geometry);\n }\n else {\n /** @type {Object} */\n var properties = opt_geometryOrProperties;\n _this.setProperties(properties);\n }\n }\n return _this;\n }\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n Feature.prototype.clone = function () {\n var clone = /** @type {Feature} */ (new Feature(this.hasProperties() ? this.getProperties() : null));\n clone.setGeometryName(this.getGeometryName());\n var geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n var style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n };\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n Feature.prototype.getGeometry = function () {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n };\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n Feature.prototype.getId = function () {\n return this.id_;\n };\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n Feature.prototype.getGeometryName = function () {\n return this.geometryName_;\n };\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n Feature.prototype.getStyle = function () {\n return this.style_;\n };\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n Feature.prototype.getStyleFunction = function () {\n return this.styleFunction_;\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChange_ = function () {\n this.changed();\n };\n /**\n * @private\n */\n Feature.prototype.handleGeometryChanged_ = function () {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n var geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(geometry, EventType.CHANGE, this.handleGeometryChange_, this);\n }\n this.changed();\n };\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n Feature.prototype.setGeometry = function (geometry) {\n this.set(this.geometryName_, geometry);\n };\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [opt_style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setStyle = function (opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n };\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n Feature.prototype.setId = function (id) {\n this.id_ = id;\n this.changed();\n };\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n Feature.prototype.setGeometryName = function (name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n };\n return Feature;\n}(BaseObject));\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n else {\n /**\n * @type {Array}\n */\n var styles_1;\n if (Array.isArray(obj)) {\n styles_1 = obj;\n }\n else {\n assert(typeof ( /** @type {?} */(obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n var style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles_1 = [style];\n }\n return function () {\n return styles_1;\n };\n }\n}\nexport default Feature;\n//# sourceMappingURL=Feature.js.map","/**\n * @module ol/geom/GeometryLayout\n */\n/**\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available. Supported values are `'XY'`,\n * `'XYZ'`, `'XYM'`, `'XYZM'`.\n * @enum {string}\n */\nexport default {\n XY: 'XY',\n XYZ: 'XYZ',\n XYM: 'XYM',\n XYZM: 'XYZM',\n};\n//# sourceMappingURL=GeometryLayout.js.map","/**\n * @module ol/geom/GeometryType\n */\n/**\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, `'Circle'`.\n * @enum {string}\n */\nexport default {\n POINT: 'Point',\n LINE_STRING: 'LineString',\n LINEAR_RING: 'LinearRing',\n POLYGON: 'Polygon',\n MULTI_POINT: 'MultiPoint',\n MULTI_LINE_STRING: 'MultiLineString',\n MULTI_POLYGON: 'MultiPolygon',\n GEOMETRY_COLLECTION: 'GeometryCollection',\n CIRCLE: 'Circle',\n};\n//# sourceMappingURL=GeometryType.js.map","/**\n * @module ol/proj/Units\n */\n/**\n * Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or\n * `'us-ft'`.\n * @enum {string}\n */\nvar Units = {\n /**\n * Radians\n * @api\n */\n RADIANS: 'radians',\n /**\n * Degrees\n * @api\n */\n DEGREES: 'degrees',\n /**\n * Feet\n * @api\n */\n FEET: 'ft',\n /**\n * Meters\n * @api\n */\n METERS: 'm',\n /**\n * Pixels\n * @api\n */\n PIXELS: 'pixels',\n /**\n * Tile Pixels\n * @api\n */\n TILE_PIXELS: 'tile-pixels',\n /**\n * US Feet\n * @api\n */\n USFEET: 'us-ft',\n};\n/**\n * See http://duff.ess.washington.edu/data/raster/drg/docs/geotiff.txt\n * @type {Object}\n */\nvar unitByCode = {\n '9001': Units.METERS,\n '9002': Units.FEET,\n '9003': Units.USFEET,\n '9101': Units.RADIANS,\n '9102': Units.DEGREES,\n};\n/**\n * @param {number} code Unit code.\n * @return {Units} Units.\n */\nexport function fromCode(code) {\n return unitByCode[code];\n}\n/**\n * Meters per unit lookup table.\n * @const\n * @type {Object}\n * @api\n */\nexport var METERS_PER_UNIT = {};\n// use the radius of the Normal sphere\nMETERS_PER_UNIT[Units.RADIANS] = 6370997 / (2 * Math.PI);\nMETERS_PER_UNIT[Units.DEGREES] = (2 * Math.PI * 6370997) / 360;\nMETERS_PER_UNIT[Units.FEET] = 0.3048;\nMETERS_PER_UNIT[Units.METERS] = 1;\nMETERS_PER_UNIT[Units.USFEET] = 1200 / 3937;\nexport default Units;\n//# sourceMappingURL=Units.js.map","/**\n * @module ol/has\n */\nvar ua = typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport var FIREFOX = ua.indexOf('firefox') !== -1;\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport var SAFARI = ua.indexOf('safari') !== -1 && ua.indexOf('chrom') == -1;\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=237906\n * @type {boolean}\n */\nexport var SAFARI_BUG_237906 = SAFARI &&\n !!(ua.indexOf('version/15.4') >= 0 ||\n ua.match(/cpu (os|iphone os) 15_4 like mac os x/));\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport var WEBKIT = ua.indexOf('webkit') !== -1 && ua.indexOf('edge') == -1;\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport var MAC = ua.indexOf('macintosh') !== -1;\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport var DEVICE_PIXEL_RATIO = typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport var WORKER_OFFSCREEN_CANVAS = typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport var IMAGE_DECODE = typeof Image !== 'undefined' && Image.prototype.decode;\n/**\n * @type {boolean}\n */\nexport var PASSIVE_EVENT_LISTENERS = (function () {\n var passive = false;\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n }\n catch (error) {\n // passive not supported\n }\n return passive;\n})();\n//# sourceMappingURL=has.js.map","/**\n * @module ol/transform\n */\nimport { WORKER_OFFSCREEN_CANVAS } from './has.js';\nimport { assert } from './asserts.js';\n/**\n * An array representing an affine 2d transformation for use with\n * {@link module:ol/transform} functions. The array has 6 elements.\n * @typedef {!Array} Transform\n * @api\n */\n/**\n * Collection of affine 2d transformation functions. The functions work on an\n * array of 6 elements. The element order is compatible with the [SVGMatrix\n * interface](https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix) and is\n * a subset (elements a to f) of a 3×3 matrix:\n * ```\n * [ a c e ]\n * [ b d f ]\n * [ 0 0 1 ]\n * ```\n */\n/**\n * @private\n * @type {Transform}\n */\nvar tmp_ = new Array(6);\n/**\n * Create an identity transform.\n * @return {!Transform} Identity transform.\n */\nexport function create() {\n return [1, 0, 0, 1, 0, 0];\n}\n/**\n * Resets the given transform to an identity transform.\n * @param {!Transform} transform Transform.\n * @return {!Transform} Transform.\n */\nexport function reset(transform) {\n return set(transform, 1, 0, 0, 1, 0, 0);\n}\n/**\n * Multiply the underlying matrices of two transforms and return the result in\n * the first transform.\n * @param {!Transform} transform1 Transform parameters of matrix 1.\n * @param {!Transform} transform2 Transform parameters of matrix 2.\n * @return {!Transform} transform1 multiplied with transform2.\n */\nexport function multiply(transform1, transform2) {\n var a1 = transform1[0];\n var b1 = transform1[1];\n var c1 = transform1[2];\n var d1 = transform1[3];\n var e1 = transform1[4];\n var f1 = transform1[5];\n var a2 = transform2[0];\n var b2 = transform2[1];\n var c2 = transform2[2];\n var d2 = transform2[3];\n var e2 = transform2[4];\n var f2 = transform2[5];\n transform1[0] = a1 * a2 + c1 * b2;\n transform1[1] = b1 * a2 + d1 * b2;\n transform1[2] = a1 * c2 + c1 * d2;\n transform1[3] = b1 * c2 + d1 * d2;\n transform1[4] = a1 * e2 + c1 * f2 + e1;\n transform1[5] = b1 * e2 + d1 * f2 + f1;\n return transform1;\n}\n/**\n * Set the transform components a-f on a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} a The a component of the transform.\n * @param {number} b The b component of the transform.\n * @param {number} c The c component of the transform.\n * @param {number} d The d component of the transform.\n * @param {number} e The e component of the transform.\n * @param {number} f The f component of the transform.\n * @return {!Transform} Matrix with transform applied.\n */\nexport function set(transform, a, b, c, d, e, f) {\n transform[0] = a;\n transform[1] = b;\n transform[2] = c;\n transform[3] = d;\n transform[4] = e;\n transform[5] = f;\n return transform;\n}\n/**\n * Set transform on one matrix from another matrix.\n * @param {!Transform} transform1 Matrix to set transform to.\n * @param {!Transform} transform2 Matrix to set transform from.\n * @return {!Transform} transform1 with transform from transform2 applied.\n */\nexport function setFromArray(transform1, transform2) {\n transform1[0] = transform2[0];\n transform1[1] = transform2[1];\n transform1[2] = transform2[2];\n transform1[3] = transform2[3];\n transform1[4] = transform2[4];\n transform1[5] = transform2[5];\n return transform1;\n}\n/**\n * Transforms the given coordinate with the given transform returning the\n * resulting, transformed coordinate. The coordinate will be modified in-place.\n *\n * @param {Transform} transform The transformation.\n * @param {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} coordinate The coordinate to transform.\n * @return {import(\"./coordinate.js\").Coordinate|import(\"./pixel.js\").Pixel} return coordinate so that operations can be\n * chained together.\n */\nexport function apply(transform, coordinate) {\n var x = coordinate[0];\n var y = coordinate[1];\n coordinate[0] = transform[0] * x + transform[2] * y + transform[4];\n coordinate[1] = transform[1] * x + transform[3] * y + transform[5];\n return coordinate;\n}\n/**\n * Applies rotation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} angle Angle in radians.\n * @return {!Transform} The rotated transform.\n */\nexport function rotate(transform, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n return multiply(transform, set(tmp_, cos, sin, -sin, cos, 0, 0));\n}\n/**\n * Applies scale to a given transform.\n * @param {!Transform} transform Transform.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scaled transform.\n */\nexport function scale(transform, x, y) {\n return multiply(transform, set(tmp_, x, 0, 0, y, 0, 0));\n}\n/**\n * Creates a scale transform.\n * @param {!Transform} target Transform to overwrite.\n * @param {number} x Scale factor x.\n * @param {number} y Scale factor y.\n * @return {!Transform} The scale transform.\n */\nexport function makeScale(target, x, y) {\n return set(target, x, 0, 0, y, 0, 0);\n}\n/**\n * Applies translation to the given transform.\n * @param {!Transform} transform Transform.\n * @param {number} dx Translation x.\n * @param {number} dy Translation y.\n * @return {!Transform} The translated transform.\n */\nexport function translate(transform, dx, dy) {\n return multiply(transform, set(tmp_, 1, 0, 0, 1, dx, dy));\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative).\n * @param {!Transform} transform The transform (will be modified in place).\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {!Transform} The composite transform.\n */\nexport function compose(transform, dx1, dy1, sx, sy, angle, dx2, dy2) {\n var sin = Math.sin(angle);\n var cos = Math.cos(angle);\n transform[0] = sx * cos;\n transform[1] = sy * sin;\n transform[2] = -sx * sin;\n transform[3] = sy * cos;\n transform[4] = dx2 * sx * cos - dy2 * sx * sin + dx1;\n transform[5] = dx2 * sy * sin + dy2 * sy * cos + dy1;\n return transform;\n}\n/**\n * Creates a composite transform given an initial translation, scale, rotation, and\n * final translation (in that order only, not commutative). The resulting transform\n * string can be applied as `transform` property of an HTMLElement's style.\n * @param {number} dx1 Initial translation x.\n * @param {number} dy1 Initial translation y.\n * @param {number} sx Scale factor x.\n * @param {number} sy Scale factor y.\n * @param {number} angle Rotation (in counter-clockwise radians).\n * @param {number} dx2 Final translation x.\n * @param {number} dy2 Final translation y.\n * @return {string} The composite css transform.\n * @api\n */\nexport function composeCssTransform(dx1, dy1, sx, sy, angle, dx2, dy2) {\n return toString(compose(create(), dx1, dy1, sx, sy, angle, dx2, dy2));\n}\n/**\n * Invert the given transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (source) transform.\n */\nexport function invert(source) {\n return makeInverse(source, source);\n}\n/**\n * Invert the given transform.\n * @param {!Transform} target Transform to be set as the inverse of\n * the source transform.\n * @param {!Transform} source The source transform to invert.\n * @return {!Transform} The inverted (target) transform.\n */\nexport function makeInverse(target, source) {\n var det = determinant(source);\n assert(det !== 0, 32); // Transformation matrix cannot be inverted\n var a = source[0];\n var b = source[1];\n var c = source[2];\n var d = source[3];\n var e = source[4];\n var f = source[5];\n target[0] = d / det;\n target[1] = -b / det;\n target[2] = -c / det;\n target[3] = a / det;\n target[4] = (c * f - d * e) / det;\n target[5] = -(a * f - b * e) / det;\n return target;\n}\n/**\n * Returns the determinant of the given matrix.\n * @param {!Transform} mat Matrix.\n * @return {number} Determinant.\n */\nexport function determinant(mat) {\n return mat[0] * mat[3] - mat[1] * mat[2];\n}\n/**\n * @type {HTMLElement}\n * @private\n */\nvar transformStringDiv;\n/**\n * A rounded string version of the transform. This can be used\n * for CSS transforms.\n * @param {!Transform} mat Matrix.\n * @return {string} The transform as a string.\n */\nexport function toString(mat) {\n var transformString = 'matrix(' + mat.join(', ') + ')';\n if (WORKER_OFFSCREEN_CANVAS) {\n return transformString;\n }\n var node = transformStringDiv || (transformStringDiv = document.createElement('div'));\n node.style.transform = transformString;\n return node.style.transform;\n}\n//# sourceMappingURL=transform.js.map","/**\n * @module ol/extent/Corner\n */\n/**\n * Extent corner.\n * @enum {string}\n */\nexport default {\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n};\n//# sourceMappingURL=Corner.js.map","/**\n * @module ol/extent/Relationship\n */\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n//# sourceMappingURL=Relationship.js.map","/**\n * @module ol/extent\n */\nimport Corner from './extent/Corner.js';\nimport Relationship from './extent/Relationship.js';\nimport { assert } from './asserts.js';\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n var extent = createEmpty();\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent} [opt_extent] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, opt_extent) {\n var minX = Math.min.apply(null, xs);\n var minY = Math.min.apply(null, ys);\n var maxX = Math.max.apply(null, xs);\n var maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, opt_extent);\n}\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0] - value;\n opt_extent[1] = extent[1] - value;\n opt_extent[2] = extent[2] + value;\n opt_extent[3] = extent[3] + value;\n return opt_extent;\n }\n else {\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n }\n}\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent.slice();\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n var dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n }\n else if (extent[2] < x) {\n dx = x - extent[2];\n }\n else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n }\n else if (extent[3] < y) {\n dy = y - extent[3];\n }\n else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]);\n}\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var x = coordinate[0];\n var y = coordinate[1];\n var relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n }\n else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n }\n else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [opt_extent] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = minX;\n opt_extent[1] = minY;\n opt_extent[2] = maxX;\n opt_extent[3] = maxY;\n return opt_extent;\n }\n else {\n return [minX, minY, maxX, maxY];\n }\n}\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(opt_extent) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, opt_extent) {\n var x = coordinate[0];\n var y = coordinate[1];\n return createOrUpdate(x, y, x, y, opt_extent);\n}\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendCoordinates(extent, coordinates);\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(flatCoordinates, offset, end, stride, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n/**\n * @param {Array>} rings Rings.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, opt_extent) {\n var extent = createOrUpdateEmpty(opt_extent);\n return extendRings(extent, rings);\n}\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]);\n}\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance);\n}\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (var i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n var val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n var area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./extent/Corner.js\").default} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n var coordinate;\n if (corner === Corner.BOTTOM_LEFT) {\n coordinate = getBottomLeft(extent);\n }\n else if (corner === Corner.BOTTOM_RIGHT) {\n coordinate = getBottomRight(extent);\n }\n else if (corner === Corner.TOP_LEFT) {\n coordinate = getTopLeft(extent);\n }\n else if (corner === Corner.TOP_RIGHT) {\n coordinate = getTopRight(extent);\n }\n else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n var minX = Math.min(extent1[0], extent2[0]);\n var minY = Math.min(extent1[1], extent2[1]);\n var maxX = Math.max(extent1[2], extent2[2]);\n var maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [opt_extent] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, opt_extent) {\n var dx = (resolution * size[0]) / 2;\n var dy = (resolution * size[1]) / 2;\n var cosRotation = Math.cos(rotation);\n var sinRotation = Math.sin(rotation);\n var xCos = dx * cosRotation;\n var xSin = dx * sinRotation;\n var yCos = dy * cosRotation;\n var ySin = dy * sinRotation;\n var x = center[0];\n var y = center[1];\n var x0 = x - xCos + ySin;\n var x1 = x - xCos - ySin;\n var x2 = x + xCos - ySin;\n var x3 = x + xCos + ySin;\n var y0 = y - xSin - yCos;\n var y1 = y - xSin + yCos;\n var y2 = y + xSin + yCos;\n var y3 = y + xSin - yCos;\n return createOrUpdate(Math.min(x0, x1, x2, x3), Math.min(y0, y1, y2, y3), Math.max(x0, x1, x2, x3), Math.max(y0, y1, y2, y3), opt_extent);\n}\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n var intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [opt_extent] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, opt_extent) {\n var intersection = opt_extent ? opt_extent : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n }\n else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n }\n else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n }\n else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n }\n else {\n intersection[3] = extent2[3];\n }\n }\n else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]);\n}\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [opt_extent] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, opt_extent) {\n if (opt_extent) {\n opt_extent[0] = extent[0];\n opt_extent[1] = extent[1];\n opt_extent[2] = extent[2];\n opt_extent[3] = extent[3];\n return opt_extent;\n }\n else {\n return extent;\n }\n}\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n var deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n var deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n var intersects = false;\n var startRel = coordinateRelationship(extent, start);\n var endRel = coordinateRelationship(extent, end);\n if (startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING) {\n intersects = true;\n }\n else {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var startX = start[0];\n var startY = start[1];\n var endX = end[0];\n var endY = end[1];\n var slope = (endY - startY) / (endX - startX);\n var x = void 0, y = void 0;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (!intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (!intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [opt_extent] Destination extent.\n * @param {number} [opt_stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, opt_extent, opt_stops) {\n var coordinates = [];\n if (opt_stops > 1) {\n var width = extent[2] - extent[0];\n var height = extent[3] - extent[1];\n for (var i = 0; i < opt_stops; ++i) {\n coordinates.push(extent[0] + (width * i) / opt_stops, extent[1], extent[2], extent[1] + (height * i) / opt_stops, extent[2] - (width * i) / opt_stops, extent[3], extent[0], extent[3] - (height * i) / opt_stops);\n }\n }\n else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n var xs = [];\n var ys = [];\n for (var i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, opt_extent);\n}\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n var projectionExtent = projection.getExtent();\n var center = getCenter(extent);\n if (projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])) {\n var worldWidth = getWidth(projectionExtent);\n var worldsAway = Math.floor((center[0] - projectionExtent[0]) / worldWidth);\n var offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n//# sourceMappingURL=extent.js.map","/**\n * @module ol/proj/Projection\n */\nimport { METERS_PER_UNIT } from './Units.js';\n/**\n * @typedef {Object} Options\n * @property {string} code The SRS identifier code, e.g. `EPSG:4326`.\n * @property {import(\"./Units.js\").default|string} [units] Units. Required unless a\n * proj4 projection is defined for `code`.\n * @property {import(\"../extent.js\").Extent} [extent] The validity extent for the SRS.\n * @property {string} [axisOrientation='enu'] The axis orientation as specified in Proj4.\n * @property {boolean} [global=false] Whether the projection is valid for the whole globe.\n * @property {number} [metersPerUnit] The meters per unit for the SRS.\n * If not provided, the `units` are used to get the meters per unit from the {@link module:ol/proj/Units~METERS_PER_UNIT}\n * lookup table.\n * @property {import(\"../extent.js\").Extent} [worldExtent] The world extent for the SRS.\n * @property {function(number, import(\"../coordinate.js\").Coordinate):number} [getPointResolution]\n * Function to determine resolution at a point. The function is called with a\n * `number` view resolution and a {@link module:ol/coordinate~Coordinate Coordinate} as arguments, and returns\n * the `number` resolution in projection units at the passed coordinate. If this is `undefined`,\n * the default {@link module:ol/proj.getPointResolution getPointResolution()} function will be used.\n */\n/**\n * @classdesc\n * Projection definition class. One of these is created for each projection\n * supported in the application and stored in the {@link module:ol/proj} namespace.\n * You can use these in applications, but this is not required, as API params\n * and options use {@link module:ol/proj~ProjectionLike} which means the simple string\n * code will suffice.\n *\n * You can use {@link module:ol/proj.get} to retrieve the object for a particular\n * projection.\n *\n * The library includes definitions for `EPSG:4326` and `EPSG:3857`, together\n * with the following aliases:\n * * `EPSG:4326`: CRS:84, urn:ogc:def:crs:EPSG:6.6:4326,\n * urn:ogc:def:crs:OGC:1.3:CRS84, urn:ogc:def:crs:OGC:2:84,\n * http://www.opengis.net/gml/srs/epsg.xml#4326,\n * urn:x-ogc:def:crs:EPSG:4326\n * * `EPSG:3857`: EPSG:102100, EPSG:102113, EPSG:900913,\n * urn:ogc:def:crs:EPSG:6.18:3:3857,\n * http://www.opengis.net/gml/srs/epsg.xml#3857\n *\n * If you use [proj4js](https://github.com/proj4js/proj4js), aliases can\n * be added using `proj4.defs()`. After all required projection definitions are\n * added, call the {@link module:ol/proj/proj4.register} function.\n *\n * @api\n */\nvar Projection = /** @class */ (function () {\n /**\n * @param {Options} options Projection options.\n */\n function Projection(options) {\n /**\n * @private\n * @type {string}\n */\n this.code_ = options.code;\n /**\n * Units of projected coordinates. When set to `TILE_PIXELS`, a\n * `this.extent_` and `this.worldExtent_` must be configured properly for each\n * tile.\n * @private\n * @type {import(\"./Units.js\").default}\n */\n this.units_ = /** @type {import(\"./Units.js\").default} */ (options.units);\n /**\n * Validity extent of the projection in projected coordinates. For projections\n * with `TILE_PIXELS` units, this is the extent of the tile in\n * tile pixel space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = options.extent !== undefined ? options.extent : null;\n /**\n * Extent of the world in EPSG:4326. For projections with\n * `TILE_PIXELS` units, this is the extent of the tile in\n * projected coordinate space.\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.worldExtent_ =\n options.worldExtent !== undefined ? options.worldExtent : null;\n /**\n * @private\n * @type {string}\n */\n this.axisOrientation_ =\n options.axisOrientation !== undefined ? options.axisOrientation : 'enu';\n /**\n * @private\n * @type {boolean}\n */\n this.global_ = options.global !== undefined ? options.global : false;\n /**\n * @private\n * @type {boolean}\n */\n this.canWrapX_ = !!(this.global_ && this.extent_);\n /**\n * @private\n * @type {function(number, import(\"../coordinate.js\").Coordinate):number|undefined}\n */\n this.getPointResolutionFunc_ = options.getPointResolution;\n /**\n * @private\n * @type {import(\"../tilegrid/TileGrid.js\").default}\n */\n this.defaultTileGrid_ = null;\n /**\n * @private\n * @type {number|undefined}\n */\n this.metersPerUnit_ = options.metersPerUnit;\n }\n /**\n * @return {boolean} The projection is suitable for wrapping the x-axis\n */\n Projection.prototype.canWrapX = function () {\n return this.canWrapX_;\n };\n /**\n * Get the code for this projection, e.g. 'EPSG:4326'.\n * @return {string} Code.\n * @api\n */\n Projection.prototype.getCode = function () {\n return this.code_;\n };\n /**\n * Get the validity extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getExtent = function () {\n return this.extent_;\n };\n /**\n * Get the units of this projection.\n * @return {import(\"./Units.js\").default} Units.\n * @api\n */\n Projection.prototype.getUnits = function () {\n return this.units_;\n };\n /**\n * Get the amount of meters per unit of this projection. If the projection is\n * not configured with `metersPerUnit` or a units identifier, the return is\n * `undefined`.\n * @return {number|undefined} Meters.\n * @api\n */\n Projection.prototype.getMetersPerUnit = function () {\n return this.metersPerUnit_ || METERS_PER_UNIT[this.units_];\n };\n /**\n * Get the world extent for this projection.\n * @return {import(\"../extent.js\").Extent} Extent.\n * @api\n */\n Projection.prototype.getWorldExtent = function () {\n return this.worldExtent_;\n };\n /**\n * Get the axis orientation of this projection.\n * Example values are:\n * enu - the default easting, northing, elevation.\n * neu - northing, easting, up - useful for \"lat/long\" geographic coordinates,\n * or south orientated transverse mercator.\n * wnu - westing, northing, up - some planetary coordinate systems have\n * \"west positive\" coordinate systems\n * @return {string} Axis orientation.\n * @api\n */\n Projection.prototype.getAxisOrientation = function () {\n return this.axisOrientation_;\n };\n /**\n * Is this projection a global projection which spans the whole world?\n * @return {boolean} Whether the projection is global.\n * @api\n */\n Projection.prototype.isGlobal = function () {\n return this.global_;\n };\n /**\n * Set if the projection is a global projection which spans the whole world\n * @param {boolean} global Whether the projection is global.\n * @api\n */\n Projection.prototype.setGlobal = function (global) {\n this.global_ = global;\n this.canWrapX_ = !!(global && this.extent_);\n };\n /**\n * @return {import(\"../tilegrid/TileGrid.js\").default} The default tile grid.\n */\n Projection.prototype.getDefaultTileGrid = function () {\n return this.defaultTileGrid_;\n };\n /**\n * @param {import(\"../tilegrid/TileGrid.js\").default} tileGrid The default tile grid.\n */\n Projection.prototype.setDefaultTileGrid = function (tileGrid) {\n this.defaultTileGrid_ = tileGrid;\n };\n /**\n * Set the validity extent for this projection.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Projection.prototype.setExtent = function (extent) {\n this.extent_ = extent;\n this.canWrapX_ = !!(this.global_ && extent);\n };\n /**\n * Set the world extent for this projection.\n * @param {import(\"../extent.js\").Extent} worldExtent World extent\n * [minlon, minlat, maxlon, maxlat].\n * @api\n */\n Projection.prototype.setWorldExtent = function (worldExtent) {\n this.worldExtent_ = worldExtent;\n };\n /**\n * Set the getPointResolution function (see {@link module:ol/proj.getPointResolution}\n * for this projection.\n * @param {function(number, import(\"../coordinate.js\").Coordinate):number} func Function\n * @api\n */\n Projection.prototype.setGetPointResolution = function (func) {\n this.getPointResolutionFunc_ = func;\n };\n /**\n * Get the custom point resolution function for this projection (if set).\n * @return {function(number, import(\"../coordinate.js\").Coordinate):number|undefined} The custom point\n * resolution function (if set).\n */\n Projection.prototype.getPointResolutionFunc = function () {\n return this.getPointResolutionFunc_;\n };\n return Projection;\n}());\nexport default Projection;\n//# sourceMappingURL=Projection.js.map","/**\n * @module ol/math\n */\n/**\n * Takes a number and clamps it to within the provided bounds.\n * @param {number} value The input number.\n * @param {number} min The minimum value to return.\n * @param {number} max The maximum value to return.\n * @return {number} The input number if it is within bounds, or the nearest\n * number within the bounds.\n */\nexport function clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\n * Return the hyperbolic cosine of a given number. The method will use the\n * native `Math.cosh` function if it is available, otherwise the hyperbolic\n * cosine will be calculated via the reference implementation of the Mozilla\n * developer network.\n *\n * @param {number} x X.\n * @return {number} Hyperbolic cosine of x.\n */\nexport var cosh = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var cosh;\n if ('cosh' in Math) {\n // The environment supports the native Math.cosh function, use it…\n cosh = Math.cosh;\n }\n else {\n // … else, use the reference implementation of MDN:\n cosh = function (x) {\n var y = /** @type {Math} */ (Math).exp(x);\n return (y + 1 / y) / 2;\n };\n }\n return cosh;\n})();\n/**\n * Return the base 2 logarithm of a given number. The method will use the\n * native `Math.log2` function if it is available, otherwise the base 2\n * logarithm will be calculated via the reference implementation of the\n * Mozilla developer network.\n *\n * @param {number} x X.\n * @return {number} Base 2 logarithm of x.\n */\nexport var log2 = (function () {\n // Wrapped in a iife, to save the overhead of checking for the native\n // implementation on every invocation.\n var log2;\n if ('log2' in Math) {\n // The environment supports the native Math.log2 function, use it…\n log2 = Math.log2;\n }\n else {\n // … else, use the reference implementation of MDN:\n log2 = function (x) {\n return Math.log(x) * Math.LOG2E;\n };\n }\n return log2;\n})();\n/**\n * Returns the square of the closest distance between the point (x, y) and the\n * line segment (x1, y1) to (x2, y2).\n * @param {number} x X.\n * @param {number} y Y.\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredSegmentDistance(x, y, x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n if (dx !== 0 || dy !== 0) {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n x1 = x2;\n y1 = y2;\n }\n else if (t > 0) {\n x1 += dx * t;\n y1 += dy * t;\n }\n }\n return squaredDistance(x, y, x1, y1);\n}\n/**\n * Returns the square of the distance between the points (x1, y1) and (x2, y2).\n * @param {number} x1 X1.\n * @param {number} y1 Y1.\n * @param {number} x2 X2.\n * @param {number} y2 Y2.\n * @return {number} Squared distance.\n */\nexport function squaredDistance(x1, y1, x2, y2) {\n var dx = x2 - x1;\n var dy = y2 - y1;\n return dx * dx + dy * dy;\n}\n/**\n * Solves system of linear equations using Gaussian elimination method.\n *\n * @param {Array>} mat Augmented matrix (n x n + 1 column)\n * in row-major order.\n * @return {Array} The resulting vector.\n */\nexport function solveLinearSystem(mat) {\n var n = mat.length;\n for (var i = 0; i < n; i++) {\n // Find max in the i-th column (ignoring i - 1 first rows)\n var maxRow = i;\n var maxEl = Math.abs(mat[i][i]);\n for (var r = i + 1; r < n; r++) {\n var absValue = Math.abs(mat[r][i]);\n if (absValue > maxEl) {\n maxEl = absValue;\n maxRow = r;\n }\n }\n if (maxEl === 0) {\n return null; // matrix is singular\n }\n // Swap max row with i-th (current) row\n var tmp = mat[maxRow];\n mat[maxRow] = mat[i];\n mat[i] = tmp;\n // Subtract the i-th row to make all the remaining rows 0 in the i-th column\n for (var j = i + 1; j < n; j++) {\n var coef = -mat[j][i] / mat[i][i];\n for (var k = i; k < n + 1; k++) {\n if (i == k) {\n mat[j][k] = 0;\n }\n else {\n mat[j][k] += coef * mat[i][k];\n }\n }\n }\n }\n // Solve Ax=b for upper triangular matrix A (mat)\n var x = new Array(n);\n for (var l = n - 1; l >= 0; l--) {\n x[l] = mat[l][n] / mat[l][l];\n for (var m = l - 1; m >= 0; m--) {\n mat[m][n] -= mat[m][l] * x[l];\n }\n }\n return x;\n}\n/**\n * Converts radians to to degrees.\n *\n * @param {number} angleInRadians Angle in radians.\n * @return {number} Angle in degrees.\n */\nexport function toDegrees(angleInRadians) {\n return (angleInRadians * 180) / Math.PI;\n}\n/**\n * Converts degrees to radians.\n *\n * @param {number} angleInDegrees Angle in degrees.\n * @return {number} Angle in radians.\n */\nexport function toRadians(angleInDegrees) {\n return (angleInDegrees * Math.PI) / 180;\n}\n/**\n * Returns the modulo of a / b, depending on the sign of b.\n *\n * @param {number} a Dividend.\n * @param {number} b Divisor.\n * @return {number} Modulo.\n */\nexport function modulo(a, b) {\n var r = a % b;\n return r * b < 0 ? r + b : r;\n}\n/**\n * Calculates the linearly interpolated value of x between a and b.\n *\n * @param {number} a Number\n * @param {number} b Number\n * @param {number} x Value to be interpolated.\n * @return {number} Interpolated value.\n */\nexport function lerp(a, b, x) {\n return a + x * (b - a);\n}\n/**\n * Returns a number with a limited number of decimal digits.\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The input number with a limited number of decimal digits.\n */\nexport function toFixed(n, decimals) {\n var factor = Math.pow(10, decimals);\n return Math.round(n * factor) / factor;\n}\n/**\n * Rounds a number to the nearest integer value considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The nearest integer.\n */\nexport function round(n, decimals) {\n return Math.round(toFixed(n, decimals));\n}\n/**\n * Rounds a number to the next smaller integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next smaller integer.\n */\nexport function floor(n, decimals) {\n return Math.floor(toFixed(n, decimals));\n}\n/**\n * Rounds a number to the next bigger integer considering only the given number\n * of decimal digits (with rounding on the final digit).\n * @param {number} n The input number.\n * @param {number} decimals The maximum number of decimal digits.\n * @return {number} The next bigger integer.\n */\nexport function ceil(n, decimals) {\n return Math.ceil(toFixed(n, decimals));\n}\n//# sourceMappingURL=math.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg3857\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\nimport { cosh } from '../math.js';\n/**\n * Radius of WGS84 sphere\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * @const\n * @type {number}\n */\nexport var HALF_SIZE = Math.PI * RADIUS;\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-HALF_SIZE, -HALF_SIZE, HALF_SIZE, HALF_SIZE];\n/**\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var WORLD_EXTENT = [-180, -85, 180, 85];\n/**\n * Maximum safe value in y direction\n * @const\n * @type {number}\n */\nexport var MAX_SAFE_Y = RADIUS * Math.log(Math.tan(Math.PI / 2));\n/**\n * @classdesc\n * Projection object for web/spherical Mercator (EPSG:3857).\n */\nvar EPSG3857Projection = /** @class */ (function (_super) {\n __extends(EPSG3857Projection, _super);\n /**\n * @param {string} code Code.\n */\n function EPSG3857Projection(code) {\n return _super.call(this, {\n code: code,\n units: Units.METERS,\n extent: EXTENT,\n global: true,\n worldExtent: WORLD_EXTENT,\n getPointResolution: function (resolution, point) {\n return resolution / cosh(point[1] / RADIUS);\n },\n }) || this;\n }\n return EPSG3857Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:3857.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG3857Projection('EPSG:3857'),\n new EPSG3857Projection('EPSG:102100'),\n new EPSG3857Projection('EPSG:102113'),\n new EPSG3857Projection('EPSG:900913'),\n new EPSG3857Projection('http://www.opengis.net/def/crs/EPSG/0/3857'),\n new EPSG3857Projection('http://www.opengis.net/gml/srs/epsg.xml#3857'),\n];\n/**\n * Transformation from EPSG:4326 to EPSG:3857.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function fromEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = (HALF_SIZE * input[i]) / 180;\n var y = RADIUS * Math.log(Math.tan((Math.PI * (+input[i + 1] + 90)) / 360));\n if (y > MAX_SAFE_Y) {\n y = MAX_SAFE_Y;\n }\n else if (y < -MAX_SAFE_Y) {\n y = -MAX_SAFE_Y;\n }\n output[i + 1] = y;\n }\n return output;\n}\n/**\n * Transformation from EPSG:3857 to EPSG:4326.\n *\n * @param {Array} input Input array of coordinate values.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension (default is `2`).\n * @return {Array} Output array of coordinate values.\n */\nexport function toEPSG4326(input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var output = opt_output;\n if (output === undefined) {\n if (dimension > 2) {\n // preserve values beyond second dimension\n output = input.slice();\n }\n else {\n output = new Array(length);\n }\n }\n for (var i = 0; i < length; i += dimension) {\n output[i] = (180 * input[i]) / HALF_SIZE;\n output[i + 1] =\n (360 * Math.atan(Math.exp(input[i + 1] / RADIUS))) / Math.PI - 90;\n }\n return output;\n}\n//# sourceMappingURL=epsg3857.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/proj/epsg4326\n */\nimport Projection from './Projection.js';\nimport Units from './Units.js';\n/**\n * Semi-major radius of the WGS84 ellipsoid.\n *\n * @const\n * @type {number}\n */\nexport var RADIUS = 6378137;\n/**\n * Extent of the EPSG:4326 projection which is the whole world.\n *\n * @const\n * @type {import(\"../extent.js\").Extent}\n */\nexport var EXTENT = [-180, -90, 180, 90];\n/**\n * @const\n * @type {number}\n */\nexport var METERS_PER_UNIT = (Math.PI * RADIUS) / 180;\n/**\n * @classdesc\n * Projection object for WGS84 geographic coordinates (EPSG:4326).\n *\n * Note that OpenLayers does not strictly comply with the EPSG definition.\n * The EPSG registry defines 4326 as a CRS for Latitude,Longitude (y,x).\n * OpenLayers treats EPSG:4326 as a pseudo-projection, with x,y coordinates.\n */\nvar EPSG4326Projection = /** @class */ (function (_super) {\n __extends(EPSG4326Projection, _super);\n /**\n * @param {string} code Code.\n * @param {string} [opt_axisOrientation] Axis orientation.\n */\n function EPSG4326Projection(code, opt_axisOrientation) {\n return _super.call(this, {\n code: code,\n units: Units.DEGREES,\n extent: EXTENT,\n axisOrientation: opt_axisOrientation,\n global: true,\n metersPerUnit: METERS_PER_UNIT,\n worldExtent: EXTENT,\n }) || this;\n }\n return EPSG4326Projection;\n}(Projection));\n/**\n * Projections equal to EPSG:4326.\n *\n * @const\n * @type {Array}\n */\nexport var PROJECTIONS = [\n new EPSG4326Projection('CRS:84'),\n new EPSG4326Projection('EPSG:4326', 'neu'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:1.3:CRS84'),\n new EPSG4326Projection('urn:ogc:def:crs:OGC:2:84'),\n new EPSG4326Projection('http://www.opengis.net/def/crs/OGC/1.3/CRS84'),\n new EPSG4326Projection('http://www.opengis.net/gml/srs/epsg.xml#4326', 'neu'),\n new EPSG4326Projection('http://www.opengis.net/def/crs/EPSG/0/4326', 'neu'),\n];\n//# sourceMappingURL=epsg4326.js.map","/**\n * @module ol/proj/projections\n */\n/**\n * @type {Object}\n */\nvar cache = {};\n/**\n * Clear the projections cache.\n */\nexport function clear() {\n cache = {};\n}\n/**\n * Get a cached projection by code.\n * @param {string} code The code for the projection.\n * @return {import(\"./Projection.js\").default} The projection (if cached).\n */\nexport function get(code) {\n return (cache[code] ||\n cache[code.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\\w+)$/, 'EPSG:$3')] ||\n null);\n}\n/**\n * Add a projection to the cache.\n * @param {string} code The projection code.\n * @param {import(\"./Projection.js\").default} projection The projection to cache.\n */\nexport function add(code, projection) {\n cache[code] = projection;\n}\n//# sourceMappingURL=projections.js.map","/**\n * @module ol/proj/transforms\n */\nimport { isEmpty } from '../obj.js';\n/**\n * @private\n * @type {!Object>}\n */\nvar transforms = {};\n/**\n * Clear the transform cache.\n */\nexport function clear() {\n transforms = {};\n}\n/**\n * Registers a conversion function to convert coordinates from the source\n * projection to the destination projection.\n *\n * @param {import(\"./Projection.js\").default} source Source.\n * @param {import(\"./Projection.js\").default} destination Destination.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform.\n */\nexport function add(source, destination, transformFn) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n if (!(sourceCode in transforms)) {\n transforms[sourceCode] = {};\n }\n transforms[sourceCode][destinationCode] = transformFn;\n}\n/**\n * Unregisters the conversion function to convert coordinates from the source\n * projection to the destination projection. This method is used to clean up\n * cached transforms during testing.\n *\n * @param {import(\"./Projection.js\").default} source Source projection.\n * @param {import(\"./Projection.js\").default} destination Destination projection.\n * @return {import(\"../proj.js\").TransformFunction} transformFn The unregistered transform.\n */\nexport function remove(source, destination) {\n var sourceCode = source.getCode();\n var destinationCode = destination.getCode();\n var transform = transforms[sourceCode][destinationCode];\n delete transforms[sourceCode][destinationCode];\n if (isEmpty(transforms[sourceCode])) {\n delete transforms[sourceCode];\n }\n return transform;\n}\n/**\n * Get a transform given a source code and a destination code.\n * @param {string} sourceCode The code for the source projection.\n * @param {string} destinationCode The code for the destination projection.\n * @return {import(\"../proj.js\").TransformFunction|undefined} The transform function (if found).\n */\nexport function get(sourceCode, destinationCode) {\n var transform;\n if (sourceCode in transforms && destinationCode in transforms[sourceCode]) {\n transform = transforms[sourceCode][destinationCode];\n }\n return transform;\n}\n//# sourceMappingURL=transforms.js.map","/**\n * @module ol/string\n */\n/**\n * @param {number} number Number to be formatted\n * @param {number} width The desired width\n * @param {number} [opt_precision] Precision of the output string (i.e. number of decimal places)\n * @return {string} Formatted string\n */\nexport function padNumber(number, width, opt_precision) {\n var numberString = opt_precision !== undefined ? number.toFixed(opt_precision) : '' + number;\n var decimal = numberString.indexOf('.');\n decimal = decimal === -1 ? numberString.length : decimal;\n return decimal > width\n ? numberString\n : new Array(1 + width - decimal).join('0') + numberString;\n}\n/**\n * Adapted from https://github.com/omichelsen/compare-versions/blob/master/index.js\n * @param {string|number} v1 First version\n * @param {string|number} v2 Second version\n * @return {number} Value\n */\nexport function compareVersions(v1, v2) {\n var s1 = ('' + v1).split('.');\n var s2 = ('' + v2).split('.');\n for (var i = 0; i < Math.max(s1.length, s2.length); i++) {\n var n1 = parseInt(s1[i] || '0', 10);\n var n2 = parseInt(s2[i] || '0', 10);\n if (n1 > n2) {\n return 1;\n }\n if (n2 > n1) {\n return -1;\n }\n }\n return 0;\n}\n//# sourceMappingURL=string.js.map","/**\n * @module ol/coordinate\n */\nimport { getWidth } from './extent.js';\nimport { modulo } from './math.js';\nimport { padNumber } from './string.js';\n/**\n * An array of numbers representing an xy coordinate. Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n var r = circle.getRadius();\n var center = circle.getCenter();\n var x0 = center[0];\n var y0 = center[1];\n var x1 = coordinate[0];\n var y1 = coordinate[1];\n var dx = x1 - x0;\n var dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n var d = Math.sqrt(dx * dx + dy * dy);\n var x = x0 + (r * dx) / d;\n var y = y0 + (r * dy) / d;\n return [x, y];\n}\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n var x0 = coordinate[0];\n var y0 = coordinate[1];\n var start = segment[0];\n var end = segment[1];\n var x1 = start[0];\n var y1 = start[1];\n var x2 = end[0];\n var y2 = end[1];\n var dx = x2 - x1;\n var dy = y2 - y1;\n var along = dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n var x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n }\n else if (along >= 1) {\n x = x2;\n y = y2;\n }\n else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY();\n * var out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var stringifyFunc = createStringXY(2);\n * var out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(opt_fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, opt_fractionDigits);\n });\n}\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, opt_fractionDigits) {\n var normalizedDegrees = modulo(degrees + 180, 360) - 180;\n var x = Math.abs(3600 * normalizedDegrees);\n var dflPrecision = opt_fractionDigits || 0;\n var precision = Math.pow(10, dflPrecision);\n var deg = Math.floor(x / 3600);\n var min = Math.floor((x - deg * 3600) / 60);\n var sec = x - deg * 3600 - min * 60;\n sec = Math.ceil(sec * precision) / precision;\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n return (deg +\n '\\u00b0 ' +\n padNumber(min, 2) +\n '\\u2032 ' +\n padNumber(sec, 2, dflPrecision) +\n '\\u2033' +\n (normalizedDegrees == 0\n ? ''\n : ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0)));\n}\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var template = 'Coordinate is ({x}|{y}).';\n * var out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, opt_fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(opt_fractionDigits))\n .replace('{y}', coordinate[1].toFixed(opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n var equals = true;\n for (var i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n var dx = coord1[0] - coord2[0];\n var dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, opt_fractionDigits) {\n if (coordinate) {\n return (degreesToStringHDMS('NS', coordinate[1], opt_fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], opt_fractionDigits));\n }\n else {\n return '';\n }\n}\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate';\n *\n * var coord = [7.85, 47.983333];\n * var out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [opt_fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, opt_fractionDigits) {\n return format(coordinate, '{x}, {y}', opt_fractionDigits);\n}\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n var worldWidth = getWidth(projection.getExtent());\n var worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [opt_sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, opt_sourceExtentWidth) {\n var projectionExtent = projection.getExtent();\n var worldsAway = 0;\n if (projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])) {\n var sourceExtentWidth = opt_sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor((coordinate[0] - projectionExtent[0]) / sourceExtentWidth);\n }\n return worldsAway;\n}\n//# sourceMappingURL=coordinate.js.map","/**\n * @module ol/sphere\n */\nimport GeometryType from './geom/GeometryType.js';\nimport { toDegrees, toRadians } from './math.js';\n/**\n * Object literal with options for the {@link getLength} or {@link getArea}\n * functions.\n * @typedef {Object} SphereMetricOptions\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857']\n * Projection of the geometry. By default, the geometry is assumed to be in\n * Web Mercator.\n * @property {number} [radius=6371008.8] Sphere radius. By default, the\n * [mean Earth radius](https://en.wikipedia.org/wiki/Earth_radius#Mean_radius)\n * for the WGS84 ellipsoid is used.\n */\n/**\n * The mean Earth radius (1/3 * (2a + b)) for the WGS84 ellipsoid.\n * https://en.wikipedia.org/wiki/Earth_radius#Mean_radius\n * @type {number}\n */\nexport var DEFAULT_RADIUS = 6371008.8;\n/**\n * Get the great circle distance (in meters) between two geographic coordinates.\n * @param {Array} c1 Starting coordinate.\n * @param {Array} c2 Ending coordinate.\n * @param {number} [opt_radius] The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {number} The great circle distance between the points (in meters).\n * @api\n */\nexport function getDistance(c1, c2, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lat2 = toRadians(c2[1]);\n var deltaLatBy2 = (lat2 - lat1) / 2;\n var deltaLonBy2 = toRadians(c2[0] - c1[0]) / 2;\n var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) +\n Math.sin(deltaLonBy2) *\n Math.sin(deltaLonBy2) *\n Math.cos(lat1) *\n Math.cos(lat2);\n return 2 * radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n}\n/**\n * Get the cumulative great circle length of linestring coordinates (geographic).\n * @param {Array} coordinates Linestring coordinates.\n * @param {number} radius The sphere radius to use.\n * @return {number} The length (in meters).\n */\nfunction getLengthInternal(coordinates, radius) {\n var length = 0;\n for (var i = 0, ii = coordinates.length; i < ii - 1; ++i) {\n length += getDistance(coordinates[i], coordinates[i + 1], radius);\n }\n return length;\n}\n/**\n * Get the spherical length of a geometry. This length is the sum of the\n * great circle distances between coordinates. For polygons, the length is\n * the sum of all rings. For points, the length is zero. For multi-part\n * geometries, the length is the sum of the length of each part.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [opt_options] Options for the\n * length calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical length (in meters).\n * @api\n */\nexport function getLength(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var length = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT: {\n break;\n }\n case GeometryType.LINE_STRING:\n case GeometryType.LINEAR_RING: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n length = getLengthInternal(coordinates, radius);\n break;\n }\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n length += getLengthInternal(coordinates[i], radius);\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n for (j = 0, jj = coords.length; j < jj; ++j) {\n length += getLengthInternal(coords[j], radius);\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = \n /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n length += getLength(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return length;\n}\n/**\n * Returns the spherical area for a list of coordinates.\n *\n * [Reference](https://trs.jpl.nasa.gov/handle/2014/40409)\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for\n * Polygons on a Sphere\", JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007\n *\n * @param {Array} coordinates List of coordinates of a linear\n * ring. If the ring is oriented clockwise, the area will be positive,\n * otherwise it will be negative.\n * @param {number} radius The sphere radius.\n * @return {number} Area (in square meters).\n */\nfunction getAreaInternal(coordinates, radius) {\n var area = 0;\n var len = coordinates.length;\n var x1 = coordinates[len - 1][0];\n var y1 = coordinates[len - 1][1];\n for (var i = 0; i < len; i++) {\n var x2 = coordinates[i][0];\n var y2 = coordinates[i][1];\n area +=\n toRadians(x2 - x1) *\n (2 + Math.sin(toRadians(y1)) + Math.sin(toRadians(y2)));\n x1 = x2;\n y1 = y2;\n }\n return (area * radius * radius) / 2.0;\n}\n/**\n * Get the spherical area of a geometry. This is the area (in meters) assuming\n * that polygon edges are segments of great circles on a sphere.\n * @param {import(\"./geom/Geometry.js\").default} geometry A geometry.\n * @param {SphereMetricOptions} [opt_options] Options for the area\n * calculation. By default, geometries are assumed to be in 'EPSG:3857'.\n * You can change this by providing a `projection` option.\n * @return {number} The spherical area (in square meters).\n * @api\n */\nexport function getArea(geometry, opt_options) {\n var options = opt_options || {};\n var radius = options.radius || DEFAULT_RADIUS;\n var projection = options.projection || 'EPSG:3857';\n var type = geometry.getType();\n if (type !== GeometryType.GEOMETRY_COLLECTION) {\n geometry = geometry.clone().transform(projection, 'EPSG:4326');\n }\n var area = 0;\n var coordinates, coords, i, ii, j, jj;\n switch (type) {\n case GeometryType.POINT:\n case GeometryType.MULTI_POINT:\n case GeometryType.LINE_STRING:\n case GeometryType.MULTI_LINE_STRING:\n case GeometryType.LINEAR_RING: {\n break;\n }\n case GeometryType.POLYGON: {\n coordinates = /** @type {import(\"./geom/Polygon.js\").default} */ (geometry).getCoordinates();\n area = Math.abs(getAreaInternal(coordinates[0], radius));\n for (i = 1, ii = coordinates.length; i < ii; ++i) {\n area -= Math.abs(getAreaInternal(coordinates[i], radius));\n }\n break;\n }\n case GeometryType.MULTI_POLYGON: {\n coordinates = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (geometry).getCoordinates();\n for (i = 0, ii = coordinates.length; i < ii; ++i) {\n coords = coordinates[i];\n area += Math.abs(getAreaInternal(coords[0], radius));\n for (j = 1, jj = coords.length; j < jj; ++j) {\n area -= Math.abs(getAreaInternal(coords[j], radius));\n }\n }\n break;\n }\n case GeometryType.GEOMETRY_COLLECTION: {\n var geometries = \n /** @type {import(\"./geom/GeometryCollection.js\").default} */ (geometry).getGeometries();\n for (i = 0, ii = geometries.length; i < ii; ++i) {\n area += getArea(geometries[i], opt_options);\n }\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return area;\n}\n/**\n * Returns the coordinate at the given distance and bearing from `c1`.\n *\n * @param {import(\"./coordinate.js\").Coordinate} c1 The origin point (`[lon, lat]` in degrees).\n * @param {number} distance The great-circle distance between the origin\n * point and the target point.\n * @param {number} bearing The bearing (in radians).\n * @param {number} [opt_radius] The sphere radius to use. Defaults to the Earth's\n * mean radius using the WGS84 ellipsoid.\n * @return {import(\"./coordinate.js\").Coordinate} The target point.\n */\nexport function offset(c1, distance, bearing, opt_radius) {\n var radius = opt_radius || DEFAULT_RADIUS;\n var lat1 = toRadians(c1[1]);\n var lon1 = toRadians(c1[0]);\n var dByR = distance / radius;\n var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n var lon = lon1 +\n Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n//# sourceMappingURL=sphere.js.map","/**\n * @module ol/proj\n */\n/**\n * The ol/proj module stores:\n * * a list of {@link module:ol/proj/Projection~Projection}\n * objects, one for each projection supported by the application\n * * a list of transform functions needed to convert coordinates in one projection\n * into another.\n *\n * The static functions are the methods used to maintain these.\n * Each transform function can handle not only simple coordinate pairs, but also\n * large arrays of coordinates such as vector geometries.\n *\n * When loaded, the library adds projection objects for EPSG:4326 (WGS84\n * geographic coordinates) and EPSG:3857 (Web or Spherical Mercator, as used\n * for example by Bing Maps or OpenStreetMap), together with the relevant\n * transform functions.\n *\n * Additional transforms may be added by using the http://proj4js.org/\n * library (version 2.2 or later). You can use the full build supplied by\n * Proj4js, or create a custom build to support those projections you need; see\n * the Proj4js website for how to do this. You also need the Proj4js definitions\n * for the required projections. These definitions can be obtained from\n * https://epsg.io/, and are a JS function, so can be loaded in a script\n * tag (as in the examples) or pasted into your application.\n *\n * After all required projection definitions are added to proj4's registry (by\n * using `proj4.defs()`), simply call `register(proj4)` from the `ol/proj/proj4`\n * package. Existing transforms are not changed by this function. See\n * examples/wms-image-custom-proj for an example of this.\n *\n * Additional projection definitions can be registered with `proj4.defs()` any\n * time. Just make sure to call `register(proj4)` again; for example, with user-supplied data where you don't\n * know in advance what projections are needed, you can initially load minimal\n * support and then load whichever are requested.\n *\n * Note that Proj4js does not support projection extents. If you want to add\n * one for creating default tile grids, you can add it after the Projection\n * object has been created with `setExtent`, for example,\n * `get('EPSG:1234').setExtent(extent)`.\n *\n * In addition to Proj4js support, any transform functions can be added with\n * {@link module:ol/proj.addCoordinateTransforms}. To use this, you must first create\n * a {@link module:ol/proj/Projection~Projection} object for the new projection and add it with\n * {@link module:ol/proj.addProjection}. You can then add the forward and inverse\n * functions with {@link module:ol/proj.addCoordinateTransforms}. See\n * examples/wms-custom-proj for an example of this.\n *\n * Note that if no transforms are needed and you only need to define the\n * projection, just add a {@link module:ol/proj/Projection~Projection} with\n * {@link module:ol/proj.addProjection}. See examples/wms-no-proj for an example of\n * this.\n */\nimport Projection from './proj/Projection.js';\nimport Units, { METERS_PER_UNIT } from './proj/Units.js';\nimport { PROJECTIONS as EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326, } from './proj/epsg3857.js';\nimport { PROJECTIONS as EPSG4326_PROJECTIONS } from './proj/epsg4326.js';\nimport { add as addProj, clear as clearProj, get as getProj, } from './proj/projections.js';\nimport { add as addTransformFunc, clear as clearTransformFuncs, get as getTransformFunc, } from './proj/transforms.js';\nimport { applyTransform, getWidth } from './extent.js';\nimport { clamp, modulo } from './math.js';\nimport { equals, getWorldsAway } from './coordinate.js';\nimport { getDistance } from './sphere.js';\n/**\n * A projection as {@link module:ol/proj/Projection~Projection}, SRS identifier\n * string or undefined.\n * @typedef {Projection|string|undefined} ProjectionLike\n * @api\n */\n/**\n * A transform function accepts an array of input coordinate values, an optional\n * output array, and an optional dimension (default should be 2). The function\n * transforms the input coordinate values, populates the output array, and\n * returns the output array.\n *\n * @typedef {function(Array, Array=, number=): Array} TransformFunction\n * @api\n */\nexport { METERS_PER_UNIT };\nexport { Projection };\nvar showCoordinateWarning = true;\n/**\n * @param {boolean} [opt_disable = true] Disable console info about `useGeographic()`\n */\nexport function disableCoordinateWarning(opt_disable) {\n var hide = opt_disable === undefined ? true : opt_disable;\n showCoordinateWarning = !hide;\n}\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension.\n * @return {Array} Output coordinate array (new array, same coordinate\n * values).\n */\nexport function cloneTransform(input, opt_output, opt_dimension) {\n var output;\n if (opt_output !== undefined) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n output = opt_output;\n }\n else {\n output = input.slice();\n }\n return output;\n}\n/**\n * @param {Array} input Input coordinate array.\n * @param {Array} [opt_output] Output array of coordinate values.\n * @param {number} [opt_dimension] Dimension.\n * @return {Array} Input coordinate array (same array as input).\n */\nexport function identityTransform(input, opt_output, opt_dimension) {\n if (opt_output !== undefined && input !== opt_output) {\n for (var i = 0, ii = input.length; i < ii; ++i) {\n opt_output[i] = input[i];\n }\n input = opt_output;\n }\n return input;\n}\n/**\n * Add a Projection object to the list of supported projections that can be\n * looked up by their code.\n *\n * @param {Projection} projection Projection instance.\n * @api\n */\nexport function addProjection(projection) {\n addProj(projection.getCode(), projection);\n addTransformFunc(projection, projection, cloneTransform);\n}\n/**\n * @param {Array} projections Projections.\n */\nexport function addProjections(projections) {\n projections.forEach(addProjection);\n}\n/**\n * Fetches a Projection object for the code specified.\n *\n * @param {ProjectionLike} projectionLike Either a code string which is\n * a combination of authority and identifier such as \"EPSG:4326\", or an\n * existing projection object, or undefined.\n * @return {Projection|null} Projection object, or null if not in list.\n * @api\n */\nexport function get(projectionLike) {\n return typeof projectionLike === 'string'\n ? getProj(/** @type {string} */ (projectionLike))\n : /** @type {Projection} */ (projectionLike) || null;\n}\n/**\n * Get the resolution of the point in degrees or distance units.\n * For projections with degrees as the unit this will simply return the\n * provided resolution. For other projections the point resolution is\n * by default estimated by transforming the `point` pixel to EPSG:4326,\n * measuring its width and height on the normal sphere,\n * and taking the average of the width and height.\n * A custom function can be provided for a specific projection, either\n * by setting the `getPointResolution` option in the\n * {@link module:ol/proj/Projection~Projection} constructor or by using\n * {@link module:ol/proj/Projection~Projection#setGetPointResolution} to change an existing\n * projection object.\n * @param {ProjectionLike} projection The projection.\n * @param {number} resolution Nominal resolution in projection units.\n * @param {import(\"./coordinate.js\").Coordinate} point Point to find adjusted resolution at.\n * @param {import(\"./proj/Units.js\").default} [opt_units] Units to get the point resolution in.\n * Default is the projection's units.\n * @return {number} Point resolution.\n * @api\n */\nexport function getPointResolution(projection, resolution, point, opt_units) {\n projection = get(projection);\n var pointResolution;\n var getter = projection.getPointResolutionFunc();\n if (getter) {\n pointResolution = getter(resolution, point);\n if (opt_units && opt_units !== projection.getUnits()) {\n var metersPerUnit = projection.getMetersPerUnit();\n if (metersPerUnit) {\n pointResolution =\n (pointResolution * metersPerUnit) / METERS_PER_UNIT[opt_units];\n }\n }\n }\n else {\n var units = projection.getUnits();\n if ((units == Units.DEGREES && !opt_units) || opt_units == Units.DEGREES) {\n pointResolution = resolution;\n }\n else {\n // Estimate point resolution by transforming the center pixel to EPSG:4326,\n // measuring its width and height on the normal sphere, and taking the\n // average of the width and height.\n var toEPSG4326_1 = getTransformFromProjections(projection, get('EPSG:4326'));\n if (toEPSG4326_1 === identityTransform && units !== Units.DEGREES) {\n // no transform is available\n pointResolution = resolution * projection.getMetersPerUnit();\n }\n else {\n var vertices = [\n point[0] - resolution / 2,\n point[1],\n point[0] + resolution / 2,\n point[1],\n point[0],\n point[1] - resolution / 2,\n point[0],\n point[1] + resolution / 2,\n ];\n vertices = toEPSG4326_1(vertices, vertices, 2);\n var width = getDistance(vertices.slice(0, 2), vertices.slice(2, 4));\n var height = getDistance(vertices.slice(4, 6), vertices.slice(6, 8));\n pointResolution = (width + height) / 2;\n }\n var metersPerUnit = opt_units\n ? METERS_PER_UNIT[opt_units]\n : projection.getMetersPerUnit();\n if (metersPerUnit !== undefined) {\n pointResolution /= metersPerUnit;\n }\n }\n }\n return pointResolution;\n}\n/**\n * Registers transformation functions that don't alter coordinates. Those allow\n * to transform between projections with equal meaning.\n *\n * @param {Array} projections Projections.\n * @api\n */\nexport function addEquivalentProjections(projections) {\n addProjections(projections);\n projections.forEach(function (source) {\n projections.forEach(function (destination) {\n if (source !== destination) {\n addTransformFunc(source, destination, cloneTransform);\n }\n });\n });\n}\n/**\n * Registers transformation functions to convert coordinates in any projection\n * in projection1 to any projection in projection2.\n *\n * @param {Array} projections1 Projections with equal\n * meaning.\n * @param {Array} projections2 Projections with equal\n * meaning.\n * @param {TransformFunction} forwardTransform Transformation from any\n * projection in projection1 to any projection in projection2.\n * @param {TransformFunction} inverseTransform Transform from any projection\n * in projection2 to any projection in projection1..\n */\nexport function addEquivalentTransforms(projections1, projections2, forwardTransform, inverseTransform) {\n projections1.forEach(function (projection1) {\n projections2.forEach(function (projection2) {\n addTransformFunc(projection1, projection2, forwardTransform);\n addTransformFunc(projection2, projection1, inverseTransform);\n });\n });\n}\n/**\n * Clear all cached projections and transforms.\n */\nexport function clearAllProjections() {\n clearProj();\n clearTransformFuncs();\n}\n/**\n * @param {Projection|string|undefined} projection Projection.\n * @param {string} defaultCode Default code.\n * @return {Projection} Projection.\n */\nexport function createProjection(projection, defaultCode) {\n if (!projection) {\n return get(defaultCode);\n }\n else if (typeof projection === 'string') {\n return get(projection);\n }\n else {\n return /** @type {Projection} */ (projection);\n }\n}\n/**\n * Creates a {@link module:ol/proj~TransformFunction} from a simple 2D coordinate transform\n * function.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} coordTransform Coordinate\n * transform.\n * @return {TransformFunction} Transform function.\n */\nexport function createTransformFromCoordinateTransform(coordTransform) {\n return (\n /**\n * @param {Array} input Input.\n * @param {Array} [opt_output] Output.\n * @param {number} [opt_dimension] Dimension.\n * @return {Array} Output.\n */\n function (input, opt_output, opt_dimension) {\n var length = input.length;\n var dimension = opt_dimension !== undefined ? opt_dimension : 2;\n var output = opt_output !== undefined ? opt_output : new Array(length);\n for (var i = 0; i < length; i += dimension) {\n var point = coordTransform([input[i], input[i + 1]]);\n output[i] = point[0];\n output[i + 1] = point[1];\n for (var j = dimension - 1; j >= 2; --j) {\n output[i + j] = input[i + j];\n }\n }\n return output;\n });\n}\n/**\n * Registers coordinate transform functions to convert coordinates between the\n * source projection and the destination projection.\n * The forward and inverse functions convert coordinate pairs; this function\n * converts these into the functions used internally which also handle\n * extents and coordinate arrays.\n *\n * @param {ProjectionLike} source Source projection.\n * @param {ProjectionLike} destination Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} forward The forward transform\n * function (that is, from the source projection to the destination\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} inverse The inverse transform\n * function (that is, from the destination projection to the source\n * projection) that takes a {@link module:ol/coordinate~Coordinate} as argument and returns\n * the transformed {@link module:ol/coordinate~Coordinate}.\n * @api\n */\nexport function addCoordinateTransforms(source, destination, forward, inverse) {\n var sourceProj = get(source);\n var destProj = get(destination);\n addTransformFunc(sourceProj, destProj, createTransformFromCoordinateTransform(forward));\n addTransformFunc(destProj, sourceProj, createTransformFromCoordinateTransform(inverse));\n}\n/**\n * Transforms a coordinate from longitude/latitude to a different projection.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate as longitude and latitude, i.e.\n * an array with longitude as 1st and latitude as 2nd element.\n * @param {ProjectionLike} [opt_projection] Target projection. The\n * default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate projected to the target projection.\n * @api\n */\nexport function fromLonLat(coordinate, opt_projection) {\n disableCoordinateWarning();\n return transform(coordinate, 'EPSG:4326', opt_projection !== undefined ? opt_projection : 'EPSG:3857');\n}\n/**\n * Transforms a coordinate to longitude/latitude.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Projected coordinate.\n * @param {ProjectionLike} [opt_projection] Projection of the coordinate.\n * The default is Web Mercator, i.e. 'EPSG:3857'.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate as longitude and latitude, i.e. an array\n * with longitude as 1st and latitude as 2nd element.\n * @api\n */\nexport function toLonLat(coordinate, opt_projection) {\n var lonLat = transform(coordinate, opt_projection !== undefined ? opt_projection : 'EPSG:3857', 'EPSG:4326');\n var lon = lonLat[0];\n if (lon < -180 || lon > 180) {\n lonLat[0] = modulo(lon + 180, 360) - 180;\n }\n return lonLat;\n}\n/**\n * Checks if two projections are the same, that is every coordinate in one\n * projection does represent the same geographic point as the same coordinate in\n * the other projection.\n *\n * @param {Projection} projection1 Projection 1.\n * @param {Projection} projection2 Projection 2.\n * @return {boolean} Equivalent.\n * @api\n */\nexport function equivalent(projection1, projection2) {\n if (projection1 === projection2) {\n return true;\n }\n var equalUnits = projection1.getUnits() === projection2.getUnits();\n if (projection1.getCode() === projection2.getCode()) {\n return equalUnits;\n }\n else {\n var transformFunc = getTransformFromProjections(projection1, projection2);\n return transformFunc === cloneTransform && equalUnits;\n }\n}\n/**\n * Searches in the list of transform functions for the function for converting\n * coordinates from the source projection to the destination projection.\n *\n * @param {Projection} sourceProjection Source Projection object.\n * @param {Projection} destinationProjection Destination Projection\n * object.\n * @return {TransformFunction} Transform function.\n */\nexport function getTransformFromProjections(sourceProjection, destinationProjection) {\n var sourceCode = sourceProjection.getCode();\n var destinationCode = destinationProjection.getCode();\n var transformFunc = getTransformFunc(sourceCode, destinationCode);\n if (!transformFunc) {\n transformFunc = identityTransform;\n }\n return transformFunc;\n}\n/**\n * Given the projection-like objects, searches for a transformation\n * function to convert a coordinates array from the source projection to the\n * destination projection.\n *\n * @param {ProjectionLike} source Source.\n * @param {ProjectionLike} destination Destination.\n * @return {TransformFunction} Transform function.\n * @api\n */\nexport function getTransform(source, destination) {\n var sourceProjection = get(source);\n var destinationProjection = get(destination);\n return getTransformFromProjections(sourceProjection, destinationProjection);\n}\n/**\n * Transforms a coordinate from source projection to destination projection.\n * This returns a new coordinate (and does not modify the original).\n *\n * See {@link module:ol/proj.transformExtent} for extent transformation.\n * See the transform method of {@link module:ol/geom/Geometry~Geometry} and its\n * subclasses for geometry transforms.\n *\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\nexport function transform(coordinate, source, destination) {\n var transformFunc = getTransform(source, destination);\n return transformFunc(coordinate, undefined, coordinate.length);\n}\n/**\n * Transforms an extent from source projection to destination projection. This\n * returns a new extent (and does not modify the original).\n *\n * @param {import(\"./extent.js\").Extent} extent The extent to transform.\n * @param {ProjectionLike} source Source projection-like.\n * @param {ProjectionLike} destination Destination projection-like.\n * @param {number} [opt_stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {import(\"./extent.js\").Extent} The transformed extent.\n * @api\n */\nexport function transformExtent(extent, source, destination, opt_stops) {\n var transformFunc = getTransform(source, destination);\n return applyTransform(extent, transformFunc, undefined, opt_stops);\n}\n/**\n * Transforms the given point to the destination projection.\n *\n * @param {import(\"./coordinate.js\").Coordinate} point Point.\n * @param {Projection} sourceProjection Source projection.\n * @param {Projection} destinationProjection Destination projection.\n * @return {import(\"./coordinate.js\").Coordinate} Point.\n */\nexport function transformWithProjections(point, sourceProjection, destinationProjection) {\n var transformFunc = getTransformFromProjections(sourceProjection, destinationProjection);\n return transformFunc(point);\n}\n/**\n * @type {Projection|null}\n */\nvar userProjection = null;\n/**\n * Set the projection for coordinates supplied from and returned by API methods.\n * This includes all API methods except for those interacting with tile grids.\n * @param {ProjectionLike} projection The user projection.\n * @api\n */\nexport function setUserProjection(projection) {\n userProjection = get(projection);\n}\n/**\n * Clear the user projection if set.\n * @api\n */\nexport function clearUserProjection() {\n userProjection = null;\n}\n/**\n * Get the projection for coordinates supplied from and returned by API methods.\n * Note that this method is not yet a part of the stable API. Support for user\n * projections is not yet complete and should be considered experimental.\n * @return {Projection|null} The user projection (or null if not set).\n * @api\n */\nexport function getUserProjection() {\n return userProjection;\n}\n/**\n * Use geographic coordinates (WGS-84 datum) in API methods. This includes all API\n * methods except for those interacting with tile grids.\n * @api\n */\nexport function useGeographic() {\n setUserProjection('EPSG:4326');\n}\n/**\n * Return a coordinate transformed into the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} sourceProjection The input coordinate projection.\n * @return {Array} The input coordinate in the user projection.\n */\nexport function toUserCoordinate(coordinate, sourceProjection) {\n if (!userProjection) {\n return coordinate;\n }\n return transform(coordinate, sourceProjection, userProjection);\n}\n/**\n * Return a coordinate transformed from the user projection. If no user projection\n * is set, the original coordinate is returned.\n * @param {Array} coordinate Input coordinate.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {Array} The input coordinate transformed.\n */\nexport function fromUserCoordinate(coordinate, destProjection) {\n if (!userProjection) {\n if (showCoordinateWarning &&\n !equals(coordinate, [0, 0]) &&\n coordinate[0] >= -180 &&\n coordinate[0] <= 180 &&\n coordinate[1] >= -90 &&\n coordinate[1] <= 90) {\n showCoordinateWarning = false;\n // eslint-disable-next-line no-console\n console.warn('Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.');\n }\n return coordinate;\n }\n return transform(coordinate, userProjection, destProjection);\n}\n/**\n * Return an extent transformed into the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} sourceProjection The input extent projection.\n * @return {import(\"./extent.js\").Extent} The input extent in the user projection.\n */\nexport function toUserExtent(extent, sourceProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, sourceProjection, userProjection);\n}\n/**\n * Return an extent transformed from the user projection. If no user projection\n * is set, the original extent is returned.\n * @param {import(\"./extent.js\").Extent} extent Input extent.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {import(\"./extent.js\").Extent} The input extent transformed.\n */\nexport function fromUserExtent(extent, destProjection) {\n if (!userProjection) {\n return extent;\n }\n return transformExtent(extent, userProjection, destProjection);\n}\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in input projection units per pixel.\n * @param {ProjectionLike} sourceProjection The input projection.\n * @return {number} Resolution in user projection units per pixel.\n */\nexport function toUserResolution(resolution, sourceProjection) {\n if (!userProjection) {\n return resolution;\n }\n var sourceUnits = get(sourceProjection).getUnits();\n var userUnits = userProjection.getUnits();\n return sourceUnits && userUnits\n ? (resolution * METERS_PER_UNIT[sourceUnits]) / METERS_PER_UNIT[userUnits]\n : resolution;\n}\n/**\n * Return the resolution in user projection units per pixel. If no user projection\n * is set, or source or user projection are missing units, the original resolution\n * is returned.\n * @param {number} resolution Resolution in user projection units per pixel.\n * @param {ProjectionLike} destProjection The destination projection.\n * @return {number} Resolution in destination projection units per pixel.\n */\nexport function fromUserResolution(resolution, destProjection) {\n if (!userProjection) {\n return resolution;\n }\n var sourceUnits = get(destProjection).getUnits();\n var userUnits = userProjection.getUnits();\n return sourceUnits && userUnits\n ? (resolution * METERS_PER_UNIT[userUnits]) / METERS_PER_UNIT[sourceUnits]\n : resolution;\n}\n/**\n * Creates a safe coordinate transform function from a coordinate transform function.\n * \"Safe\" means that it can handle wrapping of x-coordinates for global projections,\n * and that coordinates exceeding the source projection validity extent's range will be\n * clamped to the validity range.\n * @param {Projection} sourceProj Source projection.\n * @param {Projection} destProj Destination projection.\n * @param {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} transform Transform function (source to destiation).\n * @return {function(import(\"./coordinate.js\").Coordinate): import(\"./coordinate.js\").Coordinate} Safe transform function (source to destiation).\n */\nexport function createSafeCoordinateTransform(sourceProj, destProj, transform) {\n return function (coord) {\n var sourceX = coord[0];\n var sourceY = coord[1];\n var transformed, worldsAway;\n if (sourceProj.canWrapX()) {\n var sourceExtent = sourceProj.getExtent();\n var sourceExtentWidth = getWidth(sourceExtent);\n worldsAway = getWorldsAway(coord, sourceProj, sourceExtentWidth);\n if (worldsAway) {\n // Move x to the real world\n sourceX = sourceX - worldsAway * sourceExtentWidth;\n }\n sourceX = clamp(sourceX, sourceExtent[0], sourceExtent[2]);\n sourceY = clamp(sourceY, sourceExtent[1], sourceExtent[3]);\n transformed = transform([sourceX, sourceY]);\n }\n else {\n transformed = transform(coord);\n }\n if (worldsAway && destProj.canWrapX()) {\n // Move transformed coordinate back to the offset world\n transformed[0] += worldsAway * getWidth(destProj.getExtent());\n }\n return transformed;\n };\n}\n/**\n * Add transforms to and from EPSG:4326 and EPSG:3857. This function is called\n * by when this module is executed and should only need to be called again after\n * `clearAllProjections()` is called (e.g. in tests).\n */\nexport function addCommon() {\n // Add transformations that don't alter coordinates to convert within set of\n // projections with equal meaning.\n addEquivalentProjections(EPSG3857_PROJECTIONS);\n addEquivalentProjections(EPSG4326_PROJECTIONS);\n // Add transformations to convert EPSG:4326 like coordinates to EPSG:3857 like\n // coordinates and back.\n addEquivalentTransforms(EPSG4326_PROJECTIONS, EPSG3857_PROJECTIONS, fromEPSG4326, toEPSG4326);\n}\naddCommon();\n//# sourceMappingURL=proj.js.map","/**\n * @module ol/geom/flat/transform\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(flatCoordinates, offset, end, stride, transform, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var x = flatCoordinates[j];\n var y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(flatCoordinates, offset, end, stride, angle, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(flatCoordinates, offset, end, stride, sx, sy, anchor, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var anchorX = anchor[0];\n var anchorY = anchor[1];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n var deltaX = flatCoordinates[j] - anchorX;\n var deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(flatCoordinates, offset, end, stride, deltaX, deltaY, opt_dest) {\n var dest = opt_dest ? opt_dest : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (var k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (opt_dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n//# sourceMappingURL=transform.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport Units from '../proj/Units.js';\nimport { abstract } from '../util.js';\nimport { compose as composeTransform, create as createTransform, } from '../transform.js';\nimport { createEmpty, createOrUpdateEmpty, getHeight, returnOrUpdate, } from '../extent.js';\nimport { get as getProjection, getTransform } from '../proj.js';\nimport { memoizeOne } from '../functions.js';\nimport { transform2D } from './flat/transform.js';\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nvar tmpTransform = createTransform();\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nvar Geometry = /** @class */ (function (_super) {\n __extends(Geometry, _super);\n function Geometry() {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n _this.extent_ = createEmpty();\n /**\n * @private\n * @type {number}\n */\n _this.extentRevision_ = -1;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n /**\n * @protected\n * @type {number}\n */\n _this.simplifiedGeometryRevision = 0;\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n _this.simplifyTransformedInternal = memoizeOne(function (revision, squaredTolerance, opt_transform) {\n if (!opt_transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n var clone = this.clone();\n clone.applyTransform(opt_transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n return _this;\n }\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [opt_transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.simplifyTransformed = function (squaredTolerance, opt_transform) {\n return this.simplifyTransformedInternal(this.getRevision(), squaredTolerance, opt_transform);\n };\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n Geometry.prototype.clone = function () {\n return abstract();\n };\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Geometry.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n return abstract();\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Geometry.prototype.containsXY = function (x, y) {\n var coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n };\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate} [opt_closestPoint] Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n Geometry.prototype.getClosestPoint = function (point, opt_closestPoint) {\n var closestPoint = opt_closestPoint ? opt_closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n };\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n Geometry.prototype.intersectsCoordinate = function (coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n };\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Geometry.prototype.computeExtent = function (extent) {\n return abstract();\n };\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent} [opt_extent] Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n Geometry.prototype.getExtent = function (opt_extent) {\n if (this.extentRevision_ != this.getRevision()) {\n var extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, opt_extent);\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n Geometry.prototype.rotate = function (angle, anchor) {\n abstract();\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [opt_sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [opt_anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n Geometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n abstract();\n };\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n Geometry.prototype.simplify = function (tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n Geometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n return abstract();\n };\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n */\n Geometry.prototype.getType = function () {\n return abstract();\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n Geometry.prototype.applyTransform = function (transformFn) {\n abstract();\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n Geometry.prototype.intersectsExtent = function (extent) {\n return abstract();\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n Geometry.prototype.translate = function (deltaX, deltaY) {\n abstract();\n };\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n Geometry.prototype.transform = function (source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n var sourceProj = getProjection(source);\n var transformFn = sourceProj.getUnits() == Units.TILE_PIXELS\n ? function (inCoordinates, outCoordinates, stride) {\n var pixelExtent = sourceProj.getExtent();\n var projectedExtent = sourceProj.getWorldExtent();\n var scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(tmpTransform, projectedExtent[0], projectedExtent[3], scale, -scale, 0, 0, 0);\n transform2D(inCoordinates, 0, inCoordinates.length, stride, tmpTransform, outCoordinates);\n return getTransform(sourceProj, destination)(inCoordinates, outCoordinates, stride);\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n };\n return Geometry;\n}(BaseObject));\nexport default Geometry;\n//# sourceMappingURL=Geometry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport GeometryLayout from './GeometryLayout.js';\nimport { abstract } from '../util.js';\nimport { createOrUpdateFromFlatCoordinates, getCenter } from '../extent.js';\nimport { rotate, scale, transform2D, translate } from './flat/transform.js';\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nvar SimpleGeometry = /** @class */ (function (_super) {\n __extends(SimpleGeometry, _super);\n function SimpleGeometry() {\n var _this = _super.call(this) || this;\n /**\n * @protected\n * @type {import(\"./GeometryLayout.js\").default}\n */\n _this.layout = GeometryLayout.XY;\n /**\n * @protected\n * @type {number}\n */\n _this.stride = 2;\n /**\n * @protected\n * @type {Array}\n */\n _this.flatCoordinates = null;\n return _this;\n }\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n SimpleGeometry.prototype.computeExtent = function (extent) {\n return createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * @abstract\n * @return {Array<*> | null} Coordinates.\n */\n SimpleGeometry.prototype.getCoordinates = function () {\n return abstract();\n };\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n SimpleGeometry.prototype.getFirstCoordinate = function () {\n return this.flatCoordinates.slice(0, this.stride);\n };\n /**\n * @return {Array} Flat coordinates.\n */\n SimpleGeometry.prototype.getFlatCoordinates = function () {\n return this.flatCoordinates;\n };\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n SimpleGeometry.prototype.getLastCoordinate = function () {\n return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride);\n };\n /**\n * Return the {@link module:ol/geom/GeometryLayout layout} of the geometry.\n * @return {import(\"./GeometryLayout.js\").default} Layout.\n * @api\n */\n SimpleGeometry.prototype.getLayout = function () {\n return this.layout;\n };\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n SimpleGeometry.prototype.getSimplifiedGeometry = function (squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)) {\n return this;\n }\n var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance);\n var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n else {\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n SimpleGeometry.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n return this;\n };\n /**\n * @return {number} Stride.\n */\n SimpleGeometry.prototype.getStride = function () {\n return this.stride;\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n SimpleGeometry.prototype.setFlatCoordinates = function (layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n };\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n SimpleGeometry.prototype.setCoordinates = function (coordinates, opt_layout) {\n abstract();\n };\n /**\n * @param {import(\"./GeometryLayout.js\").default|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n SimpleGeometry.prototype.setLayout = function (layout, coordinates, nesting) {\n /** @type {number} */\n var stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n }\n else {\n for (var i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = GeometryLayout.XY;\n this.stride = 2;\n return;\n }\n else {\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n };\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n SimpleGeometry.prototype.applyTransform = function (transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n };\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in counter-clockwise radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n SimpleGeometry.prototype.rotate = function (angle, anchor) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n rotate(flatCoordinates, 0, flatCoordinates.length, stride, angle, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [opt_sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [opt_anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n SimpleGeometry.prototype.scale = function (sx, opt_sy, opt_anchor) {\n var sy = opt_sy;\n if (sy === undefined) {\n sy = sx;\n }\n var anchor = opt_anchor;\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n scale(flatCoordinates, 0, flatCoordinates.length, stride, sx, sy, anchor, flatCoordinates);\n this.changed();\n }\n };\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n SimpleGeometry.prototype.translate = function (deltaX, deltaY) {\n var flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n var stride = this.getStride();\n translate(flatCoordinates, 0, flatCoordinates.length, stride, deltaX, deltaY, flatCoordinates);\n this.changed();\n }\n };\n return SimpleGeometry;\n}(Geometry));\n/**\n * @param {number} stride Stride.\n * @return {import(\"./GeometryLayout.js\").default} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n var layout;\n if (stride == 2) {\n layout = GeometryLayout.XY;\n }\n else if (stride == 3) {\n layout = GeometryLayout.XYZ;\n }\n else if (stride == 4) {\n layout = GeometryLayout.XYZM;\n }\n return /** @type {import(\"./GeometryLayout.js\").default} */ (layout);\n}\n/**\n * @param {import(\"./GeometryLayout.js\").default} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n var stride;\n if (layout == GeometryLayout.XY) {\n stride = 2;\n }\n else if (layout == GeometryLayout.XYZ || layout == GeometryLayout.XYM) {\n stride = 3;\n }\n else if (layout == GeometryLayout.XYZM) {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, opt_dest) {\n var flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n else {\n var stride = simpleGeometry.getStride();\n return transform2D(flatCoordinates, 0, flatCoordinates.length, stride, transform, opt_dest);\n }\n}\nexport default SimpleGeometry;\n//# sourceMappingURL=SimpleGeometry.js.map","/**\n * @module ol/geom/flat/closest\n */\nimport { lerp, squaredDistance as squaredDx } from '../../math.js';\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) {\n var x1 = flatCoordinates[offset1];\n var y1 = flatCoordinates[offset1 + 1];\n var dx = flatCoordinates[offset2] - x1;\n var dy = flatCoordinates[offset2 + 1] - y1;\n var offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n }\n else {\n var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n }\n else if (t > 0) {\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t);\n }\n closestPoint.length = stride;\n return;\n }\n else {\n offset = offset1;\n }\n }\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n var squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(flatCoordinates, offset, endss, stride, max) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [opt_tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n if (offset == end) {\n return minSquaredDistance;\n }\n var i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]);\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n }\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n var index = offset + stride;\n while (index < end) {\n assignClosest(flatCoordinates, index - stride, index, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n }\n else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0, 1);\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint);\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [opt_tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n minSquaredDistance = assignClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = end;\n }\n return minSquaredDistance;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [opt_tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) {\n var tmpPoint = opt_tmpPoint ? opt_tmpPoint : [NaN, NaN];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint);\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n//# sourceMappingURL=closest.js.map","/**\n * @module ol/geom/flat/deflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (var i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(flatCoordinates, offset, coordinates, stride) {\n for (var i = 0, ii = coordinates.length; i < ii; ++i) {\n var coordinate = coordinates[i];\n for (var j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array} [opt_ends] Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(flatCoordinates, offset, coordinatess, stride, opt_ends) {\n var ends = opt_ends ? opt_ends : [];\n var i = 0;\n for (var j = 0, jj = coordinatess.length; j < jj; ++j) {\n var end = deflateCoordinates(flatCoordinates, offset, coordinatess[j], stride);\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>} [opt_endss] Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(flatCoordinates, offset, coordinatesss, stride, opt_endss) {\n var endss = opt_endss ? opt_endss : [];\n var i = 0;\n for (var j = 0, jj = coordinatesss.length; j < jj; ++j) {\n var ends = deflateCoordinatesArray(flatCoordinates, offset, coordinatesss[j], stride, endss[i]);\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n//# sourceMappingURL=deflate.js.map","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\nimport { squaredDistance, squaredSegmentDistance } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array} [opt_simplifiedFlatCoordinates] Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) {\n var simplifiedFlatCoordinates = opt_simplifiedFlatCoordinates !== undefined\n ? opt_simplifiedFlatCoordinates\n : [];\n if (!highQuality) {\n end = radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return simplifiedFlatCoordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n var n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n var markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n var stack = [offset, end - stride];\n var index = 0;\n while (stack.length > 0) {\n var last = stack.pop();\n var first = stack.pop();\n var maxSquaredDistance = 0;\n var x1 = flatCoordinates[first];\n var y1 = flatCoordinates[first + 1];\n var x2 = flatCoordinates[last];\n var y2 = flatCoordinates[last + 1];\n for (var i = first + stride; i < last; i += stride) {\n var x = flatCoordinates[i];\n var y = flatCoordinates[i + 1];\n var squaredDistance_1 = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance_1 > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance_1;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (var i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n var x2 = x1;\n var y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n var x1 = snap(flatCoordinates[offset], tolerance);\n var y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n var x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n var x3 = snap(flatCoordinates[offset], tolerance);\n var y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n var dx1 = x2 - x1;\n var dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n var dx2 = x3 - x1;\n var dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (dx1 * dy2 == dy1 * dx2 &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n simplifiedOffset = quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset);\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n var simplifiedEnds = [];\n simplifiedOffset = quantizeArray(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds);\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n//# sourceMappingURL=simplify.js.map","/**\n * @module ol/geom/flat/inflate\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array} [opt_coordinates] Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(flatCoordinates, offset, end, stride, opt_coordinates) {\n var coordinates = opt_coordinates !== undefined ? opt_coordinates : [];\n var i = 0;\n for (var j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>} [opt_coordinatess] Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(flatCoordinates, offset, ends, stride, opt_coordinatess) {\n var coordinatess = opt_coordinatess !== undefined ? opt_coordinatess : [];\n var i = 0;\n for (var j = 0, jj = ends.length; j < jj; ++j) {\n var end = ends[j];\n coordinatess[i++] = inflateCoordinates(flatCoordinates, offset, end, stride, coordinatess[i]);\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>} [opt_coordinatesss]\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, opt_coordinatesss) {\n var coordinatesss = opt_coordinatesss !== undefined ? opt_coordinatesss : [];\n var i = 0;\n for (var j = 0, jj = endss.length; j < jj; ++j) {\n var ends = endss[j];\n coordinatesss[i++] = inflateCoordinatesArray(flatCoordinates, offset, ends, stride, coordinatesss[i]);\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n//# sourceMappingURL=inflate.js.map","/**\n * @module ol/geom/flat/area\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n var twiceArea = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n var area = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n var area = 0;\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n//# sourceMappingURL=area.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LinearRing\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { linearRing as linearRingArea } from './flat/area.js';\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nvar LinearRing = /** @class */ (function (_super) {\n __extends(LinearRing, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n function LinearRing(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n LinearRing.prototype.clone = function () {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LinearRing.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n LinearRing.prototype.getArea = function () {\n return linearRingArea(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n LinearRing.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n LinearRing.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LinearRing(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LinearRing.prototype.getType = function () {\n return GeometryType.LINEAR_RING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LinearRing.prototype.intersectsExtent = function (extent) {\n return false;\n };\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n LinearRing.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LinearRing;\n}(SimpleGeometry));\nexport default LinearRing;\n//# sourceMappingURL=LinearRing.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Point\n */\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { containsXY, createOrUpdateFromCoordinate } from '../extent.js';\nimport { deflateCoordinate } from './flat/deflate.js';\nimport { squaredDistance as squaredDx } from '../math.js';\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nvar Point = /** @class */ (function (_super) {\n __extends(Point, _super);\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n function Point(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n _this.setCoordinates(coordinates, opt_layout);\n return _this;\n }\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n Point.prototype.clone = function () {\n var point = new Point(this.flatCoordinates.slice(), this.layout);\n point.applyProperties(this);\n return point;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Point.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n var flatCoordinates = this.flatCoordinates;\n var squaredDistance = squaredDx(x, y, flatCoordinates[0], flatCoordinates[1]);\n if (squaredDistance < minSquaredDistance) {\n var stride = this.stride;\n for (var i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n else {\n return minSquaredDistance;\n }\n };\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n Point.prototype.getCoordinates = function () {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n };\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n Point.prototype.computeExtent = function (extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Point.prototype.getType = function () {\n return GeometryType.POINT;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Point.prototype.intersectsExtent = function (extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n };\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n Point.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return Point;\n}(SimpleGeometry));\nexport default Point;\n//# sourceMappingURL=Point.js.map","/**\n * @module ol/geom/flat/contains\n */\nimport { forEachCorner } from '../../extent.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(flatCoordinates, offset, end, stride, extent) {\n var outside = forEachCorner(extent, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(flatCoordinates, offset, end, stride, coordinate[0], coordinate[1]);\n });\n return !outside;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(flatCoordinates, offset, end, stride, x, y) {\n // https://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n var wn = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n wn++;\n }\n }\n else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) {\n return false;\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(flatCoordinates, offset, endss, stride, x, y) {\n if (endss.length === 0) {\n return false;\n }\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=contains.js.map","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport { linearRingsContainsXY } from './contains.js';\nimport { numberSafeCompareFunction } from '../../array.js';\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array} [opt_dest] Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) {\n var i, ii, x, x1, x2, y1, y2;\n var y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n var intersections = [];\n // Calculate intersections with the horizontal line\n for (var r = 0, rr = ends.length; r < rr; ++r) {\n var end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n var pointX = NaN;\n var maxSegmentLength = -Infinity;\n intersections.sort(numberSafeCompareFunction);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n var segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (opt_dest) {\n opt_dest.push(pointX, y, maxSegmentLength);\n return opt_dest;\n }\n else {\n return [pointX, y, maxSegmentLength];\n }\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(flatCoordinates, offset, endss, stride, flatCenters) {\n var interiorPoints = [];\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n interiorPoints = getInteriorPointOfArray(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints);\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n//# sourceMappingURL=interiorpoint.js.map","/**\n * @module ol/geom/flat/segments\n */\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n var ret;\n offset += stride;\n for (; offset < end; offset += stride) {\n ret = callback(flatCoordinates.slice(offset - stride, offset), flatCoordinates.slice(offset, offset + stride));\n if (ret) {\n return ret;\n }\n }\n return false;\n}\n//# sourceMappingURL=segments.js.map","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport { containsExtent, createEmpty, extendFlatCoordinates, intersects, intersectsSegment, } from '../../extent.js';\nimport { forEach as forEachSegment } from './segments.js';\nimport { linearRingContainsExtent, linearRingContainsXY } from './contains.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(flatCoordinates, offset, end, stride, extent) {\n var coordinatesExtent = extendFlatCoordinates(createEmpty(), flatCoordinates, offset, end, stride);\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(flatCoordinates, offset, end, stride, \n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n });\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(flatCoordinates, offset, ends, stride, extent) {\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n if (intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(flatCoordinates, offset, end, stride, extent) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[0], extent[3])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[1])) {\n return true;\n }\n if (linearRingContainsXY(flatCoordinates, offset, end, stride, extent[2], extent[3])) {\n return true;\n }\n return false;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (var i = 1, ii = ends.length; i < ii; ++i) {\n if (linearRingContainsExtent(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n if (!intersectsLineString(flatCoordinates, ends[i - 1], ends[i], stride, extent)) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(flatCoordinates, offset, endss, stride, extent) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n//# sourceMappingURL=intersectsextent.js.map","/**\n * @module ol/geom/flat/reverse\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (var i = 0; i < stride; ++i) {\n var tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n//# sourceMappingURL=reverse.js.map","/**\n * @module ol/geom/flat/orient\n */\nimport { coordinates as reverseCoordinates } from './reverse.js';\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // https://stackoverflow.com/q/1165647/clockwise-method#1165943\n // https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogrlinearring.cpp\n var edge = 0;\n var x1 = flatCoordinates[end - stride];\n var y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n var x2 = flatCoordinates[offset];\n var y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge === 0 ? undefined : edge > 0;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n }\n else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n var ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, opt_right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(flatCoordinates, offset, ends, stride, opt_right) {\n var right = opt_right !== undefined ? opt_right : false;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var isClockwise = linearRingIsClockwise(flatCoordinates, offset, end, stride);\n var reverse = i === 0\n ? (right && isClockwise) || (!right && !isClockwise)\n : (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `opt_right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [opt_right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(flatCoordinates, offset, endss, stride, opt_right) {\n for (var i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(flatCoordinates, offset, endss[i], stride, opt_right);\n }\n return offset;\n}\n/**\n * Return a two-dimensional endss\n * @param {Array} flatCoordinates Flat coordinates\n * @param {Array} ends Linear ring end indexes\n * @return {Array>} Two dimensional endss array that can\n * be used to contruct a MultiPolygon\n */\nexport function inflateEnds(flatCoordinates, ends) {\n var endss = [];\n var offset = 0;\n var prevEndIndex = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n // classifies an array of rings into polygons with outer rings and holes\n if (!linearRingIsClockwise(flatCoordinates, offset, end, 2)) {\n endss.push(ends.slice(prevEndIndex, i + 1));\n }\n else {\n if (endss.length === 0) {\n continue;\n }\n endss[endss.length - 1].push(ends[prevEndIndex]);\n }\n prevEndIndex = i + 1;\n offset = end;\n }\n return endss;\n}\n//# sourceMappingURL=orient.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/Polygon\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { arrayMaxSquaredDelta, assignClosestArrayPoint } from './flat/closest.js';\nimport { closestSquaredDistanceXY, getCenter } from '../extent.js';\nimport { deflateCoordinatesArray } from './flat/deflate.js';\nimport { extend } from '../array.js';\nimport { getInteriorPointOfArray } from './flat/interiorpoint.js';\nimport { inflateCoordinatesArray } from './flat/inflate.js';\nimport { intersectsLinearRingArray } from './flat/intersectsextent.js';\nimport { linearRingsAreOriented, orientLinearRings } from './flat/orient.js';\nimport { linearRings as linearRingsArea } from './flat/area.js';\nimport { linearRingsContainsXY } from './flat/contains.js';\nimport { modulo } from '../math.js';\nimport { quantizeArray } from './flat/simplify.js';\nimport { offset as sphereOffset } from '../sphere.js';\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nvar Polygon = /** @class */ (function (_super) {\n __extends(Polygon, _super);\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `opt_layout` and `opt_ends` are also accepted.)\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @param {Array} [opt_ends] Ends (for internal use with flat coordinates).\n */\n function Polygon(coordinates, opt_layout, opt_ends) {\n var _this = _super.call(this) || this;\n /**\n * @type {Array}\n * @private\n */\n _this.ends_ = [];\n /**\n * @private\n * @type {number}\n */\n _this.flatInteriorPointRevision_ = -1;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatInteriorPoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.orientedRevision_ = -1;\n /**\n * @private\n * @type {Array}\n */\n _this.orientedFlatCoordinates_ = null;\n if (opt_layout !== undefined && opt_ends) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n _this.ends_ = opt_ends;\n }\n else {\n _this.setCoordinates(\n /** @type {Array>} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n Polygon.prototype.appendLinearRing = function (linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n }\n else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @api\n */\n Polygon.prototype.clone = function () {\n var polygon = new Polygon(this.flatCoordinates.slice(), this.layout, this.ends_.slice());\n polygon.applyProperties(this);\n return polygon;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n Polygon.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(arrayMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n Polygon.prototype.containsXY = function (x, y) {\n return linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y);\n };\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n Polygon.prototype.getArea = function () {\n return linearRingsArea(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride);\n };\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean} [opt_right] Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @api\n */\n Polygon.prototype.getCoordinates = function (opt_right) {\n var flatCoordinates;\n if (opt_right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, opt_right);\n }\n else {\n flatCoordinates = this.flatCoordinates;\n }\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n };\n /**\n * @return {Array} Ends.\n */\n Polygon.prototype.getEnds = function () {\n return this.ends_;\n };\n /**\n * @return {Array} Interior point.\n */\n Polygon.prototype.getFlatInteriorPoint = function () {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n var flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0);\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n };\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n Polygon.prototype.getInteriorPoint = function () {\n return new Point(this.getFlatInteriorPoint(), GeometryLayout.XYM);\n };\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n Polygon.prototype.getLinearRingCount = function () {\n return this.ends_.length;\n };\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing|null} Linear ring.\n * @api\n */\n Polygon.prototype.getLinearRing = function (index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index]), this.layout);\n };\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n Polygon.prototype.getLinearRings = function () {\n var layout = this.layout;\n var flatCoordinates = this.flatCoordinates;\n var ends = this.ends_;\n var linearRings = [];\n var offset = 0;\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n var linearRing = new LinearRing(flatCoordinates.slice(offset, end), layout);\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n };\n /**\n * @return {Array} Oriented flat coordinates.\n */\n Polygon.prototype.getOrientedFlatCoordinates = function () {\n if (this.orientedRevision_ != this.getRevision()) {\n var flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n }\n else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride);\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\n */\n Polygon.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n var simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds);\n return new Polygon(simplifiedFlatCoordinates, GeometryLayout.XY, simplifiedEnds);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n Polygon.prototype.getType = function () {\n return GeometryType.POLYGON;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n Polygon.prototype.intersectsExtent = function (extent) {\n return intersectsLinearRingArray(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, extent);\n };\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n Polygon.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n var ends = deflateCoordinatesArray(this.flatCoordinates, 0, coordinates, this.stride, this.ends_);\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n };\n return Polygon;\n}(SimpleGeometry));\nexport default Polygon;\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices in meters.\n * @param {number} [opt_n] Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number} [opt_sphereRadius] Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, opt_n, opt_sphereRadius) {\n var n = opt_n ? opt_n : 32;\n /** @type {Array} */\n var flatCoordinates = [];\n for (var i = 0; i < n; ++i) {\n extend(flatCoordinates, sphereOffset(center, radius, (2 * Math.PI * i) / n, opt_sphereRadius));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n var minX = extent[0];\n var minY = extent[1];\n var maxX = extent[2];\n var maxY = extent[3];\n var flatCoordinates = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, GeometryLayout.XY, [\n flatCoordinates.length,\n ]);\n}\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number} [opt_sides] Number of sides of the polygon. Default is 32.\n * @param {number} [opt_angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, opt_sides, opt_angle) {\n var sides = opt_sides ? opt_sides : 32;\n var stride = circle.getStride();\n var layout = circle.getLayout();\n var center = circle.getCenter();\n var arrayLength = stride * (sides + 1);\n var flatCoordinates = new Array(arrayLength);\n for (var i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (var j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n var ends = [flatCoordinates.length];\n var polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), opt_angle);\n return polygon;\n}\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number} [opt_angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, opt_angle) {\n var flatCoordinates = polygon.getFlatCoordinates();\n var stride = polygon.getStride();\n var sides = flatCoordinates.length / stride - 1;\n var startAngle = opt_angle ? opt_angle : 0;\n for (var i = 0; i <= sides; ++i) {\n var offset = i * stride;\n var angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n }\n polygon.changed();\n}\n//# sourceMappingURL=Polygon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/Geolocation\n */\nimport BaseEvent from './events/Event.js';\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport { circular as circularPolygon } from './geom/Polygon.js';\nimport { get as getProjection, getTransformFromProjections, identityTransform, } from './proj.js';\nimport { toRadians } from './math.js';\n/**\n * @enum {string}\n */\nvar Property = {\n ACCURACY: 'accuracy',\n ACCURACY_GEOMETRY: 'accuracyGeometry',\n ALTITUDE: 'altitude',\n ALTITUDE_ACCURACY: 'altitudeAccuracy',\n HEADING: 'heading',\n POSITION: 'position',\n PROJECTION: 'projection',\n SPEED: 'speed',\n TRACKING: 'tracking',\n TRACKING_OPTIONS: 'trackingOptions',\n};\n/**\n * @classdesc\n * Events emitted on Geolocation error.\n */\nvar GeolocationError = /** @class */ (function (_super) {\n __extends(GeolocationError, _super);\n /**\n * @param {GeolocationPositionError} error error object.\n */\n function GeolocationError(error) {\n var _this = _super.call(this, EventType.ERROR) || this;\n /**\n * @type {number}\n */\n _this.code = error.code;\n /**\n * @type {string}\n */\n _this.message = error.message;\n return _this;\n }\n return GeolocationError;\n}(BaseEvent));\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See https://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:accuracy'|'change:accuracyGeometry'|'change:altitude'|\n * 'change:altitudeAccuracy'|'change:heading'|'change:position'|'change:projection'|'change:speed'|'change:tracking'|\n * 'change:trackingOptions'} GeolocationObjectEventTypes\n */\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'error', GeolocationError, Return> &\n * import(\"./Observable\").CombinedOnSignature} GeolocationOnSignature\n */\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](https://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes, register a listener for the generic\n * `change` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n * var geolocation = new Geolocation({\n * // take the projection to use from the map's view\n * projection: view.getProjection()\n * });\n * // listen to changes in position\n * geolocation.on('change', function(evt) {\n * window.console.log(geolocation.getPosition());\n * });\n *\n * @fires module:ol/events/Event~BaseEvent#event:error\n * @api\n */\nvar Geolocation = /** @class */ (function (_super) {\n __extends(Geolocation, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function Geolocation(opt_options) {\n var _this = _super.call(this) || this;\n /***\n * @type {GeolocationOnSignature}\n */\n _this.on;\n /***\n * @type {GeolocationOnSignature}\n */\n _this.once;\n /***\n * @type {GeolocationOnSignature}\n */\n _this.un;\n var options = opt_options || {};\n /**\n * The unprojected (EPSG:4326) device position.\n * @private\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n _this.position_ = null;\n /**\n * @private\n * @type {import(\"./proj.js\").TransformFunction}\n */\n _this.transform_ = identityTransform;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.watchId_ = undefined;\n _this.addChangeListener(Property.PROJECTION, _this.handleProjectionChanged_);\n _this.addChangeListener(Property.TRACKING, _this.handleTrackingChanged_);\n if (options.projection !== undefined) {\n _this.setProjection(options.projection);\n }\n if (options.trackingOptions !== undefined) {\n _this.setTrackingOptions(options.trackingOptions);\n }\n _this.setTracking(options.tracking !== undefined ? options.tracking : false);\n return _this;\n }\n /**\n * Clean up.\n */\n Geolocation.prototype.disposeInternal = function () {\n this.setTracking(false);\n _super.prototype.disposeInternal.call(this);\n };\n /**\n * @private\n */\n Geolocation.prototype.handleProjectionChanged_ = function () {\n var projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(getProjection('EPSG:4326'), projection);\n if (this.position_) {\n this.set(Property.POSITION, this.transform_(this.position_));\n }\n }\n };\n /**\n * @private\n */\n Geolocation.prototype.handleTrackingChanged_ = function () {\n if ('geolocation' in navigator) {\n var tracking = this.getTracking();\n if (tracking && this.watchId_ === undefined) {\n this.watchId_ = navigator.geolocation.watchPosition(this.positionChange_.bind(this), this.positionError_.bind(this), this.getTrackingOptions());\n }\n else if (!tracking && this.watchId_ !== undefined) {\n navigator.geolocation.clearWatch(this.watchId_);\n this.watchId_ = undefined;\n }\n }\n };\n /**\n * @private\n * @param {GeolocationPosition} position position event.\n */\n Geolocation.prototype.positionChange_ = function (position) {\n var coords = position.coords;\n this.set(Property.ACCURACY, coords.accuracy);\n this.set(Property.ALTITUDE, coords.altitude === null ? undefined : coords.altitude);\n this.set(Property.ALTITUDE_ACCURACY, coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy);\n this.set(Property.HEADING, coords.heading === null ? undefined : toRadians(coords.heading));\n if (!this.position_) {\n this.position_ = [coords.longitude, coords.latitude];\n }\n else {\n this.position_[0] = coords.longitude;\n this.position_[1] = coords.latitude;\n }\n var projectedPosition = this.transform_(this.position_);\n this.set(Property.POSITION, projectedPosition);\n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n var geometry = circularPolygon(this.position_, coords.accuracy);\n geometry.applyTransform(this.transform_);\n this.set(Property.ACCURACY_GEOMETRY, geometry);\n this.changed();\n };\n /**\n * @private\n * @param {GeolocationPositionError} error error object.\n */\n Geolocation.prototype.positionError_ = function (error) {\n this.dispatchEvent(new GeolocationError(error));\n };\n /**\n * Get the accuracy of the position in meters.\n * @return {number|undefined} The accuracy of the position measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n };\n /**\n * Get a geometry of the position accuracy.\n * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n * @observable\n * @api\n */\n Geolocation.prototype.getAccuracyGeometry = function () {\n return /** @type {?import(\"./geom/Polygon.js\").default} */ (this.get(Property.ACCURACY_GEOMETRY) || null);\n };\n /**\n * Get the altitude associated with the position.\n * @return {number|undefined} The altitude of the position in meters above mean\n * sea level.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitude = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n };\n /**\n * Get the altitude accuracy of the position.\n * @return {number|undefined} The accuracy of the altitude measurement in\n * meters.\n * @observable\n * @api\n */\n Geolocation.prototype.getAltitudeAccuracy = function () {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE_ACCURACY));\n };\n /**\n * Get the heading as radians clockwise from North.\n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n * is set to `true` in the tracking options.\n * @return {number|undefined} The heading of the device in radians from north.\n * @observable\n * @api\n */\n Geolocation.prototype.getHeading = function () {\n return /** @type {number|undefined} */ (this.get(Property.HEADING));\n };\n /**\n * Get the position of the device.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n * in the current projection.\n * @observable\n * @api\n */\n Geolocation.prototype.getPosition = function () {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (this.get(Property.POSITION));\n };\n /**\n * Get the projection associated with the position.\n * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.getProjection = function () {\n return /** @type {import(\"./proj/Projection.js\").default|undefined} */ (this.get(Property.PROJECTION));\n };\n /**\n * Get the speed in meters per second.\n * @return {number|undefined} The instantaneous speed of the device in meters\n * per second.\n * @observable\n * @api\n */\n Geolocation.prototype.getSpeed = function () {\n return /** @type {number|undefined} */ (this.get(Property.SPEED));\n };\n /**\n * Determine if the device location is being tracked.\n * @return {boolean} The device location is being tracked.\n * @observable\n * @api\n */\n Geolocation.prototype.getTracking = function () {\n return /** @type {boolean} */ (this.get(Property.TRACKING));\n };\n /**\n * Get the tracking options.\n * See https://www.w3.org/TR/geolocation-API/#position-options.\n * @return {PositionOptions|undefined} PositionOptions as defined by\n * the [HTML5 Geolocation spec\n * ](https://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.getTrackingOptions = function () {\n return /** @type {PositionOptions|undefined} */ (this.get(Property.TRACKING_OPTIONS));\n };\n /**\n * Set the projection to use for transforming the coordinates.\n * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n * reported in.\n * @observable\n * @api\n */\n Geolocation.prototype.setProjection = function (projection) {\n this.set(Property.PROJECTION, getProjection(projection));\n };\n /**\n * Enable or disable tracking.\n * @param {boolean} tracking Enable tracking.\n * @observable\n * @api\n */\n Geolocation.prototype.setTracking = function (tracking) {\n this.set(Property.TRACKING, tracking);\n };\n /**\n * Set the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @param {PositionOptions} options PositionOptions as defined by the\n * [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n Geolocation.prototype.setTrackingOptions = function (options) {\n this.set(Property.TRACKING_OPTIONS, options);\n };\n return Geolocation;\n}(BaseObject));\nexport default Geolocation;\n//# sourceMappingURL=Geolocation.js.map","/**\n * @module ol/render/EventType\n */\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered before a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#prerender\n * @api\n */\n PRERENDER: 'prerender',\n /**\n * Triggered after a layer is rendered.\n * @event module:ol/render/Event~RenderEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n /**\n * Triggered before layers are composed. When dispatched by the map, the event object will not have\n * a `context` set. When dispatched by a layer, the event object will have a `context` set. Only\n * WebGL layers currently dispatch this event.\n * @event module:ol/render/Event~RenderEvent#precompose\n * @api\n */\n PRECOMPOSE: 'precompose',\n /**\n * Triggered after layers are composed. When dispatched by the map, the event object will not have\n * a `context` set. When dispatched by a layer, the event object will have a `context` set. Only\n * WebGL layers currently dispatch this event.\n * @event module:ol/render/Event~RenderEvent#postcompose\n * @api\n */\n POSTCOMPOSE: 'postcompose',\n /**\n * Triggered when rendering is complete, i.e. all sources and tiles have\n * finished loading for the current viewport, and all tiles are faded in.\n * The event object will not have a `context` set.\n * @event module:ol/render/Event~RenderEvent#rendercomplete\n * @api\n */\n RENDERCOMPLETE: 'rendercomplete',\n};\n/**\n * @typedef {'postrender'|'precompose'|'postcompose'|'rendercomplete'} MapRenderEventTypes\n */\n/**\n * @typedef {'postrender'|'prerender'} LayerRenderEventTypes\n */\n//# sourceMappingURL=EventType.js.map","/**\n * @module ol/style/Fill\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|null} [color=null] A color, gradient or pattern.\n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats.\n * Default null; if null, the Canvas/renderer default black will be used.\n */\n/**\n * @classdesc\n * Set fill style for vector features.\n * @api\n */\nvar Fill = /** @class */ (function () {\n /**\n * @param {Options} [opt_options] Options.\n */\n function Fill(opt_options) {\n var options = opt_options || {};\n /**\n * @private\n * @type {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|null}\n */\n this.color_ = options.color !== undefined ? options.color : null;\n }\n /**\n * Clones the style. The color is not cloned if it is an {@link module:ol/colorlike~ColorLike}.\n * @return {Fill} The cloned style.\n * @api\n */\n Fill.prototype.clone = function () {\n var color = this.getColor();\n return new Fill({\n color: Array.isArray(color) ? color.slice() : color || undefined,\n });\n };\n /**\n * Get the fill color.\n * @return {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|null} Color.\n * @api\n */\n Fill.prototype.getColor = function () {\n return this.color_;\n };\n /**\n * Set the color.\n *\n * @param {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike|null} color Color.\n * @api\n */\n Fill.prototype.setColor = function (color) {\n this.color_ = color;\n };\n return Fill;\n}());\nexport default Fill;\n//# sourceMappingURL=Fill.js.map","/**\n * @module ol/geom/flat/interpolate\n */\nimport { binarySearch } from '../../array.js';\nimport { lerp } from '../../math.js';\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} fraction Fraction.\n * @param {Array} [opt_dest] Destination.\n * @param {number} [opt_dimension] Destination dimension (default is `2`)\n * @return {Array} Destination.\n */\nexport function interpolatePoint(flatCoordinates, offset, end, stride, fraction, opt_dest, opt_dimension) {\n var o, t;\n var n = (end - offset) / stride;\n if (n === 1) {\n o = offset;\n }\n else if (n === 2) {\n o = offset;\n t = fraction;\n }\n else if (n !== 0) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length_1 = 0;\n var cumulativeLengths = [0];\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length_1 += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n cumulativeLengths.push(length_1);\n x1 = x2;\n y1 = y2;\n }\n var target = fraction * length_1;\n var index = binarySearch(cumulativeLengths, target);\n if (index < 0) {\n t =\n (target - cumulativeLengths[-index - 2]) /\n (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]);\n o = offset + (-index - 2) * stride;\n }\n else {\n o = offset + index * stride;\n }\n }\n var dimension = opt_dimension > 1 ? opt_dimension : 2;\n var dest = opt_dest ? opt_dest : new Array(dimension);\n for (var i = 0; i < dimension; ++i) {\n dest[i] =\n o === undefined\n ? NaN\n : t === undefined\n ? flatCoordinates[o + i]\n : lerp(flatCoordinates[o + i], flatCoordinates[o + stride + i], t);\n }\n return dest;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, extrapolate) {\n if (end == offset) {\n return null;\n }\n var coordinate;\n if (m < flatCoordinates[offset + stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(offset, offset + stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n else if (flatCoordinates[end - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(end - stride, end);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n // FIXME use O(1) search\n if (m == flatCoordinates[offset + stride - 1]) {\n return flatCoordinates.slice(offset, offset + stride);\n }\n var lo = offset / stride;\n var hi = end / stride;\n while (lo < hi) {\n var mid = (lo + hi) >> 1;\n if (m < flatCoordinates[(mid + 1) * stride - 1]) {\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n var m0 = flatCoordinates[lo * stride - 1];\n if (m == m0) {\n return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride);\n }\n var m1 = flatCoordinates[(lo + 1) * stride - 1];\n var t = (m - m0) / (m1 - m0);\n coordinate = [];\n for (var i = 0; i < stride - 1; ++i) {\n coordinate.push(lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t));\n }\n coordinate.push(m);\n return coordinate;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} m M.\n * @param {boolean} extrapolate Extrapolate.\n * @param {boolean} interpolate Interpolate.\n * @return {import(\"../../coordinate.js\").Coordinate|null} Coordinate.\n */\nexport function lineStringsCoordinateAtM(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) {\n if (interpolate) {\n return lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate);\n }\n var coordinate;\n if (m < flatCoordinates[stride - 1]) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(0, stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n if (flatCoordinates[flatCoordinates.length - 1] < m) {\n if (extrapolate) {\n coordinate = flatCoordinates.slice(flatCoordinates.length - stride);\n coordinate[stride - 1] = m;\n return coordinate;\n }\n else {\n return null;\n }\n }\n for (var i = 0, ii = ends.length; i < ii; ++i) {\n var end = ends[i];\n if (offset == end) {\n continue;\n }\n if (m < flatCoordinates[offset + stride - 1]) {\n return null;\n }\n else if (m <= flatCoordinates[end - 1]) {\n return lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false);\n }\n offset = end;\n }\n return null;\n}\n//# sourceMappingURL=interpolate.js.map","/**\n * @module ol/geom/flat/length\n */\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n var x1 = flatCoordinates[offset];\n var y1 = flatCoordinates[offset + 1];\n var length = 0;\n for (var i = offset + stride; i < end; i += stride) {\n var x2 = flatCoordinates[i];\n var y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\n}\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n var perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n var dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n//# sourceMappingURL=length.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * @module ol/geom/LineString\n */\nimport GeometryLayout from './GeometryLayout.js';\nimport GeometryType from './GeometryType.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport { assignClosestPoint, maxSquaredDelta } from './flat/closest.js';\nimport { closestSquaredDistanceXY } from '../extent.js';\nimport { deflateCoordinates } from './flat/deflate.js';\nimport { douglasPeucker } from './flat/simplify.js';\nimport { extend } from '../array.js';\nimport { forEach as forEachSegment } from './flat/segments.js';\nimport { inflateCoordinates } from './flat/inflate.js';\nimport { interpolatePoint, lineStringCoordinateAtM } from './flat/interpolate.js';\nimport { intersectsLineString } from './flat/intersectsextent.js';\nimport { lineStringLength } from './flat/length.js';\n/**\n * @classdesc\n * Linestring geometry.\n *\n * @api\n */\nvar LineString = /** @class */ (function (_super) {\n __extends(LineString, _super);\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `opt_layout` are also accepted.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n */\n function LineString(coordinates, opt_layout) {\n var _this = _super.call(this) || this;\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n _this.flatMidpoint_ = null;\n /**\n * @private\n * @type {number}\n */\n _this.flatMidpointRevision_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDelta_ = -1;\n /**\n * @private\n * @type {number}\n */\n _this.maxDeltaRevision_ = -1;\n if (opt_layout !== undefined && !Array.isArray(coordinates[0])) {\n _this.setFlatCoordinates(opt_layout, \n /** @type {Array} */ (coordinates));\n }\n else {\n _this.setCoordinates(\n /** @type {Array} */ (coordinates), opt_layout);\n }\n return _this;\n }\n /**\n * Append the passed coordinate to the coordinates of the linestring.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @api\n */\n LineString.prototype.appendCoordinate = function (coordinate) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = coordinate.slice();\n }\n else {\n extend(this.flatCoordinates, coordinate);\n }\n this.changed();\n };\n /**\n * Make a complete copy of the geometry.\n * @return {!LineString} Clone.\n * @api\n */\n LineString.prototype.clone = function () {\n var lineString = new LineString(this.flatCoordinates.slice(), this.layout);\n lineString.applyProperties(this);\n return lineString;\n };\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n LineString.prototype.closestPointXY = function (x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(maxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0));\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance);\n };\n /**\n * Iterate over each segment, calling the provided callback.\n * If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n *\n * @param {function(this: S, import(\"../coordinate.js\").Coordinate, import(\"../coordinate.js\").Coordinate): T} callback Function\n * called for each segment. The function will receive two arguments, the start and end coordinates of the segment.\n * @return {T|boolean} Value.\n * @template T,S\n * @api\n */\n LineString.prototype.forEachSegment = function (callback) {\n return forEachSegment(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, callback);\n };\n /**\n * Returns the coordinate at `m` using linear interpolation, or `null` if no\n * such coordinate exists.\n *\n * `opt_extrapolate` controls extrapolation beyond the range of Ms in the\n * MultiLineString. If `opt_extrapolate` is `true` then Ms less than the first\n * M will return the first coordinate and Ms greater than the last M will\n * return the last coordinate.\n *\n * @param {number} m M.\n * @param {boolean} [opt_extrapolate] Extrapolate. Default is `false`.\n * @return {import(\"../coordinate.js\").Coordinate|null} Coordinate.\n * @api\n */\n LineString.prototype.getCoordinateAtM = function (m, opt_extrapolate) {\n if (this.layout != GeometryLayout.XYM &&\n this.layout != GeometryLayout.XYZM) {\n return null;\n }\n var extrapolate = opt_extrapolate !== undefined ? opt_extrapolate : false;\n return lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate);\n };\n /**\n * Return the coordinates of the linestring.\n * @return {Array} Coordinates.\n * @api\n */\n LineString.prototype.getCoordinates = function () {\n return inflateCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * Return the coordinate at the provided fraction along the linestring.\n * The `fraction` is a number between 0 and 1, where 0 is the start of the\n * linestring and 1 is the end.\n * @param {number} fraction Fraction.\n * @param {import(\"../coordinate.js\").Coordinate} [opt_dest] Optional coordinate whose values will\n * be modified. If not provided, a new coordinate will be returned.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinate of the interpolated point.\n * @api\n */\n LineString.prototype.getCoordinateAt = function (fraction, opt_dest) {\n return interpolatePoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, fraction, opt_dest, this.stride);\n };\n /**\n * Return the length of the linestring on projected plane.\n * @return {number} Length (on projected plane).\n * @api\n */\n LineString.prototype.getLength = function () {\n return lineStringLength(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride);\n };\n /**\n * @return {Array} Flat midpoint.\n */\n LineString.prototype.getFlatMidpoint = function () {\n if (this.flatMidpointRevision_ != this.getRevision()) {\n this.flatMidpoint_ = this.getCoordinateAt(0.5, this.flatMidpoint_);\n this.flatMidpointRevision_ = this.getRevision();\n }\n return this.flatMidpoint_;\n };\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LineString} Simplified LineString.\n * @protected\n */\n LineString.prototype.getSimplifiedGeometryInternal = function (squaredTolerance) {\n var simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0);\n return new LineString(simplifiedFlatCoordinates, GeometryLayout.XY);\n };\n /**\n * Get the type of this geometry.\n * @return {import(\"./GeometryType.js\").default} Geometry type.\n * @api\n */\n LineString.prototype.getType = function () {\n return GeometryType.LINE_STRING;\n };\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n LineString.prototype.intersectsExtent = function (extent) {\n return intersectsLineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, extent);\n };\n /**\n * Set the coordinates of the linestring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./GeometryLayout.js\").default} [opt_layout] Layout.\n * @api\n */\n LineString.prototype.setCoordinates = function (coordinates, opt_layout) {\n this.setLayout(opt_layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(this.flatCoordinates, 0, coordinates, this.stride);\n this.changed();\n };\n return LineString;\n}(SimpleGeometry));\nexport default LineString;\n//# sourceMappingURL=LineString.js.map","/**\n * @module ol/style/Stroke\n */\n/**\n * @typedef {Object} Options\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [color] A color, gradient or pattern.\n * See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats.\n * Default null; if null, the Canvas/renderer default black will be used.\n * @property {CanvasLineCap} [lineCap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [lineJoin='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [lineDash] Line dash pattern. Default is `null` (no dash).\n * Please note that Internet Explorer 10 and lower do not support the `setLineDash` method on\n * the `CanvasRenderingContext2D` and therefore this option will have no visual effect in these browsers.\n * @property {number} [lineDashOffset=0] Line dash offset.\n * @property {number} [miterLimit=10] Miter limit.\n * @property {number} [width] Width.\n */\n/**\n * @classdesc\n * Set stroke style for vector features.\n * Note that the defaults given are the Canvas defaults, which will be used if\n * option is not defined. The `get` functions return whatever was entered in\n * the options; they will not return the default.\n * @api\n */\nvar Stroke = /** @class */ (function () {\n /**\n * @param {Options} [opt_options] Options.\n */\n function Stroke(opt_options) {\n var options = opt_options || {};\n /**\n * @private\n * @type {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike}\n */\n this.color_ = options.color !== undefined ? options.color : null;\n /**\n * @private\n * @type {CanvasLineCap|undefined}\n */\n this.lineCap_ = options.lineCap;\n /**\n * @private\n * @type {Array}\n */\n this.lineDash_ = options.lineDash !== undefined ? options.lineDash : null;\n /**\n * @private\n * @type {number|undefined}\n */\n this.lineDashOffset_ = options.lineDashOffset;\n /**\n * @private\n * @type {CanvasLineJoin|undefined}\n */\n this.lineJoin_ = options.lineJoin;\n /**\n * @private\n * @type {number|undefined}\n */\n this.miterLimit_ = options.miterLimit;\n /**\n * @private\n * @type {number|undefined}\n */\n this.width_ = options.width;\n }\n /**\n * Clones the style.\n * @return {Stroke} The cloned style.\n * @api\n */\n Stroke.prototype.clone = function () {\n var color = this.getColor();\n return new Stroke({\n color: Array.isArray(color) ? color.slice() : color || undefined,\n lineCap: this.getLineCap(),\n lineDash: this.getLineDash() ? this.getLineDash().slice() : undefined,\n lineDashOffset: this.getLineDashOffset(),\n lineJoin: this.getLineJoin(),\n miterLimit: this.getMiterLimit(),\n width: this.getWidth(),\n });\n };\n /**\n * Get the stroke color.\n * @return {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} Color.\n * @api\n */\n Stroke.prototype.getColor = function () {\n return this.color_;\n };\n /**\n * Get the line cap type for the stroke.\n * @return {CanvasLineCap|undefined} Line cap.\n * @api\n */\n Stroke.prototype.getLineCap = function () {\n return this.lineCap_;\n };\n /**\n * Get the line dash style for the stroke.\n * @return {Array} Line dash.\n * @api\n */\n Stroke.prototype.getLineDash = function () {\n return this.lineDash_;\n };\n /**\n * Get the line dash offset for the stroke.\n * @return {number|undefined} Line dash offset.\n * @api\n */\n Stroke.prototype.getLineDashOffset = function () {\n return this.lineDashOffset_;\n };\n /**\n * Get the line join type for the stroke.\n * @return {CanvasLineJoin|undefined} Line join.\n * @api\n */\n Stroke.prototype.getLineJoin = function () {\n return this.lineJoin_;\n };\n /**\n * Get the miter limit for the stroke.\n * @return {number|undefined} Miter limit.\n * @api\n */\n Stroke.prototype.getMiterLimit = function () {\n return this.miterLimit_;\n };\n /**\n * Get the stroke width.\n * @return {number|undefined} Width.\n * @api\n */\n Stroke.prototype.getWidth = function () {\n return this.width_;\n };\n /**\n * Set the color.\n *\n * @param {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} color Color.\n * @api\n */\n Stroke.prototype.setColor = function (color) {\n this.color_ = color;\n };\n /**\n * Set the line cap.\n *\n * @param {CanvasLineCap|undefined} lineCap Line cap.\n * @api\n */\n Stroke.prototype.setLineCap = function (lineCap) {\n this.lineCap_ = lineCap;\n };\n /**\n * Set the line dash.\n *\n * Please note that Internet Explorer 10 and lower [do not support][mdn] the\n * `setLineDash` method on the `CanvasRenderingContext2D` and therefore this\n * property will have no visual effect in these browsers.\n *\n * [mdn]: https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility\n *\n * @param {Array} lineDash Line dash.\n * @api\n */\n Stroke.prototype.setLineDash = function (lineDash) {\n this.lineDash_ = lineDash;\n };\n /**\n * Set the line dash offset.\n *\n * @param {number|undefined} lineDashOffset Line dash offset.\n * @api\n */\n Stroke.prototype.setLineDashOffset = function (lineDashOffset) {\n this.lineDashOffset_ = lineDashOffset;\n };\n /**\n * Set the line join.\n *\n * @param {CanvasLineJoin|undefined} lineJoin Line join.\n * @api\n */\n Stroke.prototype.setLineJoin = function (lineJoin) {\n this.lineJoin_ = lineJoin;\n };\n /**\n * Set the miter limit.\n *\n * @param {number|undefined} miterLimit Miter limit.\n * @api\n */\n Stroke.prototype.setMiterLimit = function (miterLimit) {\n this.miterLimit_ = miterLimit;\n };\n /**\n * Set the width.\n *\n * @param {number|undefined} width Width.\n * @api\n */\n Stroke.prototype.setWidth = function (width) {\n this.width_ = width;\n };\n return Stroke;\n}());\nexport default Stroke;\n//# sourceMappingURL=Stroke.js.map","/**\n * @module ol/ImageState\n */\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n//# sourceMappingURL=ImageState.js.map","/**\n * @module ol/size\n */\n/**\n * An array of numbers representing a size: `[width, height]`.\n * @typedef {Array} Size\n * @api\n */\n/**\n * Returns a buffered size.\n * @param {Size} size Size.\n * @param {number} num The amount by which to buffer.\n * @param {Size} [opt_size] Optional reusable size array.\n * @return {Size} The buffered size.\n */\nexport function buffer(size, num, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = size[0] + 2 * num;\n opt_size[1] = size[1] + 2 * num;\n return opt_size;\n}\n/**\n * Determines if a size has a positive area.\n * @param {Size} size The size to test.\n * @return {boolean} The size has a positive area.\n */\nexport function hasArea(size) {\n return size[0] > 0 && size[1] > 0;\n}\n/**\n * Returns a size scaled by a ratio. The result will be an array of integers.\n * @param {Size} size Size.\n * @param {number} ratio Ratio.\n * @param {Size} [opt_size] Optional reusable size array.\n * @return {Size} The scaled size.\n */\nexport function scale(size, ratio, opt_size) {\n if (opt_size === undefined) {\n opt_size = [0, 0];\n }\n opt_size[0] = (size[0] * ratio + 0.5) | 0;\n opt_size[1] = (size[1] * ratio + 0.5) | 0;\n return opt_size;\n}\n/**\n * Returns an `Size` array for the passed in number (meaning: square) or\n * `Size` array.\n * (meaning: non-square),\n * @param {number|Size} size Width and height.\n * @param {Size} [opt_size] Optional reusable size array.\n * @return {Size} Size.\n * @api\n */\nexport function toSize(size, opt_size) {\n if (Array.isArray(size)) {\n return size;\n }\n else {\n if (opt_size === undefined) {\n opt_size = [size, size];\n }\n else {\n opt_size[0] = size;\n opt_size[1] = size;\n }\n return opt_size;\n }\n}\n//# sourceMappingURL=size.js.map","/**\n * @module ol/style/Image\n */\nimport { abstract } from '../util.js';\nimport { toSize } from '../size.js';\n/**\n * @typedef {Object} Options\n * @property {number} opacity Opacity.\n * @property {boolean} rotateWithView If the image should get rotated with the view.\n * @property {number} rotation Rotation.\n * @property {number|import(\"../size.js\").Size} scale Scale.\n * @property {Array} displacement Displacement.\n */\n/**\n * @classdesc\n * A base class used for creating subclasses and not instantiated in\n * apps. Base class for {@link module:ol/style/Icon~Icon}, {@link module:ol/style/Circle~CircleStyle} and\n * {@link module:ol/style/RegularShape~RegularShape}.\n * @abstract\n * @api\n */\nvar ImageStyle = /** @class */ (function () {\n /**\n * @param {Options} options Options.\n */\n function ImageStyle(options) {\n /**\n * @private\n * @type {number}\n */\n this.opacity_ = options.opacity;\n /**\n * @private\n * @type {boolean}\n */\n this.rotateWithView_ = options.rotateWithView;\n /**\n * @private\n * @type {number}\n */\n this.rotation_ = options.rotation;\n /**\n * @private\n * @type {number|import(\"../size.js\").Size}\n */\n this.scale_ = options.scale;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n this.scaleArray_ = toSize(options.scale);\n /**\n * @private\n * @type {Array}\n */\n this.displacement_ = options.displacement;\n }\n /**\n * Clones the style.\n * @return {ImageStyle} The cloned style.\n * @api\n */\n ImageStyle.prototype.clone = function () {\n var scale = this.getScale();\n return new ImageStyle({\n opacity: this.getOpacity(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n displacement: this.getDisplacement().slice(),\n });\n };\n /**\n * Get the symbolizer opacity.\n * @return {number} Opacity.\n * @api\n */\n ImageStyle.prototype.getOpacity = function () {\n return this.opacity_;\n };\n /**\n * Determine whether the symbolizer rotates with the map.\n * @return {boolean} Rotate with map.\n * @api\n */\n ImageStyle.prototype.getRotateWithView = function () {\n return this.rotateWithView_;\n };\n /**\n * Get the symoblizer rotation.\n * @return {number} Rotation.\n * @api\n */\n ImageStyle.prototype.getRotation = function () {\n return this.rotation_;\n };\n /**\n * Get the symbolizer scale.\n * @return {number|import(\"../size.js\").Size} Scale.\n * @api\n */\n ImageStyle.prototype.getScale = function () {\n return this.scale_;\n };\n /**\n * Get the symbolizer scale array.\n * @return {import(\"../size.js\").Size} Scale array.\n */\n ImageStyle.prototype.getScaleArray = function () {\n return this.scaleArray_;\n };\n /**\n * Get the displacement of the shape\n * @return {Array} Shape's center displacement\n * @api\n */\n ImageStyle.prototype.getDisplacement = function () {\n return this.displacement_;\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @abstract\n * @return {Array} Anchor.\n */\n ImageStyle.prototype.getAnchor = function () {\n return abstract();\n };\n /**\n * Get the image element for the symbolizer.\n * @abstract\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getImage = function (pixelRatio) {\n return abstract();\n };\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLVideoElement|HTMLImageElement} Image element.\n */\n ImageStyle.prototype.getHitDetectionImage = function () {\n return abstract();\n };\n /**\n * Get the image pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel ratio.\n */\n ImageStyle.prototype.getPixelRatio = function (pixelRatio) {\n return 1;\n };\n /**\n * @abstract\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n ImageStyle.prototype.getImageState = function () {\n return abstract();\n };\n /**\n * @abstract\n * @return {import(\"../size.js\").Size} Image size.\n */\n ImageStyle.prototype.getImageSize = function () {\n return abstract();\n };\n /**\n * Get the origin of the symbolizer.\n * @abstract\n * @return {Array} Origin.\n */\n ImageStyle.prototype.getOrigin = function () {\n return abstract();\n };\n /**\n * Get the size of the symbolizer (in pixels).\n * @abstract\n * @return {import(\"../size.js\").Size} Size.\n */\n ImageStyle.prototype.getSize = function () {\n return abstract();\n };\n /**\n * Set the displacement.\n *\n * @param {Array} displacement Displacement.\n * @api\n */\n ImageStyle.prototype.setDisplacement = function (displacement) {\n this.displacement_ = displacement;\n };\n /**\n * Set the opacity.\n *\n * @param {number} opacity Opacity.\n * @api\n */\n ImageStyle.prototype.setOpacity = function (opacity) {\n this.opacity_ = opacity;\n };\n /**\n * Set whether to rotate the style with the view.\n *\n * @param {boolean} rotateWithView Rotate with map.\n * @api\n */\n ImageStyle.prototype.setRotateWithView = function (rotateWithView) {\n this.rotateWithView_ = rotateWithView;\n };\n /**\n * Set the rotation.\n *\n * @param {number} rotation Rotation.\n * @api\n */\n ImageStyle.prototype.setRotation = function (rotation) {\n this.rotation_ = rotation;\n };\n /**\n * Set the scale.\n *\n * @param {number|import(\"../size.js\").Size} scale Scale.\n * @api\n */\n ImageStyle.prototype.setScale = function (scale) {\n this.scale_ = scale;\n this.scaleArray_ = toSize(scale);\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n ImageStyle.prototype.listenImageChange = function (listener) {\n abstract();\n };\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n ImageStyle.prototype.load = function () {\n abstract();\n };\n /**\n * @abstract\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n ImageStyle.prototype.unlistenImageChange = function (listener) {\n abstract();\n };\n return ImageStyle;\n}());\nexport default ImageStyle;\n//# sourceMappingURL=Image.js.map","/**\n * @module ol/color\n */\nimport { assert } from './asserts.js';\nimport { clamp } from './math.js';\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nvar HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nvar NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n else {\n return toString(color);\n }\n}\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n var el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n var rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n else {\n return '';\n }\n}\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport var fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n /**\n * @const\n * @type {number}\n */\n var MAX_CACHE_SIZE = 1024;\n /**\n * @type {Object}\n */\n var cache = {};\n /**\n * @type {number}\n */\n var cacheSize = 0;\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n var color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n }\n else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n var i = 0;\n for (var key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n });\n})();\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n else {\n return fromString(color);\n }\n}\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n var r, g, b, a, color;\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n var n = s.length - 1; // number of hex digits\n var d = // number of digits per channel\n void 0; // number of digits per channel\n if (n <= 4) {\n d = 1;\n }\n else {\n d = 2;\n }\n var hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n }\n else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n }\n else if (s.indexOf('rgba(') == 0) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n }\n else if (s.indexOf('rgb(') == 0) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n }\n else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n var r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n var g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n var b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n var a = color[3] === undefined ? 1 : Math.round(color[3] * 100) / 100;\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return (HEX_COLOR_RE_.test(s) || s.indexOf('rgba(') === 0 || s.indexOf('rgb(') === 0);\n}\n//# sourceMappingURL=color.js.map","/**\n * @module ol/colorlike\n */\nimport { toString } from './color.js';\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n }\n else {\n return color;\n }\n}\n//# sourceMappingURL=colorlike.js.map","import { WORKER_OFFSCREEN_CANVAS } from './has.js';\n/**\n * @module ol/dom\n */\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [opt_width] Canvas width.\n * @param {number} [opt_height] Canvas height.\n * @param {Array} [opt_canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [opt_Context2DSettings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(opt_width, opt_height, opt_canvasPool, opt_Context2DSettings) {\n /** @type {HTMLCanvasElement|OffscreenCanvas} */\n var canvas;\n if (opt_canvasPool && opt_canvasPool.length) {\n canvas = opt_canvasPool.shift();\n }\n else if (WORKER_OFFSCREEN_CANVAS) {\n canvas = new OffscreenCanvas(opt_width || 300, opt_height || 300);\n }\n else {\n canvas = document.createElement('canvas');\n }\n if (opt_width) {\n canvas.width = opt_width;\n }\n if (opt_height) {\n canvas.height = opt_height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d', opt_Context2DSettings));\n}\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n var width = element.offsetWidth;\n var style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n return width;\n}\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n var height = element.offsetHeight;\n var style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n return height;\n}\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n var parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n/**\n * @param {Node} node The node to remove.\n * @return {Node|null} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n var oldChildren = node.childNodes;\n for (var i = 0; true; ++i) {\n var oldChild = oldChildren[i];\n var newChild = children[i];\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n//# sourceMappingURL=dom.js.map","/**\n * @module ol/css\n */\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array} families Families.\n */\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_HIDDEN = 'ol-hidden';\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_SELECTABLE = 'ol-selectable';\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSELECTABLE = 'ol-unselectable';\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_UNSUPPORTED = 'ol-unsupported';\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_CONTROL = 'ol-control';\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport var CLASS_COLLAPSED = 'ol-collapsed';\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nvar fontRegEx = new RegExp([\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n].join(''), 'i');\nvar fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters|null} The font parameters (or null if the input spec is invalid).\n */\nexport var getFontParameters = function (fontSpec) {\n var match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n var style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (var i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n var value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n/**\n * @param {number} opacity Opacity (0..1).\n * @return {string} CSS opacity.\n */\nexport function cssOpacity(opacity) {\n return opacity === 1 ? '' : String(Math.round(opacity * 100) / 100);\n}\n//# sourceMappingURL=css.js.map","/**\n * @module ol/render/canvas\n */\nimport BaseObject from '../Object.js';\nimport EventTarget from '../events/Target.js';\nimport { WORKER_OFFSCREEN_CANVAS } from '../has.js';\nimport { clear } from '../obj.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { getFontParameters } from '../css.js';\n/**\n * @typedef {Object} FillState\n * @property {import(\"../colorlike.js\").ColorLike} fillStyle FillStyle.\n */\n/**\n * @typedef Label\n * @property {number} width Width.\n * @property {number} height Height.\n * @property {Array} contextInstructions ContextInstructions.\n */\n/**\n * @typedef {Object} FillStrokeState\n * @property {import(\"../colorlike.js\").ColorLike} [currentFillStyle] Current FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [currentStrokeStyle] Current StrokeStyle.\n * @property {CanvasLineCap} [currentLineCap] Current LineCap.\n * @property {Array} currentLineDash Current LineDash.\n * @property {number} [currentLineDashOffset] Current LineDashOffset.\n * @property {CanvasLineJoin} [currentLineJoin] Current LineJoin.\n * @property {number} [currentLineWidth] Current LineWidth.\n * @property {number} [currentMiterLimit] Current MiterLimit.\n * @property {number} [lastStroke] Last stroke.\n * @property {import(\"../colorlike.js\").ColorLike} [fillStyle] FillStyle.\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle] StrokeStyle.\n * @property {CanvasLineCap} [lineCap] LineCap.\n * @property {Array} lineDash LineDash.\n * @property {number} [lineDashOffset] LineDashOffset.\n * @property {CanvasLineJoin} [lineJoin] LineJoin.\n * @property {number} [lineWidth] LineWidth.\n * @property {number} [miterLimit] MiterLimit.\n */\n/**\n * @typedef {Object} StrokeState\n * @property {CanvasLineCap} lineCap LineCap.\n * @property {Array} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} lineWidth LineWidth.\n * @property {number} miterLimit MiterLimit.\n * @property {import(\"../colorlike.js\").ColorLike} strokeStyle StrokeStyle.\n */\n/**\n * @typedef {Object} TextState\n * @property {string} font Font.\n * @property {string} [textAlign] TextAlign.\n * @property {string} textBaseline TextBaseline.\n * @property {string} [placement] Placement.\n * @property {number} [maxAngle] MaxAngle.\n * @property {boolean} [overflow] Overflow.\n * @property {import(\"../style/Fill.js\").default} [backgroundFill] BackgroundFill.\n * @property {import(\"../style/Stroke.js\").default} [backgroundStroke] BackgroundStroke.\n * @property {import(\"../size.js\").Size} [scale] Scale.\n * @property {Array} [padding] Padding.\n */\n/**\n * @typedef {Object} SerializableInstructions\n * @property {Array<*>} instructions The rendering instructions.\n * @property {Array<*>} hitDetectionInstructions The rendering hit detection instructions.\n * @property {Array} coordinates The array of all coordinates.\n * @property {!Object} [textStates] The text states (decluttering).\n * @property {!Object} [fillStates] The fill states (decluttering).\n * @property {!Object} [strokeStates] The stroke states (decluttering).\n */\n/**\n * @typedef {Object} DeclutterImageWithText\n */\n/**\n * @const\n * @type {string}\n */\nexport var defaultFont = '10px sans-serif';\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultFillStyle = '#000';\n/**\n * @const\n * @type {CanvasLineCap}\n */\nexport var defaultLineCap = 'round';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultLineDash = [];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineDashOffset = 0;\n/**\n * @const\n * @type {CanvasLineJoin}\n */\nexport var defaultLineJoin = 'round';\n/**\n * @const\n * @type {number}\n */\nexport var defaultMiterLimit = 10;\n/**\n * @const\n * @type {import(\"../colorlike.js\").ColorLike}\n */\nexport var defaultStrokeStyle = '#000';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextAlign = 'center';\n/**\n * @const\n * @type {string}\n */\nexport var defaultTextBaseline = 'middle';\n/**\n * @const\n * @type {Array}\n */\nexport var defaultPadding = [0, 0, 0, 0];\n/**\n * @const\n * @type {number}\n */\nexport var defaultLineWidth = 1;\n/**\n * @type {BaseObject}\n */\nexport var checkedFonts = new BaseObject();\n/**\n * The label cache for text rendering. To change the default cache size of 2048\n * entries, use {@link module:ol/structs/LRUCache~LRUCache#setSize cache.setSize()}.\n * Deprecated - there is no label cache any more.\n * @type {?}\n * @api\n * @deprecated\n */\nexport var labelCache = new EventTarget();\nlabelCache.setSize = function () {\n console.warn('labelCache is deprecated.'); //eslint-disable-line\n};\n/**\n * @type {CanvasRenderingContext2D}\n */\nvar measureContext = null;\n/**\n * @type {string}\n */\nvar measureFont;\n/**\n * @type {!Object}\n */\nexport var textHeights = {};\n/**\n * Clears the label cache when a font becomes available.\n * @param {string} fontSpec CSS font spec.\n */\nexport var registerFont = (function () {\n var retries = 100;\n var size = '32px ';\n var referenceFonts = ['monospace', 'serif'];\n var len = referenceFonts.length;\n var text = 'wmytzilWMYTZIL@#/&?$%10\\uF013';\n var interval, referenceWidth;\n /**\n * @param {string} fontStyle Css font-style\n * @param {string} fontWeight Css font-weight\n * @param {*} fontFamily Css font-family\n * @return {boolean} Font with style and weight is available\n */\n function isAvailable(fontStyle, fontWeight, fontFamily) {\n var available = true;\n for (var i = 0; i < len; ++i) {\n var referenceFont = referenceFonts[i];\n referenceWidth = measureTextWidth(fontStyle + ' ' + fontWeight + ' ' + size + referenceFont, text);\n if (fontFamily != referenceFont) {\n var width = measureTextWidth(fontStyle +\n ' ' +\n fontWeight +\n ' ' +\n size +\n fontFamily +\n ',' +\n referenceFont, text);\n // If width and referenceWidth are the same, then the fallback was used\n // instead of the font we wanted, so the font is not available.\n available = available && width != referenceWidth;\n }\n }\n if (available) {\n return true;\n }\n return false;\n }\n function check() {\n var done = true;\n var fonts = checkedFonts.getKeys();\n for (var i = 0, ii = fonts.length; i < ii; ++i) {\n var font = fonts[i];\n if (checkedFonts.get(font) < retries) {\n if (isAvailable.apply(this, font.split('\\n'))) {\n clear(textHeights);\n // Make sure that loaded fonts are picked up by Safari\n measureContext = null;\n measureFont = undefined;\n checkedFonts.set(font, retries);\n }\n else {\n checkedFonts.set(font, checkedFonts.get(font) + 1, true);\n done = false;\n }\n }\n }\n if (done) {\n clearInterval(interval);\n interval = undefined;\n }\n }\n return function (fontSpec) {\n var font = getFontParameters(fontSpec);\n if (!font) {\n return;\n }\n var families = font.families;\n for (var i = 0, ii = families.length; i < ii; ++i) {\n var family = families[i];\n var key = font.style + '\\n' + font.weight + '\\n' + family;\n if (checkedFonts.get(key) === undefined) {\n checkedFonts.set(key, retries, true);\n if (!isAvailable(font.style, font.weight, family)) {\n checkedFonts.set(key, 0, true);\n if (interval === undefined) {\n interval = setInterval(check, 32);\n }\n }\n }\n }\n };\n})();\n/**\n * @param {string} font Font to use for measuring.\n * @return {import(\"../size.js\").Size} Measurement.\n */\nexport var measureTextHeight = (function () {\n /**\n * @type {HTMLDivElement}\n */\n var measureElement;\n return function (fontSpec) {\n var height = textHeights[fontSpec];\n if (height == undefined) {\n if (WORKER_OFFSCREEN_CANVAS) {\n var font = getFontParameters(fontSpec);\n var metrics = measureText(fontSpec, 'Žg');\n var lineHeight = isNaN(Number(font.lineHeight))\n ? 1.2\n : Number(font.lineHeight);\n height =\n lineHeight *\n (metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n }\n else {\n if (!measureElement) {\n measureElement = document.createElement('div');\n measureElement.innerHTML = 'M';\n measureElement.style.minHeight = '0';\n measureElement.style.maxHeight = 'none';\n measureElement.style.height = 'auto';\n measureElement.style.padding = '0';\n measureElement.style.border = 'none';\n measureElement.style.position = 'absolute';\n measureElement.style.display = 'block';\n measureElement.style.left = '-99999px';\n }\n measureElement.style.font = fontSpec;\n document.body.appendChild(measureElement);\n height = measureElement.offsetHeight;\n document.body.removeChild(measureElement);\n }\n textHeights[fontSpec] = height;\n }\n return height;\n };\n})();\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {TextMetrics} Text metrics.\n */\nfunction measureText(font, text) {\n if (!measureContext) {\n measureContext = createCanvasContext2D(1, 1);\n }\n if (font != measureFont) {\n measureContext.font = font;\n measureFont = measureContext.font;\n }\n return measureContext.measureText(text);\n}\n/**\n * @param {string} font Font.\n * @param {string} text Text.\n * @return {number} Width.\n */\nexport function measureTextWidth(font, text) {\n return measureText(font, text).width;\n}\n/**\n * Measure text width using a cache.\n * @param {string} font The font.\n * @param {string} text The text to measure.\n * @param {Object} cache A lookup of cached widths by text.\n * @return {number} The text width.\n */\nexport function measureAndCacheTextWidth(font, text, cache) {\n if (text in cache) {\n return cache[text];\n }\n var width = measureTextWidth(font, text);\n cache[text] = width;\n return width;\n}\n/**\n * @param {TextState} baseStyle Base style.\n * @param {Array} chunks Text chunks to measure.\n * @return {{width: number, height: number, widths: Array, heights: Array, lineWidths: Array}}} Text metrics.\n */\nexport function getTextDimensions(baseStyle, chunks) {\n var widths = [];\n var heights = [];\n var lineWidths = [];\n var width = 0;\n var lineWidth = 0;\n var height = 0;\n var lineHeight = 0;\n for (var i = 0, ii = chunks.length; i <= ii; i += 2) {\n var text = chunks[i];\n if (text === '\\n' || i === ii) {\n width = Math.max(width, lineWidth);\n lineWidths.push(lineWidth);\n lineWidth = 0;\n height += lineHeight;\n continue;\n }\n var font = chunks[i + 1] || baseStyle.font;\n var currentWidth = measureTextWidth(font, text);\n widths.push(currentWidth);\n lineWidth += currentWidth;\n var currentHeight = measureTextHeight(font);\n heights.push(currentHeight);\n lineHeight = Math.max(lineHeight, currentHeight);\n }\n return { width: width, height: height, widths: widths, heights: heights, lineWidths: lineWidths };\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {number} rotation Rotation.\n * @param {number} offsetX X offset.\n * @param {number} offsetY Y offset.\n */\nexport function rotateAtOffset(context, rotation, offsetX, offsetY) {\n if (rotation !== 0) {\n context.translate(offsetX, offsetY);\n context.rotate(rotation);\n context.translate(-offsetX, -offsetY);\n }\n}\n/**\n * @param {CanvasRenderingContext2D} context Context.\n * @param {import(\"../transform.js\").Transform|null} transform Transform.\n * @param {number} opacity Opacity.\n * @param {Label|HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} labelOrImage Label.\n * @param {number} originX Origin X.\n * @param {number} originY Origin Y.\n * @param {number} w Width.\n * @param {number} h Height.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../size.js\").Size} scale Scale.\n */\nexport function drawImageOrLabel(context, transform, opacity, labelOrImage, originX, originY, w, h, x, y, scale) {\n context.save();\n if (opacity !== 1) {\n context.globalAlpha *= opacity;\n }\n if (transform) {\n context.setTransform.apply(context, transform);\n }\n if ( /** @type {*} */(labelOrImage).contextInstructions) {\n // label\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n executeLabelInstructions(/** @type {Label} */ (labelOrImage), context);\n }\n else if (scale[0] < 0 || scale[1] < 0) {\n // flipped image\n context.translate(x, y);\n context.scale(scale[0], scale[1]);\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, 0, 0, w, h);\n }\n else {\n // if image not flipped translate and scale can be avoided\n context.drawImage(\n /** @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} */ (labelOrImage), originX, originY, w, h, x, y, w * scale[0], h * scale[1]);\n }\n context.restore();\n}\n/**\n * @param {Label} label Label.\n * @param {CanvasRenderingContext2D} context Context.\n */\nfunction executeLabelInstructions(label, context) {\n var contextInstructions = label.contextInstructions;\n for (var i = 0, ii = contextInstructions.length; i < ii; i += 2) {\n if (Array.isArray(contextInstructions[i + 1])) {\n context[contextInstructions[i]].apply(context, contextInstructions[i + 1]);\n }\n else {\n context[contextInstructions[i]] = contextInstructions[i + 1];\n }\n }\n}\n//# sourceMappingURL=canvas.js.map","/**\n * @module ol/style/RegularShape\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport ImageState from '../ImageState.js';\nimport ImageStyle from './Image.js';\nimport { asArray } from '../color.js';\nimport { asColorLike } from '../colorlike.js';\nimport { createCanvasContext2D } from '../dom.js';\nimport { defaultFillStyle, defaultLineJoin, defaultLineWidth, defaultMiterLimit, defaultStrokeStyle, } from '../render/canvas.js';\n/**\n * Specify radius for regular polygons, or radius1 and radius2 for stars.\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} points Number of points for stars and regular polygons. In case of a polygon, the number of points\n * is the number of sides.\n * @property {number} [radius] Radius of a regular polygon.\n * @property {number} [radius1] First radius of a star. Ignored if radius is set.\n * @property {number} [radius2] Second radius of a star.\n * @property {number} [angle=0] Shape's angle in radians. A value of 0 will have one of the shape's point facing up.\n * @property {Array} [displacement=[0,0]] Displacement of the shape\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view.\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. Unless two dimensional scaling is required a better\n * result may be obtained with appropriate settings for `radius`, `radius1` and `radius2`.\n */\n/**\n * @typedef {Object} RenderOptions\n * @property {import(\"../colorlike.js\").ColorLike} [strokeStyle] StrokeStyle.\n * @property {number} strokeWidth StrokeWidth.\n * @property {number} size Size.\n * @property {Array} lineDash LineDash.\n * @property {number} lineDashOffset LineDashOffset.\n * @property {CanvasLineJoin} lineJoin LineJoin.\n * @property {number} miterLimit MiterLimit.\n */\n/**\n * @classdesc\n * Set regular shape style for vector features. The resulting shape will be\n * a regular polygon when `radius` is provided, or a star when `radius1` and\n * `radius2` are provided.\n * @api\n */\nvar RegularShape = /** @class */ (function (_super) {\n __extends(RegularShape, _super);\n /**\n * @param {Options} options Options.\n */\n function RegularShape(options) {\n var _this = this;\n /**\n * @type {boolean}\n */\n var rotateWithView = options.rotateWithView !== undefined ? options.rotateWithView : false;\n _this = _super.call(this, {\n opacity: 1,\n rotateWithView: rotateWithView,\n rotation: options.rotation !== undefined ? options.rotation : 0,\n scale: options.scale !== undefined ? options.scale : 1,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n }) || this;\n /**\n * @private\n * @type {Object}\n */\n _this.canvas_ = undefined;\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n _this.hitDetectionCanvas_ = null;\n /**\n * @private\n * @type {import(\"./Fill.js\").default}\n */\n _this.fill_ = options.fill !== undefined ? options.fill : null;\n /**\n * @private\n * @type {Array}\n */\n _this.origin_ = [0, 0];\n /**\n * @private\n * @type {number}\n */\n _this.points_ = options.points;\n /**\n * @protected\n * @type {number}\n */\n _this.radius_ =\n options.radius !== undefined ? options.radius : options.radius1;\n /**\n * @private\n * @type {number|undefined}\n */\n _this.radius2_ = options.radius2;\n /**\n * @private\n * @type {number}\n */\n _this.angle_ = options.angle !== undefined ? options.angle : 0;\n /**\n * @private\n * @type {import(\"./Stroke.js\").default}\n */\n _this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n _this.size_ = null;\n /**\n * @private\n * @type {RenderOptions}\n */\n _this.renderOptions_ = null;\n _this.render();\n return _this;\n }\n /**\n * Clones the style.\n * @return {RegularShape} The cloned style.\n * @api\n */\n RegularShape.prototype.clone = function () {\n var scale = this.getScale();\n var style = new RegularShape({\n fill: this.getFill() ? this.getFill().clone() : undefined,\n points: this.getPoints(),\n radius: this.getRadius(),\n radius2: this.getRadius2(),\n angle: this.getAngle(),\n stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n displacement: this.getDisplacement().slice(),\n });\n style.setOpacity(this.getOpacity());\n return style;\n };\n /**\n * Get the anchor point in pixels. The anchor determines the center point for the\n * symbolizer.\n * @return {Array} Anchor.\n * @api\n */\n RegularShape.prototype.getAnchor = function () {\n var size = this.size_;\n if (!size) {\n return null;\n }\n var displacement = this.getDisplacement();\n return [size[0] / 2 - displacement[0], size[1] / 2 + displacement[1]];\n };\n /**\n * Get the angle used in generating the shape.\n * @return {number} Shape's rotation in radians.\n * @api\n */\n RegularShape.prototype.getAngle = function () {\n return this.angle_;\n };\n /**\n * Get the fill style for the shape.\n * @return {import(\"./Fill.js\").default} Fill style.\n * @api\n */\n RegularShape.prototype.getFill = function () {\n return this.fill_;\n };\n /**\n * @return {HTMLCanvasElement} Image element.\n */\n RegularShape.prototype.getHitDetectionImage = function () {\n if (!this.hitDetectionCanvas_) {\n this.createHitDetectionCanvas_(this.renderOptions_);\n }\n return this.hitDetectionCanvas_;\n };\n /**\n * Get the image icon.\n * @param {number} pixelRatio Pixel ratio.\n * @return {HTMLCanvasElement} Image or Canvas element.\n * @api\n */\n RegularShape.prototype.getImage = function (pixelRatio) {\n var image = this.canvas_[pixelRatio];\n if (!image) {\n var renderOptions = this.renderOptions_;\n var context = createCanvasContext2D(renderOptions.size * pixelRatio, renderOptions.size * pixelRatio);\n this.draw_(renderOptions, context, pixelRatio);\n image = context.canvas;\n this.canvas_[pixelRatio] = image;\n }\n return image;\n };\n /**\n * Get the image pixel ratio.\n * @param {number} pixelRatio Pixel ratio.\n * @return {number} Pixel ratio.\n */\n RegularShape.prototype.getPixelRatio = function (pixelRatio) {\n return pixelRatio;\n };\n /**\n * @return {import(\"../size.js\").Size} Image size.\n */\n RegularShape.prototype.getImageSize = function () {\n return this.size_;\n };\n /**\n * @return {import(\"../ImageState.js\").default} Image state.\n */\n RegularShape.prototype.getImageState = function () {\n return ImageState.LOADED;\n };\n /**\n * Get the origin of the symbolizer.\n * @return {Array} Origin.\n * @api\n */\n RegularShape.prototype.getOrigin = function () {\n return this.origin_;\n };\n /**\n * Get the number of points for generating the shape.\n * @return {number} Number of points for stars and regular polygons.\n * @api\n */\n RegularShape.prototype.getPoints = function () {\n return this.points_;\n };\n /**\n * Get the (primary) radius for the shape.\n * @return {number} Radius.\n * @api\n */\n RegularShape.prototype.getRadius = function () {\n return this.radius_;\n };\n /**\n * Get the secondary radius for the shape.\n * @return {number|undefined} Radius2.\n * @api\n */\n RegularShape.prototype.getRadius2 = function () {\n return this.radius2_;\n };\n /**\n * Get the size of the symbolizer (in pixels).\n * @return {import(\"../size.js\").Size} Size.\n * @api\n */\n RegularShape.prototype.getSize = function () {\n return this.size_;\n };\n /**\n * Get the stroke style for the shape.\n * @return {import(\"./Stroke.js\").default} Stroke style.\n * @api\n */\n RegularShape.prototype.getStroke = function () {\n return this.stroke_;\n };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n RegularShape.prototype.listenImageChange = function (listener) { };\n /**\n * Load not yet loaded URI.\n */\n RegularShape.prototype.load = function () { };\n /**\n * @param {function(import(\"../events/Event.js\").default): void} listener Listener function.\n */\n RegularShape.prototype.unlistenImageChange = function (listener) { };\n /**\n * Calculate additional canvas size needed for the miter.\n * @param {string} lineJoin Line join\n * @param {number} strokeWidth Stroke width\n * @param {number} miterLimit Miter limit\n * @return {number} Additional canvas size needed\n * @private\n */\n RegularShape.prototype.calculateLineJoinSize_ = function (lineJoin, strokeWidth, miterLimit) {\n if (strokeWidth === 0 ||\n this.points_ === Infinity ||\n (lineJoin !== 'bevel' && lineJoin !== 'miter')) {\n return strokeWidth;\n }\n // m | ^\n // i | |\\ .\n // t >| #\\\n // e | |\\ \\ .\n // r \\s\\\n // | \\t\\ . .\n // \\r\\ . .\n // | \\o\\ . . . . .\n // e \\k\\ . . . .\n // | \\e\\ . . . . .\n // d \\ \\ . . . .\n // | _ _a_ _\\# . . .\n // r1 / ` . .\n // | . .\n // b / . .\n // | . .\n // / r2 . .\n // | . .\n // / . .\n // |α . .\n // / . .\n // ° center\n var r1 = this.radius_;\n var r2 = this.radius2_ === undefined ? r1 : this.radius2_;\n if (r1 < r2) {\n var tmp = r1;\n r1 = r2;\n r2 = tmp;\n }\n var points = this.radius2_ === undefined ? this.points_ : this.points_ * 2;\n var alpha = (2 * Math.PI) / points;\n var a = r2 * Math.sin(alpha);\n var b = Math.sqrt(r2 * r2 - a * a);\n var d = r1 - b;\n var e = Math.sqrt(a * a + d * d);\n var miterRatio = e / a;\n if (lineJoin === 'miter' && miterRatio <= miterLimit) {\n return miterRatio * strokeWidth;\n }\n // Calculate the distnce from center to the stroke corner where\n // it was cut short because of the miter limit.\n // l\n // ----+---- <= distance from center to here is maxr\n // /####|k ##\\\n // /#####^#####\\\n // /#### /+\\# s #\\\n // /### h/+++\\# t #\\\n // /### t/+++++\\# r #\\\n // /### a/+++++++\\# o #\\\n // /### p/++ fill +\\# k #\\\n ///#### /+++++^+++++\\# e #\\\n //#####/+++++/+\\+++++\\#####\\\n var k = strokeWidth / 2 / miterRatio;\n var l = (strokeWidth / 2) * (d / e);\n var maxr = Math.sqrt((r1 + k) * (r1 + k) + l * l);\n var bevelAdd = maxr - r1;\n if (this.radius2_ === undefined || lineJoin === 'bevel') {\n return bevelAdd * 2;\n }\n // If outer miter is over the miter limit the inner miter may reach through the\n // center and be longer than the bevel, same calculation as above but swap r1 / r2.\n var aa = r1 * Math.sin(alpha);\n var bb = Math.sqrt(r1 * r1 - aa * aa);\n var dd = r2 - bb;\n var ee = Math.sqrt(aa * aa + dd * dd);\n var innerMiterRatio = ee / aa;\n if (innerMiterRatio <= miterLimit) {\n var innerLength = (innerMiterRatio * strokeWidth) / 2 - r2 - r1;\n return 2 * Math.max(bevelAdd, innerLength);\n }\n return bevelAdd * 2;\n };\n /**\n * @return {RenderOptions} The render options\n * @protected\n */\n RegularShape.prototype.createRenderOptions = function () {\n var lineJoin = defaultLineJoin;\n var miterLimit = 0;\n var lineDash = null;\n var lineDashOffset = 0;\n var strokeStyle;\n var strokeWidth = 0;\n if (this.stroke_) {\n strokeStyle = this.stroke_.getColor();\n if (strokeStyle === null) {\n strokeStyle = defaultStrokeStyle;\n }\n strokeStyle = asColorLike(strokeStyle);\n strokeWidth = this.stroke_.getWidth();\n if (strokeWidth === undefined) {\n strokeWidth = defaultLineWidth;\n }\n lineDash = this.stroke_.getLineDash();\n lineDashOffset = this.stroke_.getLineDashOffset();\n lineJoin = this.stroke_.getLineJoin();\n if (lineJoin === undefined) {\n lineJoin = defaultLineJoin;\n }\n miterLimit = this.stroke_.getMiterLimit();\n if (miterLimit === undefined) {\n miterLimit = defaultMiterLimit;\n }\n }\n var add = this.calculateLineJoinSize_(lineJoin, strokeWidth, miterLimit);\n var maxRadius = Math.max(this.radius_, this.radius2_ || 0);\n var size = Math.ceil(2 * maxRadius + add);\n return {\n strokeStyle: strokeStyle,\n strokeWidth: strokeWidth,\n size: size,\n lineDash: lineDash,\n lineDashOffset: lineDashOffset,\n lineJoin: lineJoin,\n miterLimit: miterLimit,\n };\n };\n /**\n * @protected\n */\n RegularShape.prototype.render = function () {\n this.renderOptions_ = this.createRenderOptions();\n var size = this.renderOptions_.size;\n this.canvas_ = {};\n this.size_ = [size, size];\n };\n /**\n * @private\n * @param {RenderOptions} renderOptions Render options.\n * @param {CanvasRenderingContext2D} context The rendering context.\n * @param {number} pixelRatio The pixel ratio.\n */\n RegularShape.prototype.draw_ = function (renderOptions, context, pixelRatio) {\n context.scale(pixelRatio, pixelRatio);\n // set origin to canvas center\n context.translate(renderOptions.size / 2, renderOptions.size / 2);\n this.createPath_(context);\n if (this.fill_) {\n var color = this.fill_.getColor();\n if (color === null) {\n color = defaultFillStyle;\n }\n context.fillStyle = asColorLike(color);\n context.fill();\n }\n if (this.stroke_) {\n context.strokeStyle = renderOptions.strokeStyle;\n context.lineWidth = renderOptions.strokeWidth;\n if (context.setLineDash && renderOptions.lineDash) {\n context.setLineDash(renderOptions.lineDash);\n context.lineDashOffset = renderOptions.lineDashOffset;\n }\n context.lineJoin = renderOptions.lineJoin;\n context.miterLimit = renderOptions.miterLimit;\n context.stroke();\n }\n };\n /**\n * @private\n * @param {RenderOptions} renderOptions Render options.\n */\n RegularShape.prototype.createHitDetectionCanvas_ = function (renderOptions) {\n if (this.fill_) {\n var color = this.fill_.getColor();\n // determine if fill is transparent (or pattern or gradient)\n var opacity = 0;\n if (typeof color === 'string') {\n color = asArray(color);\n }\n if (color === null) {\n opacity = 1;\n }\n else if (Array.isArray(color)) {\n opacity = color.length === 4 ? color[3] : 1;\n }\n if (opacity === 0) {\n // if a transparent fill style is set, create an extra hit-detection image\n // with a default fill style\n var context = createCanvasContext2D(renderOptions.size, renderOptions.size);\n this.hitDetectionCanvas_ = context.canvas;\n this.drawHitDetectionCanvas_(renderOptions, context);\n }\n }\n if (!this.hitDetectionCanvas_) {\n this.hitDetectionCanvas_ = this.getImage(1);\n }\n };\n /**\n * @private\n * @param {CanvasRenderingContext2D} context The context to draw in.\n */\n RegularShape.prototype.createPath_ = function (context) {\n var points = this.points_;\n var radius = this.radius_;\n if (points === Infinity) {\n context.arc(0, 0, radius, 0, 2 * Math.PI);\n }\n else {\n var radius2 = this.radius2_ === undefined ? radius : this.radius2_;\n if (this.radius2_ !== undefined) {\n points *= 2;\n }\n var startAngle = this.angle_ - Math.PI / 2;\n var step = (2 * Math.PI) / points;\n for (var i = 0; i < points; i++) {\n var angle0 = startAngle + i * step;\n var radiusC = i % 2 === 0 ? radius : radius2;\n context.lineTo(radiusC * Math.cos(angle0), radiusC * Math.sin(angle0));\n }\n context.closePath();\n }\n };\n /**\n * @private\n * @param {RenderOptions} renderOptions Render options.\n * @param {CanvasRenderingContext2D} context The context.\n */\n RegularShape.prototype.drawHitDetectionCanvas_ = function (renderOptions, context) {\n // set origin to canvas center\n context.translate(renderOptions.size / 2, renderOptions.size / 2);\n this.createPath_(context);\n context.fillStyle = defaultFillStyle;\n context.fill();\n if (this.stroke_) {\n context.strokeStyle = renderOptions.strokeStyle;\n context.lineWidth = renderOptions.strokeWidth;\n if (renderOptions.lineDash) {\n context.setLineDash(renderOptions.lineDash);\n context.lineDashOffset = renderOptions.lineDashOffset;\n }\n context.lineJoin = renderOptions.lineJoin;\n context.miterLimit = renderOptions.miterLimit;\n context.stroke();\n }\n };\n return RegularShape;\n}(ImageStyle));\nexport default RegularShape;\n//# sourceMappingURL=RegularShape.js.map","/**\n * @module ol/style/Circle\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport RegularShape from './RegularShape.js';\n/**\n * @typedef {Object} Options\n * @property {import(\"./Fill.js\").default} [fill] Fill style.\n * @property {number} radius Circle radius.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {Array} [displacement=[0,0]] displacement\n * @property {number|import(\"../size.js\").Size} [scale=1] Scale. A two dimensional scale will produce an ellipse.\n * Unless two dimensional scaling is required a better result may be obtained with an appropriate setting for `radius`.\n * @property {number} [rotation=0] Rotation in radians\n * (positive rotation clockwise, meaningful only when used in conjunction with a two dimensional scale).\n * @property {boolean} [rotateWithView=false] Whether to rotate the shape with the view\n * (meaningful only when used in conjunction with a two dimensional scale).\n */\n/**\n * @classdesc\n * Set circle style for vector features.\n * @api\n */\nvar CircleStyle = /** @class */ (function (_super) {\n __extends(CircleStyle, _super);\n /**\n * @param {Options} [opt_options] Options.\n */\n function CircleStyle(opt_options) {\n var options = opt_options ? opt_options : {};\n return _super.call(this, {\n points: Infinity,\n fill: options.fill,\n radius: options.radius,\n stroke: options.stroke,\n scale: options.scale !== undefined ? options.scale : 1,\n rotation: options.rotation !== undefined ? options.rotation : 0,\n rotateWithView: options.rotateWithView !== undefined ? options.rotateWithView : false,\n displacement: options.displacement !== undefined ? options.displacement : [0, 0],\n }) || this;\n }\n /**\n * Clones the style.\n * @return {CircleStyle} The cloned style.\n * @api\n */\n CircleStyle.prototype.clone = function () {\n var scale = this.getScale();\n var style = new CircleStyle({\n fill: this.getFill() ? this.getFill().clone() : undefined,\n stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n radius: this.getRadius(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n displacement: this.getDisplacement().slice(),\n });\n style.setOpacity(this.getOpacity());\n return style;\n };\n /**\n * Set the circle radius.\n *\n * @param {number} radius Circle radius.\n * @api\n */\n CircleStyle.prototype.setRadius = function (radius) {\n this.radius_ = radius;\n this.render();\n };\n return CircleStyle;\n}(RegularShape));\nexport default CircleStyle;\n//# sourceMappingURL=Circle.js.map","/**\n * @module ol/style/Style\n */\nimport CircleStyle from './Circle.js';\nimport Fill from './Fill.js';\nimport GeometryType from '../geom/GeometryType.js';\nimport Stroke from './Stroke.js';\nimport { assert } from '../asserts.js';\n/**\n * A function that takes an {@link module:ol/Feature~Feature} and a `{number}`\n * representing the view's resolution. The function should return a\n * {@link module:ol/style/Style~Style} or an array of them. This way e.g. a\n * vector layer can be styled. If the function returns `undefined`, the\n * feature will not be rendered.\n *\n * @typedef {function(import(\"../Feature.js\").FeatureLike, number):(Style|Array + + +
+ + \ No newline at end of file diff --git a/style.css b/style.css new file mode 100755 index 0000000..43cb37d --- /dev/null +++ b/style.css @@ -0,0 +1,92 @@ +@import "node_modules/ol/ol.css"; + +html, body { + margin: 0; + height: 100%; +} +.a2g-map { + /*max-width:*/ + width: 100%; + height:450px; + background: #85ccf9; + position: relative; +} + +@keyframes spinner { + to { + transform: rotate(360deg); + } +} + +.spinner:after { + content: ""; + box-sizing: border-box; + position: absolute; + top: 50%; + left: 50%; + width: 40px; + height: 40px; + margin-top: -20px; + margin-left: -20px; + border-radius: 50%; + border: 5px solid rgba(180, 180, 180, 0.6); + border-top-color: rgba(0, 0, 0, 0.6); + animation: spinner 0.6s linear infinite; +} + + +.ol-popup { + position: absolute; + background-color: white; + box-shadow: 0 1px 4px rgba(0,0,0,0.2); + padding: 15px; + border-radius: 5px; + border: 1px solid #cccccc; + bottom: 12px; + left: -50px; + min-width: 250px; +} +.ol-popup:after, .ol-popup:before { + top: 100%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} +.ol-popup:after { + border-top-color: white; + border-width: 10px; + left: 48px; + margin-left: -10px; +} +.ol-popup:before { + border-top-color: #cccccc; + border-width: 11px; + left: 48px; + margin-left: -11px; +} +.ol-popup-closer { + text-decoration: none; + position: absolute; + top: 2px; + right: 8px; +} +.ol-popup-closer:after { + content: "✖"; +} + +.a2g-map:-webkit-full-screen { + height: 100%; + margin: 0; +} +.a2g-map:-ms-fullscreen { + height: 100%; +} +.a2g-map:fullscreen { + height: 100%; +} +.a2g-map .ol-rotate { + top: 3em; +} \ No newline at end of file diff --git a/vite.config.js b/vite.config.js new file mode 100755 index 0000000..791013e --- /dev/null +++ b/vite.config.js @@ -0,0 +1,5 @@ +export default { + build: { + sourcemap: true, + } +}