diff --git a/demo/addons/print/layouts/trackview.json b/demo/addons/print/layouts/trackview.json new file mode 100644 index 000000000..5f433c8a1 --- /dev/null +++ b/demo/addons/print/layouts/trackview.json @@ -0,0 +1,73 @@ +{ + "A4_LANDSCAPE": { + "format": "A4", + "northUrl": "demo/addons/print/img/NorthArrow.png", + "landscape": true, + "grid": { + "rows": "6", + "col": "6" + }, + "items": { + "mapPrint": { + "row": "2/6", + "col": "1/5" + }, + "informations": { + "title": "Informations", + "row": "1/2", + "col": "6/7", + "type": "informations" + }, + "comments": { + "row": "6/7", + "col": "1/7", + "type": "text" + }, + "legend": { + "row": "2/6", + "col": "5/7", + "type": "legend" + }, + "title": { + "row": "1/2", + "col": "1/6", + "type": "text" + } + } + }, + "A4_PORTRAIT": { + "format": "A4", + "landscape": false, + "grid": { + "rows": "6", + "col": "6" + }, + "items": { + "mapPrint": { + "row": "2/6", + "col": "1/5" + }, + "informations": { + "title": "Informations", + "row": "1/2", + "col": "6/7", + "type": "informations" + }, + "comments": { + "row": "6/7", + "col": "1/7", + "type": "text" + }, + "legend": { + "row": "2/6", + "col": "5/7", + "type": "legend" + }, + "title": { + "row": "1/2", + "col": "1/6", + "type": "text" + } + } + } +} diff --git a/demo/addons/trackview/config.json b/demo/addons/trackview/config.json new file mode 100644 index 000000000..ec8a294c7 --- /dev/null +++ b/demo/addons/trackview/config.json @@ -0,0 +1,216 @@ +{ + "type": "module", + "js": [ + "../../../lib/chartjs-3.7.1/Chart.min.js", + "lib/turf.min.js", + "js/custom-dropdown.js", + "js/trackview.js" + ], + "css": "/css/style.css", + "html": "./trackview.html", + "target": "page-content-wrapper", + "options": { + "mviewer": { + "parcours": [ + { + "id": 0, + "label": "Parcours 13 km", + "title": "Circuit", + "param": { + "pointKilometers": { + "display": "true" + }, + "tolerance": { + "value": 2 + } + }, + "style": { + "geometry": "LineString", + "segment": { + "color": { + "default": "#f00", + "selected": "#03224c" + }, + "width": { + "default": 3, + "selected": 5 + } + }, + "point": { + "color": { + "image": "#03224c", + "stroke": "#fff" + }, + "radius": 7, + "width": 2 + }, + "pointKilometers": { + "color": { + "image": "#fff", + "stroke": "f00", + "text": "#333" + }, + "radius": 9, + "width": 0.8 + }, + "graph": { + "type": "line", + "title": "Dénivelé du parcours en fonction de la distance parcourue", + "name": { + "xAxis": { + "text": "Distance (km)" + }, + "yAxis": { + "text": "Dénivelé (m)" + } + }, + "color": { + "segment": "#f00", + "point": "#f00" + } + } + }, + "stats": { + "type": "customlayer", + "layerId": "parcours_1", + "opacity": 0.8 + }, + "data": { + "url": "demo/trackview/data/parcours_13km.gpx" + } + }, + { + "id": 1, + "label": "Parcours 5 km", + "title": "Circuit", + "param": { + "pointKilometers": { + "display": "false" + }, + "tolerance": { + "value": 2 + } + }, + "style": { + "geometry": "LineString", + "segment": { + "color": { + "default": "#f00", + "selected": "#03224c" + }, + "width": { + "default": 3, + "selected": 5 + } + }, + "point": { + "color": { + "image": "#03224c", + "stroke": "#fff" + }, + "radius": 7, + "width": 2 + }, + "pointKilometers": { + "color": { + "image": "#fff", + "stroke": "f00", + "text": "#333" + }, + "radius": 9, + "width": 0.8 + }, + "graph": { + "type": "line", + "title": "Dénivelé du parcours en fonction de la distance parcourue", + "name": { + "xAxis": { + "text": "Distance (km)" + }, + "yAxis": { + "text": "Dénivelé (m)" + } + }, + "color": { + "segment": "#f00", + "point": "#f00" + } + } + }, + "stats": { + "type": "customlayer", + "layerId": "parcours_1", + "opacity": 0.8 + }, + "data": { + "url": "demo/trackview/data/parcours_5km.gpx" + } + }, + { + "id": 2, + "label": "Parcours VTT", + "title": "Circuit", + "param": { + "pointKilometers": { + "display": "true" + } + }, + "style": { + "geometry": "LineString", + "segment": { + "color": { + "default": "#f00", + "selected": "#0f0" + }, + "width": { + "default": 3, + "selected": 5 + } + }, + "point": { + "color": { + "image": "#00f", + "stroke": "#fff" + }, + "radius": 7, + "width": 2 + }, + "pointKilometers": { + "color": { + "image": "#00f", + "stroke": "000", + "text": "#fff" + }, + "radius": 9, + "width": 3 + }, + "graph": { + "type": "line", + "title": "Dénivelé du parcours en fonction de la distance parcourue", + "name": { + "xAxis": { + "text": "Distance (km)" + }, + "yAxis": { + "text": "Dénivelé (m)" + } + }, + "color": { + "segment": "#0f0", + "point": "#00f" + } + } + }, + "stats": { + "type": "customlayer", + "layerId": "parcours_1", + "opacity": 0.8 + }, + "data": { + "url": "demo/trackview/data/pierre.gpx" + } + } + ] + } + } +} diff --git a/demo/addons/trackview/css/style.css b/demo/addons/trackview/css/style.css new file mode 100644 index 000000000..0cd7c3a91 --- /dev/null +++ b/demo/addons/trackview/css/style.css @@ -0,0 +1,149 @@ +#trackview-panel { + width: calc(100% - 50px); + height: auto; + position: fixed; + bottom: 0; + right: 0; + background-color: white; + border-color: lightblue; + filter: opacity(80%); +} + +#trackview-graph { + max-height: 230px; + width: 100%; +} + +.hidden { + display: none; +} + +#backgroundlayerstoolbar-default, #mviewerinfosbar, .ol-attribution.ol-unselectable.ol-control, .ol-scale-line.ol-unselectable { + z-index: 1; + margin-bottom: 232px; +} + +/* Parameters of the dropdown */ + +#trackview-dropdown-custom { + position: fixed; + margin: 60px 0 0 270px; /* For the position of the dropdown on the addon || Change this line if needed*/ + font-family: sans-serif; + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; +} + +.dropdown { + border-radius: 0.5em; + min-width: 11em; + position: relative; + margin: 2em; + padding: 0.5em; +} + +.dropdown * { + box-sizing: border-box; +} + +.select { + background: whitesmoke; + color: black; + display: flex; + justify-content: space-between; + align-items: center; + border: 2px rgb(182, 178, 178) solid; + border-radius: 0.5em; + padding: 1em; + cursor: pointer; + transition: background 0.3s; +} + +.select-clicked { + border: 2px gray solid; + box-shadow: 0 0 0.8em black; +} + +.select:hover { + background: rgb(230, 229, 229); + transform: scale(1.01); +} + +.caret { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid black; + transition: 0.3s; +} + +.caret-rotate { + transform: rotate(180deg); +} + +.menu { + list-style: none; + padding: 0.2em 0.5em; + background: white; + border: 1px #363a43 solid; + box-shadow: 0 0.5em 1em rgba(0, 0, 0, 0.2); + border-radius: 0.5em; + color: black; + position: absolute; + top: 4em; + left: 50%; + width: 90%; + transform: translateX(-50%); + opacity: 0; + display: none; + transition: 0.2s; + z-index: 1; +} + +.menu li { + padding: 0.7em 0.5em; + margin: 0.3em 0; + border-radius: 0.5em; + cursor: pointer; +} + +.menu li:hover { + background: lightgray; +} + +.menu .active { + background: lightgray; +} + +.menu-open { + display: block; + opacity: 1; +} + +/* The phone version */ + +.xs #backgroundlayerstoolbar-default, .xs #mviewerinfosbar, .xs .ol-attribution.ol-unselectable.ol-control, .xs .ol-scale-line.ol-unselectable { + margin-bottom: 210px; +} + +.xs #trackview-dropdown-custom { + margin: 60px 0 0 210px; +} + +.xs #wrapper.toggled-2 #trackview-panel { + width: 100%!important; +} + +/* The thematic menu */ + +#wrapper.toggled-2 #trackview-panel { + width: calc(100% - 50px)!important; + transition: all 0.5s ease; +} + +#wrapper #trackview-panel { + width: calc(100% - 250px)!important; + transition: all 0.5s ease; +} \ No newline at end of file diff --git a/demo/addons/trackview/img/legend.png b/demo/addons/trackview/img/legend.png new file mode 100644 index 000000000..0b7f22752 Binary files /dev/null and b/demo/addons/trackview/img/legend.png differ diff --git a/demo/addons/trackview/img/theme.png b/demo/addons/trackview/img/theme.png new file mode 100644 index 000000000..63b1b43f5 Binary files /dev/null and b/demo/addons/trackview/img/theme.png differ diff --git a/demo/addons/trackview/js/custom-dropdown.js b/demo/addons/trackview/js/custom-dropdown.js new file mode 100644 index 000000000..139178473 --- /dev/null +++ b/demo/addons/trackview/js/custom-dropdown.js @@ -0,0 +1,31 @@ +export function initDropdown() { + const dropdown = document.getElementById("trackview-dropdown-custom"); + const select = dropdown.querySelector(".select"); + const caret = dropdown.querySelector(".caret"); + const menu = dropdown.querySelector(".menu"); + const options = dropdown.querySelectorAll(".menu li"); + const selected = dropdown.querySelector(".selected"); + + select.addEventListener("click", () => { + select.classList.toggle("select-clicked"); + + caret.classList.toggle("caret-rotate"); + + menu.classList.toggle("menu-open"); + }); + + options.forEach((option) => { + option.addEventListener("click", () => { + selected.innerText = option.innerText; + select.classList.remove("selected-clicked"); + caret.classList.remove("caret-rotate"); + menu.classList.remove("menu-open"); + + options.forEach((option) => { + option.classList.remove("active"); + }); + + option.classList.add("active"); + }); + }); +} diff --git a/demo/addons/trackview/js/trackview.js b/demo/addons/trackview/js/trackview.js new file mode 100644 index 000000000..91ea4acec --- /dev/null +++ b/demo/addons/trackview/js/trackview.js @@ -0,0 +1,509 @@ +import { initDropdown } from "./custom-dropdown.js"; + +var trackview = (function () { + // Get all configurations + const tracksList = mviewer.customComponents.trackview.config.options.mviewer.parcours; + let currentTracks = tracksList[0]; + let currentSelectedSegmentId = 0; + + // ChartJs graph + let dataGraph; + + // Define global layer and source used for this add-on + let hiddenLayerGPX, + vectorLayerSegment, + sourceSegment, + vectorLayerPointKilometers, + sourcePointKilometers; + + /** + * This function is used to create the style of each kilometers points ( or other depending on the config file ). + * @param {*} feature Feature of the layer + * @returns {style} The style of each kilometers points ( or other... ) styleKilo + */ + var _styleKilo = function (feature) { + // define null stype if display false + let styleKilo = null; + if (currentTracks.param.pointKilometers.display === "true") { + styleKilo = new ol.style.Style({ + image: new ol.style.Circle({ + radius: currentTracks.style.pointKilometers.radius, + fill: new ol.style.Fill({ + color: currentTracks.style.pointKilometers.color.image, + }), + stroke: new ol.style.Stroke({ + color: currentTracks.style.pointKilometers.color.stroke, + width: currentTracks.style.pointKilometers.width, + }), + }), + text: new ol.style.Text({ + text: String(feature.getProperties().properties.id), + fill: new ol.style.Fill({ + color: currentTracks.style.pointKilometers.color.text, + }), + }), + }); + } + return styleKilo; + }; + + /** + * + * @param {*} feature + * @returns + */ + var _createSelectedSegementStyle = (feature) => { + const selectedSegment = new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: currentTracks.style.segment.color.selected, + width: currentTracks.style.segment.width.selected, + }), + }); + + // if current segment is the last selected add point on segment + if (currentSelectedSegmentId == feature.getProperties().properties.id) { + console.log("entré style"); + const geometry = feature.getGeometry(); + const coordinates = geometry.getCoordinates(); + const endCoordinate = coordinates[coordinates.length - 1]; + const selectedPoint = new ol.style.Style({ + geometry: new ol.geom.Point(endCoordinate), + image: new ol.style.Circle({ + radius: currentTracks.style.point.radius, + fill: new ol.style.Fill({ + color: currentTracks.style.point.color.image, + }), + stroke: new ol.style.Stroke({ + color: currentTracks.style.point.color.stroke, + width: currentTracks.style.point.width, + }), + }), + }); + return [selectedSegment, selectedPoint]; + } else if (currentSelectedSegmentId > feature.getProperties().properties.id) { + return [selectedSegment]; + } else { + const defaultSegment = new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: currentTracks.style.segment.color.default, + width: currentTracks.style.segment.width.default, + }), + }); + return [defaultSegment]; + } + }; + + /** + * This function allow you to initialize all of the layers and the styles presents on the map + * @params index + * @returns Nothing + */ + var _initLayer = (index) => { + currentTracks = tracksList[index]; + + // Mviewer layer creation + let mviewerCurrentTrackLayer = { + showintoc: true, + type: currentTracks.stats.type, + layerid: currentTracks.stats.layerId, + id: currentTracks.stats.layerId, + title: currentTracks.label, + vectorlegend: true, + visible: true, + opacity: currentTracks.stats.opacity, + tooltip: true, + }; + + // Define legend + mviewerCurrentTrackLayer.legend = { + items: [ + { + label: currentTracks.title, + geometry: currentTracks.style.geometry, + styles: [ + new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: currentTracks.style.segment.color.default, + width: currentTracks.style.segment.width.default, + }), + }), + ], + }, + ], + }; + + // Mviewer visible layer + vectorLayerSegment = new ol.layer.Vector({ + id: "segmentLayer", + source: new ol.source.Vector(), + style: _createSelectedSegementStyle, + }); + sourceSegment = vectorLayerSegment.getSource(); + mviewer.processLayer(mviewerCurrentTrackLayer, vectorLayerSegment); + mviewer.addLayer(mviewerCurrentTrackLayer); + + // Source layer with GPX data + hiddenLayerGPX = new ol.layer.Vector({ + source: new ol.source.Vector({ + url: currentTracks.data.url, + format: new ol.format.GPX(), + }), + style: null, + }); + mviewer.getMap().addLayer(hiddenLayerGPX); + + // Point layer each kilometers + vectorLayerPointKilometers = new ol.layer.Vector({ + source: new ol.source.Vector(), + style: _styleKilo, + }); + sourcePointKilometers = vectorLayerPointKilometers.getSource(); + mviewer.getMap().addLayer(vectorLayerPointKilometers); + + vectorLayerSegment.on("change:visible", function (event) { + const isVisible = vectorLayerSegment.getVisible(); + vectorLayerPointKilometers.setVisible(isVisible); + + if (!isVisible) { + // hide graph + document.getElementById("trackview-panel").classList.add("hidden"); + } else { + // show graph + document.getElementById("trackview-panel").classList.remove("hidden"); + } + }); + }; + + // features list could be in parameter of the function + // why _ here in function name and not in other function :) + /** + * This function is used to create feature with coordinates, and then, create an array to store, one feature and it distance. + * @params Nothing + * @returns {point[]} Array of points + */ + var _createFeatures = function () { + let featuresGPX = hiddenLayerGPX.getSource().getFeatures(); + + // If no feature nothing to do + if (featuresGPX.length === 0) { + console.error("There is no features !"); + return; + } + + // GPX is a multiString get all coordonate + let idKilometre = 1; + let distanceTotalForSegment = 0; + let coordinates = featuresGPX[0].getGeometry().getCoordinates()[0]; + let finalData = []; + let previousPoint; + let previousPointConvert; + let markerDistance = 1000; + + // Collect coordinates of all points in multiString order + for (let i = 0; i < coordinates.length; i++) { + let featureX = coordinates[i][0]; + let featureY = coordinates[i][1]; + let featureZ = coordinates[i][2]; + // Not used for the moment Time -- let featureT = coordinates[i][3]; + + // Get coordinates of each points to be used after + let currentPoint = [featureX, featureY]; + + // Conversion of the current point in other projection for a better manipulation + let currentPointConvert = ol.proj.transform(currentPoint, "EPSG:3857", "EPSG:4326"); + + // Only after first point + if (i > 0) { + const distanceCalc = + turf.distance(previousPointConvert, currentPointConvert) * 1000; // Distance between the current point and the previous one + + // If the distance is greater than the max distance, we create a point and a segment + if (distanceTotalForSegment + distanceCalc > markerDistance) { + const distanceManquante = (markerDistance - distanceTotalForSegment) / 1000; // We calculate the missing distance + markerDistance += 1000; + + // Get coords for the wanted distance + const segmentTurf = turf.lineString([ + previousPointConvert, + currentPointConvert, + ]); + const along = turf.along(segmentTurf, distanceManquante); + const pointCoords = along.geometry.coordinates; + + // Then, we create a new point with the coordinates of along + const olPoint = new ol.geom.Point(ol.proj.fromLonLat(pointCoords)); + + const feature = new ol.Feature({ + geometry: olPoint, + properties: { + id: idKilometre, + }, + }); + + // We add each feature to the source + sourcePointKilometers.addFeature(feature); + idKilometre++; + } + + // Create segment with point + var segment = new ol.geom.LineString([previousPoint, currentPoint]); + // Set high with pointEnd Z + distanceTotalForSegment += distanceCalc; + + // Creation of segment + let segmentFeature = new ol.Feature({ + geometry: segment, + properties: { + id: i, + distance: distanceTotalForSegment, + }, + }); + + // Finally, we add each segment feature to the segment source + sourceSegment.addFeature(segmentFeature); + } + finalData[i] = [distanceTotalForSegment, featureZ]; // Add distance and point in finalData array + // CurrentPoint.set('distance', distance); + + previousPoint = currentPoint; + previousPointConvert = currentPointConvert; + } + + dataGraph = _addGraph(finalData); + }; + + // VerticalLine plugin + const verticalLine = { + id: "verticalLine", + afterDatasetsDraw(chart, args, plugins) { + const { + ctx, + tooltip, + chartArea: { top, bottom, left, right, width, heigth }, + scales: { x, y }, + } = chart; + var xCoord = null; + + if (chart.tooltip?._active?.length) { + xCoord = x.getPixelForValue(tooltip.dataPoints[0].parsed.x); + } else { + xCoord = x.getPixelForValue(mviewer.pointHover / 1000); + } + ctx.save(); + ctx.beginPath(); + ctx.lineWidth = 2; + ctx.strokeStyle = "#03224c"; + ctx.setLineDash([6, 6]); + ctx.moveTo(xCoord, top); + ctx.lineTo(xCoord, bottom); + ctx.stroke(); + ctx.closePath(); + ctx.setLineDash([]); + }, + }; + + /** + * This function allow you to add a graph on the map to show the altitude of each parcours. + * @param {point} data Array of points + * @returns {chart} The graph who has create + */ + var _addGraph = function (data) { + let xAxisGraphData = []; + let yAxisGraphData = []; + + data.forEach(function (tab) { + xAxisGraphData.push(tab[0] / 1000); // In kilometers + yAxisGraphData.push(tab[1]); + }); + + // Define a max value for the graph that the data fill all the available space + const maxValeur = xAxisGraphData[xAxisGraphData.length - 1]; + + let trackLineChart = new Chart(document.getElementById("trackview-graph"), { + type: currentTracks.style.graph.type, + data: { + labels: xAxisGraphData, + datasets: [ + { + data: yAxisGraphData, + label: currentTracks.label, + pointBackgroundColor: currentTracks.style.graph.color.point, + borderColor: currentTracks.style.graph.color.segment, + fill: true, + }, + ], + }, + options: { + onHover: (event) => { + var points = trackLineChart.getElementsAtEventForMode(event, "index", { + intersect: false, + }); + + // if point exist + if (points.length) { + // update currentSelectedSegmentId + currentSelectedSegmentId = points[0].index; + vectorLayerSegment.changed(); + } + }, + responsive: true, + scales: { + x: { + type: "linear", + beginAtZero: true, + max: maxValeur, + title: { + display: true, + text: currentTracks.style.graph.name.xAxis.text, + }, + }, + y: { + title: { + display: true, + text: currentTracks.style.graph.name.yAxis.text, + }, + }, + }, + plugins: { + tooltip: { + borderWidth: 1, + borderColor: "white", + callbacks: { + label: function (tooltipItem) { + var dataItem = tooltipItem.raw; + return "Altitude " + dataItem + " m"; + }, + }, + }, + title: { + display: true, + text: currentTracks.style.graph.title, + }, + }, + interaction: { + intersect: false, + mode: "index", + }, + }, + plugins: [verticalLine], + }); + return trackLineChart; + }; + + /** + * This function is used to do a zoom on the features loaded. + * Zoom on global extend + buffer + * @returns Nothing + */ + var _zoomOnFeature = () => { + // Zoom on first feature + let firstfeature = hiddenLayerGPX.getSource().getFeatures()[0]; + + mviewer.getMap().getView().fit(firstfeature.getGeometry().getExtent(), { + duration: 3000, // Define the animation time in ms + maxZoom: 13.75, // Define the zoom max when the page is load + }); + }; + + /** + * This function is used to clear all of the items we need when the parcours is changing. + * @params Nothing + * @returns Nothing + */ + var _clearTool = () => { + var legend = document.querySelector( + `[data-layerid="${currentTracks.stats.layerId}"].mv-layer-details` + ); + + // If legend, we remove it + if (legend) { + legend.remove(); + } + + // If graph, delete all data and destroy him + if (dataGraph) { + dataGraph.data.datasets.forEach(function (dataset) { + dataset.data = null; + }); + dataGraph.destroy(); + } + + // Clear all source that we need + sourceSegment.clear(); + sourcePointKilometers.clear(); + }; + + /** + * This function allow you to initialize the trackview addon. + * @params Nothing + * @returns Nothing + */ + var _initTool = function () { + // Trackview-parcours dropdown + let dropdown = document.getElementById("trackview-parcours"); + + // Here we create the dropdown list + for (let i = 0; i < tracksList.length; i++) { + const li = document.createElement("li"); + li.value = i; + li.textContent = tracksList[i].label; + + dropdown.appendChild(li); + } + + // Here we check if the dropdown is clicked ( used ) + document.querySelector("#trackview-parcours").addEventListener("click", (e) => { + let itemSelected = e.target; + let itemValue = itemSelected.getAttribute("value"); + + // If an element is selected in the list + if (itemValue) { + _clearTool(); + _initLayer(itemValue); + + hiddenLayerGPX.getSource().once("change", function (e) { + if (hiddenLayerGPX.getSource().getState() === "ready") { + console.log("Features are loaded"); + _createFeatures(); + dataGraph.update(); + _zoomOnFeature(); + // Display graph + document.getElementById("trackview-panel").classList.remove("hidden"); + } + }); + } + }); + + // Calling function do init all layer + _initLayer(0); + + mviewer.getMap().once("rendercomplete", function (e) { + _zoomOnFeature(); // Calling fonction for zoom on the features + _createFeatures(); // Calling fonction for create all of the features + initDropdown(); // Calling the init of the dropdown + + /*********** Detect feature on the map ***********/ + mviewer.getMap().on("pointermove", function (event) { + mviewer.getMap().forEachFeatureAtPixel( + event.pixel, + function (feature, layer) { + // Check if the layer pointed is equal to the layer of interest + if (feature && layer === vectorLayerSegment) { + mviewer.pointHover = feature.getProperties().properties.distance; + currentSelectedSegmentId = feature.getProperties().properties.id; + dataGraph.update(); + vectorLayerSegment.changed(); + } + }, + { hitTolerance: currentTracks.param.tolerance.value } + ); // Value in pixel + }); + }); + }; + + return { + init: _initTool, + }; +})(); + +new CustomComponent("trackview", trackview.init); diff --git a/demo/addons/trackview/lib/turf.min.js b/demo/addons/trackview/lib/turf.min.js new file mode 100644 index 000000000..a85d8bd42 --- /dev/null +++ b/demo/addons/trackview/lib/turf.min.js @@ -0,0 +1,88 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).turf={})}(this,(function(t){"use strict";var e=6371008.8,n={centimeters:637100880,centimetres:637100880,degrees:57.22891354143274,feet:20902260.511392,inches:39.37*e,kilometers:6371.0088,kilometres:6371.0088,meters:e,metres:e,miles:3958.761333810546,millimeters:6371008800,millimetres:6371008800,nauticalmiles:e/1852,radians:1,yards:6967335.223679999},r={centimeters:100,centimetres:100,degrees:1/111325,feet:3.28084,inches:39.37,kilometers:.001,kilometres:.001,meters:1,metres:1,miles:1/1609.344,millimeters:1e3,millimetres:1e3,nauticalmiles:1/1852,radians:1/e,yards:1.0936133},i={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,millimeters:1e6,millimetres:1e6,yards:1.195990046};function o(t,e,n){void 0===n&&(n={});var r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=e||{},r.geometry=t,r}function s(t,e,n){switch(t){case"Point":return a(e).geometry;case"LineString":return h(e).geometry;case"Polygon":return l(e).geometry;case"MultiPoint":return d(e).geometry;case"MultiLineString":return g(e).geometry;case"MultiPolygon":return y(e).geometry;default:throw new Error(t+" is invalid")}}function a(t,e,n){if(void 0===n&&(n={}),!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!C(t[0])||!C(t[1]))throw new Error("coordinates must contain numbers");return o({type:"Point",coordinates:t},e,n)}function u(t,e,n){return void 0===n&&(n={}),f(t.map((function(t){return a(t,e)})),n)}function l(t,e,n){void 0===n&&(n={});for(var r=0,i=t;r=0))throw new Error("precision must be a positive number");var n=Math.pow(10,e||0);return Math.round(t*n)/n}function m(t,e){void 0===e&&(e="kilometers");var r=n[e];if(!r)throw new Error(e+" units is invalid");return t*r}function x(t,e){void 0===e&&(e="kilometers");var r=n[e];if(!r)throw new Error(e+" units is invalid");return t/r}function E(t,e){return w(x(t,e))}function b(t){var e=t%360;return e<0&&(e+=360),e}function w(t){return 180*(t%(2*Math.PI))/Math.PI}function I(t){return t%360*Math.PI/180}function N(t,e,n){if(void 0===e&&(e="kilometers"),void 0===n&&(n="kilometers"),!(t>=0))throw new Error("length must be a positive number");return m(x(t,e),n)}function S(t,e,n){if(void 0===e&&(e="meters"),void 0===n&&(n="kilometers"),!(t>=0))throw new Error("area must be a positive number");var r=i[e];if(!r)throw new Error("invalid original units");var o=i[n];if(!o)throw new Error("invalid final units");return t/r*o}function C(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}function P(t){return!!t&&t.constructor===Object}function M(t){if(!t)throw new Error("bbox is required");if(!Array.isArray(t))throw new Error("bbox must be an Array");if(4!==t.length&&6!==t.length)throw new Error("bbox must be an Array of 4 or 6 numbers");t.forEach((function(t){if(!C(t))throw new Error("bbox must only contain numbers")}))}function L(t){if(!t)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof t))throw new Error("id must be a number or a string")}var O=Object.freeze({__proto__:null,earthRadius:e,factors:n,unitsFactors:r,areaFactors:i,feature:o,geometry:s,point:a,points:u,polygon:l,polygons:c,lineString:h,lineStrings:p,featureCollection:f,multiLineString:g,multiPoint:d,multiPolygon:y,geometryCollection:v,round:_,radiansToLength:m,lengthToRadians:x,lengthToDegrees:E,bearingToAzimuth:b,radiansToDegrees:w,degreesToRadians:I,convertLength:N,convertArea:S,isNumber:C,isObject:P,validateBBox:M,validateId:L});function R(t,e,n){if(null!==t)for(var r,i,o,s,a,u,l,c,h=0,p=0,f=t.type,g="FeatureCollection"===f,d="Feature"===f,y=g?t.features.length:1,v=0;va||f>u||g>l)return s=o,a=n,u=f,l=g,void(i=0);var d=h([s,o],t.properties);if(!1===e(d,n,r,g,i))return!1;i++,s=o}))&&void 0}}}))}function V(t,e,n){var r=n,i=!1;return U(t,(function(t,o,s,a,u){r=!1===i&&void 0===n?t:e(r,t,o,s,a,u),i=!0})),r}function X(t,e){if(!t)throw new Error("geojson is required");z(t,(function(t,n,r){if(null!==t.geometry){var i=t.geometry.type,o=t.geometry.coordinates;switch(i){case"LineString":if(!1===e(t,n,r,0,0))return!1;break;case"Polygon":for(var s=0;st[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return t;throw new Error("coord must be GeoJSON Point or an Array of numbers")}function Q(t){if(Array.isArray(t))return t;if("Feature"===t.type){if(null!==t.geometry)return t.geometry.coordinates}else if(t.coordinates)return t.coordinates;throw new Error("coords must be GeoJSON Feature, Geometry Object or an Array")}function $(t){if(t.length>1&&C(t[0])&&C(t[1]))return!0;if(Array.isArray(t[0])&&t[0].length)return $(t[0]);throw new Error("coordinates must only contain numbers")}function tt(t,e,n){if(!e||!n)throw new Error("type and name required");if(!t||t.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+t.type)}function et(t,e,n){if(!t)throw new Error("No feature passed");if(!n)throw new Error(".featureOf() requires a name");if(!t||"Feature"!==t.type||!t.geometry)throw new Error("Invalid input to "+n+", Feature with geometry required");if(!t.geometry||t.geometry.type!==e)throw new Error("Invalid input to "+n+": must be a "+e+", given "+t.geometry.type)}function nt(t,e,n){if(!t)throw new Error("No featureCollection passed");if(!n)throw new Error(".collectionOf() requires a name");if(!t||"FeatureCollection"!==t.type)throw new Error("Invalid input to "+n+", FeatureCollection required");for(var r=0,i=t.features;r + * v. 1.2.0 + * https://github.com/RaumZeit/MarchingSquares.js + * + * MarchingSquaresJS is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MarchingSquaresJS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * As additional permission under GNU Affero General Public License version 3 + * section 7, third-party projects (personal or commercial) may distribute, + * include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the + * requirement that said third-party project for that reason alone becomes + * subject to any requirement of the GNU Affero General Public License version 3. + * Any modifications to MarchingSquaresJS, however, must be shared with the public + * and made available. + * + * In summary this: + * - allows you to use MarchingSquaresJS at no cost + * - allows you to use MarchingSquaresJS for both personal and commercial purposes + * - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any + * license as long as this license notice is included + * - enables you to keep the source code of your program that uses MarchingSquaresJS + * undisclosed + * - forces you to share any modifications you have made to MarchingSquaresJS, + * e.g. bug-fixes + * + * You should have received a copy of the GNU Affero General Public License + * along with MarchingSquaresJS. If not, see . + */function ft(t,e,n){n=n||{};for(var r=Object.keys(ht),i=0;i=0&&y>=0&&y=0;h--)if(Math.abs(e[h][0][0]-l)<=r&&Math.abs(e[h][0][1]-c)<=r){for(var p=a.path.length-2;p>=0;--p)e[h].unshift(a.path[p]);u=!0;break}u||(e[n++]=a.path)}var f}))})),e}(function(t,e){for(var n=t.length-1,r=t[0].length-1,i={rows:n,cols:r,cells:[]},o=0;o=e?8:0,a|=l>=e?4:0,a|=c>=e?2:0;var p,f,g,d,y=!1;if(5===(a|=h>=e?1:0)||10===a){var v=(u+l+c+h)/4;5===a&&vn;){if(r-n>600){var o=r-n+1,s=e-n+1,a=Math.log(o),u=.5*Math.exp(2*a/3),l=.5*Math.sqrt(a*u*(o-u)/o)*(s-o/2<0?-1:1);bt(t,e,Math.max(n,Math.floor(e-s*u/o+l)),Math.min(r,Math.floor(e+(o-s)*u/o+l)),i)}var c=t[e],h=n,p=r;for(wt(t,n,e),i(t[r],c)>0&&wt(t,n,r);h0;)p--}0===i(t[n],c)?wt(t,n,p):wt(t,++p,r),p<=e&&(n=p+1),e<=p&&(r=p-1)}}function wt(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function It(t,e){return te?1:0}mt.default=xt;var Nt=Ct,St=Ct;function Ct(t,e){if(!(this instanceof Ct))return new Ct(t,e);this._maxEntries=Math.max(4,t||9),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),e&&this._initFormat(e),this.clear()}function Pt(t,e,n){if(!n)return e.indexOf(t);for(var r=0;r=t.minX&&e.maxY>=t.minY}function Gt(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function qt(t,e,n,r,i){for(var o,s=[e,n];s.length;)(n=s.pop())-(e=s.pop())<=r||(o=e+Math.ceil((n-e)/r/2)*r,mt(t,o,e,n,i),s.push(e,o,o,n))}function Bt(t){var e={exports:{}};return t(e,e.exports),e.exports}Ct.prototype={all:function(){return this._all(this.data,[])},search:function(t){var e=this.data,n=[],r=this.toBBox;if(!kt(t,e))return n;for(var i,o,s,a,u=[];e;){for(i=0,o=e.children.length;i=0&&o[e].children.length>this._maxEntries;)this._split(o,e),e--;this._adjustParentBBoxes(i,o,e)},_split:function(t,e){var n=t[e],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);var o=this._chooseSplitIndex(n,i,r),s=Gt(n.children.splice(o,n.children.length-o));s.height=n.height,s.leaf=n.leaf,Mt(n,this.toBBox),Mt(s,this.toBBox),e?t[e-1].children.push(s):this._splitRoot(n,s)},_splitRoot:function(t,e){this.data=Gt([t,e]),this.data.height=t.height+1,this.data.leaf=!1,Mt(this.data,this.toBBox)},_chooseSplitIndex:function(t,e,n){var r,i,o,s,a,u,l,c,h,p,f,g,d,y;for(u=l=1/0,r=e;r<=n-e;r++)i=Lt(t,0,r,this.toBBox),o=Lt(t,r,n,this.toBBox),h=i,p=o,f=void 0,g=void 0,d=void 0,y=void 0,f=Math.max(h.minX,p.minX),g=Math.max(h.minY,p.minY),d=Math.min(h.maxX,p.maxX),y=Math.min(h.maxY,p.maxY),s=Math.max(0,d-f)*Math.max(0,y-g),a=At(i)+At(o),s=e;i--)o=t.children[i],Ot(u,t.leaf?s(o):o),l+=Dt(u);return l},_adjustParentBBoxes:function(t,e,n){for(var r=n;r>=0;r--)Ot(e[r],t)},_condense:function(t){for(var e,n=t.length-1;n>=0;n--)0===t[n].children.length?n>0?(e=t[n-1].children).splice(e.indexOf(t[n]),1):this.clear():Mt(t[n],this.toBBox)},_initFormat:function(t){var e=["return a"," - b",";"];this.compareMinX=new Function("a","b",e.join(t[0])),this.compareMinY=new Function("a","b",e.join(t[1])),this.toBBox=new Function("a","return {minX: a"+t[0]+", minY: a"+t[1]+", maxX: a"+t[2]+", maxY: a"+t[3]+"};")}},Nt.default=St;var zt=function(t,e,n){var r=t*e,i=jt*t,o=i-(i-t),s=t-o,a=jt*e,u=a-(a-e),l=e-u,c=s*l-(r-o*u-s*u-o*l);if(n)return n[0]=c,n[1]=r,n;return[c,r]},jt=+(Math.pow(2,27)+1);var Ut=function(t,e){var n=0|t.length,r=0|e.length;if(1===n&&1===r)return function(t,e){var n=t+e,r=n-t,i=t-(n-r)+(e-r);if(i)return[i,n];return[n]}(t[0],e[0]);var i,o,s=new Array(n+r),a=0,u=0,l=0,c=Math.abs,h=t[u],p=c(h),f=e[l],g=c(f);p=r?(i=h,(u+=1)=r?(i=h,(u+=1)>1;return["sum(",n(t.slice(0,e)),",",n(t.slice(e)),")"].join("")}function r(t){if(2===t.length)return[["sum(prod(",t[0][0],",",t[1][1],"),prod(-",t[0][1],",",t[1][0],"))"].join("")];for(var i=[],o=0;o0){if(s<=0)return a;r=i+s}else{if(!(i<0))return a;if(s>=0)return a;r=-(i+s)}var u=33306690738754716e-32*r;return a>=u||a<=-u?a:o(t,e,n)},function(t,e,n,r){var i=t[0]-r[0],o=e[0]-r[0],a=n[0]-r[0],u=t[1]-r[1],l=e[1]-r[1],c=n[1]-r[1],h=t[2]-r[2],p=e[2]-r[2],f=n[2]-r[2],g=o*c,d=a*l,y=a*u,v=i*c,_=i*l,m=o*u,x=h*(g-d)+p*(y-v)+f*(_-m),E=7771561172376103e-31*((Math.abs(g)+Math.abs(d))*Math.abs(h)+(Math.abs(y)+Math.abs(v))*Math.abs(p)+(Math.abs(_)+Math.abs(m))*Math.abs(f));return x>E||-x>E?x:s(t,e,n,r)}];function u(t){var e=a[t.length];return e||(e=a[t.length]=i(t.length)),e.apply(void 0,t)}!function(){for(;a.length<=5;)a.push(i(a.length));for(var e=[],n=["slow"],r=0;r<=5;++r)e.push("a"+r),n.push("o"+r);var o=["function getOrientation(",e.join(),"){switch(arguments.length){case 0:case 1:return 0;"];for(r=2;r<=5;++r)o.push("case ",r,":return o",r,"(",e.slice(0,r).join(),");");o.push("}var s=new Array(arguments.length);for(var i=0;i1&&Jt(t[o[l-2]],t[o[l-1]],u)<=0;)l-=1,o.pop();for(o.push(a),l=s.length;l>1&&Jt(t[s[l-2]],t[s[l-1]],u)>=0;)l-=1,s.pop();s.push(a)}n=new Array(s.length+o.length-2);for(var c=0,h=(r=0,o.length);r0;--p)n[c++]=s[p];return n},Jt=Ht[3];var Zt=Qt,Kt=Qt;function Qt(t,e){if(!(this instanceof Qt))return new Qt(t,e);if(this.data=t||[],this.length=this.data.length,this.compare=e||$t,this.length>0)for(var n=(this.length>>1)-1;n>=0;n--)this._down(n)}function $t(t,e){return te?1:0}Qt.prototype={push:function(t){this.data.push(t),this.length++,this._up(this.length-1)},pop:function(){if(0!==this.length){var t=this.data[0];return this.length--,this.length>0&&(this.data[0]=this.data[this.length],this._down(0)),this.data.pop(),t}},peek:function(){return this.data[0]},_up:function(t){for(var e=this.data,n=this.compare,r=e[t];t>0;){var i=t-1>>1,o=e[i];if(n(r,o)>=0)break;e[t]=o,t=i}e[t]=r},_down:function(t){for(var e=this.data,n=this.compare,r=this.length>>1,i=e[t];t=0)break;e[t]=a,t=o}e[t]=i}},Zt.default=Kt;var te=function(t,e){for(var n=t[0],r=t[1],i=!1,o=0,s=e.length-1;or!=c>r&&n<(l-a)*(r-u)/(c-u)+a&&(i=!i)}return i},ee=Ht[3],ne=ie,re=ie;function ie(t,e,n){e=Math.max(0,void 0===e?2:e),n=n||0;for(var r,i=function(t){for(var e=t[0],n=t[0],r=t[0],i=t[0],o=0;or[0]&&(r=s),s[1]i[1]&&(i=s)}var a=[e,n,r,i],u=a.slice();for(o=0;oo||a.push({node:c,dist:h})}for(;a.length&&!a.peek().node.children;){var p=a.pop(),f=p.node,g=fe(f,e,n),d=fe(f,r,i);if(p.dist=e.minX&&t[0]<=e.maxX&&t[1]>=e.minY&&t[1]<=e.maxY}function le(t,e,n){for(var r,i,o,s,a=Math.min(t[0],e[0]),u=Math.min(t[1],e[1]),l=Math.max(t[0],e[0]),c=Math.max(t[1],e[1]),h=n.search({minX:a,minY:u,maxX:l,maxY:c}),p=0;p0!=ee(r,i,s)>0&&ee(o,s,r)>0!=ee(o,s,i)>0)return!1;return!0}function ce(t){var e=t.p,n=t.next.p;return t.minX=Math.min(e[0],n[0]),t.minY=Math.min(e[1],n[1]),t.maxX=Math.max(e[0],n[0]),t.maxY=Math.max(e[1],n[1]),t}function he(t,e){var n={p:t,prev:null,next:null,minX:0,minY:0,maxX:0,maxY:0};return e?(n.next=e.next,n.prev=e,e.next.prev=n,e.next=n):(n.prev=n,n.next=n),n}function pe(t,e){var n=t[0]-e[0],r=t[1]-e[1];return n*n+r*r}function fe(t,e,n){var r=e[0],i=e[1],o=n[0]-r,s=n[1]-i;if(0!==o||0!==s){var a=((t[0]-r)*o+(t[1]-i)*s)/(o*o+s*s);a>1?(r=n[0],i=n[1]):a>0&&(r+=o*a,i+=s*a)}return(o=t[0]-r)*o+(s=t[1]-i)*s}function ge(t,e,n,r,i,o,s,a){var u,l,c,h,p=n-t,f=r-e,g=s-i,d=a-o,y=t-i,v=e-o,_=p*p+f*f,m=p*g+f*d,x=g*g+d*d,E=p*y+f*v,b=g*y+d*v,w=_*x-m*m,I=w,N=w;0===w?(l=0,I=1,h=b,N=x):(h=_*b-m*E,(l=m*b-x*E)<0?(l=0,h=b,N=x):l>I&&(l=I,h=b+m,N=x)),h<0?(h=0,-E<0?l=0:-E>_?l=I:(l=-E,I=_)):h>N&&(h=N,-E+m<0?l=0:-E+m>_?l=I:(l=-E+m,I=_));var S=(1-(c=0===h?0:h/N))*i+c*s-((1-(u=0===l?0:l/I))*t+u*n),C=(1-c)*o+c*a-((1-u)*e+u*r);return S*S+C*C}function de(t,e){void 0===e&&(e={}),e.concavity=e.concavity||1/0;var n=[];if(R(t,(function(t){n.push([t[0],t[1]])})),!n.length)return null;var r=ne(n,e.concavity);return r.length>3?l([r]):null}function ye(t,e,n){if(void 0===n&&(n={}),!t)throw new Error("point is required");if(!e)throw new Error("polygon is required");var r=K(t),i=rt(e),o=i.type,s=e.bbox,a=i.coordinates;if(s&&!1===function(t,e){return e[0]<=t[0]&&e[1]<=t[1]&&e[2]>=t[0]&&e[3]>=t[1]}(r,s))return!1;"Polygon"===o&&(a=[a]);for(var u=!1,l=0;lt[1]!=l>t[1]&&t[0]<(u-s)*(t[1]-a)/(l-a)+s&&(r=!r)}return r}function _e(t,e){var n=[];return F(t,(function(t){var r=!1;if("Point"===t.geometry.type)q(e,(function(e){ye(t,e)&&(r=!0)})),r&&n.push(t);else{if("MultiPoint"!==t.geometry.type)throw new Error("Input geometry must be a Point or MultiPoint");var i=[];q(e,(function(e){R(t,(function(t){ye(t,e)&&(r=!0,i.push(t))}))})),r&&n.push(d(i))}})),f(n)}function me(t,e,n){void 0===n&&(n={});var r=K(t),i=K(e),o=I(i[1]-r[1]),s=I(i[0]-r[0]),a=I(r[1]),u=I(i[1]),l=Math.pow(Math.sin(o/2),2)+Math.pow(Math.sin(s/2),2)*Math.cos(a)*Math.cos(u);return m(2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)),n.units)}function xe(t,e){var n=!1;return f(function(t){if(t.length<3)return[];t.sort(be);var e,n,r,i,o,s,a=t.length-1,u=t[a].x,l=t[0].x,c=t[a].y,h=c,p=1e-12;for(;a--;)t[a].yh&&(h=t[a].y);var f,g=l-u,d=h-c,y=g>d?g:d,v=.5*(l+u),_=.5*(h+c),m=[new Ee({__sentinel:!0,x:v-20*y,y:_-y},{__sentinel:!0,x:v,y:_+20*y},{__sentinel:!0,x:v+20*y,y:_-y})],x=[],E=[];a=t.length;for(;a--;){for(E.length=0,f=m.length;f--;)(g=t[a].x-m[f].x)>0&&g*g>m[f].r?(x.push(m[f]),m.splice(f,1)):g*g+(d=t[a].y-m[f].y)*d>m[f].r||(E.push(m[f].a,m[f].b,m[f].b,m[f].c,m[f].c,m[f].a),m.splice(f,1));for(we(E),f=E.length;f;)n=E[--f],e=E[--f],r=t[a],i=n.x-e.x,o=n.y-e.y,s=2*(i*(r.y-n.y)-o*(r.x-n.x)),Math.abs(s)>p&&m.push(new Ee(e,n,r))}Array.prototype.push.apply(x,m),a=x.length;for(;a--;)(x[a].a.__sentinel||x[a].b.__sentinel||x[a].c.__sentinel)&&x.splice(a,1);return x}(t.features.map((function(t){var r={x:t.geometry.coordinates[0],y:t.geometry.coordinates[1]};return e?r.z=t.properties[e]:3===t.geometry.coordinates.length&&(n=!0,r.z=t.geometry.coordinates[2]),r}))).map((function(t){var e=[t.a.x,t.a.y],r=[t.b.x,t.b.y],i=[t.c.x,t.c.y],o={};return n?(e.push(t.a.z),r.push(t.b.z),i.push(t.c.z)):o={a:t.a.z,b:t.b.z,c:t.c.z},l([[e,r,i,e]],o)})))}ne.default=re;var Ee=function(t,e,n){this.a=t,this.b=e,this.c=n;var r,i,o=e.x-t.x,s=e.y-t.y,a=n.x-t.x,u=n.y-t.y,l=o*(t.x+e.x)+s*(t.y+e.y),c=a*(t.x+n.x)+u*(t.y+n.y),h=2*(o*(n.y-e.y)-s*(n.x-e.x));this.x=(u*l-s*c)/h,this.y=(o*c-a*l)/h,r=this.x-t.x,i=this.y-t.y,this.r=r*r+i*i};function be(t,e){return e.x-t.x}function we(t){var e,n,r,i,o,s=t.length;t:for(;s;)for(n=t[--s],e=t[--s],r=s;r;)if(o=t[--r],e===(i=t[--r])&&n===o||e===o&&n===i){t.splice(s,2),t.splice(r,2),s-=2;continue t}}function Ie(t){if(!t)throw new Error("geojson is required");switch(t.type){case"Feature":return Ne(t);case"FeatureCollection":return function(t){var e={type:"FeatureCollection"};return Object.keys(t).forEach((function(n){switch(n){case"type":case"features":return;default:e[n]=t[n]}})),e.features=t.features.map((function(t){return Ne(t)})),e}(t);case"Point":case"LineString":case"Polygon":case"MultiPoint":case"MultiLineString":case"MultiPolygon":case"GeometryCollection":return Ce(t);default:throw new Error("unknown GeoJSON type")}}function Ne(t){var e={type:"Feature"};return Object.keys(t).forEach((function(n){switch(n){case"type":case"properties":case"geometry":return;default:e[n]=t[n]}})),e.properties=Se(t.properties),e.geometry=Ce(t.geometry),e}function Se(t){var e={};return t?(Object.keys(t).forEach((function(n){var r=t[n];"object"==typeof r?null===r?e[n]=null:Array.isArray(r)?e[n]=r.map((function(t){return t})):e[n]=Se(r):e[n]=r})),e):e}function Ce(t){var e={type:t.type};return t.bbox&&(e.bbox=t.bbox),"GeometryCollection"===t.type?(e.geometries=t.geometries.map((function(t){return Ce(t)})),e):(e.coordinates=Pe(t.coordinates),e)}function Pe(t){var e=t;return"object"!=typeof e[0]?e.slice():e.map((function(t){return Pe(t)}))}function Me(t,e){if(void 0===e&&(e={}),!P(e=e||{}))throw new Error("options is invalid");var n=e.mutate;if("FeatureCollection"!==it(t))throw new Error("geojson must be a FeatureCollection");if(!t.features.length)throw new Error("geojson is empty");!1!==n&&void 0!==n||(t=Ie(t));var r=[],i=Y(t,(function(t,e){var n=function(t,e){var n,r=t.geometry.coordinates,i=e.geometry.coordinates,o=Le(r[0]),s=Le(r[r.length-1]),a=Le(i[0]),u=Le(i[i.length-1]);if(o===u)n=i.concat(r.slice(1));else if(a===s)n=r.concat(i.slice(1));else if(o===a)n=r.slice(1).reverse().concat(i);else{if(s!==u)return null;n=r.concat(i.reverse().slice(1))}return h(n)}(t,e);return n||(r.push(t),e)}));return i&&r.push(i),r.length?1===r.length?r[0]:g(r.map((function(t){return t.coordinates}))):null}function Le(t){return t[0].toString()+","+t[1].toString()}function Oe(t){return t}function Re(t,e){var n=function(t){if(null==t)return Oe;var e,n,r=t.scale[0],i=t.scale[1],o=t.translate[0],s=t.translate[1];return function(t,a){a||(e=n=0);var u=2,l=t.length,c=new Array(l);for(c[0]=(e+=t[0])*r+o,c[1]=(n+=t[1])*i+s;u1)for(var o,a,u=1,l=s(i[0]);ul&&(a=i[0],i[0]=i[u],i[u]=a,l=o);return i})).filter((function(t){return t.length>0}))}}var De=Object.prototype.hasOwnProperty;function Fe(t,e,n,r,i,o){3===arguments.length&&(r=o=Array,i=null);for(var s=new r(t=1<=t)throw new Error("full hashmap");c=s[l=l+1&u]}return s[l]=r,a[l]=o,o}function h(r,o){for(var l=e(r)&u,c=s[l],h=0;c!=i;){if(n(c,r))return a[l];if(++h>=t)throw new Error("full hashmap");c=s[l=l+1&u]}return s[l]=r,a[l]=o,o}function p(r,o){for(var l=e(r)&u,c=s[l],h=0;c!=i;){if(n(c,r))return a[l];if(++h>=t)break;c=s[l=l+1&u]}return o}function f(){for(var t=[],e=0,n=s.length;e>7^Be[2]^Be[3])}function je(t){var e,n,r,i,o=t.coordinates,s=t.lines,a=t.rings,u=function(){for(var t=Fe(1.4*o.length,E,b,Int32Array,-1,Int32Array),e=new Int32Array(o.length),n=0,r=o.length;n=0){var o=h[n];i===e&&o===r||i===r&&o===e||(++f,p[n]=1)}else c[n]=e,h[n]=r}}function E(t){return ze(o[t])}function b(t,e){return ke(o[t],o[e])}l=c=h=null;var w,I=function(t,e,n,r,i){3===arguments.length&&(r=Array,i=null);for(var o=new r(t=1<=t)throw new Error("full hashset");u=o[a=a+1&s]}return o[a]=r,!0}function l(r){for(var a=e(r)&s,u=o[a],l=0;u!=i;){if(n(u,r))return!0;if(++l>=t)break;u=o[a=a+1&s]}return!1}function c(){for(var t=[],e=0,n=o.length;e>1);er&&(r=o),si&&(i=s)}function u(t){t.forEach(a)}function l(t){t.forEach(u)}for(var c in t)o(t[c]);return r>=e&&i>=n?[e,n,r,i]:void 0}(t=Xe(t)),r=e>0&&n&&function(t,e,n){var r=e[0],i=e[1],o=e[2],s=e[3],a=o-r?(n-1)/(o-r):1,u=s-i?(n-1)/(s-i):1;function l(t){return[Math.round((t[0]-r)*a),Math.round((t[1]-i)*u)]}function c(t,e){for(var n,o,s,l,c,h=-1,p=0,f=t.length,g=new Array(f);++h2&&rn(n[i-3],n[i-1],n[i-2])&&n.splice(n.length-2,1))}if(n.push(e[e.length-1]),i=n.length,nn(e[0],e[e.length-1])&&i<4)throw new Error("invalid polygon");return rn(n[i-3],n[i-1],n[i-2])&&n.splice(n.length-2,1),n}function nn(t,e){return t[0]===e[0]&&t[1]===e[1]}function rn(t,e,n){var r=n[0],i=n[1],o=t[0],s=t[1],a=e[0],u=e[1],l=a-o,c=u-s;return 0===(r-o)*c-(i-s)*l&&(Math.abs(l)>=Math.abs(c)?l>0?o<=r&&r<=a:a<=r&&r<=o:c>0?s<=i&&i<=u:u<=i&&i<=s)}function on(t,e,n){var r=e.x,i=e.y,o=n.x-r,s=n.y-i;if(0!==o||0!==s){var a=((t.x-r)*o+(t.y-i)*s)/(o*o+s*s);a>1?(r=n.x,i=n.y):a>0&&(r+=o*a,i+=s*a)}return(o=t.x-r)*o+(s=t.y-i)*s}function sn(t,e,n,r,i){for(var o,s=r,a=e+1;as&&(o=a,s=u)}s>r&&(o-e>1&&sn(t,e,o,r,i),i.push(t[o]),n-o>1&&sn(t,o,n,r,i))}function an(t,e){var n=t.length-1,r=[t[0]];return sn(t,0,n,e,r),r.push(t[n]),r}function un(t,e,n){if(t.length<=2)return t;var r=void 0!==e?e*e:1;return t=an(t=n?t:function(t,e){for(var n,r,i,o,s,a=t[0],u=[a],l=1,c=t.length;le&&(u.push(n),a=n);return a!==n&&u.push(n),u}(t,r),r)}function ln(t,e,n){return un(t.map((function(t){return{x:t[0],y:t[1],z:t[2]}})),e,n).map((function(t){return t.z?[t.x,t.y,t.z]:[t.x,t.y]}))}function cn(t,e,n){return t.map((function(t){var r=t.map((function(t){return{x:t[0],y:t[1]}}));if(r.length<4)throw new Error("invalid polygon");for(var i=un(r,e,n).map((function(t){return[t.x,t.y]}));!hn(i);)i=un(r,e-=.01*e,n).map((function(t){return[t.x,t.y]}));return i[i.length-1][0]===i[0][0]&&i[i.length-1][1]===i[0][1]||i.push(i[0]),i}))}function hn(t){return!(t.length<3)&&!(3===t.length&&t[2][0]===t[0][0]&&t[2][1]===t[0][1])}var pn=function(){function t(t){this.points=t.points||[],this.duration=t.duration||1e4,this.sharpness=t.sharpness||.85,this.centers=[],this.controls=[],this.stepLength=t.stepLength||60,this.length=this.points.length,this.delay=0;for(var e=0;et&&(e.push(r),n=i)}return e},t.prototype.vector=function(t){var e=this.pos(t+10),n=this.pos(t-10);return{angle:180*Math.atan2(e.y-n.y,e.x-n.x)/3.14,speed:Math.sqrt((n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y)+(n.z-e.z)*(n.z-e.z))}},t.prototype.pos=function(t){var e=t-this.delay;e<0&&(e=0),e>this.duration&&(e=this.duration-1);var n=e/this.duration;if(n>=1)return this.points[this.length-1];var r=Math.floor((this.points.length-1)*n);return function(t,e,n,r,i){var o=function(t){var e=t*t;return[e*t,3*e*(1-t),3*t*(1-t)*(1-t),(1-t)*(1-t)*(1-t)]}(t);return{x:i.x*o[0]+r.x*o[1]+n.x*o[2]+e.x*o[3],y:i.y*o[0]+r.y*o[1]+n.y*o[2]+e.y*o[3],z:i.z*o[0]+r.z*o[1]+n.z*o[2]+e.z*o[3]}}((this.length-1)*n-r,this.points[r],this.controls[r][1],this.controls[r+1][0],this.points[r+1])},t}();function fn(t,e){void 0===e&&(e={});for(var n=e.resolution||1e4,r=e.sharpness||.85,i=[],o=rt(t).coordinates.map((function(t){return{x:t[0],y:t[1]}})),s=new pn({duration:n,points:o,sharpness:r}),a=function(t){var e=s.pos(t);Math.floor(t/100)%2==0&&i.push([e.x,e.y])},u=0;u=me(t.slice(0,2),[e,i])){var o=(n+i)/2;return[e,o-(r-e)/2,r,o+(r-e)/2]}var s=(e+r)/2;return[s-(i-n)/2,n,s+(i-n)/2,i]}function vn(t,e,n,r){void 0===r&&(r={});var i=K(t),o=I(i[0]),s=I(i[1]),u=I(n),l=x(e,r.units),c=Math.asin(Math.sin(s)*Math.cos(l)+Math.cos(s)*Math.sin(l)*Math.cos(u));return a([w(o+Math.atan2(Math.sin(u)*Math.sin(l)*Math.cos(s),Math.cos(l)-Math.sin(s)*Math.sin(c))),w(c)],r.properties)}function _n(t,e,n){void 0===n&&(n={});for(var r=n.steps||64,i=n.properties?n.properties:!Array.isArray(t)&&"Feature"===t.type&&t.properties?t.properties:{},o=[],s=0;s80*n){r=o=t[0],i=s=t[1];for(var g=n;go&&(o=a),u>s&&(s=u);l=0!==(l=Math.max(o-r,s-i))?1/l:0}return Pn(p,f,n,r,i,l),f}function Sn(t,e,n,r,i){var o,s;if(i===Hn(t,e,n,r)>0)for(o=e;o=e;o-=r)s=Vn(o,t[o],t[o+1],s);return s&&Bn(s,s.next)&&(Xn(s),s=s.next),s}function Cn(t,e){if(!t)return t;e||(e=t);var n,r=t;do{if(n=!1,r.steiner||!Bn(r,r.next)&&0!==qn(r.prev,r,r.next))r=r.next;else{if(Xn(r),(r=e=r.prev)===r.next)break;n=!0}}while(n||r!==e);return e}function Pn(t,e,n,r,i,o,s){if(t){!s&&o&&function(t,e,n,r){var i=t;do{null===i.z&&(i.z=Dn(i.x,i.y,e,n,r)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,n,r,i,o,s,a,u,l=1;do{for(n=t,t=null,o=null,s=0;n;){for(s++,r=n,a=0,e=0;e0||u>0&&r;)0!==a&&(0===u||!r||n.z<=r.z)?(i=n,n=n.nextZ,a--):(i=r,r=r.nextZ,u--),o?o.nextZ=i:t=i,i.prevZ=o,o=i;n=r}o.nextZ=null,l*=2}while(s>1)}(i)}(t,r,i,o);for(var a,u,l=t;t.prev!==t.next;)if(a=t.prev,u=t.next,o?Ln(t,r,i,o):Mn(t))e.push(a.i/n),e.push(t.i/n),e.push(u.i/n),Xn(t),t=u.next,l=u.next;else if((t=u)===l){s?1===s?Pn(t=On(t,e,n),e,n,r,i,o,2):2===s&&Rn(t,e,n,r,i,o):Pn(Cn(t),e,n,r,i,o,1);break}}}function Mn(t){var e=t.prev,n=t,r=t.next;if(qn(e,n,r)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(kn(e.x,e.y,n.x,n.y,r.x,r.y,i.x,i.y)&&qn(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function Ln(t,e,n,r){var i=t.prev,o=t,s=t.next;if(qn(i,o,s)>=0)return!1;for(var a=i.xo.x?i.x>s.x?i.x:s.x:o.x>s.x?o.x:s.x,c=i.y>o.y?i.y>s.y?i.y:s.y:o.y>s.y?o.y:s.y,h=Dn(a,u,e,n,r),p=Dn(l,c,e,n,r),f=t.prevZ,g=t.nextZ;f&&f.z>=h&&g&&g.z<=p;){if(f!==t.prev&&f!==t.next&&kn(i.x,i.y,o.x,o.y,s.x,s.y,f.x,f.y)&&qn(f.prev,f,f.next)>=0)return!1;if(f=f.prevZ,g!==t.prev&&g!==t.next&&kn(i.x,i.y,o.x,o.y,s.x,s.y,g.x,g.y)&&qn(g.prev,g,g.next)>=0)return!1;g=g.nextZ}for(;f&&f.z>=h;){if(f!==t.prev&&f!==t.next&&kn(i.x,i.y,o.x,o.y,s.x,s.y,f.x,f.y)&&qn(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;g&&g.z<=p;){if(g!==t.prev&&g!==t.next&&kn(i.x,i.y,o.x,o.y,s.x,s.y,g.x,g.y)&&qn(g.prev,g,g.next)>=0)return!1;g=g.nextZ}return!0}function On(t,e,n){var r=t;do{var i=r.prev,o=r.next.next;!Bn(i,o)&&zn(i,r,r.next,o)&&jn(i,o)&&jn(o,i)&&(e.push(i.i/n),e.push(r.i/n),e.push(o.i/n),Xn(r),Xn(r.next),r=t=o),r=r.next}while(r!==t);return r}function Rn(t,e,n,r,i,o){var s=t;do{for(var a=s.next.next;a!==s.prev;){if(s.i!==a.i&&Gn(s,a)){var u=Un(s,a);return s=Cn(s,s.next),u=Cn(u,u.next),Pn(s,e,n,r,i,o),void Pn(u,e,n,r,i,o)}a=a.next}s=s.next}while(s!==t)}function Tn(t,e){return t.x-e.x}function An(t,e){if(e=function(t,e){var n,r=e,i=t.x,o=t.y,s=-1/0;do{if(o<=r.y&&o>=r.next.y&&r.next.y!==r.y){var a=r.x+(o-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(a<=i&&a>s){if(s=a,a===i){if(o===r.y)return r;if(o===r.next.y)return r.next}n=r.x=r.x&&r.x>=c&&i!==r.x&&kn(on.x)&&jn(r,t)&&(n=r,p=u),r=r.next;return n}(t,e)){var n=Un(e,t);Cn(n,n.next)}}function Dn(t,e,n,r,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-n)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-r)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function Fn(t){var e=t,n=t;do{e.x=0&&(t-s)*(r-a)-(n-s)*(e-a)>=0&&(n-s)*(o-a)-(i-s)*(r-a)>=0}function Gn(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var n=t;do{if(n.i!==t.i&&n.next.i!==t.i&&n.i!==e.i&&n.next.i!==e.i&&zn(n,n.next,t,e))return!0;n=n.next}while(n!==t);return!1}(t,e)&&jn(t,e)&&jn(e,t)&&function(t,e){var n=t,r=!1,i=(t.x+e.x)/2,o=(t.y+e.y)/2;do{n.y>o!=n.next.y>o&&n.next.y!==n.y&&i<(n.next.x-n.x)*(o-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==t);return r}(t,e)}function qn(t,e,n){return(e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y)}function Bn(t,e){return t.x===e.x&&t.y===e.y}function zn(t,e,n,r){return!!(Bn(t,e)&&Bn(n,r)||Bn(t,r)&&Bn(n,e))||qn(t,e,n)>0!=qn(t,e,r)>0&&qn(n,r,t)>0!=qn(n,r,e)>0}function jn(t,e){return qn(t.prev,t,t.next)<0?qn(t,e,t.next)>=0&&qn(t,t.prev,e)>=0:qn(t,e,t.prev)<0||qn(t,t.next,e)<0}function Un(t,e){var n=new Yn(t.i,t.x,t.y),r=new Yn(e.i,e.x,e.y),i=t.next,o=e.prev;return t.next=e,e.prev=t,n.next=i,i.prev=n,r.next=n,n.prev=r,o.next=r,r.prev=o,r}function Vn(t,e,n,r){var i=new Yn(t,e,n);return r?(i.next=r.next,i.prev=r,r.next.prev=i,r.next=i):(i.prev=i,i.next=i),i}function Xn(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Yn(t,e,n){this.i=t,this.x=e,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Hn(t,e,n,r){for(var i=0,o=e,s=n-r;o0&&(r+=t[i-1].length,n.holes.push(r))}return n}(t),n=wn(e.vertices,e.holes,2),r=[],i=[];n.forEach((function(t,r){var o=n[r];i.push([e.vertices[2*o],e.vertices[2*o+1]])}));for(var o=0;oi?n:i,r>o?r:o]}(t,r),n.push(i),r})),n})(n,t.properties).forEach((function(t){t.id=e.length,e.push(t)}))}))}}(t,e)})),f(e)}Nn.deviation=function(t,e,n,r){var i=e&&e.length,o=i?e[0]*n:t.length,s=Math.abs(Hn(t,0,o,n));if(i)for(var a=0,u=e.length;a0&&(r+=t[i-1].length,n.holes.push(r))}return n},wn.default=In;var Kn=Bt((function(t,e){function n(t,e,n){void 0===n&&(n={});var r={type:"Feature"};return(0===n.id||n.id)&&(r.id=n.id),n.bbox&&(r.bbox=n.bbox),r.properties=e||{},r.geometry=t,r}function r(t,e,r){if(void 0===r&&(r={}),!t)throw new Error("coordinates is required");if(!Array.isArray(t))throw new Error("coordinates must be an Array");if(t.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!f(t[0])||!f(t[1]))throw new Error("coordinates must contain numbers");return n({type:"Point",coordinates:t},e,r)}function i(t,e,r){void 0===r&&(r={});for(var i=0,o=t;i=0))throw new Error("precision must be a positive number");var n=Math.pow(10,e||0);return Math.round(t*n)/n},e.radiansToLength=c,e.lengthToRadians=h,e.lengthToDegrees=function(t,e){return p(h(t,e))},e.bearingToAzimuth=function(t){var e=t%360;return e<0&&(e+=360),e},e.radiansToDegrees=p,e.degreesToRadians=function(t){return t%360*Math.PI/180},e.convertLength=function(t,e,n){if(void 0===e&&(e="kilometers"),void 0===n&&(n="kilometers"),!(t>=0))throw new Error("length must be a positive number");return c(h(t,e),n)},e.convertArea=function(t,n,r){if(void 0===n&&(n="meters"),void 0===r&&(r="kilometers"),!(t>=0))throw new Error("area must be a positive number");var i=e.areaFactors[n];if(!i)throw new Error("invalid original units");var o=e.areaFactors[r];if(!o)throw new Error("invalid final units");return t/i*o},e.isNumber=f,e.isObject=function(t){return!!t&&t.constructor===Object},e.validateBBox=function(t){if(!t)throw new Error("bbox is required");if(!Array.isArray(t))throw new Error("bbox must be an Array");if(4!==t.length&&6!==t.length)throw new Error("bbox must be an Array of 4 or 6 numbers");t.forEach((function(t){if(!f(t))throw new Error("bbox must only contain numbers")}))},e.validateId=function(t){if(!t)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof t))throw new Error("id must be a number or a string")}}));function Qn(t,e,n){if(null!==t)for(var r,i,o,s,a,u,l,c,h=0,p=0,f=t.type,g="FeatureCollection"===f,d="Feature"===f,y=g?t.features.length:1,v=0;va||p>u||f>l)return s=o,a=n,u=p,l=f,void(i=0);var g=Kn.lineString([s,o],t.properties);if(!1===e(g,n,r,f,i))return!1;i++,s=o}))&&void 0}}}))}function ir(t,e){if(!t)throw new Error("geojson is required");nr(t,(function(t,n,r){if(null!==t.geometry){var i=t.geometry.type,o=t.geometry.coordinates;switch(i){case"LineString":if(!1===e(t,n,r,0,0))return!1;break;case"Polygon":for(var s=0;st[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2] line1 must only contain 2 coordinates");if(2!==r.length)throw new Error(" line2 must only contain 2 coordinates");var i=n[0][0],o=n[0][1],s=n[1][0],u=n[1][1],l=r[0][0],c=r[0][1],h=r[1][0],p=r[1][1],f=(p-c)*(s-i)-(h-l)*(u-o),g=(h-l)*(o-c)-(p-c)*(i-l),d=(s-i)*(o-c)-(u-o)*(i-l);if(0===f)return null;var y=g/f,v=d/f;return y>=0&&y<=1&&v>=0&&v<=1?a([i+y*(s-i),o+y*(u-o)]):null}function Tr(t,e,n){void 0===n&&(n={});var r=a([1/0,1/0],{dist:1/0}),i=0;return z(t,(function(t){for(var o=Q(t),s=0;s0&&((v=y.features[0]).properties.dist=me(e,v,n),v.properties.location=i+me(u,v,n)),u.properties.dist180?-360:i[0]-o[0]>180?360:0,N(function(t,n,r){var i=r=void 0===r?e:Number(r),o=t[1]*Math.PI/180,s=n[1]*Math.PI/180,a=s-o,u=Math.abs(n[0]-t[0])*Math.PI/180;u>Math.PI&&(u-=2*Math.PI);var l=Math.log(Math.tan(s/2+Math.PI/4)/Math.tan(o/2+Math.PI/4)),c=Math.abs(l)>1e-11?a/l:Math.cos(o);return Math.sqrt(a*a+c*c*u*u)*i}(i,o),"meters",r.units)}function Dr(t,e,n){if(void 0===n&&(n={}),n.method||(n.method="geodesic"),n.units||(n.units="kilometers"),!t)throw new Error("pt is required");if(Array.isArray(t)?t=a(t):"Point"===t.type?t=o(t):et(t,"Point","point"),!e)throw new Error("line is required");Array.isArray(e)?e=h(e):"LineString"===e.type?e=o(e):et(e,"LineString","line");var r=1/0,i=t.geometry.coordinates;return U(e,(function(t){var e=t.geometry.coordinates[0],o=t.geometry.coordinates[1],s=function(t,e,n,r){var i=[n[0]-e[0],n[1]-e[1]],o=Fr([t[0]-e[0],t[1]-e[1]],i);if(o<=0)return kr(t,e,{method:r.method,units:"degrees"});var s=Fr(i,i);if(s<=o)return kr(t,n,{method:r.method,units:"degrees"});var a=o/s,u=[e[0]+a*i[0],e[1]+a*i[1]];return kr(t,u,{method:r.method,units:"degrees"})}(i,e,o,n);s=0&&l<=1&&(p.onLine1=!0),c>=0&&c<=1&&(p.onLine2=!0),!(!p.onLine1||!p.onLine2)&&[p.x,p.y])}function qr(t){for(var e=function(t){if("FeatureCollection"!==t.type)return"Feature"!==t.type?f([o(t)]):f([t]);return t}(t),n=xn(e),r=!1,i=0;!r&&i0){e+=Math.abs(Vr(t[0]));for(var n=1;n2){for(s=0;s=c&&p===i.length-1);p++){if(c>e&&0===o.length){if(!(s=e-c))return o.push(i[p]),h(o);a=mn(i[p],i[p-1])-180,u=vn(i[p],s,a,r),o.push(u.geometry.coordinates)}if(c>=n)return(s=n-c)?(a=mn(i[p],i[p-1])-180,u=vn(i[p],s,a,r),o.push(u.geometry.coordinates),h(o)):(o.push(i[p]),h(o));if(c>=e&&o.push(i[p]),p===i.length-1)return h(o);c+=me(i[p],i[p+1],r)}if(ci)return!1}else if(0!==f)return!1;return r?"start"===r?Math.abs(h)>=Math.abs(p)?h>0?a0?u=Math.abs(p)?h>0?a<=o&&o0?u<=s&&s=Math.abs(p)?h>0?a0?u=Math.abs(p)?h>0?a<=o&&o<=l:l<=o&&o<=a:p>0?u<=s&&s<=c:c<=s&&s<=u}function Zr(t,e){var n=rt(t),r=rt(e),i=n.type,o=r.type;switch(i){case"Point":switch(o){case"MultiPoint":return function(t,e){var n,r=!1;for(n=0;ne[0])&&(!(t[2]e[1])&&!(t[3] is required");if("number"!=typeof n)throw new Error(" must be a number");if("number"!=typeof r)throw new Error(" must be a number");!1!==i&&void 0!==i||(t=JSON.parse(JSON.stringify(t)));var o=Math.pow(10,n);return R(t,(function(t){!function(t,e,n){t.length>n&&t.splice(n,t.length);for(var r=0;r=1||u<=0||l>=1||l<=0))){var d=g,y=!o[d];y&&(o[d]=!0),e?i.push(e(g,t,n,c,h,u,s,a,p,f,l,y)):i.push(g)}}function d(t,e){var n,i,o,s,a=r[t][e],u=r[t][e+1];return a[0]p[e.isect].coord?-1:1}));for(u=[];b.length>0;){var C=b.pop(),P=C.isect,M=C.parent,L=C.winding,O=u.length,R=[p[P].coord],T=P;if(p[P].ringAndEdge1Walkable)var A=p[P].ringAndEdge1,D=p[P].nxtIsectAlongRingAndEdge1;else A=p[P].ringAndEdge2,D=p[P].nxtIsectAlongRingAndEdge2;for(;!ci(p[P].coord,p[D].coord);){R.push(p[D].coord);var F=void 0;for(r=0;r1)for(e=0;e=0==e}function li(t){for(var e=0,n=0;n1&&n.push(h(l)),f(n)}function xi(t,e){if(!e.features.length)throw new Error("lines must contain features");if(1===e.features.length)return e.features[0];var n,r=1/0;return F(e,(function(e){var i=Tr(e,t).properties.dist;ic&&f.push(vn(t,e,c,i).geometry.coordinates),h(f,u)}function wi(t){var e=t%360;return e<0&&(e+=360),e}function Ii(t,e){void 0===e&&(e={});var n=rt(t);switch(e.properties||"Feature"!==t.type||(e.properties=t.properties),n.type){case"Polygon":return Ni(n,e);case"MultiPolygon":return function(t,e){void 0===e&&(e={});var n=rt(t).coordinates,r=e.properties?e.properties:"Feature"===t.type?t.properties:{},i=[];return n.forEach((function(t){i.push(Si(t,r))})),f(i)}(n,e);default:throw new Error("invalid poly")}}function Ni(t,e){return void 0===e&&(e={}),Si(rt(t).coordinates,e.properties?e.properties:"Feature"===t.type?t.properties:{})}function Si(t,e){return t.length>1?g(t,e):h(t[0],e)}function Ci(t,e){var n,r,i;void 0===e&&(e={});var o=e.properties,s=null===(n=e.autoComplete)||void 0===n||n,a=null===(r=e.orderCoords)||void 0===r||r;switch(null!==(i=e.mutate)&&void 0!==i&&i||(t=Ie(t)),t.type){case"FeatureCollection":var u=[];return t.features.forEach((function(t){u.push(Q(Pi(t,{},s,a)))})),y(u,o);default:return Pi(t,o,s,a)}}function Pi(t,e,n,r){e=e||("Feature"===t.type?t.properties:{});var i=rt(t),o=i.coordinates,s=i.type;if(!o.length)throw new Error("line must contain coordinates");switch(s){case"LineString":return n&&(o=Mi(o)),l([o],e);case"MultiLineString":var a=[],u=0;return o.forEach((function(t){if(n&&(t=Mi(t)),r){var e=function(t){var e=t[0],n=t[1],r=t[2],i=t[3];return Math.abs(e-r)*Math.abs(n-i)}(Z(h(t)));e>u?(a.unshift(t),u=e):a.push(t)}else a.push(t)})),l(a,e);default:throw new Error("geometry type "+s+" is not supported")}}function Mi(t){var e=t[0],n=e[0],r=e[1],i=t[t.length-1],o=i[0],s=i[1];return n===o&&r===s||t.push(e),t}function Li(t,e){var n,r,i,o,s,a,u;for(r=1;r<=8;r*=2){for(n=[],o=!(Ri(i=t[t.length-1],e)&r),s=0;se[2]&&(n|=2),t[1]e[3]&&(n|=8),n}function Ti(t,e){for(var n=[],r=0,i=t;r0&&(o[0][0]===o[o.length-1][0]&&o[0][1]===o[o.length-1][1]||o.push(o[0]),o.length>=4&&n.push(o))}return n}vi.prototype.interpolate=function(t){var e=Math.sin((1-t)*this.g)/Math.sin(this.g),n=Math.sin(t*this.g)/Math.sin(this.g),r=e*Math.cos(this.start.y)*Math.cos(this.start.x)+n*Math.cos(this.end.y)*Math.cos(this.end.x),i=e*Math.cos(this.start.y)*Math.sin(this.start.x)+n*Math.cos(this.end.y)*Math.sin(this.end.x),o=e*Math.sin(this.start.y)+n*Math.sin(this.end.y),s=fi*Math.atan2(o,Math.sqrt(Math.pow(r,2)+Math.pow(i,2)));return[fi*Math.atan2(i,r),s]},vi.prototype.Arc=function(t,e){var n=[];if(!t||t<=2)n.push([this.start.lon,this.start.lat]),n.push([this.end.lon,this.end.lat]);else for(var r=1/(t-1),i=0;ip&&(d>c&&gc&&du&&(u=y)}var v=[];if(a&&u0&&Math.abs(x-n[m-1][0])>p){var E=parseFloat(n[m-1][0]),b=parseFloat(n[m-1][1]),w=parseFloat(n[m][0]),I=parseFloat(n[m][1]);if(E>-180&&E-180&&n[m-1][0]c&&E<180&&-180===w&&m+1c&&n[m-1][0]<180){_.push([180,n[m][1]]),m++,_.push([n[m][0],n[m][1]]);continue}if(Ec){var N=E;E=w,w=N;var S=b;b=I,I=S}if(E>c&&w=180&&Ec?180:-180,P]),(_=[]).push([n[m-1][0]>c?-180:180,P]),v.push(_)}else _=[],v.push(_);_.push([x,n[m][1]])}else _.push([n[m][0],n[m][1]])}}else{var M=[];v.push(M);for(var L=0;L=0;a--)if(l[a]!=c[a])return!1;for(a=l.length-1;a>=0;a--)if(u=l[a],!n(t[u],o[u],s))return!1;return typeof t==typeof o}(t,o,s))};function r(t){return null==t}function i(t){return!(!t||"object"!=typeof t||"number"!=typeof t.length)&&("function"==typeof t.copy&&"function"==typeof t.slice&&!(t.length>0&&"number"!=typeof t[0]))}}));function ki(t,e,n){if(void 0===n&&(n={}),!P(n=n||{}))throw new Error("options is invalid");var r,i=n.tolerance||0,o=[],s=Mr(),a=Zn(t);return s.load(a),U(e,(function(t){var e=!1;t&&(F(s.search(t),(function(n){if(!1===e){var o=Q(t).sort(),s=Q(n).sort();Fi(o,s)||(0===i?Wr(o[0],n)&&Wr(o[1],n):Tr(n,o[0]).properties.dist<=i&&Tr(n,o[1]).properties.dist<=i)?(e=!0,r=r?Gi(r,t):t):(0===i?Wr(s[0],t)&&Wr(s[1],t):Tr(t,s[0]).properties.dist<=i&&Tr(t,s[1]).properties.dist<=i)&&(r=r?Gi(r,n):n)}})),!1===e&&r&&(o.push(r),r=void 0))})),r&&o.push(r),f(o)}function Gi(t,e){var n=Q(e),r=Q(t),i=r[0],o=r[r.length-1],s=t.geometry.coordinates;return Fi(n[0],i)?s.unshift(n[1]):Fi(n[0],o)?s.push(n[1]):Fi(n[1],i)?s.unshift(n[0]):Fi(n[1],o)&&s.push(n[0]),t}function qi(t){var e=t%360;return e<0&&(e+=360),e}function Bi(t,e,n){var r;return void 0===n&&(n={}),(r=n.final?zi(K(e),K(t)):zi(K(t),K(e)))>180?-(360-r):r}function zi(t,e){var n=I(t[1]),r=I(e[1]),i=I(e[0]-t[0]);i>Math.PI&&(i-=2*Math.PI),i<-Math.PI&&(i+=2*Math.PI);var o=Math.log(Math.tan(r/2+Math.PI/4)/Math.tan(n/2+Math.PI/4));return(w(Math.atan2(i,o))+360)%360}function ji(t,n,r,i){void 0===i&&(i={});var o=n<0,s=N(Math.abs(n),i.units,"meters");o&&(s=-Math.abs(s));var u=K(t),l=function(t,n,r,i){i=void 0===i?e:Number(i);var o=n/i,s=t[0]*Math.PI/180,a=I(t[1]),u=I(r),l=o*Math.cos(u),c=a+l;Math.abs(c)>Math.PI/2&&(c=c>0?Math.PI-c:-Math.PI-c);var h=Math.log(Math.tan(c/2+Math.PI/4)/Math.tan(a/2+Math.PI/4)),p=Math.abs(h)>1e-11?l/h:Math.cos(a),f=o*Math.sin(u)/p;return[(180*(s+f)/Math.PI+540)%360-180,180*c/Math.PI]}(u,s,r);return l[0]+=l[0]-u[0]>180?-360:u[0]-l[0]>180?360:0,a(l,i.properties)}function Ui(t,e,n,r,i,o){for(var s=0;s0?Xi(e,a,i)<0||(i=a):n>0&&r<=0&&(Vi(e,a,o)||(o=a)),n=r}return[i,o]}function Vi(t,e,n){return Xi(t,e,n)>0}function Xi(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(n[0]-t[0])*(e[1]-t[1])}function Yi(t){for(var e,n,r=Q(t),i=0,o=1;o0}function Hi(t,e){switch("Feature"===t.type?t.geometry.type:t.type){case"GeometryCollection":return q(t,(function(t){Hi(t,e)})),t;case"LineString":return Wi(Q(t),e),t;case"Polygon":return Ji(Q(t),e),t;case"MultiLineString":return Q(t).forEach((function(t){Wi(t,e)})),t;case"MultiPolygon":return Q(t).forEach((function(t){Ji(t,e)})),t;case"Point":case"MultiPoint":return t}}function Wi(t,e){Yi(t)===e&&t.reverse()}function Ji(t,e){Yi(t[0])!==e&&t[0].reverse();for(var n=1;n + * v. 1.2.0 + * https://github.com/RaumZeit/MarchingSquares.js + * + * MarchingSquaresJS is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MarchingSquaresJS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * As additional permission under GNU Affero General Public License version 3 + * section 7, third-party projects (personal or commercial) may distribute, + * include, or link against UNMODIFIED VERSIONS of MarchingSquaresJS without the + * requirement that said third-party project for that reason alone becomes + * subject to any requirement of the GNU Affero General Public License version 3. + * Any modifications to MarchingSquaresJS, however, must be shared with the public + * and made available. + * + * In summary this: + * - allows you to use MarchingSquaresJS at no cost + * - allows you to use MarchingSquaresJS for both personal and commercial purposes + * - allows you to distribute UNMODIFIED VERSIONS of MarchingSquaresJS under any + * license as long as this license notice is included + * - enables you to keep the source code of your program that uses MarchingSquaresJS + * undisclosed + * - forces you to share any modifications you have made to MarchingSquaresJS, + * e.g. bug-fixes + * + * You should have received a copy of the GNU Affero General Public License + * along with MarchingSquaresJS. If not, see . + */(t,r),s=[],a=0;as?128:64,l|=hs?32:16,l|=ps?8:4;var g=+(l|=fs?2:1),d=0;if(17===l||18===l||33===l||34===l||38===l||68===l||72===l||98===l||102===l||132===l||136===l||137===l||152===l||153===l){var y=(c+h+p+f)/4;d=y>s?2:y0?(l=156,d=4):l=152:33===l?d>0?(l=139,d=4):l=137:72===l?d>0?(l=99,d=4):l=98:132===l&&(d>0?(l=39,d=4):l=38)}if(0!=l&&170!=l){var v,_,m,x,E,b,w,I;v=_=m=x=E=b=w=I=.5;var N=[];1===l?(m=1-Vo(e,p,f),I=1-Vo(e,c,f),N.push(Go[l])):169===l?(m=Vo(s,f,p),I=Vo(s,f,c),N.push(Go[l])):4===l?(b=1-Vo(e,h,p),x=Vo(e,f,p),N.push(Fo[l])):166===l?(b=Vo(s,p,h),x=1-Vo(s,p,f),N.push(Fo[l])):16===l?(E=Vo(e,p,h),_=Vo(e,c,h),N.push(Do[l])):154===l?(E=1-Vo(s,h,p),_=1-Vo(s,h,c),N.push(Do[l])):64===l?(w=Vo(e,f,c),v=1-Vo(e,h,c),N.push(Bo[l])):106===l?(w=1-Vo(s,c,f),v=Vo(s,c,h),N.push(Bo[l])):168===l?(x=Vo(s,f,p),m=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),N.push(ko[l]),N.push(Go[l])):2===l?(x=1-Vo(e,p,f),m=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),N.push(ko[l]),N.push(Go[l])):162===l?(E=Vo(s,p,h),b=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),N.push(ko[l]),N.push(Go[l])):8===l?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),N.push(Do[l]),N.push(Fo[l])):138===l?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),v=1-Vo(s,h,c),_=1-Vo(e,h,c),N.push(Do[l]),N.push(Fo[l])):32===l?(E=Vo(s,p,h),b=Vo(e,p,h),v=Vo(e,c,h),_=Vo(s,c,h),N.push(Do[l]),N.push(Fo[l])):42===l?(I=1-Vo(s,c,f),w=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h),N.push(qo[l]),N.push(Bo[l])):128===l&&(I=Vo(e,f,c),w=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c),N.push(qo[l]),N.push(Bo[l])),5===l?(b=1-Vo(e,h,p),I=1-Vo(e,c,f),N.push(Fo[l])):165===l?(b=Vo(s,p,h),I=Vo(s,f,c),N.push(Fo[l])):20===l?(x=Vo(e,f,p),_=Vo(e,c,h),N.push(ko[l])):150===l?(x=1-Vo(s,p,f),_=1-Vo(s,h,c),N.push(ko[l])):80===l?(E=Vo(e,p,h),w=Vo(e,f,c),N.push(Do[l])):90===l?(E=1-Vo(s,h,p),w=1-Vo(s,c,f),N.push(Do[l])):65===l?(m=1-Vo(e,p,f),v=1-Vo(e,h,c),N.push(Go[l])):105===l?(m=Vo(s,f,p),v=Vo(s,c,h),N.push(Go[l])):160===l?(E=Vo(s,p,h),b=Vo(e,p,h),I=Vo(e,f,c),w=Vo(s,f,c),N.push(Do[l]),N.push(Fo[l])):10===l?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),I=1-Vo(s,c,f),w=1-Vo(e,c,f),N.push(Do[l]),N.push(Fo[l])):130===l?(x=1-Vo(e,p,f),m=1-Vo(s,p,f),v=1-Vo(s,h,c),_=1-Vo(e,h,c),N.push(ko[l]),N.push(Go[l])):40===l?(x=Vo(s,f,p),m=Vo(e,f,p),v=Vo(e,c,h),_=Vo(s,c,h),N.push(ko[l]),N.push(Go[l])):101===l?(b=Vo(s,p,h),v=Vo(s,c,h),N.push(Fo[l])):69===l?(b=1-Vo(e,h,p),v=1-Vo(e,h,c),N.push(Fo[l])):149===l?(I=Vo(s,f,c),_=1-Vo(s,h,c),N.push(qo[l])):21===l?(I=1-Vo(e,c,f),_=Vo(e,c,h),N.push(qo[l])):86===l?(x=1-Vo(s,p,f),w=1-Vo(s,c,f),N.push(ko[l])):84===l?(x=Vo(e,f,p),w=Vo(e,f,c),N.push(ko[l])):89===l?(E=1-Vo(s,h,p),m=Vo(s,f,p),N.push(Go[l])):81===l?(E=Vo(e,p,h),m=1-Vo(e,p,f),N.push(Go[l])):96===l?(E=Vo(s,p,h),b=Vo(e,p,h),w=Vo(e,f,c),v=Vo(s,c,h),N.push(Do[l]),N.push(Fo[l])):74===l?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),w=1-Vo(s,c,f),v=1-Vo(e,h,c),N.push(Do[l]),N.push(Fo[l])):24===l?(E=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),_=Vo(e,c,h),N.push(Do[l]),N.push(Go[l])):146===l?(E=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),_=1-Vo(s,h,c),N.push(Do[l]),N.push(Go[l])):6===l?(b=1-Vo(e,h,p),x=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),N.push(Fo[l]),N.push(ko[l])):164===l?(b=Vo(s,p,h),x=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),N.push(Fo[l]),N.push(ko[l])):129===l?(m=1-Vo(e,p,f),I=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c),N.push(Go[l]),N.push(qo[l])):41===l?(m=Vo(s,f,p),I=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h),N.push(Go[l]),N.push(qo[l])):66===l?(x=1-Vo(e,p,f),m=1-Vo(s,p,f),w=1-Vo(s,c,f),v=1-Vo(e,h,c),N.push(ko[l]),N.push(Go[l])):104===l?(x=Vo(s,f,p),m=Vo(e,f,p),w=Vo(e,f,c),v=Vo(s,c,h),N.push(Go[l]),N.push(zo[l])):144===l?(E=Vo(e,p,h),I=Vo(e,f,c),w=Vo(s,f,c),_=1-Vo(s,h,c),N.push(Do[l]),N.push(Bo[l])):26===l?(E=1-Vo(s,h,p),I=1-Vo(s,c,f),w=1-Vo(e,c,f),_=Vo(e,c,h),N.push(Do[l]),N.push(Bo[l])):36===l?(b=Vo(s,p,h),x=Vo(e,f,p),v=Vo(e,c,h),_=Vo(s,c,h),N.push(Fo[l]),N.push(ko[l])):134===l?(b=1-Vo(e,h,p),x=1-Vo(s,p,f),v=1-Vo(s,h,c),_=1-Vo(e,h,c),N.push(Fo[l]),N.push(ko[l])):9===l?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),m=Vo(s,f,p),I=1-Vo(e,c,f),N.push(Do[l]),N.push(Fo[l])):161===l?(E=Vo(s,p,h),b=Vo(e,p,h),m=1-Vo(e,p,f),I=Vo(s,f,c),N.push(Do[l]),N.push(Fo[l])):37===l?(b=Vo(s,p,h),I=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h),N.push(Fo[l]),N.push(qo[l])):133===l?(b=1-Vo(e,h,p),I=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c),N.push(Fo[l]),N.push(qo[l])):148===l?(x=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),_=1-Vo(s,h,c),N.push(ko[l]),N.push(Bo[l])):22===l?(x=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),_=Vo(e,c,h),N.push(ko[l]),N.push(Bo[l])):82===l?(E=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),w=1-Vo(s,c,f),N.push(Do[l]),N.push(Go[l])):88===l?(E=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),w=Vo(e,f,c),N.push(Do[l]),N.push(Go[l])):73===l?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),m=Vo(s,f,p),v=1-Vo(e,h,c),N.push(Do[l]),N.push(Fo[l])):97===l?(E=Vo(s,p,h),b=Vo(e,p,h),m=1-Vo(e,p,f),v=Vo(s,c,h),N.push(Do[l]),N.push(Fo[l])):145===l?(E=Vo(e,p,h),m=1-Vo(e,p,f),I=Vo(s,f,c),_=1-Vo(s,h,c),N.push(Do[l]),N.push(qo[l])):25===l?(E=1-Vo(s,h,p),m=Vo(s,f,p),I=1-Vo(e,c,f),_=Vo(e,c,h),N.push(Do[l]),N.push(qo[l])):70===l?(b=1-Vo(e,h,p),x=1-Vo(s,p,f),w=1-Vo(s,c,f),v=1-Vo(e,h,c),N.push(Fo[l]),N.push(ko[l])):100===l?(b=Vo(s,p,h),x=Vo(e,f,p),w=Vo(e,f,c),v=Vo(s,c,h),N.push(Fo[l]),N.push(ko[l])):34===l?(0===d?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c)):(E=Vo(s,p,h),b=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h)),N.push(Do[l]),N.push(Fo[l]),N.push(qo[l]),N.push(Bo[l])):35===l?(4===d?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c)):(E=Vo(s,p,h),b=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h)),N.push(Do[l]),N.push(Fo[l]),N.push(Go[l]),N.push(Bo[l])):136===l?(0===d?(E=Vo(s,p,h),b=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h)):(E=1-Vo(e,h,p),b=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c)),N.push(Do[l]),N.push(Fo[l]),N.push(qo[l]),N.push(Bo[l])):153===l?(0===d?(E=Vo(e,p,h),m=1-Vo(e,p,f),I=1-Vo(e,c,f),_=Vo(e,c,h)):(E=1-Vo(s,h,p),m=Vo(s,f,p),I=Vo(s,f,c),_=1-Vo(s,h,c)),N.push(Do[l]),N.push(Go[l])):102===l?(0===d?(b=1-Vo(e,h,p),x=Vo(e,f,p),w=Vo(e,f,c),v=1-Vo(e,h,c)):(b=Vo(s,p,h),x=1-Vo(s,p,f),w=1-Vo(s,c,f),v=Vo(s,c,h)),N.push(Fo[l]),N.push(Bo[l])):155===l?(4===d?(E=Vo(e,p,h),m=1-Vo(e,p,f),I=1-Vo(e,c,f),_=Vo(e,c,h)):(E=1-Vo(s,h,p),m=Vo(s,f,p),I=Vo(s,f,c),_=1-Vo(s,h,c)),N.push(Do[l]),N.push(qo[l])):103===l?(4===d?(b=1-Vo(e,h,p),x=Vo(e,f,p),w=Vo(e,f,c),v=1-Vo(e,h,c)):(b=Vo(s,p,h),x=1-Vo(s,p,f),w=1-Vo(s,c,f),v=Vo(s,c,h)),N.push(Fo[l]),N.push(ko[l])):152===l?(0===d?(E=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),_=Vo(e,c,h)):(E=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),_=1-Vo(s,h,c)),N.push(Do[l]),N.push(ko[l]),N.push(Go[l])):156===l?(4===d?(E=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),_=Vo(e,c,h)):(E=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),_=1-Vo(s,h,c)),N.push(Do[l]),N.push(Go[l]),N.push(Bo[l])):137===l?(0===d?(E=Vo(s,p,h),b=Vo(e,p,h),m=1-Vo(e,p,f),I=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h)):(E=1-Vo(e,h,p),b=1-Vo(s,h,p),m=Vo(s,f,p),I=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c)),N.push(Do[l]),N.push(Fo[l]),N.push(Go[l])):139===l?(4===d?(E=Vo(s,p,h),b=Vo(e,p,h),m=1-Vo(e,p,f),I=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h)):(E=1-Vo(e,h,p),b=1-Vo(s,h,p),m=Vo(s,f,p),I=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c)),N.push(Do[l]),N.push(Fo[l]),N.push(qo[l])):98===l?(0===d?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),w=Vo(e,f,c),v=1-Vo(e,h,c)):(E=Vo(s,p,h),b=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),w=1-Vo(s,c,f),v=Vo(s,c,h)),N.push(Do[l]),N.push(Fo[l]),N.push(Bo[l])):99===l?(4===d?(E=1-Vo(e,h,p),b=1-Vo(s,h,p),x=Vo(s,f,p),m=Vo(e,f,p),w=Vo(e,f,c),v=1-Vo(e,h,c)):(E=Vo(s,p,h),b=Vo(e,p,h),x=1-Vo(e,p,f),m=1-Vo(s,p,f),w=1-Vo(s,c,f),v=Vo(s,c,h)),N.push(Do[l]),N.push(Fo[l]),N.push(Go[l])):38===l?(0===d?(b=1-Vo(e,h,p),x=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c)):(b=Vo(s,p,h),x=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h)),N.push(Fo[l]),N.push(qo[l]),N.push(Bo[l])):39===l?(4===d?(b=1-Vo(e,h,p),x=Vo(e,f,p),I=Vo(e,f,c),w=Vo(s,f,c),v=1-Vo(s,h,c),_=1-Vo(e,h,c)):(b=Vo(s,p,h),x=1-Vo(s,p,f),I=1-Vo(s,c,f),w=1-Vo(e,c,f),v=Vo(e,c,h),_=Vo(s,c,h)),N.push(Fo[l]),N.push(ko[l]),N.push(Bo[l])):85===l&&(E=1,b=0,x=1,m=0,I=0,w=1,v=0,_=1),(v<0||v>1||_<0||_>1||E<0||E>1||x<0||x>1||I<0||I>1||w<0||w>1)&&console.log("MarchingSquaresJS-isoBands: "+l+" "+g+" "+c+","+h+","+p+","+f+" "+d+" "+v+" "+_+" "+E+" "+b+" "+x+" "+m+" "+I+" "+w),o.cells[a][u]={cval:l,cval_real:g,flipped:d,topleft:v,topright:_,righttop:E,rightbottom:b,bottomright:x,bottomleft:m,leftbottom:I,lefttop:w,edges:N}}}}}return o}(t,e,n);return Qi.polygons?(Qi.verbose&&console.log("MarchingSquaresJS-isoBands: returning single polygons for each grid cell"),u=function(t){var e=[],n=0;return t.cells.forEach((function(t,r){t.forEach((function(t,i){if(void 0!==t){var o=Uo[t.cval](t);"object"==typeof o&&Xo(o)?"object"==typeof o[0]&&Xo(o[0])?"object"==typeof o[0][0]&&Xo(o[0][0])?o.forEach((function(t){t.forEach((function(t){t[0]+=i,t[1]+=r})),e[n++]=t})):(o.forEach((function(t){t[0]+=i,t[1]+=r})),e[n++]=o):console.log("MarchingSquaresJS-isoBands: bandcell polygon with malformed coordinates"):console.log("MarchingSquaresJS-isoBands: bandcell polygon with null coordinates")}}))})),e}(l)):(Qi.verbose&&console.log("MarchingSquaresJS-isoBands: returning polygon paths for entire data grid"),u=function(t){for(var e=[],n=t.rows,r=t.cols,i=[],o=0;o0){var a=Ho(t.cells[o][s]),u=null,l=s,c=o;null!==a&&i.push([a.p[0]+l,a.p[1]+c]);do{if(null===(u=Wo(t.cells[c][l],a.x,a.y,a.o)))break;if(i.push([u.p[0]+l,u.p[1]+c]),l+=u.x,a=u,(c+=u.y)<0||c>=n||l<0||l>=r||void 0===t.cells[c][l]){var h=Yo(t,l-=u.x,c-=u.y,u.x,u.y,u.o);if(null===h)break;h.path.forEach((function(t){i.push(t)})),l=h.i,c=h.j,a=h}}while(void 0!==t.cells[c][l]&&t.cells[c][l].edges.length>0);e.push(i),i=[],t.cells[o][s].edges.length>0&&s--}return e}(l)),"function"==typeof Qi.successCallback&&Qi.successCallback(u),u}var to=64,eo=16,no=[],ro=[],io=[],oo=[],so=[],ao=[],uo=[],lo=[],co=[],ho=[],po=[],fo=[],go=[],yo=[],vo=[],_o=[],mo=[],xo=[],Eo=[],bo=[],wo=[],Io=[],No=[],So=[];uo[85]=ho[85]=-1,lo[85]=po[85]=0,co[85]=fo[85]=1,Eo[85]=Io[85]=1,bo[85]=No[85]=0,wo[85]=So[85]=1,no[85]=oo[85]=0,ro[85]=so[85]=-1,io[85]=vo[85]=0,_o[85]=go[85]=0,mo[85]=yo[85]=1,ao[85]=xo[85]=1,Io[1]=Io[169]=0,No[1]=No[169]=-1,So[1]=So[169]=0,go[1]=go[169]=-1,yo[1]=yo[169]=0,vo[1]=vo[169]=0,ho[4]=ho[166]=0,po[4]=po[166]=-1,fo[4]=fo[166]=1,_o[4]=_o[166]=1,mo[4]=mo[166]=0,xo[4]=xo[166]=0,uo[16]=uo[154]=0,lo[16]=lo[154]=1,co[16]=co[154]=1,oo[16]=oo[154]=1,so[16]=so[154]=0,ao[16]=ao[154]=1,Eo[64]=Eo[106]=0,bo[64]=bo[106]=1,wo[64]=wo[106]=0,no[64]=no[106]=-1,ro[64]=ro[106]=0,io[64]=io[106]=1,Eo[2]=Eo[168]=0,bo[2]=bo[168]=-1,wo[2]=wo[168]=1,Io[2]=Io[168]=0,No[2]=No[168]=-1,So[2]=So[168]=0,go[2]=go[168]=-1,yo[2]=yo[168]=0,vo[2]=vo[168]=0,_o[2]=_o[168]=-1,mo[2]=mo[168]=0,xo[2]=xo[168]=1,uo[8]=uo[162]=0,lo[8]=lo[162]=-1,co[8]=co[162]=0,ho[8]=ho[162]=0,po[8]=po[162]=-1,fo[8]=fo[162]=1,go[8]=go[162]=1,yo[8]=yo[162]=0,vo[8]=vo[162]=1,_o[8]=_o[162]=1,mo[8]=mo[162]=0,xo[8]=xo[162]=0,uo[32]=uo[138]=0,lo[32]=lo[138]=1,co[32]=co[138]=1,ho[32]=ho[138]=0,po[32]=po[138]=1,fo[32]=fo[138]=0,no[32]=no[138]=1,ro[32]=ro[138]=0,io[32]=io[138]=0,oo[32]=oo[138]=1,so[32]=so[138]=0,ao[32]=ao[138]=1,Io[128]=Io[42]=0,No[128]=No[42]=1,So[128]=So[42]=1,Eo[128]=Eo[42]=0,bo[128]=bo[42]=1,wo[128]=wo[42]=0,no[128]=no[42]=-1,ro[128]=ro[42]=0,io[128]=io[42]=1,oo[128]=oo[42]=-1,so[128]=so[42]=0,ao[128]=ao[42]=0,ho[5]=ho[165]=-1,po[5]=po[165]=0,fo[5]=fo[165]=0,Io[5]=Io[165]=1,No[5]=No[165]=0,So[5]=So[165]=0,_o[20]=_o[150]=0,mo[20]=mo[150]=1,xo[20]=xo[150]=1,oo[20]=oo[150]=0,so[20]=so[150]=-1,ao[20]=ao[150]=1,uo[80]=uo[90]=-1,lo[80]=lo[90]=0,co[80]=co[90]=1,Eo[80]=Eo[90]=1,bo[80]=bo[90]=0,wo[80]=wo[90]=1,go[65]=go[105]=0,yo[65]=yo[105]=1,vo[65]=vo[105]=0,no[65]=no[105]=0,ro[65]=ro[105]=-1,io[65]=io[105]=0,uo[160]=uo[10]=-1,lo[160]=lo[10]=0,co[160]=co[10]=1,ho[160]=ho[10]=-1,po[160]=po[10]=0,fo[160]=fo[10]=0,Io[160]=Io[10]=1,No[160]=No[10]=0,So[160]=So[10]=0,Eo[160]=Eo[10]=1,bo[160]=bo[10]=0,wo[160]=wo[10]=1,_o[130]=_o[40]=0,mo[130]=mo[40]=1,xo[130]=xo[40]=1,go[130]=go[40]=0,yo[130]=yo[40]=1,vo[130]=vo[40]=0,no[130]=no[40]=0,ro[130]=ro[40]=-1,io[130]=io[40]=0,oo[130]=oo[40]=0,so[130]=so[40]=-1,ao[130]=ao[40]=1,ho[37]=ho[133]=0,po[37]=po[133]=1,fo[37]=fo[133]=1,Io[37]=Io[133]=0,No[37]=No[133]=1,So[37]=So[133]=0,no[37]=no[133]=-1,ro[37]=ro[133]=0,io[37]=io[133]=0,oo[37]=oo[133]=1,so[37]=so[133]=0,ao[37]=ao[133]=0,_o[148]=_o[22]=-1,mo[148]=mo[22]=0,xo[148]=xo[22]=0,Io[148]=Io[22]=0,No[148]=No[22]=-1,So[148]=So[22]=1,Eo[148]=Eo[22]=0,bo[148]=bo[22]=1,wo[148]=wo[22]=1,oo[148]=oo[22]=-1,so[148]=so[22]=0,ao[148]=ao[22]=1,uo[82]=uo[88]=0,lo[82]=lo[88]=-1,co[82]=co[88]=1,_o[82]=_o[88]=1,mo[82]=mo[88]=0,xo[82]=xo[88]=1,go[82]=go[88]=-1,yo[82]=yo[88]=0,vo[82]=vo[88]=1,Eo[82]=Eo[88]=0,bo[82]=bo[88]=-1,wo[82]=wo[88]=0,uo[73]=uo[97]=0,lo[73]=lo[97]=1,co[73]=co[97]=0,ho[73]=ho[97]=0,po[73]=po[97]=-1,fo[73]=fo[97]=0,go[73]=go[97]=1,yo[73]=yo[97]=0,vo[73]=vo[97]=0,no[73]=no[97]=1,ro[73]=ro[97]=0,io[73]=io[97]=1,uo[145]=uo[25]=0,lo[145]=lo[25]=-1,co[145]=co[25]=0,go[145]=go[25]=1,yo[145]=yo[25]=0,vo[145]=vo[25]=1,Io[145]=Io[25]=0,No[145]=No[25]=1,So[145]=So[25]=1,oo[145]=oo[25]=-1,so[145]=so[25]=0,ao[145]=ao[25]=0,ho[70]=ho[100]=0,po[70]=po[100]=1,fo[70]=fo[100]=0,_o[70]=_o[100]=-1,mo[70]=mo[100]=0,xo[70]=xo[100]=1,Eo[70]=Eo[100]=0,bo[70]=bo[100]=-1,wo[70]=wo[100]=1,no[70]=no[100]=1,ro[70]=ro[100]=0,io[70]=io[100]=0,ho[101]=ho[69]=0,po[101]=po[69]=1,fo[101]=fo[69]=0,no[101]=no[69]=1,ro[101]=ro[69]=0,io[101]=io[69]=0,Io[149]=Io[21]=0,No[149]=No[21]=1,So[149]=So[21]=1,oo[149]=oo[21]=-1,so[149]=so[21]=0,ao[149]=ao[21]=0,_o[86]=_o[84]=-1,mo[86]=mo[84]=0,xo[86]=xo[84]=1,Eo[86]=Eo[84]=0,bo[86]=bo[84]=-1,wo[86]=wo[84]=1,uo[89]=uo[81]=0,lo[89]=lo[81]=-1,co[89]=co[81]=0,go[89]=go[81]=1,yo[89]=yo[81]=0,vo[89]=vo[81]=1,uo[96]=uo[74]=0,lo[96]=lo[74]=1,co[96]=co[74]=0,ho[96]=ho[74]=-1,po[96]=po[74]=0,fo[96]=fo[74]=1,Eo[96]=Eo[74]=1,bo[96]=bo[74]=0,wo[96]=wo[74]=0,no[96]=no[74]=1,ro[96]=ro[74]=0,io[96]=io[74]=1,uo[24]=uo[146]=0,lo[24]=lo[146]=-1,co[24]=co[146]=1,_o[24]=_o[146]=1,mo[24]=mo[146]=0,xo[24]=xo[146]=1,go[24]=go[146]=0,yo[24]=yo[146]=1,vo[24]=vo[146]=1,oo[24]=oo[146]=0,so[24]=so[146]=-1,ao[24]=ao[146]=0,ho[6]=ho[164]=-1,po[6]=po[164]=0,fo[6]=fo[164]=1,_o[6]=_o[164]=-1,mo[6]=mo[164]=0,xo[6]=xo[164]=0,Io[6]=Io[164]=0,No[6]=No[164]=-1,So[6]=So[164]=1,Eo[6]=Eo[164]=1,bo[6]=bo[164]=0,wo[6]=wo[164]=0,go[129]=go[41]=0,yo[129]=yo[41]=1,vo[129]=vo[41]=1,Io[129]=Io[41]=0,No[129]=No[41]=1,So[129]=So[41]=0,no[129]=no[41]=-1,ro[129]=ro[41]=0,io[129]=io[41]=0,oo[129]=oo[41]=0,so[129]=so[41]=-1,ao[129]=ao[41]=0,_o[66]=_o[104]=0,mo[66]=mo[104]=1,xo[66]=xo[104]=0,go[66]=go[104]=-1,yo[66]=yo[104]=0,vo[66]=vo[104]=1,Eo[66]=Eo[104]=0,bo[66]=bo[104]=-1,wo[66]=wo[104]=0,no[66]=no[104]=0,ro[66]=ro[104]=-1,io[66]=io[104]=1,uo[144]=uo[26]=-1,lo[144]=lo[26]=0,co[144]=co[26]=0,Io[144]=Io[26]=1,No[144]=No[26]=0,So[144]=So[26]=1,Eo[144]=Eo[26]=0,bo[144]=bo[26]=1,wo[144]=wo[26]=1,oo[144]=oo[26]=-1,so[144]=so[26]=0,ao[144]=ao[26]=1,ho[36]=ho[134]=0,po[36]=po[134]=1,fo[36]=fo[134]=1,_o[36]=_o[134]=0,mo[36]=mo[134]=1,xo[36]=xo[134]=0,no[36]=no[134]=0,ro[36]=ro[134]=-1,io[36]=io[134]=1,oo[36]=oo[134]=1,so[36]=so[134]=0,ao[36]=ao[134]=0,uo[9]=uo[161]=-1,lo[9]=lo[161]=0,co[9]=co[161]=0,ho[9]=ho[161]=0,po[9]=po[161]=-1,fo[9]=fo[161]=0,go[9]=go[161]=1,yo[9]=yo[161]=0,vo[9]=vo[161]=0,Io[9]=Io[161]=1,No[9]=No[161]=0,So[9]=So[161]=1,uo[136]=0,lo[136]=1,co[136]=1,ho[136]=0,po[136]=1,fo[136]=0,_o[136]=-1,mo[136]=0,xo[136]=1,go[136]=-1,yo[136]=0,vo[136]=0,Io[136]=0,No[136]=-1,So[136]=0,Eo[136]=0,bo[136]=-1,wo[136]=1,no[136]=1,ro[136]=0,io[136]=0,oo[136]=1,so[136]=0,ao[136]=1,uo[34]=0,lo[34]=-1,co[34]=0,ho[34]=0,po[34]=-1,fo[34]=1,_o[34]=1,mo[34]=0,xo[34]=0,go[34]=1,yo[34]=0,vo[34]=1,Io[34]=0,No[34]=1,So[34]=1,Eo[34]=0,bo[34]=1,wo[34]=0,no[34]=-1,ro[34]=0,io[34]=1,oo[34]=-1,so[34]=0,ao[34]=0,uo[35]=0,lo[35]=1,co[35]=1,ho[35]=0,po[35]=-1,fo[35]=1,_o[35]=1,mo[35]=0,xo[35]=0,go[35]=-1,yo[35]=0,vo[35]=0,Io[35]=0,No[35]=-1,So[35]=0,Eo[35]=0,bo[35]=1,wo[35]=0,no[35]=-1,ro[35]=0,io[35]=1,oo[35]=1,so[35]=0,ao[35]=1,uo[153]=0,lo[153]=1,co[153]=1,go[153]=-1,yo[153]=0,vo[153]=0,Io[153]=0,No[153]=-1,So[153]=0,oo[153]=1,so[153]=0,ao[153]=1,ho[102]=0,po[102]=-1,fo[102]=1,_o[102]=1,mo[102]=0,xo[102]=0,Eo[102]=0,bo[102]=1,wo[102]=0,no[102]=-1,ro[102]=0,io[102]=1,uo[155]=0,lo[155]=-1,co[155]=0,go[155]=1,yo[155]=0,vo[155]=1,Io[155]=0,No[155]=1,So[155]=1,oo[155]=-1,so[155]=0,ao[155]=0,ho[103]=0,po[103]=1,fo[103]=0,_o[103]=-1,mo[103]=0,xo[103]=1,Eo[103]=0,bo[103]=-1,wo[103]=1,no[103]=1,ro[103]=0,io[103]=0,uo[152]=0,lo[152]=1,co[152]=1,_o[152]=-1,mo[152]=0,xo[152]=1,go[152]=-1,yo[152]=0,vo[152]=0,Io[152]=0,No[152]=-1,So[152]=0,Eo[152]=0,bo[152]=-1,wo[152]=1,oo[152]=1,so[152]=0,ao[152]=1,uo[156]=0,lo[156]=-1,co[156]=1,_o[156]=1,mo[156]=0,xo[156]=1,go[156]=-1,yo[156]=0,vo[156]=0,Io[156]=0,No[156]=-1,So[156]=0,Eo[156]=0,bo[156]=1,wo[156]=1,oo[156]=-1,so[156]=0,ao[156]=1,uo[137]=0,lo[137]=1,co[137]=1,ho[137]=0,po[137]=1,fo[137]=0,go[137]=-1,yo[137]=0,vo[137]=0,Io[137]=0,No[137]=-1,So[137]=0,no[137]=1,ro[137]=0,io[137]=0,oo[137]=1,so[137]=0,ao[137]=1,uo[139]=0,lo[139]=1,co[139]=1,ho[139]=0,po[139]=-1,fo[139]=0,go[139]=1,yo[139]=0,vo[139]=0,Io[139]=0,No[139]=1,So[139]=0,no[139]=-1,ro[139]=0,io[139]=0,oo[139]=1,so[139]=0,ao[139]=1,uo[98]=0,lo[98]=-1,co[98]=0,ho[98]=0,po[98]=-1,fo[98]=1,_o[98]=1,mo[98]=0,xo[98]=0,go[98]=1,yo[98]=0,vo[98]=1,Eo[98]=0,bo[98]=1,wo[98]=0,no[98]=-1,ro[98]=0,io[98]=1,uo[99]=0,lo[99]=1,co[99]=0,ho[99]=0,po[99]=-1,fo[99]=1,_o[99]=1,mo[99]=0,xo[99]=0,go[99]=-1,yo[99]=0,vo[99]=1,Eo[99]=0,bo[99]=-1,wo[99]=0,no[99]=1,ro[99]=0,io[99]=1,ho[38]=0,po[38]=-1,fo[38]=1,_o[38]=1,mo[38]=0,xo[38]=0,Io[38]=0,No[38]=1,So[38]=1,Eo[38]=0,bo[38]=1,wo[38]=0,no[38]=-1,ro[38]=0,io[38]=1,oo[38]=-1,so[38]=0,ao[38]=0,ho[39]=0,po[39]=1,fo[39]=1,_o[39]=-1,mo[39]=0,xo[39]=0,Io[39]=0,No[39]=-1,So[39]=1,Eo[39]=0,bo[39]=1,wo[39]=0,no[39]=-1,ro[39]=0,io[39]=1,oo[39]=1,so[39]=0,ao[39]=0;var Co=function(t){return[[t.bottomleft,0],[0,0],[0,t.leftbottom]]},Po=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0]]},Mo=function(t){return[[t.topright,1],[1,1],[1,t.righttop]]},Lo=function(t){return[[0,t.lefttop],[0,1],[t.topleft,1]]},Oo=function(t){return[[t.bottomright,0],[t.bottomleft,0],[0,t.leftbottom],[0,t.lefttop]]},Ro=function(t){return[[t.bottomright,0],[t.bottomleft,0],[1,t.righttop],[1,t.rightbottom]]},To=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.topleft,1],[t.topright,1]]},Ao=function(t){return[[0,t.leftbottom],[0,t.lefttop],[t.topleft,1],[t.topright,1]]},Do=[],Fo=[],ko=[],Go=[],qo=[],Bo=[],zo=[],jo=[];Go[1]=qo[1]=18,Go[169]=qo[169]=18,ko[4]=Fo[4]=12,ko[166]=Fo[166]=12,Do[16]=jo[16]=4,Do[154]=jo[154]=4,Bo[64]=zo[64]=22,Bo[106]=zo[106]=22,ko[2]=Bo[2]=17,Go[2]=qo[2]=18,ko[168]=Bo[168]=17,Go[168]=qo[168]=18,Do[8]=Go[8]=9,Fo[8]=ko[8]=12,Do[162]=Go[162]=9,Fo[162]=ko[162]=12,Do[32]=jo[32]=4,Fo[32]=zo[32]=1,Do[138]=jo[138]=4,Fo[138]=zo[138]=1,qo[128]=jo[128]=21,Bo[128]=zo[128]=22,qo[42]=jo[42]=21,Bo[42]=zo[42]=22,Fo[5]=qo[5]=14,Fo[165]=qo[165]=14,ko[20]=jo[20]=6,ko[150]=jo[150]=6,Do[80]=Bo[80]=11,Do[90]=Bo[90]=11,Go[65]=zo[65]=3,Go[105]=zo[105]=3,Do[160]=Bo[160]=11,Fo[160]=qo[160]=14,Do[10]=Bo[10]=11,Fo[10]=qo[10]=14,ko[130]=jo[130]=6,Go[130]=zo[130]=3,ko[40]=jo[40]=6,Go[40]=zo[40]=3,Fo[101]=zo[101]=1,Fo[69]=zo[69]=1,qo[149]=jo[149]=21,qo[21]=jo[21]=21,ko[86]=Bo[86]=17,ko[84]=Bo[84]=17,Do[89]=Go[89]=9,Do[81]=Go[81]=9,Do[96]=zo[96]=0,Fo[96]=Bo[96]=15,Do[74]=zo[74]=0,Fo[74]=Bo[74]=15,Do[24]=ko[24]=8,Go[24]=jo[24]=7,Do[146]=ko[146]=8,Go[146]=jo[146]=7,Fo[6]=Bo[6]=15,ko[6]=qo[6]=16,Fo[164]=Bo[164]=15,ko[164]=qo[164]=16,Go[129]=jo[129]=7,qo[129]=zo[129]=20,Go[41]=jo[41]=7,qo[41]=zo[41]=20,ko[66]=zo[66]=2,Go[66]=Bo[66]=19,ko[104]=zo[104]=2,Go[104]=Bo[104]=19,Do[144]=qo[144]=10,Bo[144]=jo[144]=23,Do[26]=qo[26]=10,Bo[26]=jo[26]=23,Fo[36]=jo[36]=5,ko[36]=zo[36]=2,Fo[134]=jo[134]=5,ko[134]=zo[134]=2,Do[9]=qo[9]=10,Fo[9]=Go[9]=13,Do[161]=qo[161]=10,Fo[161]=Go[161]=13,Fo[37]=jo[37]=5,qo[37]=zo[37]=20,Fo[133]=jo[133]=5,qo[133]=zo[133]=20,ko[148]=qo[148]=16,Bo[148]=jo[148]=23,ko[22]=qo[22]=16,Bo[22]=jo[22]=23,Do[82]=ko[82]=8,Go[82]=Bo[82]=19,Do[88]=ko[88]=8,Go[88]=Bo[88]=19,Do[73]=zo[73]=0,Fo[73]=Go[73]=13,Do[97]=zo[97]=0,Fo[97]=Go[97]=13,Do[145]=Go[145]=9,qo[145]=jo[145]=21,Do[25]=Go[25]=9,qo[25]=jo[25]=21,Fo[70]=zo[70]=1,ko[70]=Bo[70]=17,Fo[100]=zo[100]=1,ko[100]=Bo[100]=17,Do[34]=Go[34]=9,Fo[34]=ko[34]=12,qo[34]=jo[34]=21,Bo[34]=zo[34]=22,Do[136]=jo[136]=4,Fo[136]=zo[136]=1,ko[136]=Bo[136]=17,Go[136]=qo[136]=18,Do[35]=jo[35]=4,Fo[35]=ko[35]=12,Go[35]=qo[35]=18,Bo[35]=zo[35]=22,Do[153]=jo[153]=4,Go[153]=qo[153]=18,Fo[102]=ko[102]=12,Bo[102]=zo[102]=22,Do[155]=Go[155]=9,qo[155]=jo[155]=23,Fo[103]=zo[103]=1,ko[103]=Bo[103]=17,Do[152]=jo[152]=4,ko[152]=Bo[152]=17,Go[152]=qo[152]=18,Do[156]=ko[156]=8,Go[156]=qo[156]=18,Bo[156]=jo[156]=23,Do[137]=jo[137]=4,Fo[137]=zo[137]=1,Go[137]=qo[137]=18,Do[139]=jo[139]=4,Fo[139]=Go[139]=13,qo[139]=zo[139]=20,Do[98]=Go[98]=9,Fo[98]=ko[98]=12,Bo[98]=zo[98]=22,Do[99]=zo[99]=0,Fo[99]=ko[99]=12,Go[99]=Bo[99]=19,Fo[38]=ko[38]=12,qo[38]=jo[38]=21,Bo[38]=zo[38]=22,Fo[39]=jo[39]=5,ko[39]=qo[39]=16,Bo[39]=zo[39]=22;var Uo=[];function Vo(t,e,n){return(t-e)/(n-e)}function Xo(t){return t.constructor.toString().indexOf("Array")>-1}function Yo(t,e,n,r,i,o){for(var s=t.cells[n][e],a=s.cval_real,u=e+r,l=n+i,c=[],h=!1;!h;){if(void 0===t.cells[l]||void 0===t.cells[l][u])if(l-=i,u-=r,a=(s=t.cells[l][u]).cval_real,-1===i)if(0===o)if(1&a)c.push([u,l]),r=-1,i=0,o=0;else{if(!(4&a)){c.push([u+s.bottomright,l]),r=0,i=1,o=1,h=!0;break}c.push([u+1,l]),r=1,i=0,o=0}else{if(!(1&a)){if(4&a){c.push([u+s.bottomright,l]),r=0,i=1,o=1,h=!0;break}c.push([u+s.bottomleft,l]),r=0,i=1,o=0,h=!0;break}c.push([u,l]),r=-1,i=0,o=0}else if(1===i)if(0===o){if(!(a&eo)){if(a&to){c.push([u+s.topleft,l+1]),r=0,i=-1,o=0,h=!0;break}c.push([u+s.topright,l+1]),r=0,i=-1,o=1,h=!0;break}c.push([u+1,l+1]),r=1,i=0,o=1}else c.push([u+1,l+1]),r=1,i=0,o=1;else if(-1===r)if(0===o){if(!(a&to)){if(1&a){c.push([u,l+s.leftbottom]),r=1,i=0,o=0,h=!0;break}c.push([u,l+s.lefttop]),r=1,i=0,o=1,h=!0;break}c.push([u,l+1]),r=0,i=1,o=0}else{if(!(a&to)){console.log("MarchingSquaresJS-isoBands: wtf");break}c.push([u,l+1]),r=0,i=1,o=0}else{if(1!==r){console.log("MarchingSquaresJS-isoBands: we came from nowhere!");break}if(0===o){if(!(4&a)){c.push([u+1,l+s.rightbottom]),r=-1,i=0,o=0,h=!0;break}c.push([u+1,l]),r=0,i=-1,o=1}else{if(!(4&a)){if(a&eo){c.push([u+1,l+s.righttop]),r=-1,i=0,o=1;break}c.push([u+1,l+s.rightbottom]),r=-1,i=0,o=0,h=!0;break}c.push([u+1,l]),r=0,i=-1,o=1}}else if(a=(s=t.cells[l][u]).cval_real,-1===r)if(0===o)if(void 0!==t.cells[l-1]&&void 0!==t.cells[l-1][u])r=0,i=-1,o=1;else{if(!(1&a)){c.push([u+s.bottomright,l]),r=0,i=1,o=1,h=!0;break}c.push([u,l])}else{if(!(a&to)){console.log("MarchingSquaresJS-isoBands: found entry from top at "+u+","+l);break}console.log("MarchingSquaresJS-isoBands: proceeding in x-direction!")}else if(1===r){if(0===o){console.log("MarchingSquaresJS-isoBands: wtf");break}if(void 0!==t.cells[l+1]&&void 0!==t.cells[l+1][u])r=0,i=1,o=0;else{if(!(a&eo)){c.push([u+s.topleft,l+1]),r=0,i=-1,o=0,h=!0;break}c.push([u+1,l+1]),r=1,i=0,o=1}}else if(-1===i){if(1!==o){console.log("MarchingSquaresJS-isoBands: wtf");break}if(void 0!==t.cells[l][u+1])r=1,i=0,o=1;else{if(!(4&a)){c.push([u+1,l+s.righttop]),r=-1,i=0,o=1,h=!0;break}c.push([u+1,l]),r=0,i=-1,o=1}}else{if(1!==i){console.log("MarchingSquaresJS-isoBands: where did we came from???");break}if(0!==o){console.log("MarchingSquaresJS-isoBands: wtf");break}if(void 0!==t.cells[l][u-1])r=-1,i=0,o=0;else{if(!(a&to)){c.push([u,l+s.leftbottom]),r=1,i=0,o=0,h=!0;break}c.push([u,l+1]),r=0,i=1,o=0}}if(l+=i,(u+=r)===e&&l===n)break}return{path:c,i:u,j:l,x:r,y:i,o:o}}function Ho(t){if(t.edges.length>0){var e=t.edges[t.edges.length-1],n=t.cval_real;switch(e){case 0:return n&eo?{p:[1,t.righttop],x:-1,y:0,o:1}:{p:[t.topleft,1],x:0,y:-1,o:0};case 1:return 4&n?{p:[t.topleft,1],x:0,y:-1,o:0}:{p:[1,t.rightbottom],x:-1,y:0,o:0};case 2:return 4&n?{p:[t.bottomright,0],x:0,y:1,o:1}:{p:[t.topleft,1],x:0,y:-1,o:0};case 3:return 1&n?{p:[t.topleft,1],x:0,y:-1,o:0}:{p:[t.bottomleft,0],x:0,y:1,o:0};case 4:return n&eo?{p:[1,t.righttop],x:-1,y:0,o:1}:{p:[t.topright,1],x:0,y:-1,o:1};case 5:return 4&n?{p:[t.topright,1],x:0,y:-1,o:1}:{p:[1,t.rightbottom],x:-1,y:0,o:0};case 6:return 4&n?{p:[t.bottomright,0],x:0,y:1,o:1}:{p:[t.topright,1],x:0,y:-1,o:1};case 7:return 1&n?{p:[t.topright,1],x:0,y:-1,o:1}:{p:[t.bottomleft,0],x:0,y:1,o:0};case 8:return 4&n?{p:[t.bottomright,0],x:0,y:1,o:1}:{p:[1,t.righttop],x:-1,y:0,o:1};case 9:return 1&n?{p:[1,t.righttop],x:-1,y:0,o:1}:{p:[t.bottomleft,0],x:0,y:1,o:0};case 10:return 1&n?{p:[0,t.leftbottom],x:1,y:0,o:0}:{p:[1,t.righttop],x:-1,y:0,o:1};case 11:return n&to?{p:[1,t.righttop],x:-1,y:0,o:1}:{p:[0,t.lefttop],x:1,y:0,o:1};case 12:return 4&n?{p:[t.bottomright,0],x:0,y:1,o:1}:{p:[1,t.rightbottom],x:-1,y:0,o:0};case 13:return 1&n?{p:[1,t.rightbottom],x:-1,y:0,o:0}:{p:[t.bottomleft,0],x:0,y:1,o:0};case 14:return 1&n?{p:[0,t.leftbottom],x:1,y:0,o:0}:{p:[1,t.rightbottom],x:-1,y:0,o:0};case 15:return n&to?{p:[1,t.rightbottom],x:-1,y:0,o:0}:{p:[0,t.lefttop],x:1,y:0,o:1};case 16:return 4&n?{p:[t.bottomright,0],x:0,y:1,o:1}:{p:[0,t.leftbottom],x:1,y:0,o:0};case 17:return n&to?{p:[t.bottomright,0],x:0,y:1,o:1}:{p:[0,t.lefttop],x:1,y:0,o:1};case 18:return 1&n?{p:[0,t.leftbottom],x:1,y:0,o:0}:{p:[t.bottomleft,0],x:0,y:1,o:0};case 19:return n&to?{p:[t.bottomleft,0],x:0,y:1,o:0}:{p:[0,t.lefttop],x:1,y:0,o:1};case 20:return n&to?{p:[t.topleft,1],x:0,y:-1,o:0}:{p:[0,t.leftbottom],x:1,y:0,o:0};case 21:return n&eo?{p:[0,t.leftbottom],x:1,y:0,o:0}:{p:[t.topright,1],x:0,y:-1,o:1};case 22:return n&to?{p:[t.topleft,1],x:0,y:-1,o:0}:{p:[0,t.lefttop],x:1,y:0,o:1};case 23:return n&eo?{p:[0,t.lefttop],x:1,y:0,o:1}:{p:[t.topright,1],x:0,y:-1,o:1};default:console.log("MarchingSquaresJS-isoBands: edge index out of range!"),console.log(t)}}return null}function Wo(t,e,n,r){var i,o,s,a,u,l=t.cval;switch(e){case-1:switch(r){case 0:i=Fo[l],s=ho[l],a=po[l],u=fo[l];break;default:i=Do[l],s=uo[l],a=lo[l],u=co[l]}break;case 1:switch(r){case 0:i=qo[l],s=Io[l],a=No[l],u=So[l];break;default:i=Bo[l],s=Eo[l],a=bo[l],u=wo[l]}break;default:switch(n){case-1:switch(r){case 0:i=zo[l],s=no[l],a=ro[l],u=io[l];break;default:i=jo[l],s=oo[l],a=so[l],u=ao[l]}break;case 1:switch(r){case 0:i=Go[l],s=go[l],a=yo[l],u=vo[l];break;default:i=ko[l],s=_o[l],a=mo[l],u=xo[l]}}}if(o=t.edges.indexOf(i),void 0===t.edges[o])return null;switch(function(t,e){delete t.edges[e];for(var n=e+1;n0){var a=r[e-1],u=is(n,a);!1!==u&&(a[1]=u,n[0]=u),s.push(a[0]),e===o.length-2&&(s.push(n[0]),s.push(n[1]))}2===o.length&&(s.push(n[0]),s.push(n[1]))}var l,c,h,p,f,g,d,y})),h(s,t.properties)}function ss(t,e,n){var r=e[0]-t[0],i=e[1]-t[1],o=n[0]-e[0];return function(t){return(t>0)-(t<0)||+t}(r*(n[1]-e[1])-o*i)}function as(t,e){return e.geometry.coordinates[0].every((function(e){return ye(a(e),t)}))}Uo[1]=Uo[169]=Co,Uo[4]=Uo[166]=Po,Uo[16]=Uo[154]=Mo,Uo[64]=Uo[106]=Lo,Uo[168]=Uo[2]=Oo,Uo[162]=Uo[8]=Ro,Uo[138]=Uo[32]=To,Uo[42]=Uo[128]=Ao,Uo[5]=Uo[165]=function(t){return[[0,0],[0,t.leftbottom],[1,t.rightbottom],[1,0]]},Uo[20]=Uo[150]=function(t){return[[1,0],[t.bottomright,0],[t.topright,1],[1,1]]},Uo[80]=Uo[90]=function(t){return[[1,1],[1,t.righttop],[0,t.lefttop],[0,1]]},Uo[65]=Uo[105]=function(t){return[[t.bottomleft,0],[0,0],[0,1],[t.topleft,1]]},Uo[160]=Uo[10]=function(t){return[[1,t.righttop],[1,t.rightbottom],[0,t.leftbottom],[0,t.lefttop]]},Uo[130]=Uo[40]=function(t){return[[t.topleft,1],[t.topright,1],[t.bottomright,0],[t.bottomleft,0]]},Uo[85]=function(){return[[0,0],[0,1],[1,1],[1,0]]},Uo[101]=Uo[69]=function(t){return[[1,t.rightbottom],[1,0],[0,0],[0,1],[t.topleft,1]]},Uo[149]=Uo[21]=function(t){return[[t.topright,1],[1,1],[1,0],[0,0],[0,t.leftbottom]]},Uo[86]=Uo[84]=function(t){return[[1,0],[t.bottomright,0],[0,t.lefttop],[0,1],[1,1]]},Uo[89]=Uo[81]=function(t){return[[1,1],[1,t.righttop],[t.bottomleft,0],[0,0],[0,1]]},Uo[96]=Uo[74]=function(t){return[[1,t.righttop],[1,t.rightbottom],[0,t.lefttop],[0,1],[t.topleft,1]]},Uo[24]=Uo[146]=function(t){return[[1,1],[1,t.righttop],[t.bottomright,0],[t.bottomleft,0],[t.topright,1]]},Uo[6]=Uo[164]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.leftbottom],[0,t.lefttop]]},Uo[129]=Uo[41]=function(t){return[[t.topright,1],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topleft,1]]},Uo[66]=Uo[104]=function(t){return[[t.bottomright,0],[t.bottomleft,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Uo[144]=Uo[26]=function(t){return[[1,1],[1,t.righttop],[0,t.leftbottom],[0,t.lefttop],[t.topright,1]]},Uo[36]=Uo[134]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[t.topleft,1],[t.topright,1]]},Uo[9]=Uo[161]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomleft,0],[0,0],[0,t.leftbottom]]},Uo[37]=Uo[133]=function(t){return[[1,t.rightbottom],[1,0],[0,0],[0,t.leftbottom],[t.topleft,1],[t.topright,1]]},Uo[148]=Uo[22]=function(t){return[[1,1],[1,0],[t.bottomright,0],[0,t.leftbottom],[0,t.lefttop],[t.topright,1]]},Uo[82]=Uo[88]=function(t){return[[1,1],[1,t.righttop],[t.bottomright,0],[t.bottomleft,0],[0,t.lefttop],[0,1]]},Uo[73]=Uo[97]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomleft,0],[0,0],[0,1],[t.topleft,1]]},Uo[145]=Uo[25]=function(t){return[[1,1],[1,t.righttop],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topright,1]]},Uo[70]=Uo[100]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Uo[34]=function(t){return[Ao(t),Ro(t)]},Uo[35]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomright,0],[t.bottomleft,0],[0,t.leftbottom],[0,t.lefttop],[t.topleft,1],[t.topright,1]]},Uo[136]=function(t){return[To(t),Oo(t)]},Uo[153]=function(t){return[Mo(t),Co(t)]},Uo[102]=function(t){return[Po(t),Lo(t)]},Uo[155]=function(t){return[[1,1],[1,t.righttop],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topright,1]]},Uo[103]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Uo[152]=function(t){return[Mo(t),Oo(t)]},Uo[156]=function(t){return[[1,1],[1,t.righttop],[t.bottomright,0],[t.bottomleft,0],[0,t.leftbottom],[0,t.lefttop],[t.topright,1]]},Uo[137]=function(t){return[To(t),Co(t)]},Uo[139]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomleft,0],[0,0],[0,t.leftbottom],[t.topleft,1],[t.topright,1]]},Uo[98]=function(t){return[Ro(t),Lo(t)]},Uo[99]=function(t){return[[1,t.righttop],[1,t.rightbottom],[t.bottomright,0],[t.bottomleft,0],[0,t.lefttop],[0,1],[t.topleft,1]]},Uo[38]=function(t){return[Po(t),Ao(t)]},Uo[39]=function(t){return[[1,t.rightbottom],[1,0],[t.bottomright,0],[0,t.leftbottom],[0,t.lefttop],[t.topleft,1],[t.topright,1]]};var us=function(){function t(e){this.id=t.buildId(e),this.coordinates=e,this.innerEdges=[],this.outerEdges=[],this.outerEdgesSorted=!1}return t.buildId=function(t){return t.join(",")},t.prototype.removeInnerEdge=function(t){this.innerEdges=this.innerEdges.filter((function(e){return e.from.id!==t.from.id}))},t.prototype.removeOuterEdge=function(t){this.outerEdges=this.outerEdges.filter((function(e){return e.to.id!==t.to.id}))},t.prototype.addOuterEdge=function(t){this.outerEdges.push(t),this.outerEdgesSorted=!1},t.prototype.sortOuterEdges=function(){var t=this;this.outerEdgesSorted||(this.outerEdges.sort((function(e,n){var r=e.to,i=n.to;if(r.coordinates[0]-t.coordinates[0]>=0&&i.coordinates[0]-t.coordinates[0]<0)return 1;if(r.coordinates[0]-t.coordinates[0]<0&&i.coordinates[0]-t.coordinates[0]>=0)return-1;if(r.coordinates[0]-t.coordinates[0]==0&&i.coordinates[0]-t.coordinates[0]==0)return r.coordinates[1]-t.coordinates[1]>=0||i.coordinates[1]-t.coordinates[1]>=0?r.coordinates[1]-i.coordinates[1]:i.coordinates[1]-r.coordinates[1];var o=ss(t.coordinates,r.coordinates,i.coordinates);return o<0?1:o>0?-1:Math.pow(r.coordinates[0]-t.coordinates[0],2)+Math.pow(r.coordinates[1]-t.coordinates[1],2)-(Math.pow(i.coordinates[0]-t.coordinates[0],2)+Math.pow(i.coordinates[1]-t.coordinates[1],2))})),this.outerEdgesSorted=!0)},t.prototype.getOuterEdges=function(){return this.sortOuterEdges(),this.outerEdges},t.prototype.getOuterEdge=function(t){return this.sortOuterEdges(),this.outerEdges[t]},t.prototype.addInnerEdge=function(t){this.innerEdges.push(t)},t}(),ls=function(){function t(t,e){this.from=t,this.to=e,this.next=void 0,this.label=void 0,this.symetric=void 0,this.ring=void 0,this.from.addOuterEdge(this),this.to.addInnerEdge(this)}return t.prototype.getSymetric=function(){return this.symetric||(this.symetric=new t(this.to,this.from),this.symetric.symetric=this),this.symetric},t.prototype.deleteEdge=function(){this.from.removeOuterEdge(this),this.to.removeInnerEdge(this)},t.prototype.isEqual=function(t){return this.from.id===t.from.id&&this.to.id===t.to.id},t.prototype.toString=function(){return"Edge { "+this.from.id+" -> "+this.to.id+" }"},t.prototype.toLineString=function(){return h([this.from.coordinates,this.to.coordinates])},t.prototype.compareTo=function(t){return ss(t.from.coordinates,t.to.coordinates,this.to.coordinates)},t}(),cs=function(){function t(){this.edges=[],this.polygon=void 0,this.envelope=void 0}return t.prototype.push=function(t){this.edges.push(t),this.polygon=this.envelope=void 0},t.prototype.get=function(t){return this.edges[t]},Object.defineProperty(t.prototype,"length",{get:function(){return this.edges.length},enumerable:!0,configurable:!0}),t.prototype.forEach=function(t){this.edges.forEach(t)},t.prototype.map=function(t){return this.edges.map(t)},t.prototype.some=function(t){return this.edges.some(t)},t.prototype.isValid=function(){return!0},t.prototype.isHole=function(){var t=this,e=this.edges.reduce((function(e,n,r){return n.from.coordinates[1]>t.edges[e].from.coordinates[1]&&(e=r),e}),0),n=(0===e?this.length:e)-1,r=(e+1)%this.length,i=ss(this.edges[n].from.coordinates,this.edges[e].from.coordinates,this.edges[r].from.coordinates);return 0===i?this.edges[n].from.coordinates[0]>this.edges[r].from.coordinates[0]:i>0},t.prototype.toMultiPoint=function(){return d(this.edges.map((function(t){return t.from.coordinates})))},t.prototype.toPolygon=function(){if(this.polygon)return this.polygon;var t=this.edges.map((function(t){return t.from.coordinates}));return t.push(this.edges[0].from.coordinates),this.polygon=l([t])},t.prototype.getEnvelope=function(){return this.envelope?this.envelope:this.envelope=dn(this.toPolygon())},t.findEdgeRingContaining=function(t,e){var n,r,i=t.getEnvelope();return e.forEach((function(e){var o,s,u,l,c,h,p=e.getEnvelope();if((r&&(n=r.getEnvelope()),s=i,u=(o=p).geometry.coordinates[0].map((function(t){return t[0]})),l=o.geometry.coordinates[0].map((function(t){return t[1]})),c=s.geometry.coordinates[0].map((function(t){return t[0]})),h=s.geometry.coordinates[0].map((function(t){return t[1]})),Math.max.apply(null,u)!==Math.max.apply(null,c)||Math.max.apply(null,l)!==Math.max.apply(null,h)||Math.min.apply(null,u)!==Math.min.apply(null,c)||Math.min.apply(null,l)!==Math.min.apply(null,h))&&as(p,i)){for(var f=t.map((function(t){return t.from.coordinates})),g=void 0,d=function(t){e.some((function(e){return n=t,r=e.from.coordinates,n[0]===r[0]&&n[1]===r[1];var n,r}))||(g=t)},y=0,v=f;y=0;--o){var s=i[o],a=s.symetric,u=void 0,l=void 0;s.label===e&&(u=s),a.label===e&&(l=a),u&&l&&(l&&(r=l),u&&(r&&(r.next=u,r=void 0),n||(n=u)))}r&&(r.next=n)},t.prototype._findLabeledEdgeRings=function(){var t=[],e=0;return this.edges.forEach((function(n){if(!(n.label>=0)){t.push(n);var r=n;do{r.label=e,r=r.next}while(!n.isEqual(r));e++}})),t},t.prototype.getEdgeRings=function(){var t=this;this._computeNextCWEdges(),this.edges.forEach((function(t){t.label=void 0})),this._findLabeledEdgeRings().forEach((function(e){t._findIntersectionNodes(e).forEach((function(n){t._computeNextCCWEdges(n,e.label)}))}));var e=[];return this.edges.forEach((function(n){n.ring||e.push(t._findEdgeRing(n))})),e},t.prototype._findIntersectionNodes=function(t){var e=[],n=t,r=function(){var r=0;n.from.getOuterEdges().forEach((function(e){e.label===t.label&&++r})),r>1&&e.push(n.from),n=n.next};do{r()}while(!t.isEqual(n));return e},t.prototype._findEdgeRing=function(t){var e=t,n=new cs;do{n.push(e),e.ring=n,e=e.next}while(!t.isEqual(e));return n},t.prototype.removeNode=function(t){var e=this;t.getOuterEdges().forEach((function(t){return e.removeEdge(t)})),t.innerEdges.forEach((function(t){return e.removeEdge(t)})),delete this.nodes[t.id]},t.prototype.removeEdge=function(t){this.edges=this.edges.filter((function(e){return!e.isEqual(t)})),t.deleteEdge()},t}();function ps(t,e){var n=!0;return z(t,(function(t){z(e,(function(e){if(!1===n)return!1;n=function(t,e){switch(t.type){case"Point":switch(e.type){case"Point":return n=t.coordinates,r=e.coordinates,!(n[0]===r[0]&&n[1]===r[1]);case"LineString":return!fs(e,t);case"Polygon":return!ye(t,e)}break;case"LineString":switch(e.type){case"Point":return!fs(t,e);case"LineString":return!function(t,e){if(Or(t,e).features.length>0)return!0;return!1}(t,e);case"Polygon":return!gs(e,t)}break;case"Polygon":switch(e.type){case"Point":return!ye(e,t);case"LineString":return!gs(t,e);case"Polygon":return!function(t,e){for(var n=0,r=t.coordinates[0];n0)return!0;return!1}(e,t)}}var n,r;return!1}(t.geometry,e.geometry)}))})),n}function fs(t,e){for(var n=0;n0}function ds(t,e,n){var r=n[0]-t[0],i=n[1]-t[1],o=e[0]-t[0],s=e[1]-t[1];return 0==r*s-i*o&&(Math.abs(o)>=Math.abs(s)?o>0?t[0]<=n[0]&&n[0]<=e[0]:e[0]<=n[0]&&n[0]<=t[0]:s>0?t[1]<=n[1]&&n[1]<=e[1]:e[1]<=n[1]&&n[1]<=t[1])}function ys(t,e){return!(t[0]>e[0])&&(!(t[2]e[1])&&!(t[3]0}function Es(t,e){for(var n=!1,r=!1,i=t.coordinates.length,o=0;o=Math.abs(a)?s>0?t[0]<=n[0]&&n[0]<=e[0]:e[0]<=n[0]&&n[0]<=t[0]:a>0?t[1]<=n[1]&&n[1]<=e[1]:e[1]<=n[1]&&n[1]<=t[1]:Math.abs(s)>=Math.abs(a)?s>0?t[0]0?t[1]=0&&(n=[].concat(t.slice(r,t.length),t.slice(1,r+1))),n},ws.prototype.comparePath=function(t,e){var n=this;return t.every((function(t,e){return n.compareCoord(t,this[e])}),e)},ws.prototype.comparePolygon=function(t,e){if(this.compareLine(t.coordinates[0],e.coordinates[0],1,!0)){var n=t.coordinates.slice(1,t.coordinates.length),r=e.coordinates.slice(1,e.coordinates.length),i=this;return n.every((function(t){return this.some((function(e){return i.compareLine(t,e,1,!0)}))}),r)}return!1},ws.prototype.compareFeature=function(t,e){return!(t.id!==e.id||!this.objectComparator(t.properties,e.properties)||!this.compareBBox(t,e))&&this.compare(t.geometry,e.geometry)},ws.prototype.compareBBox=function(t,e){return!!(!t.bbox&&!e.bbox||t.bbox&&e.bbox&&this.compareCoord(t.bbox,e.bbox))},ws.prototype.removePseudo=function(t){return t};var Cs=ws;function Ps(t,e){var n=!1;return z(t,(function(t){z(e,(function(e){if(!0===n)return!0;n=!ps(t.geometry,e.geometry)}))})),n}var Ms=Bt((function(t){function e(t,e,n,r){this.dataset=[],this.epsilon=1,this.minPts=2,this.distance=this._euclideanDistance,this.clusters=[],this.noise=[],this._visited=[],this._assigned=[],this._datasetLength=0,this._init(t,e,n,r)}e.prototype.run=function(t,e,n,r){this._init(t,e,n,r);for(var i=0;i=this.minPts&&(e=this._mergeArrays(e,i))}1!==this._assigned[r]&&this._addToCluster(r,t)}},e.prototype._addToCluster=function(t,e){this.clusters[e].push(t),this._assigned[t]=1},e.prototype._regionQuery=function(t){for(var e=[],n=0;n0){for(u=0;u=0);return t},e.prototype.assign=function(){for(var t,e=!1,n=this.dataset.length,r=0;ri&&(n=r):e=this.minPts)return n}},n.prototype._regionQuery=function(t,e){e=e||this.epsilon;for(var n=[],r=0,i=this.dataset.length;r0;r.length0;){var a=t[Math.floor(Math.random()*o)],u=s?a.join("_"):""+a;n[u]||(n[u]=!0,r.push(a))}if(r.length0,s=t[Math.floor(Math.random()*i)];o&&s.join("_");for(r.push(s);r.length0,f=[];if(n)i="kmrand"==n?Gs(t,e):"kmpp"==n?qs(t,e):n;else for(var g={};i.length0;){var u=s.pop();if(u===n)return Vs(u);u.closed=!0;for(var l=t.neighbors(u),c=0,h=l.length;c0)){if(o/=p,p<0){if(o0){if(o>h)return;o>c&&(c=o)}if(o=r-u,p||!(o<0)){if(o/=p,p<0){if(o>h)return;o>c&&(c=o)}else if(p>0){if(o0)){if(o/=f,f<0){if(o0){if(o>h)return;o>c&&(c=o)}if(o=i-l,f||!(o<0)){if(o/=f,f<0){if(o>h)return;o>c&&(c=o)}else if(f>0){if(o0||h<1)||(c>0&&(t[0]=[u+c*p,l+c*f]),h<1&&(t[1]=[u+h*p,l+h*f]),!0)}}}}}function ua(t,e,n,r,i){var o=t[1];if(o)return!0;var s,a,u=t[0],l=t.left,c=t.right,h=l[0],p=l[1],f=c[0],g=c[1],d=(h+f)/2,y=(p+g)/2;if(g===p){if(d=r)return;if(h>f){if(u){if(u[1]>=i)return}else u=[d,n];o=[d,i]}else{if(u){if(u[1]1)if(h>f){if(u){if(u[1]>=i)return}else u=[(n-a)/s,n];o=[(i-a)/s,i]}else{if(u){if(u[1]=r)return}else u=[e,s*e+a];o=[r,s*r+a]}else{if(u){if(u[0]0&&(this.content[0]=e,this.bubbleUp(0)),t},remove:function(t){var e=this.content.indexOf(t),n=this.content.pop();e!==this.content.length-1&&(this.content[e]=n,this.scoreFunction(n)0;){var n=(t+1>>1)-1,r=this.content[n];if(!(this.scoreFunction(e)=-La)){var f=u*u+l*l,g=c*c+h*h,d=(h*f-l*g)/p,y=(u*g-c*f)/p,v=fa.pop()||new ga;v.arc=t,v.site=i,v.x=d+s,v.y=(v.cy=y+a)+Math.sqrt(d*d+y*y),t.circle=v;for(var _=null,m=Ca._;m;)if(v.yMa)a=a.L;else{if(!((i=o-Ia(a,s))>Ma)){r>-Ma?(e=a.P,n=a):i>-Ma?(e=a,n=a.N):e=n=a;break}if(!a.R){e=a;break}a=a.R}!function(t){Sa[t.index]={site:t,halfedges:[]}}(t);var u=ma(t);if(Na.insert(e,u),e||n){if(e===n)return ya(e),n=ma(e.site),Na.insert(u,n),u.edge=n.edge=ia(e.site,u.site),da(e),void da(n);if(n){ya(e),ya(n);var l=e.site,c=l[0],h=l[1],p=t[0]-c,f=t[1]-h,g=n.site,d=g[0]-c,y=g[1]-h,v=2*(p*y-f*d),_=p*p+f*f,m=d*d+y*y,x=[(y*_-f*m)/v+c,(p*m-d*_)/v+h];sa(n.edge,l,g,x),u.edge=ia(l,t,null,x),n.edge=ia(t,g,null,x),da(e),da(n)}else u.edge=ia(e.site,u.site)}}function wa(t,e){var n=t.site,r=n[0],i=n[1],o=i-e;if(!o)return r;var s=t.P;if(!s)return-1/0;var a=(n=s.site)[0],u=n[1],l=u-e;if(!l)return a;var c=a-r,h=1/o-1/l,p=c/l;return h?(-p+Math.sqrt(p*p-2*h*(c*c/(-2*l)-u+l/2+i-o/2)))/h+r:(r+a)/2}function Ia(t,e){var n=t.N;if(n)return wa(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var Na,Sa,Ca,Pa,Ma=1e-6,La=1e-12;function Oa(t,e){return e[1]-t[1]||e[0]-t[0]}function Ra(t,e){var n,r,i,o=t.sort(Oa).pop();for(Pa=[],Sa=new Array(t.length),Na=new $s,Ca=new $s;;)if(i=pa,o&&(!i||o[1]Ma||Math.abs(i[0][1]-i[1][1])>Ma)||delete Pa[o]}(s,a,u,l),function(t,e,n,r){var i,o,s,a,u,l,c,h,p,f,g,d,y=Sa.length,v=!0;for(i=0;iMa||Math.abs(d-p)>Ma)&&(u.splice(a,0,Pa.push(oa(s,f,Math.abs(g-t)Ma?[t,Math.abs(h-t)Ma?[Math.abs(p-r)Ma?[n,Math.abs(h-n)Ma?[Math.abs(p-e)=-270&&(d=-d),g<-180&&g>=-360&&(y=-y),"degrees"===o){var v=d*Math.cos(h)+y*Math.sin(h),_=y*Math.cos(h)-d*Math.sin(h);d=v,y=_}p.push([d+c[0],y+c[1]])}return p.push(p[0]),"degrees"===o?l([p],u):$o(l([p],u),s,{pivot:a})}function Da(t){var e=t*Math.PI/180;return Math.tan(e)}function Fa(t,e){void 0===e&&(e={});var n=0,r=0,i=0;return q(t,(function(t,o,s){var a=e.weight?null==s?void 0:s[e.weight]:void 0;if(!C(a=null==a?1:a))throw new Error("weight value must be a number for feature index "+o);(a=Number(a))>0&&R(t,(function(t){n+=t[0]*a,r+=t[1]*a,i+=a}))})),a([n/i,r/i],e.properties,e)}function ka(t,e,n,r,i){var o=r.tolerance||.001,s=0,u=0,l=0,c=0;if(F(n,(function(e){var n,r=null===(n=e.properties)||void 0===n?void 0:n.weight,i=null==r?1:r;if(!C(i=Number(i)))throw new Error("weight value must be a number");if(i>0){c+=1;var o=i*me(e,t);0===o&&(o=1);var a=i/o;s+=e.geometry.coordinates[0]*a,u+=e.geometry.coordinates[1]*a,l+=a}})),c<1)throw new Error("no features to measure");var h=s/l,p=u/l;return 1===c||0===i||Math.abs(h-e[0])n&&(n=u,r=o,e.push([]));var l=o-r,c=t.coordinates[u][l+1],h=i[0],p=i[1],f=c[0],g=c[1];e[u].push([.75*h+.25*f,.75*p+.25*g]),e[u].push([.25*h+.75*f,.25*p+.75*g])}),!0),e.forEach((function(t){t.push(t[0])}))}function Ba(t,e){var n=0,r=0,i=0;R(t,(function(o,s,a,u,l){u>i&&(i=u,r=s,e.push([[]])),l>n&&(n=l,r=s,e[u].push([]));var c=s-r,h=t.coordinates[u][l][c+1],p=o[0],f=o[1],g=h[0],d=h[1];e[u][l].push([.75*p+.25*g,.75*f+.25*d]),e[u][l].push([.25*p+.75*g,.25*f+.75*d])}),!0),e.forEach((function(t){t.forEach((function(t){t.push(t[0])}))}))}function za(t,e,n){void 0===n&&(n=2);var r=K(t),i=K(e),o=r[0]-i[0],s=r[1]-i[1];return 1===n?Math.abs(o)+Math.abs(s):Math.pow(Math.pow(o,n)+Math.pow(s,n),1/n)}function ja(t,e){var n=(e=e||{}).threshold||1e4,r=e.p||2,i=e.binary||!1,o=e.alpha||-1,s=e.standardization||!1,a=[];F(t,(function(t){a.push(En(t))}));for(var u=[],l=0;l0?1:0}(t[0]))*e,n*Math.log(Math.tan(.25*Math.PI+.5*t[1]*e))];return i[0]>r&&(i[0]=r),i[0]<-r&&(i[0]=-r),i[1]>r&&(i[1]=r),i[1]<-r&&(i[1]=-r),i}function Wa(t){var e=180/Math.PI,n=6378137;return[t[0]*e/n,(.5*Math.PI-2*Math.atan(Math.exp(-t[1]/n)))*e]}Ra.prototype={constructor:Ra,polygons:function(){var t=this.edges;return this.cells.map((function(e){var n=e.halfedges.map((function(n){return ca(e,t[n])}));return n.data=e.site.data,n}))},triangles:function(){var t=[],e=this.edges;return this.cells.forEach((function(n,r){if(o=(i=n.halfedges).length)for(var i,o,s,a,u,l,c=n.site,h=-1,p=e[i[o-1]],f=p.left===c?p.right:p.left;++h=a)return null;var u=t-i.site[0],l=e-i.site[1],c=u*u+l*l;do{i=o.cells[r=s],s=null,i.halfedges.forEach((function(n){var r=o.edges[n],a=r.left;if(a!==i.site&&a||(a=r.right)){var u=t-a[0],l=e-a[1],h=u*u+l*l;h0?t+n[e-1]:t})),o.forEach((function(t){t=2*t*Math.PI/o[o.length-1];var n=Math.random();i.push([n*(e.max_radial_length||10)*Math.sin(t),n*(e.max_radial_length||10)*Math.cos(t)])})),i[i.length-1]=i[0],i=i.map((r=Ka(e.bbox),function(t){return[t[0]+r[0],t[1]+r[1]]})),n.push(l([i]))},i=0;i + * @license MIT + * @preserve + */function fu(t,e){return t>e?1:t0))break;if(null===e.right)break;if(n(t,e.right.key)>0){a=e.right;if(e.right=a.left,a.left=e,null===(e=a).right)break}i.right=e,i=e,e=e.right}}return i.right=e.left,o.left=e.right,e.left=r.right,e.right=r.left,e}function du(t,e,n,r){var i=new pu(t,e);if(null===n)return i.left=i.right=null,i;var o=r(t,(n=gu(t,n,r)).key);return o<0?(i.left=n.left,i.right=n,n.left=null):o>=0&&(i.right=n.right,i.left=n,n.right=null),i}function yu(t,e,n){var r=null,i=null;if(e){var o=n((e=gu(t,e,n)).key,t);0===o?(r=e.left,i=e.right):o<0?(i=e.right,e.right=null,r=e):(r=e.left,e.left=null,i=e)}return{left:r,right:i}}function vu(t,e,n,r,i){if(t){r(e+(n?"└── ":"├── ")+i(t)+"\n");var o=e+(n?" ":"│ ");t.left&&vu(t.left,o,!1,r,i),t.right&&vu(t.right,o,!0,r,i)}}var _u=function(){function t(t){void 0===t&&(t=fu),this._root=null,this._size=0,this._comparator=t}return t.prototype.insert=function(t,e){return this._size++,this._root=du(t,e,this._root,this._comparator)},t.prototype.add=function(t,e){var n=new pu(t,e);null===this._root&&(n.left=n.right=null,this._size++,this._root=n);var r=this._comparator,i=gu(t,this._root,r),o=r(t,i.key);return 0===o?this._root=i:(o<0?(n.left=i.left,n.right=i,i.left=null):o>0&&(n.right=i.right,n.left=i,i.right=null),this._size++,this._root=n),this._root},t.prototype.remove=function(t){this._root=this._remove(t,this._root,this._comparator)},t.prototype._remove=function(t,e,n){var r;return null===e?null:0===n(t,(e=gu(t,e,n)).key)?(null===e.left?r=e.right:(r=gu(t,e.left,n)).right=e.right,this._size--,r):e},t.prototype.pop=function(){var t=this._root;if(t){for(;t.left;)t=t.left;return this._root=gu(t.key,this._root,this._comparator),this._root=this._remove(t.key,this._root,this._comparator),{key:t.key,data:t.data}}return null},t.prototype.findStatic=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return e;e=r<0?e.left:e.right}return null},t.prototype.find=function(t){return this._root&&(this._root=gu(t,this._root,this._comparator),0!==this._comparator(t,this._root.key))?null:this._root},t.prototype.contains=function(t){for(var e=this._root,n=this._comparator;e;){var r=n(t,e.key);if(0===r)return!0;e=r<0?e.left:e.right}return!1},t.prototype.forEach=function(t,e){for(var n=this._root,r=[],i=!1;!i;)null!==n?(r.push(n),n=n.left):0!==r.length?(n=r.pop(),t.call(e,n),n=n.right):i=!0;return this},t.prototype.range=function(t,e,n,r){for(var i=[],o=this._comparator,s=this._root;0!==i.length||s;)if(s)i.push(s),s=s.left;else{if(o((s=i.pop()).key,e)>0)break;if(o(s.key,t)>=0&&n.call(r,s))return this;s=s.right}return this},t.prototype.keys=function(){var t=[];return this.forEach((function(e){var n=e.key;return t.push(n)})),t},t.prototype.values=function(){var t=[];return this.forEach((function(e){var n=e.data;return t.push(n)})),t},t.prototype.min=function(){return this._root?this.minNode(this._root).key:null},t.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},t.prototype.minNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.left;)t=t.left;return t},t.prototype.maxNode=function(t){if(void 0===t&&(t=this._root),t)for(;t.right;)t=t.right;return t},t.prototype.at=function(t){for(var e=this._root,n=!1,r=0,i=[];!n;)if(e)i.push(e),e=e.left;else if(i.length>0){if(e=i.pop(),r===t)return e;r++,e=e.right}else n=!0;return null},t.prototype.next=function(t){var e=this._root,n=null;if(t.right){for(n=t.right;n.left;)n=n.left;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?(n=e,e=e.left):e=e.right}return n},t.prototype.prev=function(t){var e=this._root,n=null;if(null!==t.left){for(n=t.left;n.right;)n=n.right;return n}for(var r=this._comparator;e;){var i=r(t.key,e.key);if(0===i)break;i<0?e=e.left:(n=e,e=e.right)}return n},t.prototype.clear=function(){return this._root=null,this._size=0,this},t.prototype.toList=function(){return function(t){var e=t,n=[],r=!1,i=new pu(null,null),o=i;for(;!r;)e?(n.push(e),e=e.left):n.length>0?e=(e=o=o.next=n.pop()).right:r=!0;return o.next=null,i.next}(this._root)},t.prototype.load=function(t,e,n){void 0===e&&(e=[]),void 0===n&&(n=!1);var r=t.length,i=this._comparator;if(n&&Eu(t,e,0,r-1,i),null===this._root)this._root=mu(t,e,0,r),this._size=r;else{var o=function(t,e,n){var r=new pu(null,null),i=r,o=t,s=e;for(;null!==o&&null!==s;)n(o.key,s.key)<0?(i.next=o,o=o.next):(i.next=s,s=s.next),i=i.next;null!==o?i.next=o:null!==s&&(i.next=s);return r.next}(this.toList(),function(t,e){for(var n=new pu(null,null),r=n,i=0;i0){var o=n+Math.floor(i/2),s=t[o],a=e[o],u=new pu(s,a);return u.left=mu(t,e,n,o),u.right=mu(t,e,o+1,r),u}return null}function xu(t,e,n){var r=n-e;if(r>0){var i=e+Math.floor(r/2),o=xu(t,e,i),s=t.head;return s.left=o,t.head=t.head.next,s.right=xu(t,i+1,n),s}return null}function Eu(t,e,n,r,i){if(!(n>=r)){for(var o=t[n+r>>1],s=n-1,a=r+1;;){do{s++}while(i(t[s],o)<0);do{a--}while(i(t[a],o)>0);if(s>=a)break;var u=t[s];t[s]=t[a],t[a]=u,u=e[s],e[s]=e[a],e[a]=u}Eu(t,e,n,a,i),Eu(t,e,a+1,r,i)}}function bu(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function wu(t,e){for(var n=0;ne.x?1:t.ye.y?1:0}}]),Iu(t,[{key:"link",value:function(t){if(t.point===this.point)throw new Error("Tried to link already linked events");for(var e=t.point.events,n=0,r=e.length;n=0&&u>=0?sl?-1:0:o<0&&u<0?sl?1:0:uo?1:0}}}]),t}(),zu=0,ju=function(){function t(e,n,r,i){bu(this,t),this.id=++zu,this.leftSE=e,e.segment=this,e.otherSE=n,this.rightSE=n,n.segment=this,n.otherSE=e,this.rings=r,this.windings=i}return Iu(t,null,[{key:"compare",value:function(t,e){var n=t.leftSE.point.x,r=e.leftSE.point.x,i=t.rightSE.point.x,o=e.rightSE.point.x;if(os&&a>u)return-1;var c=t.comparePoint(e.leftSE.point);if(c<0)return 1;if(c>0)return-1;var h=e.comparePoint(t.rightSE.point);return 0!==h?h:-1}if(n>r){if(sa&&s>l)return 1;var p=e.comparePoint(t.leftSE.point);if(0!==p)return p;var f=t.comparePoint(e.rightSE.point);return f<0?1:f>0?-1:1}if(sa)return 1;if(io){var d=t.comparePoint(e.rightSE.point);if(d<0)return 1;if(d>0)return-1}if(i!==o){var y=u-s,v=i-n,_=l-a,m=o-r;if(y>v&&_m)return-1}return i>o?1:il?1:t.ide.id?1:0}}]),Iu(t,[{key:"replaceRightSE",value:function(t){this.rightSE=t,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}},{key:"bbox",value:function(){var t=this.leftSE.point.y,e=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:te?t:e}}}},{key:"vector",value:function(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}},{key:"isAnEndpoint",value:function(t){return t.x===this.leftSE.point.x&&t.y===this.leftSE.point.y||t.x===this.rightSE.point.x&&t.y===this.rightSE.point.y}},{key:"comparePoint",value:function(t){if(this.isAnEndpoint(t))return 0;var e=this.leftSE.point,n=this.rightSE.point,r=this.vector();if(e.x===n.x)return t.x===e.x?0:t.x0&&a.swapEvents(),Bu.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),r&&(i.checkForConsuming(),o.checkForConsuming()),n}},{key:"swapEvents",value:function(){var t=this.rightSE;this.rightSE=this.leftSE,this.leftSE=t,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(var e=0,n=this.windings.length;e0){var o=n;n=r,r=o}if(n.prev===r){var s=n;n=r,r=s}for(var a=0,u=r.rings.length;a0))throw new Error("Tried to create degenerate segment at [".concat(e.x,", ").concat(e.y,"]"));i=n,o=e,s=-1}return new t(new Bu(i,!0),new Bu(o,!1),[r],[s])}}]),t}(),Uu=function(){function t(e,n,r){if(bu(this,t),!Array.isArray(e)||0===e.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=n,this.isExterior=r,this.segments=[],"number"!=typeof e[0][0]||"number"!=typeof e[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");var i=Ru.round(e[0][0],e[0][1]);this.bbox={ll:{x:i.x,y:i.y},ur:{x:i.x,y:i.y}};for(var o=i,s=1,a=e.length;sthis.bbox.ur.x&&(this.bbox.ur.x=u.x),u.y>this.bbox.ur.y&&(this.bbox.ur.y=u.y),o=u)}i.x===o.x&&i.y===o.y||this.segments.push(ju.fromRing(o,i,this))}return Iu(t,[{key:"getSweepEvents",value:function(){for(var t=[],e=0,n=this.segments.length;ethis.bbox.ur.x&&(this.bbox.ur.x=o.bbox.ur.x),o.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=o.bbox.ur.y),this.interiorRings.push(o)}this.multiPoly=n}return Iu(t,[{key:"getSweepEvents",value:function(){for(var t=this.exteriorRing.getSweepEvents(),e=0,n=this.interiorRings.length;ethis.bbox.ur.x&&(this.bbox.ur.x=o.bbox.ur.x),o.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=o.bbox.ur.y),this.polys.push(o)}this.isSubject=n}return Iu(t,[{key:"getSweepEvents",value:function(){for(var t=[],e=0,n=this.polys.length;e0&&(t=r)}for(var i=t.segment.prevInResult(),o=i?i.prevInResult():null;;){if(!i)return null;if(!o)return i.ringOut;if(o.ringOut!==i.ringOut)return o.ringOut.enclosingRing()!==i.ringOut?i.ringOut:i.ringOut.enclosingRing();i=o.prevInResult(),o=i?i.prevInResult():null}}}]),t}(),Hu=function(){function t(e){bu(this,t),this.exteriorRing=e,e.poly=this,this.interiorRings=[]}return Iu(t,[{key:"addInterior",value:function(t){this.interiorRings.push(t),t.poly=this}},{key:"getGeom",value:function(){var t=[this.exteriorRing.getGeom()];if(null===t[0])return null;for(var e=0,n=this.interiorRings.length;e1&&void 0!==arguments[1]?arguments[1]:ju.compare;bu(this,t),this.queue=e,this.tree=new _u(n),this.segments=[]}return Iu(t,[{key:"process",value:function(t){var e=t.segment,n=[];if(t.consumedBy)return t.isLeft?this.queue.remove(t.otherSE):this.tree.remove(e),n;var r=t.isLeft?this.tree.insert(e):this.tree.find(e);if(!r)throw new Error("Unable to find segment #".concat(e.id," ")+"[".concat(e.leftSE.point.x,", ").concat(e.leftSE.point.y,"] -> ")+"[".concat(e.rightSE.point.x,", ").concat(e.rightSE.point.y,"] ")+"in SweepLine tree. Please submit a bug report.");for(var i=r,o=r,s=void 0,a=void 0;void 0===s;)null===(i=this.tree.prev(i))?s=null:void 0===i.key.consumedBy&&(s=i.key);for(;void 0===a;)null===(o=this.tree.next(o))?a=null:void 0===o.key.consumedBy&&(a=o.key);if(t.isLeft){var u=null;if(s){var l=s.getIntersection(e);if(null!==l&&(e.isAnEndpoint(l)||(u=l),!s.isAnEndpoint(l)))for(var c=this._splitSafely(s,l),h=0,p=c.length;h0?(this.tree.remove(e),n.push(t)):(this.segments.push(e),e.prev=s)}else{if(s&&a){var b=s.getIntersection(a);if(null!==b){if(!s.isAnEndpoint(b))for(var w=this._splitSafely(s,b),I=0,N=w.length;IZu)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big). Please file a bug report.");for(var m=new Ju(f),x=f.size,E=f.pop();E;){var b=E.key;if(f.size===x){var w=b.segment;throw new Error("Unable to pop() ".concat(b.isLeft?"left":"right"," SweepEvent ")+"[".concat(b.point.x,", ").concat(b.point.y,"] from segment #").concat(w.id," ")+"[".concat(w.leftSE.point.x,", ").concat(w.leftSE.point.y,"] -> ")+"[".concat(w.rightSE.point.x,", ").concat(w.rightSE.point.y,"] from queue. ")+"Please file a bug report.")}if(f.size>Zu)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big). Please file a bug report.");if(m.segments.length>Ku)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments). Please file a bug report.");for(var I=m.process(b),N=0,S=I.length;N1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;r1?e-1:0),r=1;re.x?1:this.ye.y?1:0},ul.prototype.clone=function(){},ul.prototype.copy=function(){return new ul(this)},ul.prototype.toString=function(){return"("+this.x+", "+this.y+", "+this.z+")"},ul.prototype.distance3D=function(t){var e=this.x-t.x,n=this.y-t.y,r=this.z-t.z;return Math.sqrt(e*e+n*n+r*r)},ul.prototype.distance=function(t){var e=this.x-t.x,n=this.y-t.y;return Math.sqrt(e*e+n*n)},ul.prototype.hashCode=function(){var t=17;return t=37*(t=37*t+ul.hashCode(this.x))+ul.hashCode(this.y)},ul.prototype.setCoordinate=function(t){this.x=t.x,this.y=t.y,this.z=t.z},ul.prototype.interfaces_=function(){return[il,ol,al]},ul.prototype.getClass=function(){return ul},ul.hashCode=function(){if(1===arguments.length){var t=arguments[0],e=nl.doubleToLongBits(t);return Math.trunc((e^e)>>>32)}},ll.DimensionalComparator.get=function(){return cl},ll.serialVersionUID.get=function(){return 0x5cbf2c235c7e5800},ll.NULL_ORDINATE.get=function(){return nl.NaN},ll.X.get=function(){return 0},ll.Y.get=function(){return 1},ll.Z.get=function(){return 2},Object.defineProperties(ul,ll);var cl=function(t){if(this._dimensionsToTest=2,0===arguments.length);else if(1===arguments.length){var e=arguments[0];if(2!==e&&3!==e)throw new el("only 2 or 3 dimensions may be specified");this._dimensionsToTest=e}};cl.prototype.compare=function(t,e){var n=t,r=e,i=cl.compare(n.x,r.x);if(0!==i)return i;var o=cl.compare(n.y,r.y);return 0!==o?o:this._dimensionsToTest<=2?0:cl.compare(n.z,r.z)},cl.prototype.interfaces_=function(){return[sl]},cl.prototype.getClass=function(){return cl},cl.compare=function(t,e){return te?1:nl.isNaN(t)?nl.isNaN(e)?0:-1:nl.isNaN(e)?1:0};var hl=function(){};hl.prototype.create=function(){},hl.prototype.interfaces_=function(){return[]},hl.prototype.getClass=function(){return hl};var pl=function(){},fl={INTERIOR:{configurable:!0},BOUNDARY:{configurable:!0},EXTERIOR:{configurable:!0},NONE:{configurable:!0}};pl.prototype.interfaces_=function(){return[]},pl.prototype.getClass=function(){return pl},pl.toLocationSymbol=function(t){switch(t){case pl.EXTERIOR:return"e";case pl.BOUNDARY:return"b";case pl.INTERIOR:return"i";case pl.NONE:return"-"}throw new el("Unknown location value: "+t)},fl.INTERIOR.get=function(){return 0},fl.BOUNDARY.get=function(){return 1},fl.EXTERIOR.get=function(){return 2},fl.NONE.get=function(){return-1},Object.defineProperties(pl,fl);var gl=function(t,e){return t.interfaces_&&t.interfaces_().indexOf(e)>-1},dl=function(){},yl={LOG_10:{configurable:!0}};dl.prototype.interfaces_=function(){return[]},dl.prototype.getClass=function(){return dl},dl.log10=function(t){var e=Math.log(t);return nl.isInfinite(e)||nl.isNaN(e)?e:e/dl.LOG_10},dl.min=function(t,e,n,r){var i=t;return en?n:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){var r=arguments[0],i=arguments[1],o=arguments[2];return ro?o:r}},dl.wrap=function(t,e){return t<0?e- -t%e:t%e},dl.max=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],r=t;return e>r&&(r=e),n>r&&(r=n),r}if(4===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3],u=i;return o>u&&(u=o),s>u&&(u=s),a>u&&(u=a),u}},dl.average=function(t,e){return(t+e)/2},yl.LOG_10.get=function(){return Math.log(10)},Object.defineProperties(dl,yl);var vl=function(t){this.str=t};vl.prototype.append=function(t){this.str+=t},vl.prototype.setCharAt=function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)},vl.prototype.toString=function(t){return this.str};var _l=function(t){this.value=t};_l.prototype.intValue=function(){return this.value},_l.prototype.compareTo=function(t){return this.valuet?1:0},_l.isNaN=function(t){return Number.isNaN(t)};var ml=function(){};ml.isWhitespace=function(t){return t<=32&&t>=0||127===t},ml.toUpperCase=function(t){return t.toUpperCase()};var xl=function t(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if("number"==typeof arguments[0]){var e=arguments[0];this.init(e)}else if(arguments[0]instanceof t){var n=arguments[0];this.init(n)}else if("string"==typeof arguments[0]){var r=arguments[0];t.call(this,t.parse(r))}}else if(2===arguments.length){var i=arguments[0],o=arguments[1];this.init(i,o)}},El={PI:{configurable:!0},TWO_PI:{configurable:!0},PI_2:{configurable:!0},E:{configurable:!0},NaN:{configurable:!0},EPS:{configurable:!0},SPLIT:{configurable:!0},MAX_PRINT_DIGITS:{configurable:!0},TEN:{configurable:!0},ONE:{configurable:!0},SCI_NOT_EXPONENT_CHAR:{configurable:!0},SCI_NOT_ZERO:{configurable:!0}};xl.prototype.le=function(t){return(this._hi9?(c=!0,h="9"):h="0"+l,s.append(h),n=n.subtract(xl.valueOf(l)).multiply(xl.TEN),c&&n.selfAdd(xl.TEN);var p=!0,f=xl.magnitude(n._hi);if(f<0&&Math.abs(f)>=a-u&&(p=!1),!p)break}return e[0]=r,s.toString()},xl.prototype.sqr=function(){return this.multiply(this)},xl.prototype.doubleValue=function(){return this._hi+this._lo},xl.prototype.subtract=function(){if(arguments[0]instanceof xl){var t=arguments[0];return this.add(t.negate())}if("number"==typeof arguments[0]){var e=arguments[0];return this.add(-e)}},xl.prototype.equals=function(){if(1===arguments.length){var t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}},xl.prototype.isZero=function(){return 0===this._hi&&0===this._lo},xl.prototype.selfSubtract=function(){if(arguments[0]instanceof xl){var t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if("number"==typeof arguments[0]){var e=arguments[0];return this.isNaN()?this:this.selfAdd(-e,0)}},xl.prototype.getSpecialNumberString=function(){return this.isZero()?"0.0":this.isNaN()?"NaN ":null},xl.prototype.min=function(t){return this.le(t)?this:t},xl.prototype.selfDivide=function(){if(1===arguments.length){if(arguments[0]instanceof xl){var t=arguments[0];return this.selfDivide(t._hi,t._lo)}if("number"==typeof arguments[0]){var e=arguments[0];return this.selfDivide(e,0)}}else if(2===arguments.length){var n=arguments[0],r=arguments[1],i=null,o=null,s=null,a=null,u=null,l=null,c=null,h=null;return u=this._hi/n,h=(i=(l=xl.SPLIT*u)-(i=l-u))*(s=(h=xl.SPLIT*n)-(s=h-n))-(c=u*n)+i*(a=n-s)+(o=u-i)*s+o*a,h=u+(l=(this._hi-c-h+this._lo-u*r)/n),this._hi=h,this._lo=u-h+l,this}},xl.prototype.dump=function(){return"DD<"+this._hi+", "+this._lo+">"},xl.prototype.divide=function(){if(arguments[0]instanceof xl){var t=arguments[0],e=null,n=null,r=null,i=null,o=null,s=null,a=null,u=null;n=(o=this._hi/t._hi)-(e=(s=xl.SPLIT*o)-(e=s-o)),u=e*(r=(u=xl.SPLIT*t._hi)-(r=u-t._hi))-(a=o*t._hi)+e*(i=t._hi-r)+n*r+n*i;var l=u=o+(s=(this._hi-a-u+this._lo-o*t._lo)/t._hi),c=o-u+s;return new xl(l,c)}if("number"==typeof arguments[0]){var h=arguments[0];return nl.isNaN(h)?xl.createNaN():xl.copy(this).selfDivide(h,0)}},xl.prototype.ge=function(t){return(this._hi>t._hi||this._hi===t._hi)&&this._lo>=t._lo},xl.prototype.pow=function(t){if(0===t)return xl.valueOf(1);var e=new xl(this),n=xl.valueOf(1),r=Math.abs(t);if(r>1)for(;r>0;)r%2==1&&n.selfMultiply(e),(r/=2)>0&&(e=e.sqr());else n=e;return t<0?n.reciprocal():n},xl.prototype.ceil=function(){if(this.isNaN())return xl.NaN;var t=Math.ceil(this._hi),e=0;return t===this._hi&&(e=Math.ceil(this._lo)),new xl(t,e)},xl.prototype.compareTo=function(t){var e=t;return this._hie._hi?1:this._loe._lo?1:0},xl.prototype.rint=function(){return this.isNaN()?this:this.add(.5).floor()},xl.prototype.setValue=function(){if(arguments[0]instanceof xl){var t=arguments[0];return this.init(t),this}if("number"==typeof arguments[0]){var e=arguments[0];return this.init(e),this}},xl.prototype.max=function(t){return this.ge(t)?this:t},xl.prototype.sqrt=function(){if(this.isZero())return xl.valueOf(0);if(this.isNegative())return xl.NaN;var t=1/Math.sqrt(this._hi),e=this._hi*t,n=xl.valueOf(e),r=this.subtract(n.sqr())._hi*(.5*t);return n.add(r)},xl.prototype.selfAdd=function(){if(1===arguments.length){if(arguments[0]instanceof xl){var t=arguments[0];return this.selfAdd(t._hi,t._lo)}if("number"==typeof arguments[0]){var e=arguments[0],n=null,r=null,i=null,o=null,s=null,a=null;return o=(i=this._hi+e)-(s=i-this._hi),r=(a=(o=e-s+(this._hi-o))+this._lo)+(i-(n=i+a)),this._hi=n+r,this._lo=r+(n-this._hi),this}}else if(2===arguments.length){var u=arguments[0],l=arguments[1],c=null,h=null,p=null,f=null,g=null,d=null,y=null;f=this._hi+u,h=this._lo+l,g=f-(d=f-this._hi),p=h-(y=h-this._lo);var v=(c=f+(d=(g=u-d+(this._hi-g))+h))+(d=(p=l-y+(this._lo-p))+(d+(f-c))),_=d+(c-v);return this._hi=v,this._lo=_,this}},xl.prototype.selfMultiply=function(){if(1===arguments.length){if(arguments[0]instanceof xl){var t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if("number"==typeof arguments[0]){var e=arguments[0];return this.selfMultiply(e,0)}}else if(2===arguments.length){var n=arguments[0],r=arguments[1],i=null,o=null,s=null,a=null,u=null,l=null;i=(u=xl.SPLIT*this._hi)-this._hi,l=xl.SPLIT*n,i=u-i,o=this._hi-i,s=l-n;var c=(u=this._hi*n)+(l=i*(s=l-s)-u+i*(a=n-s)+o*s+o*a+(this._hi*r+this._lo*n)),h=l+(i=u-c);return this._hi=c,this._lo=h,this}},xl.prototype.selfSqr=function(){return this.selfMultiply(this)},xl.prototype.floor=function(){if(this.isNaN())return xl.NaN;var t=Math.floor(this._hi),e=0;return t===this._hi&&(e=Math.floor(this._lo)),new xl(t,e)},xl.prototype.negate=function(){return this.isNaN()?this:new xl(-this._hi,-this._lo)},xl.prototype.clone=function(){},xl.prototype.multiply=function(){if(arguments[0]instanceof xl){var t=arguments[0];return t.isNaN()?xl.createNaN():xl.copy(this).selfMultiply(t)}if("number"==typeof arguments[0]){var e=arguments[0];return nl.isNaN(e)?xl.createNaN():xl.copy(this).selfMultiply(e,0)}},xl.prototype.isNaN=function(){return nl.isNaN(this._hi)},xl.prototype.intValue=function(){return Math.trunc(this._hi)},xl.prototype.toString=function(){var t=xl.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()},xl.prototype.toStandardNotation=function(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!0,e),r=e[0]+1,i=n;if("."===n.charAt(0))i="0"+n;else if(r<0)i="0."+xl.stringOfChar("0",-r)+n;else if(-1===n.indexOf(".")){var o=r-n.length;i=n+xl.stringOfChar("0",o)+".0"}return this.isNegative()?"-"+i:i},xl.prototype.reciprocal=function(){var t,e,n,r,i=null,o=null,s=null,a=null;t=(n=1/this._hi)-(i=(s=xl.SPLIT*n)-(i=s-n)),o=(a=xl.SPLIT*this._hi)-this._hi;var u=n+(s=(1-(r=n*this._hi)-(a=i*(o=a-o)-r+i*(e=this._hi-o)+t*o+t*e)-n*this._lo)/this._hi);return new xl(u,n-u+s)},xl.prototype.toSciNotation=function(){if(this.isZero())return xl.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),n=this.extractSignificantDigits(!1,e),r=xl.SCI_NOT_EXPONENT_CHAR+e[0];if("0"===n.charAt(0))throw new Error("Found leading zero: "+n);var i="";n.length>1&&(i=n.substring(1));var o=n.charAt(0)+"."+i;return this.isNegative()?"-"+o+r:o+r},xl.prototype.abs=function(){return this.isNaN()?xl.NaN:this.isNegative()?this.negate():new xl(this)},xl.prototype.isPositive=function(){return(this._hi>0||0===this._hi)&&this._lo>0},xl.prototype.lt=function(t){return(this._hit._hi||this._hi===t._hi)&&this._lo>t._lo},xl.prototype.isNegative=function(){return(this._hi<0||0===this._hi)&&this._lo<0},xl.prototype.trunc=function(){return this.isNaN()?xl.NaN:this.isPositive()?this.floor():this.ceil()},xl.prototype.signum=function(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0},xl.prototype.interfaces_=function(){return[al,il,ol]},xl.prototype.getClass=function(){return xl},xl.sqr=function(t){return xl.valueOf(t).selfMultiply(t)},xl.valueOf=function(){if("string"==typeof arguments[0]){var t=arguments[0];return xl.parse(t)}if("number"==typeof arguments[0]){var e=arguments[0];return new xl(e)}},xl.sqrt=function(t){return xl.valueOf(t).sqrt()},xl.parse=function(t){for(var e=0,n=t.length;ml.isWhitespace(t.charAt(e));)e++;var r=!1;if(e=n);){var l=t.charAt(e);if(e++,ml.isDigit(l)){var c=l-"0";o.selfMultiply(xl.TEN),o.selfAdd(c),s++}else{if("."!==l){if("e"===l||"E"===l){var h=t.substring(e);try{u=_l.parseInt(h)}catch(e){throw e instanceof Error?new Error("Invalid exponent "+h+" in string "+t):e}break}throw new Error("Unexpected character '"+l+"' at position "+e+" in string "+t)}a=s}}var p=o,f=s-a-u;if(0===f)p=o;else if(f>0){var g=xl.TEN.pow(f);p=o.divide(g)}else if(f<0){var d=xl.TEN.pow(-f);p=o.multiply(d)}return r?p.negate():p},xl.createNaN=function(){return new xl(nl.NaN,nl.NaN)},xl.copy=function(t){return new xl(t)},xl.magnitude=function(t){var e=Math.abs(t),n=Math.log(e)/Math.log(10),r=Math.trunc(Math.floor(n));return 10*Math.pow(10,r)<=e&&(r+=1),r},xl.stringOfChar=function(t,e){for(var n=new vl,r=0;r0){if(o<=0)return bl.signum(s);r=i+o}else{if(!(i<0))return bl.signum(s);if(o>=0)return bl.signum(s);r=-i-o}var a=bl.DP_SAFE_EPSILON*r;return s>=a||-s>=a?bl.signum(s):2},bl.signum=function(t){return t>0?1:t<0?-1:0},wl.DP_SAFE_EPSILON.get=function(){return 1e-15},Object.defineProperties(bl,wl);var Il=function(){},Nl={X:{configurable:!0},Y:{configurable:!0},Z:{configurable:!0},M:{configurable:!0}};Nl.X.get=function(){return 0},Nl.Y.get=function(){return 1},Nl.Z.get=function(){return 2},Nl.M.get=function(){return 3},Il.prototype.setOrdinate=function(t,e,n){},Il.prototype.size=function(){},Il.prototype.getOrdinate=function(t,e){},Il.prototype.getCoordinate=function(){},Il.prototype.getCoordinateCopy=function(t){},Il.prototype.getDimension=function(){},Il.prototype.getX=function(t){},Il.prototype.clone=function(){},Il.prototype.expandEnvelope=function(t){},Il.prototype.copy=function(){},Il.prototype.getY=function(t){},Il.prototype.toCoordinateArray=function(){},Il.prototype.interfaces_=function(){return[ol]},Il.prototype.getClass=function(){return Il},Object.defineProperties(Il,Nl);var Sl=function(){},Cl=function(t){function e(){t.call(this,"Projective point not representable on the Cartesian plane.")}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Sl),Pl=function(){};Pl.arraycopy=function(t,e,n,r,i){for(var o=0,s=e;st._minx?this._minx:t._minx,n=this._miny>t._miny?this._miny:t._miny,r=this._maxx=this._minx&&e.getMaxX()<=this._maxx&&e.getMinY()>=this._miny&&e.getMaxY()<=this._maxy)}}else if(2===arguments.length){var n=arguments[0],r=arguments[1];return!this.isNull()&&(n>=this._minx&&n<=this._maxx&&r>=this._miny&&r<=this._maxy)}},Ll.prototype.intersects=function(){if(1===arguments.length){if(arguments[0]instanceof Ll){var t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxxthis._maxy||t._maxythis._maxx||nthis._maxy||rthis._maxx&&(this._maxx=e._maxx),e._minythis._maxy&&(this._maxy=e._maxy))}}else if(2===arguments.length){var n=arguments[0],r=arguments[1];this.isNull()?(this._minx=n,this._maxx=n,this._miny=r,this._maxy=r):(nthis._maxx&&(this._maxx=n),rthis._maxy&&(this._maxy=r))}},Ll.prototype.minExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return te._minx?1:this._minye._miny?1:this._maxxe._maxx?1:this._maxye._maxy?1:0},Ll.prototype.translate=function(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)},Ll.prototype.toString=function(){return"Env["+this._minx+" : "+this._maxx+", "+this._miny+" : "+this._maxy+"]"},Ll.prototype.setToNull=function(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1},Ll.prototype.getHeight=function(){return this.isNull()?0:this._maxy-this._miny},Ll.prototype.maxExtent=function(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e},Ll.prototype.expandBy=function(){if(1===arguments.length){var t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this.isNull())return null;this._minx-=e,this._maxx+=e,this._miny-=n,this._maxy+=n,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}},Ll.prototype.contains=function(){if(1===arguments.length){if(arguments[0]instanceof Ll){var t=arguments[0];return this.covers(t)}if(arguments[0]instanceof ul){var e=arguments[0];return this.covers(e)}}else if(2===arguments.length){var n=arguments[0],r=arguments[1];return this.covers(n,r)}},Ll.prototype.centre=function(){return this.isNull()?null:new ul((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)},Ll.prototype.init=function(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof ul){var t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof Ll){var e=arguments[0];this._minx=e._minx,this._maxx=e._maxx,this._miny=e._miny,this._maxy=e._maxy}}else if(2===arguments.length){var n=arguments[0],r=arguments[1];this.init(n.x,r.x,n.y,r.y)}else if(4===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];it._maxx&&(e=this._minx-t._maxx);var n=0;return this._maxyt._maxy&&(n=this._miny-t._maxy),0===e?n:0===n?e:Math.sqrt(e*e+n*n)},Ll.prototype.hashCode=function(){var t=17;return t=37*(t=37*(t=37*(t=37*t+ul.hashCode(this._minx))+ul.hashCode(this._maxx))+ul.hashCode(this._miny))+ul.hashCode(this._maxy)},Ll.prototype.interfaces_=function(){return[il,al]},Ll.prototype.getClass=function(){return Ll},Ll.intersects=function(){if(3===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2];return n.x>=(t.xe.x?t.x:e.x)&&n.y>=(t.ye.y?t.y:e.y)}if(4===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2],s=arguments[3],a=Math.min(o.x,s.x),u=Math.max(o.x,s.x),l=Math.min(r.x,i.x),c=Math.max(r.x,i.x);return!(l>u)&&(!(cu)&&!(cn?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}},Bl.prototype.isProper=function(){return this.hasIntersection()&&this._isProper},Bl.prototype.setPrecisionModel=function(t){this._precisionModel=t},Bl.prototype.isInteriorIntersection=function(){var t=this;if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){for(var e=arguments[0],n=0;ni?r:i;else{var s=Math.abs(t.x-e.x),a=Math.abs(t.y-e.y);0!==(o=r>i?s:a)||t.equals(e)||(o=Math.max(s,a))}return ql.isTrue(!(0===o&&!t.equals(e)),"Bad distance calculation"),o},Bl.nonRobustComputeEdgeDistance=function(t,e,n){var r=t.x-e.x,i=t.y-e.y,o=Math.sqrt(r*r+i*i);return ql.isTrue(!(0===o&&!t.equals(e)),"Invalid distance calculation"),o},zl.DONT_INTERSECT.get=function(){return 0},zl.DO_INTERSECT.get=function(){return 1},zl.COLLINEAR.get=function(){return 2},zl.NO_INTERSECTION.get=function(){return 0},zl.POINT_INTERSECTION.get=function(){return 1},zl.COLLINEAR_INTERSECTION.get=function(){return 2},Object.defineProperties(Bl,zl);var jl=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isInSegmentEnvelopes=function(t){var e=new Ll(this._inputLines[0][0],this._inputLines[0][1]),n=new Ll(this._inputLines[1][0],this._inputLines[1][1]);return e.contains(t)&&n.contains(t)},e.prototype.computeIntersection=function(){if(3!==arguments.length)return t.prototype.computeIntersection.apply(this,arguments);var e=arguments[0],n=arguments[1],r=arguments[2];if(this._isProper=!1,Ll.intersects(n,r,e)&&0===Xl.orientationIndex(n,r,e)&&0===Xl.orientationIndex(r,n,e))return this._isProper=!0,(e.equals(n)||e.equals(r))&&(this._isProper=!1),this._result=t.POINT_INTERSECTION,null;this._result=t.NO_INTERSECTION},e.prototype.normalizeToMinimum=function(t,e,n,r,i){i.x=this.smallestInAbsValue(t.x,e.x,n.x,r.x),i.y=this.smallestInAbsValue(t.y,e.y,n.y,r.y),t.x-=i.x,t.y-=i.y,e.x-=i.x,e.y-=i.y,n.x-=i.x,n.y-=i.y,r.x-=i.x,r.y-=i.y},e.prototype.safeHCoordinateIntersection=function(t,n,r,i){var o=null;try{o=Ml.intersection(t,n,r,i)}catch(s){if(!(s instanceof Cl))throw s;o=e.nearestEndpoint(t,n,r,i)}return o},e.prototype.intersection=function(t,n,r,i){var o=this.intersectionWithNormalization(t,n,r,i);return this.isInSegmentEnvelopes(o)||(o=new ul(e.nearestEndpoint(t,n,r,i))),null!==this._precisionModel&&this._precisionModel.makePrecise(o),o},e.prototype.smallestInAbsValue=function(t,e,n,r){var i=t,o=Math.abs(i);return Math.abs(e)1e-4&&Pl.out.println("Distance = "+i.distance(o))},e.prototype.intersectionWithNormalization=function(t,e,n,r){var i=new ul(t),o=new ul(e),s=new ul(n),a=new ul(r),u=new ul;this.normalizeToEnvCentre(i,o,s,a,u);var l=this.safeHCoordinateIntersection(i,o,s,a);return l.x+=u.x,l.y+=u.y,l},e.prototype.computeCollinearIntersection=function(e,n,r,i){var o=Ll.intersects(e,n,r),s=Ll.intersects(e,n,i),a=Ll.intersects(r,i,e),u=Ll.intersects(r,i,n);return o&&s?(this._intPt[0]=r,this._intPt[1]=i,t.COLLINEAR_INTERSECTION):a&&u?(this._intPt[0]=e,this._intPt[1]=n,t.COLLINEAR_INTERSECTION):o&&a?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||s||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):o&&u?(this._intPt[0]=r,this._intPt[1]=n,!r.equals(n)||s||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&a?(this._intPt[0]=i,this._intPt[1]=e,!i.equals(e)||o||u?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):s&&u?(this._intPt[0]=i,this._intPt[1]=n,!i.equals(n)||o||a?t.COLLINEAR_INTERSECTION:t.POINT_INTERSECTION):t.NO_INTERSECTION},e.prototype.normalizeToEnvCentre=function(t,e,n,r,i){var o=t.xe.x?t.x:e.x,u=t.y>e.y?t.y:e.y,l=n.xr.x?n.x:r.x,p=n.y>r.y?n.y:r.y,f=((o>l?o:l)+(ac?s:c)+(u0&&s>0||o<0&&s<0)return t.NO_INTERSECTION;var a=Xl.orientationIndex(r,i,e),u=Xl.orientationIndex(r,i,n);return a>0&&u>0||a<0&&u<0?t.NO_INTERSECTION:0===o&&0===s&&0===a&&0===u?this.computeCollinearIntersection(e,n,r,i):(0===o||0===s||0===a||0===u?(this._isProper=!1,e.equals2D(r)||e.equals2D(i)?this._intPt[0]=e:n.equals2D(r)||n.equals2D(i)?this._intPt[0]=n:0===o?this._intPt[0]=new ul(r):0===s?this._intPt[0]=new ul(i):0===a?this._intPt[0]=new ul(e):0===u&&(this._intPt[0]=new ul(n))):(this._isProper=!0,this._intPt[0]=this.intersection(e,n,r,i)),t.POINT_INTERSECTION)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.nearestEndpoint=function(t,e,n,r){var i=t,o=Xl.distancePointLine(t,n,r),s=Xl.distancePointLine(e,n,r);return s0?n>0?-i:i:n>0?i:-i;if(0===e||0===n)return r>0?t>0?i:-i:t>0?-i:i;if(e>0?r>0?e<=r||(i=-i,o=t,t=n,n=o,o=e,e=r,r=o):e<=-r?(i=-i,n=-n,r=-r):(o=t,t=-n,n=o,o=e,e=-r,r=o):r>0?-e<=r?(i=-i,t=-t,e=-e):(o=-t,t=n,n=o,o=-e,e=r,r=o):e>=r?(t=-t,e=-e,n=-n,r=-r):(i=-i,o=-t,t=-n,n=o,o=-e,e=-r,r=o),t>0){if(!(n>0))return i;if(!(t<=n))return i}else{if(n>0)return-i;if(!(t>=n))return-i;i=-i,t=-t,n=-n}for(;;){if((r-=(s=Math.floor(n/t))*e)<0)return-i;if(r>e)return i;if(t>(n-=s*t)+n){if(er+r)return-i;n=t-n,r=e-r,i=-i}if(0===r)return 0===n?0:-i;if(0===n)return i;if((e-=(s=Math.floor(t/n))*r)<0)return i;if(e>r)return-i;if(n>(t-=s*n)+t){if(re+e)return i;t=n-t,e=r-e,i=-i}if(0===e)return 0===t?0:i;if(0===t)return-i}};var Vl=function(){this._p=null,this._crossingCount=0,this._isPointOnSegment=!1;var t=arguments[0];this._p=t};Vl.prototype.countSegment=function(t,e){if(t.xr&&(n=e.x,r=t.x),this._p.x>=n&&this._p.x<=r&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var i=t.x-this._p.x,o=t.y-this._p.y,s=e.x-this._p.x,a=e.y-this._p.y,u=Ul.signOfDet2x2(i,o,s,a);if(0===u)return this._isPointOnSegment=!0,null;a0&&this._crossingCount++}},Vl.prototype.isPointInPolygon=function(){return this.getLocation()!==pl.EXTERIOR},Vl.prototype.getLocation=function(){return this._isPointOnSegment?pl.BOUNDARY:this._crossingCount%2==1?pl.INTERIOR:pl.EXTERIOR},Vl.prototype.isOnSegment=function(){return this._isPointOnSegment},Vl.prototype.interfaces_=function(){return[]},Vl.prototype.getClass=function(){return Vl},Vl.locatePointInRing=function(){if(arguments[0]instanceof ul&&gl(arguments[1],Il)){for(var t=arguments[0],e=arguments[1],n=new Vl(t),r=new ul,i=new ul,o=1;o1||a<0||a>1)&&(i=!0)}}else i=!0;return i?dl.min(Xl.distancePointLine(t,n,r),Xl.distancePointLine(e,n,r),Xl.distancePointLine(n,t,e),Xl.distancePointLine(r,t,e)):0},Xl.isPointInRing=function(t,e){return Xl.locatePointInRing(t,e)!==pl.EXTERIOR},Xl.computeLength=function(t){var e=t.size();if(e<=1)return 0;var n=0,r=new ul;t.getCoordinate(0,r);for(var i=r.x,o=r.y,s=1;sn.y&&(n=o,r=i)}var s=r;do{(s-=1)<0&&(s=e)}while(t[s].equals2D(n)&&s!==r);var a=r;do{a=(a+1)%e}while(t[a].equals2D(n)&&a!==r);var u=t[s],l=t[a];if(u.equals2D(n)||l.equals2D(n)||u.equals2D(l))return!1;var c=Xl.computeOrientation(u,n,l),h=!1;return h=0===c?u.x>l.x:c>0,h},Xl.locatePointInRing=function(t,e){return Vl.locatePointInRing(t,e)},Xl.distancePointLinePerpendicular=function(t,e,n){var r=(n.x-e.x)*(n.x-e.x)+(n.y-e.y)*(n.y-e.y),i=((e.y-t.y)*(n.x-e.x)-(e.x-t.x)*(n.y-e.y))/r;return Math.abs(i)*Math.sqrt(r)},Xl.computeOrientation=function(t,e,n){return Xl.orientationIndex(t,e,n)},Xl.distancePointLine=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];if(0===e.length)throw new el("Line array must contain at least one vertex");for(var n=t.distance(e[0]),r=0;r=1)return o.distance(a);var c=((s.y-o.y)*(a.x-s.x)-(s.x-o.x)*(a.y-s.y))/u;return Math.abs(c)*Math.sqrt(u)}},Xl.isOnLine=function(t,e){for(var n=new jl,r=1;r0},ec.prototype.interfaces_=function(){return[Ql]},ec.prototype.getClass=function(){return ec};var nc=function(){};nc.prototype.isInBoundary=function(t){return t>1},nc.prototype.interfaces_=function(){return[Ql]},nc.prototype.getClass=function(){return nc};var rc=function(){};rc.prototype.isInBoundary=function(t){return 1===t},rc.prototype.interfaces_=function(){return[Ql]},rc.prototype.getClass=function(){return rc};var ic=function(){};function oc(t){this.message=t||""}ic.prototype.add=function(){},ic.prototype.addAll=function(){},ic.prototype.isEmpty=function(){},ic.prototype.iterator=function(){},ic.prototype.size=function(){},ic.prototype.toArray=function(){},ic.prototype.remove=function(){},oc.prototype=new Error,oc.prototype.name="IndexOutOfBoundsException";var sc=function(){};sc.prototype.hasNext=function(){},sc.prototype.next=function(){},sc.prototype.remove=function(){};var ac=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(){},e.prototype.set=function(){},e.prototype.isEmpty=function(){},e}(ic);function uc(t){this.message=t||""}uc.prototype=new Error,uc.prototype.name="NoSuchElementException";var lc=function(t){function e(){t.call(this),this.array_=[],arguments[0]instanceof ic&&this.addAll(arguments[0])}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.ensureCapacity=function(){},e.prototype.interfaces_=function(){return[t,ic]},e.prototype.add=function(t){return 1===arguments.length?this.array_.push(t):this.array_.splice(arguments[0],arguments[1]),!0},e.prototype.clear=function(){this.array_=[]},e.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},e.prototype.set=function(t,e){var n=this.array_[t];return this.array_[t]=e,n},e.prototype.iterator=function(){return new cc(this)},e.prototype.get=function(t){if(t<0||t>=this.size())throw new oc;return this.array_[t]},e.prototype.isEmpty=function(){return 0===this.array_.length},e.prototype.size=function(){return this.array_.length},e.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e=1){var a=this.get(this.size()-1);if(a.equals2D(o))return null}t.prototype.add.call(this,o)}else if(arguments[0]instanceof Object&&"boolean"==typeof arguments[1]){var u=arguments[0],l=arguments[1];return this.add(u,l),!0}}else if(3===arguments.length){if("boolean"==typeof arguments[2]&&arguments[0]instanceof Array&&"boolean"==typeof arguments[1]){var c=arguments[0],h=arguments[1],p=arguments[2];if(p)for(var f=0;f=0;g--)e.add(c[g],h);return!0}if("boolean"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof ul){var d=arguments[0],y=arguments[1],v=arguments[2];if(!v){var _=this.size();if(_>0){if(d>0){var m=this.get(d-1);if(m.equals2D(y))return null}if(d<_){var x=this.get(d);if(x.equals2D(y))return null}}}t.prototype.add.call(this,d,y)}}else if(4===arguments.length){var E=arguments[0],b=arguments[1],w=arguments[2],I=arguments[3],N=1;w>I&&(N=-1);for(var S=w;S!==I;S+=N)e.add(E[S],b);return!0}},e.prototype.closeRing=function(){this.size()>0&&this.add(new ul(this.get(0)),!1)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},Object.defineProperties(e,n),e}(lc),pc=function(){},fc={ForwardComparator:{configurable:!0},BidirectionalComparator:{configurable:!0},coordArrayType:{configurable:!0}};fc.ForwardComparator.get=function(){return gc},fc.BidirectionalComparator.get=function(){return dc},fc.coordArrayType.get=function(){return new Array(0).fill(null)},pc.prototype.interfaces_=function(){return[]},pc.prototype.getClass=function(){return pc},pc.isRing=function(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])},pc.ptNotInList=function(t,e){for(var n=0;n=t?e:[]},pc.indexOf=function(t,e){for(var n=0;n0)&&(e=t[n]);return e},pc.extract=function(t,e,n){e=dl.clamp(e,0,t.length);var r=(n=dl.clamp(n,-1,t.length))-e+1;n<0&&(r=0),e>=t.length&&(r=0),nr.length)return 1;if(0===n.length)return 0;var i=pc.compare(n,r);return pc.isEqualReversed(n,r)?0:i},dc.prototype.OLDcompare=function(t,e){var n=t,r=e;if(n.lengthr.length)return 1;if(0===n.length)return 0;for(var i=pc.increasingDirection(n),o=pc.increasingDirection(r),s=i>0?0:n.length-1,a=o>0?0:n.length-1,u=0;u0))return e.value;e=e.right}}return null},Cc.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:0,getValue:function(){return this.value},getKey:function(){return this.key}},this.size_=1,null;var n,r,i=this.root_;do{if(n=i,(r=t.compareTo(i.key))<0)i=i.left;else{if(!(r>0)){var o=i.value;return i.value=e,o}i=i.right}}while(null!==i);var s={key:t,left:null,right:null,value:e,parent:n,color:0,getValue:function(){return this.value},getKey:function(){return this.key}};return r<0?n.left=s:n.right=s,this.fixAfterInsertion(s),this.size_++,null},Cc.prototype.fixAfterInsertion=function(t){var e=this;for(t.color=1;null!=t&&t!==this.root_&&1===t.parent.color;)if(wc(t)===Nc(wc(wc(t)))){var n=Sc(wc(wc(t)));1===bc(n)?(Ic(wc(t),0),Ic(n,0),Ic(wc(wc(t)),1),t=wc(wc(t))):(t===Sc(wc(t))&&(t=wc(t),e.rotateLeft(t)),Ic(wc(t),0),Ic(wc(wc(t)),1),e.rotateRight(wc(wc(t))))}else{var r=Nc(wc(wc(t)));1===bc(r)?(Ic(wc(t),0),Ic(r,0),Ic(wc(wc(t)),1),t=wc(wc(t))):(t===Nc(wc(t))&&(t=wc(t),e.rotateRight(t)),Ic(wc(t),0),Ic(wc(wc(t)),1),e.rotateLeft(wc(wc(t))))}this.root_.color=0},Cc.prototype.values=function(){var t=new lc,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=Cc.successor(e));)t.add(e.value);return t},Cc.prototype.entrySet=function(){var t=new xc,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=Cc.successor(e));)t.add(e);return t},Cc.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.left===t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},Cc.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null===t.parent?this.root_=e:t.parent.right===t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},Cc.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},Cc.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}for(var n=t.parent,r=t;null!==n&&r===n.right;)r=n,n=n.parent;return n},Cc.prototype.size=function(){return this.size_};var Pc=function(){};function Mc(){}function Lc(){this.array_=[],arguments[0]instanceof ic&&this.addAll(arguments[0])}Pc.prototype.interfaces_=function(){return[]},Pc.prototype.getClass=function(){return Pc},Mc.prototype=new mc,Lc.prototype=new Mc,Lc.prototype.contains=function(t){for(var e=0,n=this.array_.length;e=0;){var s=i.substring(0,o);r.add(s),o=(i=i.substring(o+n)).indexOf(e)}i.length>0&&r.add(i);for(var a=new Array(r.size()).fill(null),u=0;u0)for(var o=i;o0&&r.append(" ");for(var o=0;o0&&r.append(","),r.append(Hc.toString(t.getOrdinate(i,o)))}return r.append(")"),r.toString()}},Jc.ensureValidRing=function(t,e){var n=e.size();return 0===n?e:n<=3?Jc.createClosedRing(t,e,4):e.getOrdinate(0,Il.X)===e.getOrdinate(n-1,Il.X)&&e.getOrdinate(0,Il.Y)===e.getOrdinate(n-1,Il.Y)?e:Jc.createClosedRing(t,e,n+1)},Jc.createClosedRing=function(t,e,n){var r=t.create(n,e.getDimension()),i=e.size();Jc.copy(e,0,r,0,i);for(var o=i;o0&&Jc.reverse(t._points),null}},e.prototype.getCoordinate=function(){return this.isEmpty()?null:this._points.getCoordinate(0)},e.prototype.getBoundaryDimension=function(){return this.isClosed()?Tc.FALSE:0},e.prototype.isClosed=function(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))},e.prototype.getEndPoint=function(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)},e.prototype.getDimension=function(){return 1},e.prototype.getLength=function(){return Xl.computeLength(this._points)},e.prototype.getNumPoints=function(){return this._points.size()},e.prototype.reverse=function(){var t=this._points.copy();return Jc.reverse(t),this.getFactory().createLineString(t)},e.prototype.compareToSameClass=function(){var t=this;if(1===arguments.length){for(var e=arguments[0],n=e,r=0,i=0;r= 2)");this._points=t},e.prototype.isCoordinate=function(t){for(var e=0;e=1&&this.getCoordinateSequence().size()= 4)")},e.prototype.getGeometryType=function(){return"LinearRing"},e.prototype.copy=function(){return new e(this._points.copy(),this._factory)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.MINIMUM_VALID_SIZE.get=function(){return 4},n.serialVersionUID.get=function(){return-0x3b229e262367a600},Object.defineProperties(e,n),e}(Zc),rh=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var n={serialVersionUID:{configurable:!0}};return e.prototype.getSortIndex=function(){return Wl.SORTINDEX_MULTIPOLYGON},e.prototype.equalsExact=function(){if(2===arguments.length){var e=arguments[0],n=arguments[1];return!!this.isEquivalentClass(e)&&t.prototype.equalsExact.call(this,e,n)}return t.prototype.equalsExact.apply(this,arguments)},e.prototype.getBoundaryDimension=function(){return 1},e.prototype.getDimension=function(){return 2},e.prototype.reverse=function(){for(var t=this._geometries.length,e=new Array(t).fill(null),n=0;n0?e.createPoint(n[0]):e.createPoint():t},ah.prototype.interfaces_=function(){return[ih.GeometryEditorOperation]},ah.prototype.getClass=function(){return ah};var uh=function(){};uh.prototype.edit=function(t,e){return t instanceof nh?e.createLinearRing(this.edit(t.getCoordinateSequence(),t)):t instanceof Zc?e.createLineString(this.edit(t.getCoordinateSequence(),t)):t instanceof Qc?e.createPoint(this.edit(t.getCoordinateSequence(),t)):t},uh.prototype.interfaces_=function(){return[ih.GeometryEditorOperation]},uh.prototype.getClass=function(){return uh};var lh=function(){var t=this;if(this._dimension=3,this._coordinates=null,1===arguments.length){if(arguments[0]instanceof Array)this._coordinates=arguments[0],this._dimension=3;else if(Number.isInteger(arguments[0])){var e=arguments[0];this._coordinates=new Array(e).fill(null);for(var n=0;n0){var t=new vl(17*this._coordinates.length);t.append("("),t.append(this._coordinates[0]);for(var e=1;e3&&(r=3),r<2?new lh(n):new lh(n,r)}},hh.prototype.interfaces_=function(){return[hl,al]},hh.prototype.getClass=function(){return hh},hh.instance=function(){return hh.instanceObject},ph.serialVersionUID.get=function(){return-0x38e49fa6cf6f2e00},ph.instanceObject.get=function(){return new hh},Object.defineProperties(hh,ph);var fh=function(t){function e(){t.call(this),this.map_=new Map}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return this.map_.get(t)||null},e.prototype.put=function(t,e){return this.map_.set(t,e),e},e.prototype.values=function(){for(var t=new lc,e=this.map_.values(),n=e.next();!n.done;)t.add(n.value),n=e.next();return t},e.prototype.entrySet=function(){var t=new xc;return this.map_.entries().forEach((function(e){return t.add(e)})),t},e.prototype.size=function(){return this.map_.size()},e}(yc),gh=function t(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=t.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof yh){var e=arguments[0];this._modelType=e,e===t.FIXED&&this.setScale(1)}else if("number"==typeof arguments[0]){var n=arguments[0];this._modelType=t.FIXED,this.setScale(n)}else if(arguments[0]instanceof t){var r=arguments[0];this._modelType=r._modelType,this._scale=r._scale}},dh={serialVersionUID:{configurable:!0},maximumPreciseValue:{configurable:!0}};gh.prototype.equals=function(t){if(!(t instanceof gh))return!1;var e=t;return this._modelType===e._modelType&&this._scale===e._scale},gh.prototype.compareTo=function(t){var e=t,n=this.getMaximumSignificantDigits(),r=e.getMaximumSignificantDigits();return new _l(n).compareTo(new _l(r))},gh.prototype.getScale=function(){return this._scale},gh.prototype.isFloating=function(){return this._modelType===gh.FLOATING||this._modelType===gh.FLOATING_SINGLE},gh.prototype.getType=function(){return this._modelType},gh.prototype.toString=function(){var t="UNKNOWN";return this._modelType===gh.FLOATING?t="Floating":this._modelType===gh.FLOATING_SINGLE?t="Floating-Single":this._modelType===gh.FIXED&&(t="Fixed (Scale="+this.getScale()+")"),t},gh.prototype.makePrecise=function(){if("number"==typeof arguments[0]){var t=arguments[0];if(nl.isNaN(t))return t;if(this._modelType===gh.FLOATING_SINGLE){return t}return this._modelType===gh.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof ul){var e=arguments[0];if(this._modelType===gh.FLOATING)return null;e.x=this.makePrecise(e.x),e.y=this.makePrecise(e.y)}},gh.prototype.getMaximumSignificantDigits=function(){var t=16;return this._modelType===gh.FLOATING?t=16:this._modelType===gh.FLOATING_SINGLE?t=6:this._modelType===gh.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t},gh.prototype.setScale=function(t){this._scale=Math.abs(t)},gh.prototype.interfaces_=function(){return[al,il]},gh.prototype.getClass=function(){return gh},gh.mostPrecise=function(t,e){return t.compareTo(e)>=0?t:e},dh.serialVersionUID.get=function(){return 0x6bee6404e9a25c00},dh.maximumPreciseValue.get=function(){return 9007199254740992},Object.defineProperties(gh,dh);var yh=function t(e){this._name=e||null,t.nameToTypeMap.put(e,this)},vh={serialVersionUID:{configurable:!0},nameToTypeMap:{configurable:!0}};yh.prototype.readResolve=function(){return yh.nameToTypeMap.get(this._name)},yh.prototype.toString=function(){return this._name},yh.prototype.interfaces_=function(){return[al]},yh.prototype.getClass=function(){return yh},vh.serialVersionUID.get=function(){return-552860263173159e4},vh.nameToTypeMap.get=function(){return new fh},Object.defineProperties(yh,vh),gh.Type=yh,gh.FIXED=new yh("FIXED"),gh.FLOATING=new yh("FLOATING"),gh.FLOATING_SINGLE=new yh("FLOATING SINGLE");var _h=function t(){this._precisionModel=new gh,this._SRID=0,this._coordinateSequenceFactory=t.getDefaultCoordinateSequenceFactory(),0===arguments.length||(1===arguments.length?gl(arguments[0],hl)?this._coordinateSequenceFactory=arguments[0]:arguments[0]instanceof gh&&(this._precisionModel=arguments[0]):2===arguments.length?(this._precisionModel=arguments[0],this._SRID=arguments[1]):3===arguments.length&&(this._precisionModel=arguments[0],this._SRID=arguments[1],this._coordinateSequenceFactory=arguments[2]))},mh={serialVersionUID:{configurable:!0}};_h.prototype.toGeometry=function(t){return t.isNull()?this.createPoint(null):t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new ul(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new ul(t.getMinX(),t.getMinY()),new ul(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new ul(t.getMinX(),t.getMinY()),new ul(t.getMinX(),t.getMaxY()),new ul(t.getMaxX(),t.getMaxY()),new ul(t.getMaxX(),t.getMinY()),new ul(t.getMinX(),t.getMinY())]),null)},_h.prototype.createLineString=function(t){return t?t instanceof Array?new Zc(this.getCoordinateSequenceFactory().create(t),this):gl(t,Il)?new Zc(t,this):void 0:new Zc(this.getCoordinateSequenceFactory().create([]),this)},_h.prototype.createMultiLineString=function(){if(0===arguments.length)return new Gc(null,this);if(1===arguments.length){var t=arguments[0];return new Gc(t,this)}},_h.prototype.buildGeometry=function(t){for(var e=null,n=!1,r=!1,i=t.iterator();i.hasNext();){var o=i.next(),s=o.getClass();null===e&&(e=s),s!==e&&(n=!0),o.isGeometryCollectionOrDerived()&&(r=!0)}if(null===e)return this.createGeometryCollection();if(n||r)return this.createGeometryCollection(_h.toGeometryArray(t));var a=t.iterator().next();if(t.size()>1){if(a instanceof th)return this.createMultiPolygon(_h.toPolygonArray(t));if(a instanceof Zc)return this.createMultiLineString(_h.toLineStringArray(t));if(a instanceof Qc)return this.createMultiPoint(_h.toPointArray(t));ql.shouldNeverReachHere("Unhandled class: "+a.getClass().getName())}return a},_h.prototype.createMultiPointFromCoords=function(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)},_h.prototype.createPoint=function(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof ul){var t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(gl(arguments[0],Il)){var e=arguments[0];return new Qc(e,this)}}},_h.prototype.getCoordinateSequenceFactory=function(){return this._coordinateSequenceFactory},_h.prototype.createPolygon=function(){if(0===arguments.length)return new th(null,null,this);if(1===arguments.length){if(gl(arguments[0],Il)){var t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){var e=arguments[0];return this.createPolygon(this.createLinearRing(e))}if(arguments[0]instanceof nh){var n=arguments[0];return this.createPolygon(n,null)}}else if(2===arguments.length){var r=arguments[0],i=arguments[1];return new th(r,i,this)}},_h.prototype.getSRID=function(){return this._SRID},_h.prototype.createGeometryCollection=function(){if(0===arguments.length)return new kc(null,this);if(1===arguments.length){var t=arguments[0];return new kc(t,this)}},_h.prototype.createGeometry=function(t){return new ih(this).edit(t,{edit:function(){if(2===arguments.length){var t=arguments[0];return this._coordinateSequenceFactory.create(t)}}})},_h.prototype.getPrecisionModel=function(){return this._precisionModel},_h.prototype.createLinearRing=function(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){var t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(gl(arguments[0],Il)){var e=arguments[0];return new nh(e,this)}}},_h.prototype.createMultiPolygon=function(){if(0===arguments.length)return new rh(null,this);if(1===arguments.length){var t=arguments[0];return new rh(t,this)}},_h.prototype.createMultiPoint=function(){var t=this;if(0===arguments.length)return new eh(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){var e=arguments[0];return new eh(e,this)}if(arguments[0]instanceof Array){var n=arguments[0];return this.createMultiPoint(null!==n?this.getCoordinateSequenceFactory().create(n):null)}if(gl(arguments[0],Il)){var r=arguments[0];if(null===r)return this.createMultiPoint(new Array(0).fill(null));for(var i=new Array(r.size()).fill(null),o=0;o=this.size())throw new Error;return this.array_[t]},Mh.prototype.push=function(t){return this.array_.push(t),t},Mh.prototype.pop=function(t){if(0===this.array_.length)throw new Ph;return this.array_.pop()},Mh.prototype.peek=function(){if(0===this.array_.length)throw new Ph;return this.array_[this.array_.length-1]},Mh.prototype.empty=function(){return 0===this.array_.length},Mh.prototype.isEmpty=function(){return this.empty()},Mh.prototype.search=function(t){return this.array_.indexOf(t)},Mh.prototype.size=function(){return this.array_.length},Mh.prototype.toArray=function(){for(var t=[],e=0,n=this.array_.length;e0&&this._minIndexthis._minCoord.y&&n.y>this._minCoord.y&&r===Xl.CLOCKWISE)&&(i=!0),i&&(this._minIndex=this._minIndex-1)},Lh.prototype.getRightmostSideOfSegment=function(t,e){var n=t.getEdge().getCoordinates();if(e<0||e+1>=n.length)return-1;if(n[e].y===n[e+1].y)return-1;var r=Sh.LEFT;return n[e].ye._minCoord.x)&&(e._minDe=t,e._minIndex=r,e._minCoord=n[r])},Lh.prototype.findRightmostEdgeAtNode=function(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)},Lh.prototype.findEdge=function(t){for(var e=t.iterator();e.hasNext();){var n=e.next();n.isForward()&&this.checkForRightmostCoordinate(n)}ql.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),"inconsistency in rightmost processing"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===Sh.LEFT&&(this._orientedDe=this._minDe.getSym())},Lh.prototype.interfaces_=function(){return[]},Lh.prototype.getClass=function(){return Lh};var Oh=function(t){function e(n,r){t.call(this,e.msgWithCoord(n,r)),this.pt=r?new ul(r):null,this.name="TopologyException"}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCoordinate=function(){return this.pt},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.msgWithCoord=function(t,e){return e?t:t+" [ "+e+" ]"},e}(kl),Rh=function(){this.array_=[]};Rh.prototype.addLast=function(t){this.array_.push(t)},Rh.prototype.removeFirst=function(){return this.array_.shift()},Rh.prototype.isEmpty=function(){return 0===this.array_.length};var Th=function(){this._finder=null,this._dirEdgeList=new lc,this._nodes=new lc,this._rightMostCoord=null,this._env=null,this._finder=new Lh};Th.prototype.clearVisitedEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){t.next().setVisited(!1)}},Th.prototype.getRightmostCoordinate=function(){return this._rightMostCoord},Th.prototype.computeNodeDepth=function(t){for(var e=null,n=t.getEdges().iterator();n.hasNext();){var r=n.next();if(r.isVisited()||r.getSym().isVisited()){e=r;break}}if(null===e)throw new Oh("unable to find edge to compute depths at "+t.getCoordinate());t.getEdges().computeDepths(e);for(var i=t.getEdges().iterator();i.hasNext();){var o=i.next();o.setVisited(!0),this.copySymDepths(o)}},Th.prototype.computeDepth=function(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.setEdgeDepths(Sh.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)},Th.prototype.create=function(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()},Th.prototype.findResultEdges=function(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(Sh.RIGHT)>=1&&e.getDepth(Sh.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}},Th.prototype.computeDepths=function(t){var e=new xc,n=new Rh,r=t.getNode();for(n.addLast(r),e.add(r),t.setVisited(!0);!n.isEmpty();){var i=n.removeFirst();e.add(i),this.computeNodeDepth(i);for(var o=i.getEdges().iterator();o.hasNext();){var s=o.next().getSym();if(!s.isVisited()){var a=s.getNode();e.contains(a)||(n.addLast(a),e.add(a))}}}},Th.prototype.compareTo=function(t){var e=t;return this._rightMostCoord.xe._rightMostCoord.x?1:0},Th.prototype.getEnvelope=function(){if(null===this._env){for(var t=new Ll,e=this._dirEdgeList.iterator();e.hasNext();)for(var n=e.next().getEdge().getCoordinates(),r=0;rthis.location.length){var e=new Array(3).fill(null);e[Sh.ON]=this.location[Sh.ON],e[Sh.LEFT]=pl.NONE,e[Sh.RIGHT]=pl.NONE,this.location=e}for(var n=0;n1&&t.append(pl.toLocationSymbol(this.location[Sh.LEFT])),t.append(pl.toLocationSymbol(this.location[Sh.ON])),this.location.length>1&&t.append(pl.toLocationSymbol(this.location[Sh.RIGHT])),t.toString()},Ah.prototype.setLocations=function(t,e,n){this.location[Sh.ON]=t,this.location[Sh.LEFT]=e,this.location[Sh.RIGHT]=n},Ah.prototype.get=function(t){return t1},Ah.prototype.isAnyNull=function(){for(var t=0;tt._maxNodeDegree&&(t._maxNodeDegree=n),e=t.getNext(e)}while(e!==this._startDe);this._maxNodeDegree*=2},Fh.prototype.addPoints=function(t,e,n){var r=t.getCoordinates();if(e){var i=1;n&&(i=0);for(var o=i;o=0;a--)this._pts.add(r[a])}},Fh.prototype.isHole=function(){return this._isHole},Fh.prototype.setInResult=function(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)},Fh.prototype.containsPoint=function(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!Xl.isPointInRing(t,e.getCoordinates()))return!1;for(var n=this._holes.iterator();n.hasNext();){if(n.next().containsPoint(t))return!1}return!0},Fh.prototype.addHole=function(t){this._holes.add(t)},Fh.prototype.isShell=function(){return null===this._shell},Fh.prototype.getLabel=function(){return this._label},Fh.prototype.getEdges=function(){return this._edges},Fh.prototype.getMaxNodeDegree=function(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree},Fh.prototype.getShell=function(){return this._shell},Fh.prototype.mergeLabel=function(){if(1===arguments.length){var t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],r=e.getLocation(n,Sh.RIGHT);if(r===pl.NONE)return null;if(this._label.getLocation(n)===pl.NONE)return this._label.setLocation(n,r),null}},Fh.prototype.setShell=function(t){this._shell=t,null!==t&&t.addHole(this)},Fh.prototype.toPolygon=function(t){for(var e=new Array(this._holes.size()).fill(null),n=0;n=2,"found partial label"),this.computeIM(t)},qh.prototype.isInResult=function(){return this._isInResult},qh.prototype.isVisited=function(){return this._isVisited},qh.prototype.interfaces_=function(){return[]},qh.prototype.getClass=function(){return qh};var Bh=function(t){function e(){t.call(this),this._coord=null,this._edges=null;var e=arguments[0],n=arguments[1];this._coord=e,this._edges=n,this._label=new Dh(0,pl.NONE)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isIncidentEdgeInResult=function(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1},e.prototype.isIsolated=function(){return 1===this._label.getGeometryCount()},e.prototype.getCoordinate=function(){return this._coord},e.prototype.print=function(t){t.println("node "+this._coord+" lbl: "+this._label)},e.prototype.computeIM=function(t){},e.prototype.computeMergedLocation=function(t,e){var n=pl.NONE;if(n=this._label.getLocation(e),!t.isNull(e)){var r=t.getLocation(e);n!==pl.BOUNDARY&&(n=r)}return n},e.prototype.setLabel=function(){if(2!==arguments.length)return t.prototype.setLabel.apply(this,arguments);var e=arguments[0],n=arguments[1];null===this._label?this._label=new Dh(e,n):this._label.setLocation(e,n)},e.prototype.getEdges=function(){return this._edges},e.prototype.mergeLabel=function(){var t=this;if(arguments[0]instanceof e){var n=arguments[0];this.mergeLabel(n._label)}else if(arguments[0]instanceof Dh)for(var r=arguments[0],i=0;i<2;i++){var o=t.computeMergedLocation(r,i),s=t._label.getLocation(i);s===pl.NONE&&t._label.setLocation(i,o)}},e.prototype.add=function(t){this._edges.insert(t),t.setNode(this)},e.prototype.setLabelBoundary=function(t){if(null===this._label)return null;var e=pl.NONE;null!==this._label&&(e=this._label.getLocation(t));var n=null;switch(e){case pl.BOUNDARY:n=pl.INTERIOR;break;case pl.INTERIOR:default:n=pl.BOUNDARY}this._label.setLocation(t,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(qh),zh=function(){this.nodeMap=new Cc,this.nodeFact=null;var t=arguments[0];this.nodeFact=t};zh.prototype.find=function(t){return this.nodeMap.get(t)},zh.prototype.addNode=function(){if(arguments[0]instanceof ul){var t=arguments[0],e=this.nodeMap.get(t);return null===e&&(e=this.nodeFact.createNode(t),this.nodeMap.put(t,e)),e}if(arguments[0]instanceof Bh){var n=arguments[0],r=this.nodeMap.get(n.getCoordinate());return null===r?(this.nodeMap.put(n.getCoordinate(),n),n):(r.mergeLabel(n),r)}},zh.prototype.print=function(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}},zh.prototype.iterator=function(){return this.nodeMap.values().iterator()},zh.prototype.values=function(){return this.nodeMap.values()},zh.prototype.getBoundaryNodes=function(t){for(var e=new lc,n=this.iterator();n.hasNext();){var r=n.next();r.getLabel().getLocation(t)===pl.BOUNDARY&&e.add(r)}return e},zh.prototype.add=function(t){var e=t.getCoordinate();this.addNode(e).add(t)},zh.prototype.interfaces_=function(){return[]},zh.prototype.getClass=function(){return zh};var jh=function(){},Uh={NE:{configurable:!0},NW:{configurable:!0},SW:{configurable:!0},SE:{configurable:!0}};jh.prototype.interfaces_=function(){return[]},jh.prototype.getClass=function(){return jh},jh.isNorthern=function(t){return t===jh.NE||t===jh.NW},jh.isOpposite=function(t,e){return t!==e&&2===(t-e+4)%4},jh.commonHalfPlane=function(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var n=te?t:e)?3:n},jh.isInHalfPlane=function(t,e){return e===jh.SE?t===jh.SE||t===jh.SW:t===e||t===e+1},jh.quadrant=function(){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){var t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new el("Cannot compute the quadrant for point ( "+t+", "+e+" )");return t>=0?e>=0?jh.NE:jh.SE:e>=0?jh.NW:jh.SW}if(arguments[0]instanceof ul&&arguments[1]instanceof ul){var n=arguments[0],r=arguments[1];if(r.x===n.x&&r.y===n.y)throw new el("Cannot compute the quadrant for two identical points "+n);return r.x>=n.x?r.y>=n.y?jh.NE:jh.SE:r.y>=n.y?jh.NW:jh.SW}},Uh.NE.get=function(){return 0},Uh.NW.get=function(){return 1},Uh.SW.get=function(){return 2},Uh.SE.get=function(){return 3},Object.defineProperties(jh,Uh);var Vh=function(){if(this._edge=null,this._label=null,this._node=null,this._p0=null,this._p1=null,this._dx=null,this._dy=null,this._quadrant=null,1===arguments.length){var t=arguments[0];this._edge=t}else if(3===arguments.length){var e=arguments[0],n=arguments[1],r=arguments[2],i=null;this._edge=e,this.init(n,r),this._label=i}else if(4===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2],u=arguments[3];this._edge=o,this.init(s,a),this._label=u}};Vh.prototype.compareDirection=function(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrant2){o.linkDirectedEdgesForMinimalEdgeRings();var s=o.buildMinimalRings(),a=this.findShell(s);null!==a?(this.placePolygonHoles(a,s),e.add(a)):n.addAll(s)}else r.add(o)}return r},Wh.prototype.containsPoint=function(t){for(var e=this._shellList.iterator();e.hasNext();){if(e.next().containsPoint(t))return!0}return!1},Wh.prototype.buildMaximalEdgeRings=function(t){for(var e=new lc,n=t.iterator();n.hasNext();){var r=n.next();if(r.isInResult()&&r.getLabel().isArea()&&null===r.getEdgeRing()){var i=new Gh(r,this._geometryFactory);e.add(i),i.setInResult()}}return e},Wh.prototype.placePolygonHoles=function(t,e){for(var n=e.iterator();n.hasNext();){var r=n.next();r.isHole()&&r.setShell(t)}},Wh.prototype.getPolygons=function(){return this.computePolygons(this._shellList)},Wh.prototype.findEdgeRingContaining=function(t,e){for(var n=t.getLinearRing(),r=n.getEnvelopeInternal(),i=n.getCoordinateN(0),o=null,s=null,a=e.iterator();a.hasNext();){var u=a.next(),l=u.getLinearRing(),c=l.getEnvelopeInternal();null!==o&&(s=o.getLinearRing().getEnvelopeInternal());var h=!1;c.contains(r)&&Xl.isPointInRing(i,l.getCoordinates())&&(h=!0),h&&(null===o||s.contains(c))&&(o=u)}return o},Wh.prototype.findShell=function(t){for(var e=0,n=null,r=t.iterator();r.hasNext();){var i=r.next();i.isHole()||(n=i,e++)}return ql.isTrue(e<=1,"found two shells in MinimalEdgeRing list"),n},Wh.prototype.add=function(){if(1===arguments.length){var t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){var e=arguments[0],n=arguments[1];Hh.linkResultDirectedEdges(n);var r=this.buildMaximalEdgeRings(e),i=new lc,o=this.buildMinimalEdgeRings(r,this._shellList,i);this.sortShellsAndHoles(o,this._shellList,i),this.placeFreeHoles(this._shellList,i)}},Wh.prototype.interfaces_=function(){return[]},Wh.prototype.getClass=function(){return Wh};var Jh=function(){};Jh.prototype.getBounds=function(){},Jh.prototype.interfaces_=function(){return[]},Jh.prototype.getClass=function(){return Jh};var Zh=function(){this._bounds=null,this._item=null;var t=arguments[0],e=arguments[1];this._bounds=t,this._item=e};Zh.prototype.getItem=function(){return this._item},Zh.prototype.getBounds=function(){return this._bounds},Zh.prototype.interfaces_=function(){return[Jh,al]},Zh.prototype.getClass=function(){return Zh};var Kh=function(){this._size=null,this._items=null,this._size=0,this._items=new lc,this._items.add(null)};Kh.prototype.poll=function(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t},Kh.prototype.size=function(){return this._size},Kh.prototype.reorder=function(t){for(var e=this,n=null,r=this._items.get(t);2*t<=this._size&&((n=2*t)!==e._size&&e._items.get(n+1).compareTo(e._items.get(n))<0&&n++,e._items.get(n).compareTo(r)<0);t=n)e._items.set(t,e._items.get(n));this._items.set(t,r)},Kh.prototype.clear=function(){this._size=0,this._items.clear()},Kh.prototype.isEmpty=function(){return 0===this._size},Kh.prototype.add=function(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)},Kh.prototype.interfaces_=function(){return[]},Kh.prototype.getClass=function(){return Kh};var Qh=function(){};Qh.prototype.visitItem=function(t){},Qh.prototype.interfaces_=function(){return[]},Qh.prototype.getClass=function(){return Qh};var $h=function(){};$h.prototype.insert=function(t,e){},$h.prototype.remove=function(t,e){},$h.prototype.query=function(){},$h.prototype.interfaces_=function(){return[]},$h.prototype.getClass=function(){return $h};var tp=function(){if(this._childBoundables=new lc,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){var t=arguments[0];this._level=t}},ep={serialVersionUID:{configurable:!0}};tp.prototype.getLevel=function(){return this._level},tp.prototype.size=function(){return this._childBoundables.size()},tp.prototype.getChildBoundables=function(){return this._childBoundables},tp.prototype.addChildBoundable=function(t){ql.isTrue(null===this._bounds),this._childBoundables.add(t)},tp.prototype.isEmpty=function(){return this._childBoundables.isEmpty()},tp.prototype.getBounds=function(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds},tp.prototype.interfaces_=function(){return[Jh,al]},tp.prototype.getClass=function(){return tp},ep.serialVersionUID.get=function(){return 0x5a1e55ec41369800},Object.defineProperties(tp,ep);var np=function(){};np.reverseOrder=function(){return{compare:function(t,e){return e.compareTo(t)}}},np.min=function(t){return np.sort(t),t.get(0)},np.sort=function(t,e){var n=t.toArray();e?Rc.sort(n,e):Rc.sort(n);for(var r=t.iterator(),i=0,o=n.length;irp.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,t,e),null):(this.expand(this._boundable2,this._boundable1,t,e),null);if(n)return this.expand(this._boundable1,this._boundable2,t,e),null;if(r)return this.expand(this._boundable2,this._boundable1,t,e),null;throw new el("neither boundable is composite")},rp.prototype.isLeaves=function(){return!(rp.isComposite(this._boundable1)||rp.isComposite(this._boundable2))},rp.prototype.compareTo=function(t){var e=t;return this._distancee._distance?1:0},rp.prototype.expand=function(t,e,n,r){for(var i=t.getChildBoundables().iterator();i.hasNext();){var o=i.next(),s=new rp(o,e,this._itemDistance);s.getDistance()1,"Node capacity must be greater than 1"),this._nodeCapacity=n}},op={IntersectsOp:{configurable:!0},serialVersionUID:{configurable:!0},DEFAULT_NODE_CAPACITY:{configurable:!0}};ip.prototype.getNodeCapacity=function(){return this._nodeCapacity},ip.prototype.lastNode=function(t){return t.get(t.size()-1)},ip.prototype.size=function(){var t=this;if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.size(this._root));if(1===arguments.length){for(var e=arguments[0],n=0,r=e.getChildBoundables().iterator();r.hasNext();){var i=r.next();i instanceof tp?n+=t.size(i):i instanceof Zh&&(n+=1)}return n}},ip.prototype.removeItem=function(t,e){for(var n=null,r=t.getChildBoundables().iterator();r.hasNext();){var i=r.next();i instanceof Zh&&i.getItem()===e&&(n=i)}return null!==n&&(t.getChildBoundables().remove(n),!0)},ip.prototype.itemsTree=function(){var t=this;if(0===arguments.length){this.build();var e=this.itemsTree(this._root);return null===e?new lc:e}if(1===arguments.length){for(var n=arguments[0],r=new lc,i=n.getChildBoundables().iterator();i.hasNext();){var o=i.next();if(o instanceof tp){var s=t.itemsTree(o);null!==s&&r.add(s)}else o instanceof Zh?r.add(o.getItem()):ql.shouldNeverReachHere()}return r.size()<=0?null:r}},ip.prototype.insert=function(t,e){ql.isTrue(!this._built,"Cannot insert items into an STR packed R-tree after it has been built."),this._itemBoundables.add(new Zh(t,e))},ip.prototype.boundablesAtLevel=function(){var t=this;if(1===arguments.length){var e=arguments[0],n=new lc;return this.boundablesAtLevel(e,this._root,n),n}if(3===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2];if(ql.isTrue(r>-2),i.getLevel()===r)return o.add(i),null;for(var s=i.getChildBoundables().iterator();s.hasNext();){var a=s.next();a instanceof tp?t.boundablesAtLevel(r,a,o):(ql.isTrue(a instanceof Zh),-1===r&&o.add(a))}return null}},ip.prototype.query=function(){var t=this;if(1===arguments.length){var e=arguments[0];this.build();var n=new lc;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),e)&&this.query(e,this._root,n),n}if(2===arguments.length){var r=arguments[0],i=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),r)&&this.query(r,this._root,i)}else if(3===arguments.length)if(gl(arguments[2],Qh)&&arguments[0]instanceof Object&&arguments[1]instanceof tp)for(var o=arguments[0],s=arguments[1],a=arguments[2],u=s.getChildBoundables(),l=0;ln&&(n=o)}}return n+1}},ip.prototype.createParentBoundables=function(t,e){var n=this;ql.isTrue(!t.isEmpty());var r=new lc;r.add(this.createNode(e));var i=new lc(t);np.sort(i,this.getComparator());for(var o=i.iterator();o.hasNext();){var s=o.next();n.lastNode(r).getChildBoundables().size()===n.getNodeCapacity()&&r.add(n.createNode(e)),n.lastNode(r).addChildBoundable(s)}return r},ip.prototype.isEmpty=function(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()},ip.prototype.interfaces_=function(){return[al]},ip.prototype.getClass=function(){return ip},ip.compareDoubles=function(t,e){return t>e?1:t0);for(var n=new lc,r=0;r0;){var p=h.poll(),f=p.getDistance();if(f>=l)break;p.isLeaves()?(l=f,c=p):p.expandToQueue(h,l)}return[c.getBoundable(0).getItem(),c.getBoundable(1).getItem()]}}else if(3===arguments.length){var g=arguments[0],d=arguments[1],y=arguments[2],v=new Zh(g,d),_=new rp(this.getRoot(),v,y);return this.nearestNeighbour(_)[0]}},e.prototype.interfaces_=function(){return[$h,al]},e.prototype.getClass=function(){return e},e.centreX=function(t){return e.avg(t.getMinX(),t.getMaxX())},e.avg=function(t,e){return(t+e)/2},e.centreY=function(t){return e.avg(t.getMinY(),t.getMaxY())},n.STRtreeNode.get=function(){return lp},n.serialVersionUID.get=function(){return 0x39920f7d5f261e0},n.xComparator.get=function(){return{interfaces_:function(){return[sl]},compare:function(n,r){return t.compareDoubles(e.centreX(n.getBounds()),e.centreX(r.getBounds()))}}},n.yComparator.get=function(){return{interfaces_:function(){return[sl]},compare:function(n,r){return t.compareDoubles(e.centreY(n.getBounds()),e.centreY(r.getBounds()))}}},n.intersectsOp.get=function(){return{interfaces_:function(){return[t.IntersectsOp]},intersects:function(t,e){return t.intersects(e)}}},n.DEFAULT_NODE_CAPACITY.get=function(){return 10},Object.defineProperties(e,n),e}(ip),lp=function(t){function e(){var e=arguments[0];t.call(this,e)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.computeBounds=function(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var n=e.next();null===t?t=new Ll(n.getBounds()):t.expandToInclude(n.getBounds())}return t},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(tp),cp=function(){};cp.prototype.interfaces_=function(){return[]},cp.prototype.getClass=function(){return cp},cp.relativeSign=function(t,e){return te?1:0},cp.compare=function(t,e,n){if(e.equals2D(n))return 0;var r=cp.relativeSign(e.x,n.x),i=cp.relativeSign(e.y,n.y);switch(t){case 0:return cp.compareValue(r,i);case 1:return cp.compareValue(i,r);case 2:return cp.compareValue(i,-r);case 3:return cp.compareValue(-r,i);case 4:return cp.compareValue(-r,-i);case 5:return cp.compareValue(-i,-r);case 6:return cp.compareValue(-i,r);case 7:return cp.compareValue(r,-i)}return ql.shouldNeverReachHere("invalid octant value"),0},cp.compareValue=function(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0};var hp=function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;var t=arguments[0],e=arguments[1],n=arguments[2],r=arguments[3];this._segString=t,this.coord=new ul(e),this.segmentIndex=n,this._segmentOctant=r,this._isInterior=!e.equals2D(t.getCoordinate(n))};hp.prototype.getCoordinate=function(){return this.coord},hp.prototype.print=function(t){t.print(this.coord),t.print(" seg # = "+this.segmentIndex)},hp.prototype.compareTo=function(t){var e=t;return this.segmentIndexe.segmentIndex?1:this.coord.equals2D(e.coord)?0:cp.compare(this._segmentOctant,this.coord,e.coord)},hp.prototype.isEndPoint=function(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t},hp.prototype.isInterior=function(){return this._isInterior},hp.prototype.interfaces_=function(){return[il]},hp.prototype.getClass=function(){return hp};var pp=function(){this._nodeMap=new Cc,this._edge=null;var t=arguments[0];this._edge=t};pp.prototype.getSplitCoordinates=function(){var t=new hc;this.addEndpoints();for(var e=this.iterator(),n=e.next();e.hasNext();){var r=e.next();this.addEdgeCoordinates(n,r,t),n=r}return t.toCoordinateArray()},pp.prototype.addCollapsedNodes=function(){var t=new lc;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var n=e.next().intValue();this.add(this._edge.getCoordinate(n),n)}},pp.prototype.print=function(t){t.println("Intersections:");for(var e=this.iterator();e.hasNext();){e.next().print(t)}},pp.prototype.findCollapsesFromExistingVertices=function(t){for(var e=0;e=0?e>=0?n>=r?0:1:n>=r?7:6:e>=0?n>=r?3:2:n>=r?4:5}if(arguments[0]instanceof ul&&arguments[1]instanceof ul){var i=arguments[0],o=arguments[1],s=o.x-i.x,a=o.y-i.y;if(0===s&&0===a)throw new el("Cannot compute the octant for two identical points "+i);return fp.octant(s,a)}};var gp=function(){};gp.prototype.getCoordinates=function(){},gp.prototype.size=function(){},gp.prototype.getCoordinate=function(t){},gp.prototype.isClosed=function(){},gp.prototype.setData=function(t){},gp.prototype.getData=function(){},gp.prototype.interfaces_=function(){return[]},gp.prototype.getClass=function(){return gp};var dp=function(){};dp.prototype.addIntersection=function(t,e){},dp.prototype.interfaces_=function(){return[gp]},dp.prototype.getClass=function(){return dp};var yp=function(){this._nodeList=new pp(this),this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};yp.prototype.getCoordinates=function(){return this._pts},yp.prototype.size=function(){return this._pts.length},yp.prototype.getCoordinate=function(t){return this._pts[t]},yp.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},yp.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))},yp.prototype.setData=function(t){this._data=t},yp.prototype.safeOctant=function(t,e){return t.equals2D(e)?0:fp.octant(t,e)},yp.prototype.getData=function(){return this._data},yp.prototype.addIntersection=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[3],o=new ul(n.getIntersection(i));this.addIntersection(o,r)}},yp.prototype.toString=function(){return Fl.toLineString(new lh(this._pts))},yp.prototype.getNodeList=function(){return this._nodeList},yp.prototype.addIntersectionNode=function(t,e){var n=e,r=n+1;if(r=0&&n>=0||e<=0&&n<=0?Math.max(e,n):0}if(arguments[0]instanceof ul){var r=arguments[0];return Xl.orientationIndex(this.p0,this.p1,r)}},vp.prototype.toGeometry=function(t){return t.createLineString([this.p0,this.p1])},vp.prototype.isVertical=function(){return this.p0.x===this.p1.x},vp.prototype.equals=function(t){if(!(t instanceof vp))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)},vp.prototype.intersection=function(t){var e=new jl;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null},vp.prototype.project=function(){if(arguments[0]instanceof ul){var t=arguments[0];if(t.equals(this.p0)||t.equals(this.p1))return new ul(t);var e=this.projectionFactor(t),n=new ul;return n.x=this.p0.x+e*(this.p1.x-this.p0.x),n.y=this.p0.y+e*(this.p1.y-this.p0.y),n}if(arguments[0]instanceof vp){var r=arguments[0],i=this.projectionFactor(r.p0),o=this.projectionFactor(r.p1);if(i>=1&&o>=1)return null;if(i<=0&&o<=0)return null;var s=this.project(r.p0);i<0&&(s=this.p0),i>1&&(s=this.p1);var a=this.project(r.p1);return o<0&&(a=this.p0),o>1&&(a=this.p1),new vp(s,a)}},vp.prototype.normalize=function(){this.p1.compareTo(this.p0)<0&&this.reverse()},vp.prototype.angle=function(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)},vp.prototype.getCoordinate=function(t){return 0===t?this.p0:this.p1},vp.prototype.distancePerpendicular=function(t){return Xl.distancePointLinePerpendicular(t,this.p0,this.p1)},vp.prototype.minY=function(){return Math.min(this.p0.y,this.p1.y)},vp.prototype.midPoint=function(){return vp.midPoint(this.p0,this.p1)},vp.prototype.projectionFactor=function(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,n=this.p1.y-this.p0.y,r=e*e+n*n;return r<=0?nl.NaN:((t.x-this.p0.x)*e+(t.y-this.p0.y)*n)/r},vp.prototype.closestPoints=function(t){var e=this.intersection(t);if(null!==e)return[e,e];var n=new Array(2).fill(null),r=nl.MAX_VALUE,i=null,o=this.closestPoint(t.p0);r=o.distance(t.p0),n[0]=o,n[1]=t.p0;var s=this.closestPoint(t.p1);(i=s.distance(t.p1))0&&e<1?this.project(t):this.p0.distance(t)1||nl.isNaN(e))&&(e=1),e},vp.prototype.toString=function(){return"LINESTRING( "+this.p0.x+" "+this.p0.y+", "+this.p1.x+" "+this.p1.y+")"},vp.prototype.isHorizontal=function(){return this.p0.y===this.p1.y},vp.prototype.distance=function(){if(arguments[0]instanceof vp){var t=arguments[0];return Xl.distanceLineLine(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof ul){var e=arguments[0];return Xl.distancePointLine(e,this.p0,this.p1)}},vp.prototype.pointAlong=function(t){var e=new ul;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e},vp.prototype.hashCode=function(){var t=nl.doubleToLongBits(this.p0.x);t^=31*nl.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),n=nl.doubleToLongBits(this.p1.x);return n^=31*nl.doubleToLongBits(this.p1.y),e^(Math.trunc(n)^Math.trunc(n>>32))},vp.prototype.interfaces_=function(){return[il,al]},vp.prototype.getClass=function(){return vp},vp.midPoint=function(t,e){return new ul((t.x+e.x)/2,(t.y+e.y)/2)},_p.serialVersionUID.get=function(){return 0x2d2172135f411c00},Object.defineProperties(vp,_p);var mp=function(){this.tempEnv1=new Ll,this.tempEnv2=new Ll,this._overlapSeg1=new vp,this._overlapSeg2=new vp};mp.prototype.overlap=function(){if(2===arguments.length);else if(4===arguments.length){var t=arguments[0],e=arguments[1],n=arguments[2],r=arguments[3];t.getLineSegment(e,this._overlapSeg1),n.getLineSegment(r,this._overlapSeg2),this.overlap(this._overlapSeg1,this._overlapSeg2)}},mp.prototype.interfaces_=function(){return[]},mp.prototype.getClass=function(){return mp};var xp=function(){this._pts=null,this._start=null,this._end=null,this._env=null,this._context=null,this._id=null;var t=arguments[0],e=arguments[1],n=arguments[2],r=arguments[3];this._pts=t,this._start=e,this._end=n,this._context=r};xp.prototype.getLineSegment=function(t,e){e.p0=this._pts[t],e.p1=this._pts[t+1]},xp.prototype.computeSelect=function(t,e,n,r){var i=this._pts[e],o=this._pts[n];if(r.tempEnv1.init(i,o),n-e==1)return r.select(this,e),null;if(!t.intersects(r.tempEnv1))return null;var s=Math.trunc((e+n)/2);e=t.length-1)return t.length-1;for(var r=jh.quadrant(t[n],t[n+1]),i=e+1;ir.getId()&&(r.computeOverlaps(o,e),t._nOverlaps++),t._segInt.isDone())return null}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},n.SegmentOverlapAction.get=function(){return Np},Object.defineProperties(e,n),e}(wp),Np=function(t){function e(){t.call(this),this._si=null;var e=arguments[0];this._si=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.overlap=function(){if(4!==arguments.length)return t.prototype.overlap.apply(this,arguments);var e=arguments[0],n=arguments[1],r=arguments[2],i=arguments[3],o=e.getContext(),s=r.getContext();this._si.processIntersections(o,n,s,i)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(mp),Sp=function t(){if(this._quadrantSegments=t.DEFAULT_QUADRANT_SEGMENTS,this._endCapStyle=t.CAP_ROUND,this._joinStyle=t.JOIN_ROUND,this._mitreLimit=t.DEFAULT_MITRE_LIMIT,this._isSingleSided=!1,this._simplifyFactor=t.DEFAULT_SIMPLIFY_FACTOR,0===arguments.length);else if(1===arguments.length){var e=arguments[0];this.setQuadrantSegments(e)}else if(2===arguments.length){var n=arguments[0],r=arguments[1];this.setQuadrantSegments(n),this.setEndCapStyle(r)}else if(4===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2],a=arguments[3];this.setQuadrantSegments(i),this.setEndCapStyle(o),this.setJoinStyle(s),this.setMitreLimit(a)}},Cp={CAP_ROUND:{configurable:!0},CAP_FLAT:{configurable:!0},CAP_SQUARE:{configurable:!0},JOIN_ROUND:{configurable:!0},JOIN_MITRE:{configurable:!0},JOIN_BEVEL:{configurable:!0},DEFAULT_QUADRANT_SEGMENTS:{configurable:!0},DEFAULT_MITRE_LIMIT:{configurable:!0},DEFAULT_SIMPLIFY_FACTOR:{configurable:!0}};Sp.prototype.getEndCapStyle=function(){return this._endCapStyle},Sp.prototype.isSingleSided=function(){return this._isSingleSided},Sp.prototype.setQuadrantSegments=function(t){this._quadrantSegments=t,0===this._quadrantSegments&&(this._joinStyle=Sp.JOIN_BEVEL),this._quadrantSegments<0&&(this._joinStyle=Sp.JOIN_MITRE,this._mitreLimit=Math.abs(this._quadrantSegments)),t<=0&&(this._quadrantSegments=1),this._joinStyle!==Sp.JOIN_ROUND&&(this._quadrantSegments=Sp.DEFAULT_QUADRANT_SEGMENTS)},Sp.prototype.getJoinStyle=function(){return this._joinStyle},Sp.prototype.setJoinStyle=function(t){this._joinStyle=t},Sp.prototype.setSimplifyFactor=function(t){this._simplifyFactor=t<0?0:t},Sp.prototype.getSimplifyFactor=function(){return this._simplifyFactor},Sp.prototype.getQuadrantSegments=function(){return this._quadrantSegments},Sp.prototype.setEndCapStyle=function(t){this._endCapStyle=t},Sp.prototype.getMitreLimit=function(){return this._mitreLimit},Sp.prototype.setMitreLimit=function(t){this._mitreLimit=t},Sp.prototype.setSingleSided=function(t){this._isSingleSided=t},Sp.prototype.interfaces_=function(){return[]},Sp.prototype.getClass=function(){return Sp},Sp.bufferDistanceError=function(t){var e=Math.PI/2/t;return 1-Math.cos(e/2)},Cp.CAP_ROUND.get=function(){return 1},Cp.CAP_FLAT.get=function(){return 2},Cp.CAP_SQUARE.get=function(){return 3},Cp.JOIN_ROUND.get=function(){return 1},Cp.JOIN_MITRE.get=function(){return 2},Cp.JOIN_BEVEL.get=function(){return 3},Cp.DEFAULT_QUADRANT_SEGMENTS.get=function(){return 8},Cp.DEFAULT_MITRE_LIMIT.get=function(){return 5},Cp.DEFAULT_SIMPLIFY_FACTOR.get=function(){return.01},Object.defineProperties(Sp,Cp);var Pp=function(t){this._distanceTol=null,this._isDeleted=null,this._angleOrientation=Xl.COUNTERCLOCKWISE,this._inputLine=t||null},Mp={INIT:{configurable:!0},DELETE:{configurable:!0},KEEP:{configurable:!0},NUM_PTS_TO_CHECK:{configurable:!0}};Pp.prototype.isDeletable=function(t,e,n,r){var i=this._inputLine[t],o=this._inputLine[e],s=this._inputLine[n];return!!this.isConcave(i,o,s)&&(!!this.isShallow(i,o,s,r)&&this.isShallowSampled(i,o,t,n,r))},Pp.prototype.deleteShallowConcavities=function(){for(var t=this,e=1,n=this.findNextNonDeletedIndex(e),r=this.findNextNonDeletedIndex(n),i=!1;r=0;r--)this.addPt(t[r])},Lp.prototype.isRedundant=function(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)Math.PI;)t-=Rp.PI_TIMES_2;for(;t<=-Math.PI;)t+=Rp.PI_TIMES_2;return t},Rp.angle=function(){if(1===arguments.length){var t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){var e=arguments[0],n=arguments[1],r=n.x-e.x,i=n.y-e.y;return Math.atan2(i,r)}},Rp.isAcute=function(t,e,n){var r=t.x-e.x,i=t.y-e.y;return r*(n.x-e.x)+i*(n.y-e.y)>0},Rp.isObtuse=function(t,e,n){var r=t.x-e.x,i=t.y-e.y;return r*(n.x-e.x)+i*(n.y-e.y)<0},Rp.interiorAngle=function(t,e,n){var r=Rp.angle(e,t),i=Rp.angle(e,n);return Math.abs(i-r)},Rp.normalizePositive=function(t){if(t<0){for(;t<0;)t+=Rp.PI_TIMES_2;t>=Rp.PI_TIMES_2&&(t=0)}else{for(;t>=Rp.PI_TIMES_2;)t-=Rp.PI_TIMES_2;t<0&&(t=0)}return t},Rp.angleBetween=function(t,e,n){var r=Rp.angle(e,t),i=Rp.angle(e,n);return Rp.diff(r,i)},Rp.diff=function(t,e){var n=null;return(n=tMath.PI&&(n=2*Math.PI-n),n},Rp.toRadians=function(t){return t*Math.PI/180},Rp.getTurn=function(t,e){var n=Math.sin(e-t);return n>0?Rp.COUNTERCLOCKWISE:n<0?Rp.CLOCKWISE:Rp.NONE},Rp.angleBetweenOriented=function(t,e,n){var r=Rp.angle(e,t),i=Rp.angle(e,n)-r;return i<=-Math.PI?i+Rp.PI_TIMES_2:i>Math.PI?i-Rp.PI_TIMES_2:i},Tp.PI_TIMES_2.get=function(){return 2*Math.PI},Tp.PI_OVER_2.get=function(){return Math.PI/2},Tp.PI_OVER_4.get=function(){return Math.PI/4},Tp.COUNTERCLOCKWISE.get=function(){return Xl.COUNTERCLOCKWISE},Tp.CLOCKWISE.get=function(){return Xl.CLOCKWISE},Tp.NONE.get=function(){return Xl.COLLINEAR},Object.defineProperties(Rp,Tp);var Ap=function t(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new vp,this._seg1=new vp,this._offset0=new vp,this._offset1=new vp,this._side=0,this._hasNarrowConcaveAngle=!1;var e=arguments[0],n=arguments[1],r=arguments[2];this._precisionModel=e,this._bufParams=n,this._li=new jl,this._filletAngleQuantum=Math.PI/2/n.getQuadrantSegments(),n.getQuadrantSegments()>=8&&n.getJoinStyle()===Sp.JOIN_ROUND&&(this._closingSegLengthFactor=t.MAX_CLOSING_SEG_LEN_FACTOR),this.init(r)},Dp={OFFSET_SEGMENT_SEPARATION_FACTOR:{configurable:!0},INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},CURVE_VERTEX_SNAP_DISTANCE_FACTOR:{configurable:!0},MAX_CLOSING_SEG_LEN_FACTOR:{configurable:!0}};Ap.prototype.addNextSegment=function(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var n=Xl.computeOrientation(this._s0,this._s1,this._s2),r=n===Xl.CLOCKWISE&&this._side===Sh.LEFT||n===Xl.COUNTERCLOCKWISE&&this._side===Sh.RIGHT;0===n?this.addCollinear(e):r?this.addOutsideTurn(n,e):this.addInsideTurn(n,e)},Ap.prototype.addLineEndCap=function(t,e){var n=new vp(t,e),r=new vp;this.computeOffsetSegment(n,Sh.LEFT,this._distance,r);var i=new vp;this.computeOffsetSegment(n,Sh.RIGHT,this._distance,i);var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o);switch(this._bufParams.getEndCapStyle()){case Sp.CAP_ROUND:this._segList.addPt(r.p1),this.addFilletArc(e,a+Math.PI/2,a-Math.PI/2,Xl.CLOCKWISE,this._distance),this._segList.addPt(i.p1);break;case Sp.CAP_FLAT:this._segList.addPt(r.p1),this._segList.addPt(i.p1);break;case Sp.CAP_SQUARE:var u=new ul;u.x=Math.abs(this._distance)*Math.cos(a),u.y=Math.abs(this._distance)*Math.sin(a);var l=new ul(r.p1.x+u.x,r.p1.y+u.y),c=new ul(i.p1.x+u.x,i.p1.y+u.y);this._segList.addPt(l),this._segList.addPt(c)}},Ap.prototype.getCoordinates=function(){return this._segList.getCoordinates()},Ap.prototype.addMitreJoin=function(t,e,n,r){var i=!0,o=null;try{o=Ml.intersection(e.p0,e.p1,n.p0,n.p1),(r<=0?1:o.distance(t)/Math.abs(r))>this._bufParams.getMitreLimit()&&(i=!1)}catch(t){if(!(t instanceof Cl))throw t;o=new ul(0,0),i=!1}i?this._segList.addPt(o):this.addLimitedMitreJoin(e,n,r,this._bufParams.getMitreLimit())},Ap.prototype.addFilletCorner=function(t,e,n,r,i){var o=e.x-t.x,s=e.y-t.y,a=Math.atan2(s,o),u=n.x-t.x,l=n.y-t.y,c=Math.atan2(l,u);r===Xl.CLOCKWISE?a<=c&&(a+=2*Math.PI):a>=c&&(a-=2*Math.PI),this._segList.addPt(e),this.addFilletArc(t,a,c,r,i),this._segList.addPt(n)},Ap.prototype.addOutsideTurn=function(t,e){if(this._offset0.p1.distance(this._offset1.p0)0){var n=new ul((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(n);var r=new ul((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(r)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}},Ap.prototype.createCircle=function(t){var e=new ul(t.x+this._distance,t.y);this._segList.addPt(e),this.addFilletArc(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()},Ap.prototype.addBevelJoin=function(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)},Ap.prototype.init=function(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new Lp,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*Ap.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)},Ap.prototype.addCollinear=function(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===Sp.JOIN_BEVEL||this._bufParams.getJoinStyle()===Sp.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addFilletCorner(this._s1,this._offset0.p1,this._offset1.p0,Xl.CLOCKWISE,this._distance))},Ap.prototype.closeRing=function(){this._segList.closeRing()},Ap.prototype.hasNarrowConcaveAngle=function(){return this._hasNarrowConcaveAngle},Ap.prototype.interfaces_=function(){return[]},Ap.prototype.getClass=function(){return Ap},Dp.OFFSET_SEGMENT_SEPARATION_FACTOR.get=function(){return.001},Dp.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return.001},Dp.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get=function(){return 1e-6},Dp.MAX_CLOSING_SEG_LEN_FACTOR.get=function(){return 80},Object.defineProperties(Ap,Dp);var Fp=function(){this._distance=0,this._precisionModel=null,this._bufParams=null;var t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e};Fp.prototype.getOffsetCurve=function(t,e){if(this._distance=e,0===e)return null;var n=e<0,r=Math.abs(e),i=this.getSegGen(r);t.length<=1?this.computePointCurve(t[0],i):this.computeOffsetCurve(t,n,i);var o=i.getCoordinates();return n&&pc.reverse(o),o},Fp.prototype.computeSingleSidedBufferCurve=function(t,e,n){var r=this.simplifyTolerance(this._distance);if(e){n.addSegments(t,!0);var i=Pp.simplify(t,-r),o=i.length-1;n.initSideSegments(i[o],i[o-1],Sh.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(i[s],!0)}else{n.addSegments(t,!1);var a=Pp.simplify(t,r),u=a.length-1;n.initSideSegments(a[0],a[1],Sh.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment(),n.closeRing()},Fp.prototype.computeRingBufferCurve=function(t,e,n){var r=this.simplifyTolerance(this._distance);e===Sh.RIGHT&&(r=-r);var i=Pp.simplify(t,r),o=i.length-1;n.initSideSegments(i[o-1],i[0],e);for(var s=1;s<=o;s++){var a=1!==s;n.addNextSegment(i[s],a)}n.closeRing()},Fp.prototype.computeLineBufferCurve=function(t,e){var n=this.simplifyTolerance(this._distance),r=Pp.simplify(t,n),i=r.length-1;e.initSideSegments(r[0],r[1],Sh.LEFT);for(var o=2;o<=i;o++)e.addNextSegment(r[o],!0);e.addLastSegment(),e.addLineEndCap(r[i-1],r[i]);var s=Pp.simplify(t,-n),a=s.length-1;e.initSideSegments(s[a],s[a-1],Sh.LEFT);for(var u=a-2;u>=0;u--)e.addNextSegment(s[u],!0);e.addLastSegment(),e.addLineEndCap(s[1],s[0]),e.closeRing()},Fp.prototype.computePointCurve=function(t,e){switch(this._bufParams.getEndCapStyle()){case Sp.CAP_ROUND:e.createCircle(t);break;case Sp.CAP_SQUARE:e.createSquare(t)}},Fp.prototype.getLineCurve=function(t,e){if(this._distance=e,e<0&&!this._bufParams.isSingleSided())return null;if(0===e)return null;var n=Math.abs(e),r=this.getSegGen(n);if(t.length<=1)this.computePointCurve(t[0],r);else if(this._bufParams.isSingleSided()){var i=e<0;this.computeSingleSidedBufferCurve(t,i,r)}else this.computeLineBufferCurve(t,r);return r.getCoordinates()},Fp.prototype.getBufferParameters=function(){return this._bufParams},Fp.prototype.simplifyTolerance=function(t){return t*this._bufParams.getSimplifyFactor()},Fp.prototype.getRingCurve=function(t,e,n){if(this._distance=n,t.length<=2)return this.getLineCurve(t,n);if(0===n)return Fp.copyCoordinates(t);var r=this.getSegGen(n);return this.computeRingBufferCurve(t,e,r),r.getCoordinates()},Fp.prototype.computeOffsetCurve=function(t,e,n){var r=this.simplifyTolerance(this._distance);if(e){var i=Pp.simplify(t,-r),o=i.length-1;n.initSideSegments(i[o],i[o-1],Sh.LEFT),n.addFirstSegment();for(var s=o-2;s>=0;s--)n.addNextSegment(i[s],!0)}else{var a=Pp.simplify(t,r),u=a.length-1;n.initSideSegments(a[0],a[1],Sh.LEFT),n.addFirstSegment();for(var l=2;l<=u;l++)n.addNextSegment(a[l],!0)}n.addLastSegment()},Fp.prototype.getSegGen=function(t){return new Ap(this._precisionModel,this._bufParams,t)},Fp.prototype.interfaces_=function(){return[]},Fp.prototype.getClass=function(){return Fp},Fp.copyCoordinates=function(t){for(var e=new Array(t.length).fill(null),n=0;no.getMaxY()||t.findStabbedSegments(e,i.getDirectedEdges(),n)}return n}if(3===arguments.length)if(gl(arguments[2],ac)&&arguments[0]instanceof ul&&arguments[1]instanceof Xh)for(var s=arguments[0],a=arguments[1],u=arguments[2],l=a.getEdge().getCoordinates(),c=0;ct._seg.p1.y&&t._seg.reverse();var h=Math.max(t._seg.p0.x,t._seg.p1.x);if(!(ht._seg.p1.y||Xl.computeOrientation(t._seg.p0,t._seg.p1,s)===Xl.RIGHT)){var p=a.getDepth(Sh.LEFT);t._seg.p0.equals(l[c])||(p=a.getDepth(Sh.RIGHT));var f=new qp(t._seg,p);u.add(f)}}else if(gl(arguments[2],ac)&&arguments[0]instanceof ul&&gl(arguments[1],ac))for(var g=arguments[0],d=arguments[1],y=arguments[2],v=d.iterator();v.hasNext();){var _=v.next();_.isForward()&&t.findStabbedSegments(g,_,y)}},kp.prototype.getDepth=function(t){var e=this.findStabbedSegments(t);return 0===e.size()?0:np.min(e)._leftDepth},kp.prototype.interfaces_=function(){return[]},kp.prototype.getClass=function(){return kp},Gp.DepthSegment.get=function(){return qp},Object.defineProperties(kp,Gp);var qp=function(){this._upwardSeg=null,this._leftDepth=null;var t=arguments[0],e=arguments[1];this._upwardSeg=new vp(t),this._leftDepth=e};qp.prototype.compareTo=function(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var n=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==n||0!==(n=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?n:this._upwardSeg.compareTo(e._upwardSeg)},qp.prototype.compareX=function(t,e){var n=t.p0.compareTo(e.p0);return 0!==n?n:t.p1.compareTo(e.p1)},qp.prototype.toString=function(){return this._upwardSeg.toString()},qp.prototype.interfaces_=function(){return[il]},qp.prototype.getClass=function(){return qp};var Bp=function(t,e,n){this.p0=t||null,this.p1=e||null,this.p2=n||null};Bp.prototype.area=function(){return Bp.area(this.p0,this.p1,this.p2)},Bp.prototype.signedArea=function(){return Bp.signedArea(this.p0,this.p1,this.p2)},Bp.prototype.interpolateZ=function(t){if(null===t)throw new el("Supplied point is null.");return Bp.interpolateZ(t,this.p0,this.p1,this.p2)},Bp.prototype.longestSideLength=function(){return Bp.longestSideLength(this.p0,this.p1,this.p2)},Bp.prototype.isAcute=function(){return Bp.isAcute(this.p0,this.p1,this.p2)},Bp.prototype.circumcentre=function(){return Bp.circumcentre(this.p0,this.p1,this.p2)},Bp.prototype.area3D=function(){return Bp.area3D(this.p0,this.p1,this.p2)},Bp.prototype.centroid=function(){return Bp.centroid(this.p0,this.p1,this.p2)},Bp.prototype.inCentre=function(){return Bp.inCentre(this.p0,this.p1,this.p2)},Bp.prototype.interfaces_=function(){return[]},Bp.prototype.getClass=function(){return Bp},Bp.area=function(t,e,n){return Math.abs(((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2)},Bp.signedArea=function(t,e,n){return((n.x-t.x)*(e.y-t.y)-(e.x-t.x)*(n.y-t.y))/2},Bp.det=function(t,e,n,r){return t*r-e*n},Bp.interpolateZ=function(t,e,n,r){var i=e.x,o=e.y,s=n.x-i,a=r.x-i,u=n.y-o,l=r.y-o,c=s*l-a*u,h=t.x-i,p=t.y-o,f=(l*h-a*p)/c,g=(-u*h+s*p)/c;return e.z+f*(n.z-e.z)+g*(r.z-e.z)},Bp.longestSideLength=function(t,e,n){var r=t.distance(e),i=e.distance(n),o=n.distance(t),s=r;return i>s&&(s=i),o>s&&(s=o),s},Bp.isAcute=function(t,e,n){return!!Rp.isAcute(t,e,n)&&(!!Rp.isAcute(e,n,t)&&!!Rp.isAcute(n,t,e))},Bp.circumcentre=function(t,e,n){var r=n.x,i=n.y,o=t.x-r,s=t.y-i,a=e.x-r,u=e.y-i,l=2*Bp.det(o,s,a,u),c=Bp.det(s,o*o+s*s,u,a*a+u*u),h=Bp.det(o,o*o+s*s,a,a*a+u*u);return new ul(r-c/l,i+h/l)},Bp.perpendicularBisector=function(t,e){var n=e.x-t.x,r=e.y-t.y,i=new Ml(t.x+n/2,t.y+r/2,1),o=new Ml(t.x-r+n/2,t.y+n+r/2,1);return new Ml(i,o)},Bp.angleBisector=function(t,e,n){var r=e.distance(t),i=r/(r+e.distance(n)),o=n.x-t.x,s=n.y-t.y;return new ul(t.x+i*o,t.y+i*s)},Bp.area3D=function(t,e,n){var r=e.x-t.x,i=e.y-t.y,o=e.z-t.z,s=n.x-t.x,a=n.y-t.y,u=n.z-t.z,l=i*u-o*a,c=o*s-r*u,h=r*a-i*s,p=l*l+c*c+h*h,f=Math.sqrt(p)/2;return f},Bp.centroid=function(t,e,n){var r=(t.x+e.x+n.x)/3,i=(t.y+e.y+n.y)/3;return new ul(r,i)},Bp.inCentre=function(t,e,n){var r=e.distance(n),i=t.distance(n),o=t.distance(e),s=r+i+o,a=(r*t.x+i*e.x+o*n.x)/s,u=(r*t.y+i*e.y+o*n.y)/s;return new ul(a,u)};var zp=function(){this._inputGeom=null,this._distance=null,this._curveBuilder=null,this._curveList=new lc;var t=arguments[0],e=arguments[1],n=arguments[2];this._inputGeom=t,this._distance=e,this._curveBuilder=n};zp.prototype.addPoint=function(t){if(this._distance<=0)return null;var e=t.getCoordinates(),n=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(n,pl.EXTERIOR,pl.INTERIOR)},zp.prototype.addPolygon=function(t){var e=this,n=this._distance,r=Sh.LEFT;this._distance<0&&(n=-this._distance,r=Sh.RIGHT);var i=t.getExteriorRing(),o=pc.removeRepeatedPoints(i.getCoordinates());if(this._distance<0&&this.isErodedCompletely(i,this._distance))return null;if(this._distance<=0&&o.length<3)return null;this.addPolygonRing(o,n,r,pl.EXTERIOR,pl.INTERIOR);for(var s=0;s0&&e.isErodedCompletely(a,-e._distance)||e.addPolygonRing(u,n,Sh.opposite(r),pl.INTERIOR,pl.EXTERIOR)}},zp.prototype.isTriangleErodedCompletely=function(t,e){var n=new Bp(t[0],t[1],t[2]),r=n.inCentre();return Xl.distancePointLine(r,n.p0,n.p1)=nh.MINIMUM_VALID_SIZE&&Xl.isCCW(t)&&(o=i,s=r,n=Sh.opposite(n));var a=this._curveBuilder.getRingCurve(t,n,e);this.addCurve(a,o,s)},zp.prototype.add=function(t){if(t.isEmpty())return null;t instanceof th?this.addPolygon(t):t instanceof Zc?this.addLineString(t):t instanceof Qc?this.addPoint(t):(t instanceof eh||t instanceof Gc||t instanceof rh||t instanceof kc)&&this.addCollection(t)},zp.prototype.isErodedCompletely=function(t,e){var n=t.getCoordinates();if(n.length<4)return e<0;if(4===n.length)return this.isTriangleErodedCompletely(n,e);var r=t.getEnvelopeInternal(),i=Math.min(r.getHeight(),r.getWidth());return e<0&&2*Math.abs(e)>i},zp.prototype.addCollection=function(t){for(var e=0;e=this._max)throw new uc;var t=this._parent.getGeometryN(this._index++);return t instanceof kc?(this._subcollectionIterator=new Up(t),this._subcollectionIterator.next()):t},Up.prototype.remove=function(){throw new Error(this.getClass().getName())},Up.prototype.hasNext=function(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)},Up.prototype.interfaces_=function(){return[sc]},Up.prototype.getClass=function(){return Up},Up.isAtomic=function(t){return!(t instanceof kc)};var Vp=function(){this._geom=null;var t=arguments[0];this._geom=t};Vp.prototype.locate=function(t){return Vp.locate(t,this._geom)},Vp.prototype.interfaces_=function(){return[jp]},Vp.prototype.getClass=function(){return Vp},Vp.isPointInRing=function(t,e){return!!e.getEnvelopeInternal().intersects(t)&&Xl.isPointInRing(t,e.getCoordinates())},Vp.containsPointInPolygon=function(t,e){if(e.isEmpty())return!1;var n=e.getExteriorRing();if(!Vp.isPointInRing(t,n))return!1;for(var r=0;r=0;n--){var r=this._edgeList.get(n),i=r.getSym();null===e&&(e=i),null!==t&&i.setNext(t),t=r}e.setNext(t)},e.prototype.computeDepths=function(){var t=this;if(1===arguments.length){var e=arguments[0],n=this.findIndex(e),r=e.getDepth(Sh.LEFT),i=e.getDepth(Sh.RIGHT),o=this.computeDepths(n+1,this._edgeList.size(),r),s=this.computeDepths(0,n,o);if(s!==i)throw new Oh("depth mismatch at "+e.getCoordinate())}else if(3===arguments.length){for(var a=arguments[0],u=arguments[1],l=arguments[2],c=l,h=a;h=0;o--){var s=e._resultAreaEdgeList.get(o),a=s.getSym();switch(null===n&&s.getEdgeRing()===t&&(n=s),i){case e._SCANNING_FOR_INCOMING:if(a.getEdgeRing()!==t)continue;r=a,i=e._LINKING_TO_OUTGOING;break;case e._LINKING_TO_OUTGOING:if(s.getEdgeRing()!==t)continue;r.setNextMin(s),i=e._SCANNING_FOR_INCOMING}}i===this._LINKING_TO_OUTGOING&&(ql.isTrue(null!==n,"found null for first outgoing dirEdge"),ql.isTrue(n.getEdgeRing()===t,"unable to link last incoming dirEdge"),r.setNextMin(n))},e.prototype.getOutgoingDegree=function(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();){var n=e.next();n.isInResult()&&t++}return t}if(1===arguments.length){for(var r=arguments[0],i=0,o=this.iterator();o.hasNext();){var s=o.next();s.getEdgeRing()===r&&i++}return i}},e.prototype.getLabel=function(){return this._label},e.prototype.findCoveredLineEdges=function(){for(var t=pl.NONE,e=this.iterator();e.hasNext();){var n=e.next(),r=n.getSym();if(!n.isLineEdge()){if(n.isInResult()){t=pl.INTERIOR;break}if(r.isInResult()){t=pl.EXTERIOR;break}}}if(t===pl.NONE)return null;for(var i=t,o=this.iterator();o.hasNext();){var s=o.next(),a=s.getSym();s.isLineEdge()?s.getEdge().setCovered(i===pl.INTERIOR):(s.isInResult()&&(i=pl.EXTERIOR),a.isInResult()&&(i=pl.INTERIOR))}},e.prototype.computeLabelling=function(e){t.prototype.computeLabelling.call(this,e),this._label=new Dh(pl.NONE);for(var n=this.iterator();n.hasNext();)for(var r=n.next().getEdge().getLabel(),i=0;i<2;i++){var o=r.getLocation(i);o!==pl.INTERIOR&&o!==pl.BOUNDARY||this._label.setLocation(i,pl.INTERIOR)}},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Xp),Hp=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createNode=function(t){return new Bh(t,new Yp)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Yh),Wp=function t(){this._pts=null,this._orientation=null;var e=arguments[0];this._pts=e,this._orientation=t.orientation(e)};Wp.prototype.compareTo=function(t){var e=t;return Wp.compareOriented(this._pts,this._orientation,e._pts,e._orientation)},Wp.prototype.interfaces_=function(){return[il]},Wp.prototype.getClass=function(){return Wp},Wp.orientation=function(t){return 1===pc.increasingDirection(t)},Wp.compareOriented=function(t,e,n,r){for(var i=e?1:-1,o=r?1:-1,s=e?t.length:-1,a=r?n.length:-1,u=e?0:t.length-1,l=r?0:n.length-1;;){var c=t[u].compareTo(n[l]);if(0!==c)return c;var h=(u+=i)===s,p=(l+=o)===a;if(h&&!p)return-1;if(!h&&p)return 1;if(h&&p)return 0}};var Jp=function(){this._edges=new lc,this._ocaMap=new Cc};Jp.prototype.print=function(t){t.print("MULTILINESTRING ( ");for(var e=0;e0&&t.print(","),t.print("(");for(var r=n.getCoordinates(),i=0;i0&&t.print(","),t.print(r[i].x+" "+r[i].y);t.println(")")}t.print(") ")},Jp.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())},Jp.prototype.findEdgeIndex=function(t){for(var e=0;e0||!e.coord.equals2D(r);i||n--;var o=new Array(n).fill(null),s=0;o[s++]=new ul(t.coord);for(var a=t.segmentIndex+1;a<=e.segmentIndex;a++)o[s++]=this.edge.pts[a];return i&&(o[s]=e.coord),new of(o,new Dh(this.edge._label))},$p.prototype.add=function(t,e,n){var r=new Qp(t,e,n),i=this._nodeMap.get(r);return null!==i?i:(this._nodeMap.put(r,r),r)},$p.prototype.isIntersection=function(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1},$p.prototype.interfaces_=function(){return[]},$p.prototype.getClass=function(){return $p};var tf=function(){};tf.prototype.getChainStartIndices=function(t){var e=0,n=new lc;n.add(new _l(e));do{var r=this.findChainEnd(t,e);n.add(new _l(r)),e=r}while(en?e:n},ef.prototype.getMinX=function(t){var e=this.pts[this.startIndex[t]].x,n=this.pts[this.startIndex[t+1]].x;return en&&(i=1),t._depth[e][r]=i}}},nf.prototype.getDelta=function(t){return this._depth[t][Sh.RIGHT]-this._depth[t][Sh.LEFT]},nf.prototype.getLocation=function(t,e){return this._depth[t][e]<=0?pl.EXTERIOR:pl.INTERIOR},nf.prototype.toString=function(){return"A: "+this._depth[0][1]+","+this._depth[0][2]+" B: "+this._depth[1][1]+","+this._depth[1][2]},nf.prototype.add=function(){var t=this;if(1===arguments.length)for(var e=arguments[0],n=0;n<2;n++)for(var r=1;r<3;r++){var i=e.getLocation(n,r);i!==pl.EXTERIOR&&i!==pl.INTERIOR||(t.isNull(n,r)?t._depth[n][r]=nf.depthAtLocation(i):t._depth[n][r]+=nf.depthAtLocation(i))}else if(3===arguments.length){var o=arguments[0],s=arguments[1],a=arguments[2];a===pl.INTERIOR&&this._depth[o][s]++}},nf.prototype.interfaces_=function(){return[]},nf.prototype.getClass=function(){return nf},nf.depthAtLocation=function(t){return t===pl.EXTERIOR?0:t===pl.INTERIOR?1:nf.NULL_VALUE},rf.NULL_VALUE.get=function(){return-1},Object.defineProperties(nf,rf);var of=function(t){function e(){if(t.call(this),this.pts=null,this._env=null,this.eiList=new $p(this),this._name=null,this._mce=null,this._isIsolated=!0,this._depth=new nf,this._depthDelta=0,1===arguments.length){var n=arguments[0];e.call(this,n,null)}else if(2===arguments.length){var r=arguments[0],i=arguments[1];this.pts=r,this._label=i}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getDepth=function(){return this._depth},e.prototype.getCollapsedEdge=function(){var t=new Array(2).fill(null);return t[0]=this.pts[0],t[1]=this.pts[1],new e(t,Dh.toLineLabel(this._label))},e.prototype.isIsolated=function(){return this._isIsolated},e.prototype.getCoordinates=function(){return this.pts},e.prototype.setIsolated=function(t){this._isIsolated=t},e.prototype.setName=function(t){this._name=t},e.prototype.equals=function(t){if(!(t instanceof e))return!1;var n=t;if(this.pts.length!==n.pts.length)return!1;for(var r=!0,i=!0,o=this.pts.length,s=0;s0?this.pts[0]:null;if(1===arguments.length){var t=arguments[0];return this.pts[t]}},e.prototype.print=function(t){t.print("edge "+this._name+": "),t.print("LINESTRING (");for(var e=0;e0&&t.print(","),t.print(this.pts[e].x+" "+this.pts[e].y);t.print(") "+this._label+" "+this._depthDelta)},e.prototype.computeIM=function(t){e.updateIM(this._label,t)},e.prototype.isCollapsed=function(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))},e.prototype.isClosed=function(){return this.pts[0].equals(this.pts[this.pts.length-1])},e.prototype.getMaximumSegmentIndex=function(){return this.pts.length-1},e.prototype.getDepthDelta=function(){return this._depthDelta},e.prototype.getNumPoints=function(){return this.pts.length},e.prototype.printReverse=function(t){t.print("edge "+this._name+": ");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+" ");t.println("")},e.prototype.getMonotoneChainEdge=function(){return null===this._mce&&(this._mce=new ef(this)),this._mce},e.prototype.getEnvelope=function(){if(null===this._env){this._env=new Ll;for(var t=0;t0&&t.append(","),t.append(this.pts[e].x+" "+this.pts[e].y);return t.append(") "+this._label+" "+this._depthDelta),t.toString()},e.prototype.isPointwiseEqual=function(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;er||this._maxyo;if(s)return!1;var a=this.intersectsToleranceSquare(t,e);return ql.isTrue(!(s&&a),"Found bad envelope test"),a},cf.prototype.initCorners=function(t){var e=.5;this._minx=t.x-e,this._maxx=t.x+e,this._miny=t.y-e,this._maxy=t.y+e,this._corner[0]=new ul(this._maxx,this._maxy),this._corner[1]=new ul(this._minx,this._maxy),this._corner[2]=new ul(this._minx,this._miny),this._corner[3]=new ul(this._maxx,this._miny)},cf.prototype.intersects=function(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))},cf.prototype.scale=function(t){return Math.round(t*this._scaleFactor)},cf.prototype.getCoordinate=function(){return this._originalPt},cf.prototype.copyScaled=function(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)},cf.prototype.getSafeEnvelope=function(){if(null===this._safeEnv){var t=cf.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new Ll(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv},cf.prototype.intersectsPixelClosure=function(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.hasIntersection())))},cf.prototype.intersectsToleranceSquare=function(t,e){var n=!1,r=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),!!this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),!!this._li.isProper()||(this._li.hasIntersection()&&(r=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),!!this._li.isProper()||(!(!n||!r)||(!!t.equals(this._pt)||!!e.equals(this._pt))))))},cf.prototype.addSnappedNode=function(t,e){var n=t.getCoordinate(e),r=t.getCoordinate(e+1);return!!this.intersects(n,r)&&(t.addIntersection(this.getCoordinate(),e),!0)},cf.prototype.interfaces_=function(){return[]},cf.prototype.getClass=function(){return cf},hf.SAFE_ENV_EXPANSION_FACTOR.get=function(){return.75},Object.defineProperties(cf,hf);var pf=function(){this.tempEnv1=new Ll,this.selectedSegment=new vp};pf.prototype.select=function(){if(1===arguments.length);else if(2===arguments.length){var t=arguments[0],e=arguments[1];t.getLineSegment(e,this.selectedSegment),this.select(this.selectedSegment)}},pf.prototype.interfaces_=function(){return[]},pf.prototype.getClass=function(){return pf};var ff=function(){this._index=null;var t=arguments[0];this._index=t},gf={HotPixelSnapAction:{configurable:!0}};ff.prototype.snap=function(){if(1===arguments.length){var t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){var e=arguments[0],n=arguments[1],r=arguments[2],i=e.getSafeEnvelope(),o=new df(e,n,r);return this._index.query(i,{interfaces_:function(){return[Qh]},visitItem:function(t){t.select(i,o)}}),o.isNodeAdded()}},ff.prototype.interfaces_=function(){return[]},ff.prototype.getClass=function(){return ff},gf.HotPixelSnapAction.get=function(){return df},Object.defineProperties(ff,gf);var df=function(t){function e(){t.call(this),this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;var e=arguments[0],n=arguments[1],r=arguments[2];this._hotPixel=e,this._parentEdge=n,this._hotPixelVertexIndex=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.isNodeAdded=function(){return this._isNodeAdded},e.prototype.select=function(){if(2!==arguments.length)return t.prototype.select.apply(this,arguments);var e=arguments[0],n=arguments[1],r=e.getContext();if(null!==this._parentEdge&&r===this._parentEdge&&n===this._hotPixelVertexIndex)return null;this._isNodeAdded=this._hotPixel.addSnappedNode(r,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(pf),yf=function(){this._li=null,this._interiorIntersections=null;var t=arguments[0];this._li=t,this._interiorIntersections=new lc};yf.prototype.processIntersections=function(t,e,n,r){if(t===n&&e===r)return null;var i=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[r],a=n.getCoordinates()[r+1];if(this._li.computeIntersection(i,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var u=0;u=0;e--){try{t.bufferReducedPrecision(e)}catch(e){if(!(e instanceof Oh))throw e;t._saveException=e}if(null!==t._resultGeometry)return null}throw this._saveException}if(1===arguments.length){var n=arguments[0],r=_f.precisionScaleFactor(this._argGeom,this._distance,n),i=new gh(r);this.bufferFixedPrecision(i)}},_f.prototype.computeGeometry=function(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===gh.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()},_f.prototype.setQuadrantSegments=function(t){this._bufParams.setQuadrantSegments(t)},_f.prototype.bufferOriginalPrecision=function(){try{var t=new sf(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof kl))throw t;this._saveException=t}},_f.prototype.getResultGeometry=function(t){return this._distance=t,this.computeGeometry(),this._resultGeometry},_f.prototype.setEndCapStyle=function(t){this._bufParams.setEndCapStyle(t)},_f.prototype.interfaces_=function(){return[]},_f.prototype.getClass=function(){return _f},_f.bufferOp=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new _f(t),r=n.getResultGeometry(e);return r}if(3===arguments.length){if(Number.isInteger(arguments[2])&&arguments[0]instanceof Wl&&"number"==typeof arguments[1]){var i=arguments[0],o=arguments[1],s=arguments[2],a=new _f(i);a.setQuadrantSegments(s);var u=a.getResultGeometry(o);return u}if(arguments[2]instanceof Sp&&arguments[0]instanceof Wl&&"number"==typeof arguments[1]){var l=arguments[0],c=arguments[1],h=arguments[2],p=new _f(l,h),f=p.getResultGeometry(c);return f}}else if(4===arguments.length){var g=arguments[0],d=arguments[1],y=arguments[2],v=arguments[3],_=new _f(g);_.setQuadrantSegments(y),_.setEndCapStyle(v);var m=_.getResultGeometry(d);return m}},_f.precisionScaleFactor=function(t,e,n){var r=t.getEnvelopeInternal(),i=dl.max(Math.abs(r.getMaxX()),Math.abs(r.getMaxY()),Math.abs(r.getMinX()),Math.abs(r.getMinY()))+2*(e>0?e:0),o=n-Math.trunc(Math.log(i)/Math.log(10)+1);return Math.pow(10,o)},mf.CAP_ROUND.get=function(){return Sp.CAP_ROUND},mf.CAP_BUTT.get=function(){return Sp.CAP_FLAT},mf.CAP_FLAT.get=function(){return Sp.CAP_FLAT},mf.CAP_SQUARE.get=function(){return Sp.CAP_SQUARE},mf.MAX_PRECISION_DIGITS.get=function(){return 12},Object.defineProperties(_f,mf);var xf=function(){this._pt=[new ul,new ul],this._distance=nl.NaN,this._isNull=!0};xf.prototype.getCoordinates=function(){return this._pt},xf.prototype.getCoordinate=function(t){return this._pt[t]},xf.prototype.setMinimum=function(){if(1===arguments.length){var t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){var e=arguments[0],n=arguments[1];if(this._isNull)return this.initialize(e,n),null;var r=e.distance(n);rthis._distance&&this.initialize(e,n,r)}},xf.prototype.interfaces_=function(){return[]},xf.prototype.getClass=function(){return xf};var Ef=function(){};Ef.prototype.interfaces_=function(){return[]},Ef.prototype.getClass=function(){return Ef},Ef.computeDistance=function(){if(arguments[2]instanceof xf&&arguments[0]instanceof Zc&&arguments[1]instanceof ul)for(var t=arguments[0],e=arguments[1],n=arguments[2],r=t.getCoordinates(),i=new vp,o=0;o0||this._isIn?pl.INTERIOR:pl.EXTERIOR)},Pf.prototype.interfaces_=function(){return[]},Pf.prototype.getClass=function(){return Pf};var Mf=function t(){if(this._component=null,this._segIndex=null,this._pt=null,2===arguments.length){var e=arguments[0],n=arguments[1];t.call(this,e,t.INSIDE_AREA,n)}else if(3===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2];this._component=r,this._segIndex=i,this._pt=o}},Lf={INSIDE_AREA:{configurable:!0}};Mf.prototype.isInsideArea=function(){return this._segIndex===Mf.INSIDE_AREA},Mf.prototype.getCoordinate=function(){return this._pt},Mf.prototype.getGeometryComponent=function(){return this._component},Mf.prototype.getSegmentIndex=function(){return this._segIndex},Mf.prototype.interfaces_=function(){return[]},Mf.prototype.getClass=function(){return Mf},Lf.INSIDE_AREA.get=function(){return-1},Object.defineProperties(Mf,Lf);var Of=function(t){this._pts=t||null};Of.prototype.filter=function(t){t instanceof Qc&&this._pts.add(t)},Of.prototype.interfaces_=function(){return[Dc]},Of.prototype.getClass=function(){return Of},Of.getPoints=function(){if(1===arguments.length){var t=arguments[0];return t instanceof Qc?np.singletonList(t):Of.getPoints(t,new lc)}if(2===arguments.length){var e=arguments[0],n=arguments[1];return e instanceof Qc?n.add(e):e instanceof kc&&e.apply(new Of(n)),n}};var Rf=function(){this._locations=null;var t=arguments[0];this._locations=t};Rf.prototype.filter=function(t){(t instanceof Qc||t instanceof Zc||t instanceof th)&&this._locations.add(new Mf(t,0,t.getCoordinate()))},Rf.prototype.interfaces_=function(){return[Dc]},Rf.prototype.getClass=function(){return Rf},Rf.getLocations=function(t){var e=new lc;return t.apply(new Rf(e)),e};var Tf=function(){if(this._geom=null,this._terminateDistance=0,this._ptLocator=new Pf,this._minDistanceLocation=null,this._minDistance=nl.MAX_VALUE,2===arguments.length){var t=arguments[0],e=arguments[1];this._geom=[t,e],this._terminateDistance=0}else if(3===arguments.length){var n=arguments[0],r=arguments[1],i=arguments[2];this._geom=new Array(2).fill(null),this._geom[0]=n,this._geom[1]=r,this._terminateDistance=i}};Tf.prototype.computeContainmentDistance=function(){var t=this;if(0===arguments.length){var e=new Array(2).fill(null);if(this.computeContainmentDistance(0,e),this._minDistance<=this._terminateDistance)return null;this.computeContainmentDistance(1,e)}else if(2===arguments.length){var n=arguments[0],r=arguments[1],i=1-n,o=Sf.getPolygons(this._geom[n]);if(o.size()>0){var s=Rf.getLocations(this._geom[i]);if(this.computeContainmentDistance(s,o,r),this._minDistance<=this._terminateDistance)return this._minDistanceLocation[i]=r[0],this._minDistanceLocation[n]=r[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&gl(arguments[0],ac)&&gl(arguments[1],ac)){for(var a=arguments[0],u=arguments[1],l=arguments[2],c=0;cthis._minDistance)return null;for(var i=e.getCoordinates(),o=n.getCoordinate(),s=0;sthis._minDistance)return null;for(var f=c.getCoordinates(),g=h.getCoordinates(),d=0;dthis._distance&&this.initialize(e,n,r)}},Af.prototype.interfaces_=function(){return[]},Af.prototype.getClass=function(){return Af};var Df=function(){};Df.prototype.interfaces_=function(){return[]},Df.prototype.getClass=function(){return Df},Df.computeDistance=function(){if(arguments[2]instanceof Af&&arguments[0]instanceof Zc&&arguments[1]instanceof ul)for(var t=arguments[0],e=arguments[1],n=arguments[2],r=new vp,i=t.getCoordinates(),o=0;o1||t<=0)throw new el("Fraction is not in range (0.0 - 1.0]");this._densifyFrac=t},Ff.prototype.compute=function(t,e){this.computeOrientedDistance(t,e,this._ptDist),this.computeOrientedDistance(e,t,this._ptDist)},Ff.prototype.distance=function(){return this.compute(this._g0,this._g1),this._ptDist.getDistance()},Ff.prototype.computeOrientedDistance=function(t,e,n){var r=new Gf(e);if(t.apply(r),n.setMaximum(r.getMaxPointDistance()),this._densifyFrac>0){var i=new qf(e,this._densifyFrac);t.apply(i),n.setMaximum(i.getMaxPointDistance())}},Ff.prototype.orientedDistance=function(){return this.computeOrientedDistance(this._g0,this._g1,this._ptDist),this._ptDist.getDistance()},Ff.prototype.interfaces_=function(){return[]},Ff.prototype.getClass=function(){return Ff},Ff.distance=function(){if(2===arguments.length){var t=arguments[0],e=arguments[1],n=new Ff(t,e);return n.distance()}if(3===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2],s=new Ff(r,i);return s.setDensifyFraction(o),s.distance()}},kf.MaxPointDistanceFilter.get=function(){return Gf},kf.MaxDensifiedByFractionDistanceFilter.get=function(){return qf},Object.defineProperties(Ff,kf);var Gf=function(){this._maxPtDist=new Af,this._minPtDist=new Af,this._euclideanDist=new Df,this._geom=null;var t=arguments[0];this._geom=t};Gf.prototype.filter=function(t){this._minPtDist.initialize(),Df.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)},Gf.prototype.getMaxPointDistance=function(){return this._maxPtDist},Gf.prototype.interfaces_=function(){return[Kl]},Gf.prototype.getClass=function(){return Gf};var qf=function(){this._maxPtDist=new Af,this._minPtDist=new Af,this._geom=null,this._numSubSegs=0;var t=arguments[0],e=arguments[1];this._geom=t,this._numSubSegs=Math.trunc(Math.round(1/e))};qf.prototype.filter=function(t,e){var n=this;if(0===e)return null;for(var r=t.getCoordinate(e-1),i=t.getCoordinate(e),o=(i.x-r.x)/this._numSubSegs,s=(i.y-r.y)/this._numSubSegs,a=0;an){this._isValid=!1;var i=r.getCoordinates();this._errorLocation=i[1],this._errorIndicator=t.getFactory().createLineString(i),this._errMsg="Distance between buffer curve and input is too large ("+this._maxDistanceFound+" at "+Fl.toLineString(i[0],i[1])+")"}},Bf.prototype.isValid=function(){var t=Math.abs(this._bufDistance),e=Bf.MAX_DISTANCE_DIFF_FRAC*t;return this._minValidDistance=t-e,this._maxValidDistance=t+e,!(!this._input.isEmpty()&&!this._result.isEmpty())||(this._bufDistance>0?this.checkPositiveValid():this.checkNegativeValid(),Bf.VERBOSE&&Pl.out.println("Min Dist= "+this._minDistanceFound+" err= "+(1-this._minDistanceFound/this._bufDistance)+" Max Dist= "+this._maxDistanceFound+" err= "+(this._maxDistanceFound/this._bufDistance-1)),this._isValid)},Bf.prototype.checkNegativeValid=function(){if(!(this._input instanceof th||this._input instanceof rh||this._input instanceof kc))return null;var t=this.getPolygonLines(this._input);if(this.checkMinimumDistance(t,this._result,this._minValidDistance),!this._isValid)return null;this.checkMaximumDistance(t,this._result,this._maxValidDistance)},Bf.prototype.getErrorIndicator=function(){return this._errorIndicator},Bf.prototype.checkMinimumDistance=function(t,e,n){var r=new Tf(t,e,n);if(this._minDistanceFound=r.distance(),this._minDistanceFound0&&t>e&&(this._isValid=!1,this._errorMsg="Area of positive buffer is smaller than input",this._errorIndicator=this._result),this._distance<0&&t=2||this._distance>0?null:(this._result.isEmpty()||(this._isValid=!1,this._errorMsg="Result is non-empty",this._errorIndicator=this._result),void this.report("ExpectedEmpty"))},jf.prototype.report=function(t){if(!jf.VERBOSE)return null;Pl.out.println("Check "+t+": "+(this._isValid?"passed":"FAILED"))},jf.prototype.getErrorMessage=function(){return this._errorMsg},jf.prototype.interfaces_=function(){return[]},jf.prototype.getClass=function(){return jf},jf.isValidMsg=function(t,e,n){var r=new jf(t,e,n);return r.isValid()?null:r.getErrorMessage()},jf.isValid=function(t,e,n){return!!new jf(t,e,n).isValid()},Uf.VERBOSE.get=function(){return!1},Uf.MAX_ENV_DIFF_FRAC.get=function(){return.012},Object.defineProperties(jf,Uf);var Vf=function(){this._pts=null,this._data=null;var t=arguments[0],e=arguments[1];this._pts=t,this._data=e};Vf.prototype.getCoordinates=function(){return this._pts},Vf.prototype.size=function(){return this._pts.length},Vf.prototype.getCoordinate=function(t){return this._pts[t]},Vf.prototype.isClosed=function(){return this._pts[0].equals(this._pts[this._pts.length-1])},Vf.prototype.getSegmentOctant=function(t){return t===this._pts.length-1?-1:fp.octant(this.getCoordinate(t),this.getCoordinate(t+1))},Vf.prototype.setData=function(t){this._data=t},Vf.prototype.getData=function(){return this._data},Vf.prototype.toString=function(){return Fl.toLineString(new lh(this._pts))},Vf.prototype.interfaces_=function(){return[gp]},Vf.prototype.getClass=function(){return Vf};var Xf=function(){this._findAllIntersections=!1,this._isCheckEndSegmentsOnly=!1,this._li=null,this._interiorIntersection=null,this._intSegments=null,this._intersections=new lc,this._intersectionCount=0,this._keepIntersections=!0;var t=arguments[0];this._li=t,this._interiorIntersection=null};Xf.prototype.getInteriorIntersection=function(){return this._interiorIntersection},Xf.prototype.setCheckEndSegmentsOnly=function(t){this._isCheckEndSegmentsOnly=t},Xf.prototype.getIntersectionSegments=function(){return this._intSegments},Xf.prototype.count=function(){return this._intersectionCount},Xf.prototype.getIntersections=function(){return this._intersections},Xf.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},Xf.prototype.setKeepIntersections=function(t){this._keepIntersections=t},Xf.prototype.processIntersections=function(t,e,n,r){if(!this._findAllIntersections&&this.hasIntersection())return null;if(t===n&&e===r)return null;if(this._isCheckEndSegmentsOnly&&!(this.isEndSegment(t,e)||this.isEndSegment(n,r)))return null;var i=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[r],a=n.getCoordinates()[r+1];this._li.computeIntersection(i,o,s,a),this._li.hasIntersection()&&this._li.isInteriorIntersection()&&(this._intSegments=new Array(4).fill(null),this._intSegments[0]=i,this._intSegments[1]=o,this._intSegments[2]=s,this._intSegments[3]=a,this._interiorIntersection=this._li.getIntersection(0),this._keepIntersections&&this._intersections.add(this._interiorIntersection),this._intersectionCount++)},Xf.prototype.isEndSegment=function(t,e){return 0===e||e>=t.size()-2},Xf.prototype.hasIntersection=function(){return null!==this._interiorIntersection},Xf.prototype.isDone=function(){return!this._findAllIntersections&&null!==this._interiorIntersection},Xf.prototype.interfaces_=function(){return[Zp]},Xf.prototype.getClass=function(){return Xf},Xf.createAllIntersectionsFinder=function(t){var e=new Xf(t);return e.setFindAllIntersections(!0),e},Xf.createAnyIntersectionFinder=function(t){return new Xf(t)},Xf.createIntersectionCounter=function(t){var e=new Xf(t);return e.setFindAllIntersections(!0),e.setKeepIntersections(!1),e};var Yf=function(){this._li=new jl,this._segStrings=null,this._findAllIntersections=!1,this._segInt=null,this._isValid=!0;var t=arguments[0];this._segStrings=t};Yf.prototype.execute=function(){if(null!==this._segInt)return null;this.checkInteriorIntersections()},Yf.prototype.getIntersections=function(){return this._segInt.getIntersections()},Yf.prototype.isValid=function(){return this.execute(),this._isValid},Yf.prototype.setFindAllIntersections=function(t){this._findAllIntersections=t},Yf.prototype.checkInteriorIntersections=function(){this._isValid=!0,this._segInt=new Xf(this._li),this._segInt.setFindAllIntersections(this._findAllIntersections);var t=new Ip;if(t.setSegmentIntersector(this._segInt),t.computeNodes(this._segStrings),this._segInt.hasIntersection())return this._isValid=!1,null},Yf.prototype.checkValid=function(){if(this.execute(),!this._isValid)throw new Oh(this.getErrorMessage(),this._segInt.getInteriorIntersection())},Yf.prototype.getErrorMessage=function(){if(this._isValid)return"no intersections found";var t=this._segInt.getIntersectionSegments();return"found non-noded intersection between "+Fl.toLineString(t[0],t[1])+" and "+Fl.toLineString(t[2],t[3])},Yf.prototype.interfaces_=function(){return[]},Yf.prototype.getClass=function(){return Yf},Yf.computeIntersections=function(t){var e=new Yf(t);return e.setFindAllIntersections(!0),e.isValid(),e.getIntersections()};var Hf=function t(){this._nv=null;var e=arguments[0];this._nv=new Yf(t.toSegmentStrings(e))};Hf.prototype.checkValid=function(){this._nv.checkValid()},Hf.prototype.interfaces_=function(){return[]},Hf.prototype.getClass=function(){return Hf},Hf.toSegmentStrings=function(t){for(var e=new lc,n=t.iterator();n.hasNext();){var r=n.next();e.add(new Vf(r.getCoordinates(),r))}return e},Hf.checkValid=function(t){new Hf(t).checkValid()};var Wf=function(t){this._mapOp=t};Wf.prototype.map=function(t){for(var e=new lc,n=0;n0&&r<4&&!this._preserveType?this._factory.createLineString(n):this._factory.createLinearRing(n)},Kf.prototype.interfaces_=function(){return[]},Kf.prototype.getClass=function(){return Kf};var Qf=function t(){if(this._snapTolerance=0,this._srcPts=null,this._seg=new vp,this._allowSnappingToSourceVertices=!1,this._isClosed=!1,arguments[0]instanceof Zc&&"number"==typeof arguments[1]){var e=arguments[0],n=arguments[1];t.call(this,e.getCoordinates(),n)}else if(arguments[0]instanceof Array&&"number"==typeof arguments[1]){var r=arguments[0],i=arguments[1];this._srcPts=r,this._isClosed=t.isClosed(r),this._snapTolerance=i}};Qf.prototype.snapVertices=function(t,e){for(var n=this._isClosed?t.size()-1:t.size(),r=0;r=0&&t.add(o+1,new ul(i),!1)}},Qf.prototype.findSegmentIndexToSnap=function(t,e){for(var n=this,r=nl.MAX_VALUE,i=-1,o=0;oe&&(e=r)}return e}if(2===arguments.length){var i=arguments[0],o=arguments[1];return Math.min($f.computeOverlaySnapTolerance(i),$f.computeOverlaySnapTolerance(o))}},$f.computeSizeBasedSnapTolerance=function(t){var e=t.getEnvelopeInternal();return Math.min(e.getHeight(),e.getWidth())*$f.SNAP_PRECISION_FACTOR},$f.snapToSelf=function(t,e,n){return new $f(t).snapToSelf(e,n)},tg.SNAP_PRECISION_FACTOR.get=function(){return 1e-9},Object.defineProperties($f,tg);var eg=function(t){function e(e,n,r){t.call(this),this._snapTolerance=e||null,this._snapPts=n||null,this._isSelfSnap=void 0!==r&&r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.snapLine=function(t,e){var n=new Qf(t,this._snapTolerance);return n.setAllowSnappingToSourceVertices(this._isSelfSnap),n.snapTo(e)},e.prototype.transformCoordinates=function(t,e){var n=t.toCoordinateArray(),r=this.snapLine(n,this._snapPts);return this._factory.getCoordinateSequenceFactory().create(r)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(Kf),ng=function(){this._isFirst=!0,this._commonMantissaBitsCount=53,this._commonBits=0,this._commonSignExp=null};ng.prototype.getCommon=function(){return nl.longBitsToDouble(this._commonBits)},ng.prototype.add=function(t){var e=nl.doubleToLongBits(t);return this._isFirst?(this._commonBits=e,this._commonSignExp=ng.signExpBits(this._commonBits),this._isFirst=!1,null):ng.signExpBits(e)!==this._commonSignExp?(this._commonBits=0,null):(this._commonMantissaBitsCount=ng.numCommonMostSigMantissaBits(this._commonBits,e),void(this._commonBits=ng.zeroLowerBits(this._commonBits,64-(12+this._commonMantissaBitsCount))))},ng.prototype.toString=function(){if(1===arguments.length){var t=arguments[0],e=nl.longBitsToDouble(t),n=nl.toBinaryString(t),r="0000000000000000000000000000000000000000000000000000000000000000"+n,i=r.substring(r.length-64),o=i.substring(0,1)+" "+i.substring(1,12)+"(exp) "+i.substring(12)+" [ "+e+" ]";return o}},ng.prototype.interfaces_=function(){return[]},ng.prototype.getClass=function(){return ng},ng.getBit=function(t,e){return 0!=(t&1<>52},ng.zeroLowerBits=function(t,e){return t&~((1<=0;r--){if(ng.getBit(t,r)!==ng.getBit(e,r))return n;n++}return 52};var rg=function(){this._commonCoord=null,this._ccFilter=new og},ig={CommonCoordinateFilter:{configurable:!0},Translater:{configurable:!0}};rg.prototype.addCommonBits=function(t){var e=new sg(this._commonCoord);t.apply(e),t.geometryChanged()},rg.prototype.removeCommonBits=function(t){if(0===this._commonCoord.x&&0===this._commonCoord.y)return t;var e=new ul(this._commonCoord);e.x=-e.x,e.y=-e.y;var n=new sg(e);return t.apply(n),t.geometryChanged(),t},rg.prototype.getCommonCoordinate=function(){return this._commonCoord},rg.prototype.add=function(t){t.apply(this._ccFilter),this._commonCoord=this._ccFilter.getCommonCoordinate()},rg.prototype.interfaces_=function(){return[]},rg.prototype.getClass=function(){return rg},ig.CommonCoordinateFilter.get=function(){return og},ig.Translater.get=function(){return sg},Object.defineProperties(rg,ig);var og=function(){this._commonBitsX=new ng,this._commonBitsY=new ng};og.prototype.filter=function(t){this._commonBitsX.add(t.x),this._commonBitsY.add(t.y)},og.prototype.getCommonCoordinate=function(){return new ul(this._commonBitsX.getCommon(),this._commonBitsY.getCommon())},og.prototype.interfaces_=function(){return[Kl]},og.prototype.getClass=function(){return og};var sg=function(){this.trans=null;var t=arguments[0];this.trans=t};sg.prototype.filter=function(t,e){var n=t.getOrdinate(e,0)+this.trans.x,r=t.getOrdinate(e,1)+this.trans.y;t.setOrdinate(e,0,n),t.setOrdinate(e,1,r)},sg.prototype.isDone=function(){return!1},sg.prototype.isGeometryChanged=function(){return!0},sg.prototype.interfaces_=function(){return[Fc]},sg.prototype.getClass=function(){return sg};var ag=function(t,e){this._geom=new Array(2).fill(null),this._snapTolerance=null,this._cbr=null,this._geom[0]=t,this._geom[1]=e,this.computeSnapTolerance()};ag.prototype.selfSnap=function(t){return new $f(t).snapTo(t,this._snapTolerance)},ag.prototype.removeCommonBits=function(t){this._cbr=new rg,this._cbr.add(t[0]),this._cbr.add(t[1]);var e=new Array(2).fill(null);return e[0]=this._cbr.removeCommonBits(t[0].copy()),e[1]=this._cbr.removeCommonBits(t[1].copy()),e},ag.prototype.prepareResult=function(t){return this._cbr.addCommonBits(t),t},ag.prototype.getResultGeometry=function(t){var e=this.snap(this._geom),n=Mg.overlayOp(e[0],e[1],t);return this.prepareResult(n)},ag.prototype.checkValid=function(t){t.isValid()||Pl.out.println("Snapped geometry is invalid")},ag.prototype.computeSnapTolerance=function(){this._snapTolerance=$f.computeOverlaySnapTolerance(this._geom[0],this._geom[1])},ag.prototype.snap=function(t){var e=this.removeCommonBits(t);return $f.snap(e[0],e[1],this._snapTolerance)},ag.prototype.interfaces_=function(){return[]},ag.prototype.getClass=function(){return ag},ag.overlayOp=function(t,e,n){return new ag(t,e).getResultGeometry(n)},ag.union=function(t,e){return ag.overlayOp(t,e,Mg.UNION)},ag.intersection=function(t,e){return ag.overlayOp(t,e,Mg.INTERSECTION)},ag.symDifference=function(t,e){return ag.overlayOp(t,e,Mg.SYMDIFFERENCE)},ag.difference=function(t,e){return ag.overlayOp(t,e,Mg.DIFFERENCE)};var ug=function(t,e){this._geom=new Array(2).fill(null),this._geom[0]=t,this._geom[1]=e};ug.prototype.getResultGeometry=function(t){var e=null,n=!1,r=null;try{e=Mg.overlayOp(this._geom[0],this._geom[1],t);n=!0}catch(t){if(!(t instanceof kl))throw t;r=t}if(!n)try{e=ag.overlayOp(this._geom[0],this._geom[1],t)}catch(t){throw t instanceof kl?r:t}return e},ug.prototype.interfaces_=function(){return[]},ug.prototype.getClass=function(){return ug},ug.overlayOp=function(t,e,n){return new ug(t,e).getResultGeometry(n)},ug.union=function(t,e){return ug.overlayOp(t,e,Mg.UNION)},ug.intersection=function(t,e){return ug.overlayOp(t,e,Mg.INTERSECTION)},ug.symDifference=function(t,e){return ug.overlayOp(t,e,Mg.SYMDIFFERENCE)},ug.difference=function(t,e){return ug.overlayOp(t,e,Mg.DIFFERENCE)};var lg=function(){this.mce=null,this.chainIndex=null;var t=arguments[0],e=arguments[1];this.mce=t,this.chainIndex=e};lg.prototype.computeIntersections=function(t,e){this.mce.computeIntersectsForChain(this.chainIndex,t.mce,t.chainIndex,e)},lg.prototype.interfaces_=function(){return[]},lg.prototype.getClass=function(){return lg};var cg=function t(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){var e=arguments[0],n=arguments[1];this._eventType=t.DELETE,this._xValue=e,this._insertEvent=n}else if(3===arguments.length){var r=arguments[0],i=arguments[1],o=arguments[2];this._eventType=t.INSERT,this._label=r,this._xValue=i,this._obj=o}},hg={INSERT:{configurable:!0},DELETE:{configurable:!0}};cg.prototype.isDelete=function(){return this._eventType===cg.DELETE},cg.prototype.setDeleteEventIndex=function(t){this._deleteEventIndex=t},cg.prototype.getObject=function(){return this._obj},cg.prototype.compareTo=function(t){var e=t;return this._xValuee._xValue?1:this._eventTypee._eventType?1:0},cg.prototype.getInsertEvent=function(){return this._insertEvent},cg.prototype.isInsert=function(){return this._eventType===cg.INSERT},cg.prototype.isSameLabel=function(t){return null!==this._label&&this._label===t._label},cg.prototype.getDeleteEventIndex=function(){return this._deleteEventIndex},cg.prototype.interfaces_=function(){return[il]},cg.prototype.getClass=function(){return cg},hg.INSERT.get=function(){return 1},hg.DELETE.get=function(){return 2},Object.defineProperties(cg,hg);var pg=function(){};pg.prototype.interfaces_=function(){return[]},pg.prototype.getClass=function(){return pg};var fg=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._properIntersectionPoint=null,this._li=null,this._includeProper=null,this._recordIsolated=null,this._isSelfIntersection=null,this._numIntersections=0,this.numTests=0,this._bdyNodes=null,this._isDone=!1,this._isDoneWhenProperInt=!1;var t=arguments[0],e=arguments[1],n=arguments[2];this._li=t,this._includeProper=e,this._recordIsolated=n};fg.prototype.isTrivialIntersection=function(t,e,n,r){if(t===n&&1===this._li.getIntersectionNum()){if(fg.isAdjacentSegments(e,r))return!0;if(t.isClosed()){var i=t.getNumPoints()-1;if(0===e&&r===i||0===r&&e===i)return!0}}return!1},fg.prototype.getProperIntersectionPoint=function(){return this._properIntersectionPoint},fg.prototype.setIsDoneIfProperInt=function(t){this._isDoneWhenProperInt=t},fg.prototype.hasProperInteriorIntersection=function(){return this._hasProperInterior},fg.prototype.isBoundaryPointInternal=function(t,e){for(var n=e.iterator();n.hasNext();){var r=n.next().getCoordinate();if(t.isIntersection(r))return!0}return!1},fg.prototype.hasProperIntersection=function(){return this._hasProper},fg.prototype.hasIntersection=function(){return this._hasIntersection},fg.prototype.isDone=function(){return this._isDone},fg.prototype.isBoundaryPoint=function(t,e){return null!==e&&(!!this.isBoundaryPointInternal(t,e[0])||!!this.isBoundaryPointInternal(t,e[1]))},fg.prototype.setBoundaryNodes=function(t,e){this._bdyNodes=new Array(2).fill(null),this._bdyNodes[0]=t,this._bdyNodes[1]=e},fg.prototype.addIntersections=function(t,e,n,r){if(t===n&&e===r)return null;this.numTests++;var i=t.getCoordinates()[e],o=t.getCoordinates()[e+1],s=n.getCoordinates()[r],a=n.getCoordinates()[r+1];this._li.computeIntersection(i,o,s,a),this._li.hasIntersection()&&(this._recordIsolated&&(t.setIsolated(!1),n.setIsolated(!1)),this._numIntersections++,this.isTrivialIntersection(t,e,n,r)||(this._hasIntersection=!0,!this._includeProper&&this._li.isProper()||(t.addIntersections(this._li,e,0),n.addIntersections(this._li,r,1)),this._li.isProper()&&(this._properIntersectionPoint=this._li.getIntersection(0).copy(),this._hasProper=!0,this._isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this._li,this._bdyNodes)||(this._hasProperInterior=!0))))},fg.prototype.interfaces_=function(){return[]},fg.prototype.getClass=function(){return fg},fg.isAdjacentSegments=function(t,e){return 1===Math.abs(t-e)};var gg=function(t){function e(){t.call(this),this.events=new lc,this.nOverlaps=null}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.prepareEvents=function(){np.sort(this.events);for(var t=0;te||this._maxo?1:0},vg.prototype.interfaces_=function(){return[sl]},vg.prototype.getClass=function(){return vg};var _g=function(t){function e(){t.call(this),this._item=null;var e=arguments[0],n=arguments[1],r=arguments[2];this._min=e,this._max=n,this._item=r}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;n.visitItem(this._item)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(dg),mg=function(t){function e(){t.call(this),this._node1=null,this._node2=null;var e=arguments[0],n=arguments[1];this._node1=e,this._node2=n,this.buildExtent(this._node1,this._node2)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.buildExtent=function(t,e){this._min=Math.min(t._min,e._min),this._max=Math.max(t._max,e._max)},e.prototype.query=function(t,e,n){if(!this.intersects(t,e))return null;null!==this._node1&&this._node1.query(t,e,n),null!==this._node2&&this._node2.query(t,e,n)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e}(dg),xg=function(){this._leaves=new lc,this._root=null,this._level=0};xg.prototype.buildTree=function(){np.sort(this._leaves,new dg.NodeComparator);for(var t=this._leaves,e=null,n=new lc;;){if(this.buildLevel(t,n),1===n.size())return n.get(0);e=t,t=n,n=e}},xg.prototype.insert=function(t,e,n){if(null!==this._root)throw new Error("Index cannot be added to once it has been queried");this._leaves.add(new _g(t,e,n))},xg.prototype.query=function(t,e,n){this.init(),this._root.query(t,e,n)},xg.prototype.buildRoot=function(){if(null!==this._root)return null;this._root=this.buildTree()},xg.prototype.printNode=function(t){Pl.out.println(Fl.toLineString(new ul(t._min,this._level),new ul(t._max,this._level)))},xg.prototype.init=function(){if(null!==this._root)return null;this.buildRoot()},xg.prototype.buildLevel=function(t,e){this._level++,e.clear();for(var n=0;n=2,"found LineString with single point"),this.insertBoundaryPoint(this._argIndex,e[0]),this.insertBoundaryPoint(this._argIndex,e[e.length-1])},e.prototype.getInvalidPoint=function(){return this._invalidPoint},e.prototype.getBoundaryPoints=function(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),n=0,r=t.iterator();r.hasNext();){var i=r.next();e[n++]=i.getCoordinate().copy()}return e},e.prototype.getBoundaryNodes=function(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes},e.prototype.addSelfIntersectionNode=function(t,e,n){if(this.isBoundaryNode(t,e))return null;n===pl.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,n)},e.prototype.addPolygonRing=function(t,e,n){if(t.isEmpty())return null;var r=pc.removeRepeatedPoints(t.getCoordinates());if(r.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=r[0],null;var i=e,o=n;Xl.isCCW(r)&&(i=n,o=e);var s=new of(r,new Dh(this._argIndex,pl.BOUNDARY,i,o));this._lineEdgeMap.put(t,s),this.insertEdge(s),this.insertPoint(this._argIndex,r[0],pl.BOUNDARY)},e.prototype.insertPoint=function(t,e,n){var r=this._nodes.addNode(e),i=r.getLabel();null===i?r._label=new Dh(t,n):i.setLocation(t,n)},e.prototype.createEdgeSetIntersector=function(){return new gg},e.prototype.addSelfIntersectionNodes=function(t){for(var e=this._edges.iterator();e.hasNext();)for(var n=e.next(),r=n.getLabel().getLocation(t),i=n.eiList.iterator();i.hasNext();){var o=i.next();this.addSelfIntersectionNode(t,o.coord,r)}},e.prototype.add=function(){if(1!==arguments.length)return t.prototype.add.apply(this,arguments);var e=arguments[0];if(e.isEmpty())return null;if(e instanceof rh&&(this._useBoundaryDeterminationRule=!1),e instanceof th)this.addPolygon(e);else if(e instanceof Zc)this.addLineString(e);else if(e instanceof Qc)this.addPoint(e);else if(e instanceof eh)this.addCollection(e);else if(e instanceof Gc)this.addCollection(e);else if(e instanceof rh)this.addCollection(e);else{if(!(e instanceof kc))throw new Error(e.getClass().getName());this.addCollection(e)}},e.prototype.addCollection=function(t){for(var e=0;e50?(null===this._areaPtLocator&&(this._areaPtLocator=new bg(this._parentGeom)),this._areaPtLocator.locate(t)):this._ptLocator.locate(t,this._parentGeom)},e.prototype.findEdge=function(){if(1===arguments.length){var e=arguments[0];return this._lineEdgeMap.get(e)}return t.prototype.findEdge.apply(this,arguments)},e.prototype.interfaces_=function(){return[]},e.prototype.getClass=function(){return e},e.determineBoundary=function(t,e){return t.isInBoundary(e)?pl.BOUNDARY:pl.INTERIOR},e}(Hh),Cg=function(){if(this._li=new jl,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){var t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new Sg(0,t)}else if(2===arguments.length){var e=arguments[0],n=arguments[1],r=Ql.OGC_SFS_BOUNDARY_RULE;e.getPrecisionModel().compareTo(n.getPrecisionModel())>=0?this.setComputationPrecision(e.getPrecisionModel()):this.setComputationPrecision(n.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Sg(0,e,r),this._arg[1]=new Sg(1,n,r)}else if(3===arguments.length){var i=arguments[0],o=arguments[1],s=arguments[2];i.getPrecisionModel().compareTo(o.getPrecisionModel())>=0?this.setComputationPrecision(i.getPrecisionModel()):this.setComputationPrecision(o.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Sg(0,i,s),this._arg[1]=new Sg(1,o,s)}};Cg.prototype.getArgGeometry=function(t){return this._arg[t].getGeometry()},Cg.prototype.setComputationPrecision=function(t){this._resultPrecisionModel=t,this._li.setPrecisionModel(this._resultPrecisionModel)},Cg.prototype.interfaces_=function(){return[]},Cg.prototype.getClass=function(){return Cg};var Pg=function(){};Pg.prototype.interfaces_=function(){return[]},Pg.prototype.getClass=function(){return Pg},Pg.map=function(){if(arguments[0]instanceof Wl&&gl(arguments[1],Pg.MapOp)){for(var t=arguments[0],e=arguments[1],n=new lc,r=0;r=t.size()?null:t.get(e)},Fg.union=function(t){return new Fg(t).union()},kg.STRTREE_NODE_CAPACITY.get=function(){return 4},Object.defineProperties(Fg,kg);var Gg=function(){};function qg(){return new Bg}function Bg(){this.reset()}Gg.prototype.interfaces_=function(){return[]},Gg.prototype.getClass=function(){return Gg},Gg.union=function(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return Mg.createEmptyResult(Mg.UNION,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),ug.overlayOp(t,e,Mg.UNION)},Bg.prototype={constructor:Bg,reset:function(){this.s=this.t=0},add:function(t){jg(zg,t,this.t),jg(this,zg.s,this.s),this.s?this.t+=zg.t:this.s=zg.t},valueOf:function(){return this.s}};var zg=new Bg;function jg(t,e,n){var r=t.s=e+n,i=r-e,o=r-i;t.t=e-o+(n-i)}var Ug=1e-6,Vg=Math.PI,Xg=Vg/2,Yg=Vg/4,Hg=2*Vg,Wg=180/Vg,Jg=Vg/180,Zg=Math.abs,Kg=Math.atan,Qg=Math.atan2,$g=Math.cos,td=Math.sin,ed=Math.sqrt;function nd(t){return t>1?0:t<-1?Vg:Math.acos(t)}function rd(t){return t>1?Xg:t<-1?-Xg:Math.asin(t)}function id(){}function od(t,e){t&&ad.hasOwnProperty(t.type)&&ad[t.type](t,e)}var sd={Feature:function(t,e){od(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++rVg?t-Hg:t<-Vg?t+Hg:t,e]}function md(t){return function(e,n){return[(e+=t)>Vg?e-Hg:e<-Vg?e+Hg:e,n]}}function xd(t){var e=md(t);return e.invert=md(-t),e}function Ed(t,e){var n=$g(t),r=td(t),i=$g(e),o=td(e);function s(t,e){var s=$g(e),a=$g(t)*s,u=td(t)*s,l=td(e),c=l*n+a*r;return[Qg(u*i-c*o,a*n-l*r),rd(c*i+u*o)]}return s.invert=function(t,e){var s=$g(e),a=$g(t)*s,u=td(t)*s,l=td(e),c=l*i-u*o;return[Qg(u*i+l*o,a*n+c*r),rd(c*n-a*r)]},s}function bd(t,e){(e=hd(e))[0]-=t,yd(e);var n=nd(-e[1]);return((-e[2]<0?-n:n)+Hg-Ug)%Hg}function wd(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:id,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}}function Id(t,e){return Zg(t[0]-e[0])=0;--o)i.point((c=l[o])[0],c[1]);else r(p.x,p.p.x,-1,i);p=p.p}l=(p=p.o).z,f=!f}while(!p.v);i.lineEnd()}}}function Cd(t){if(e=t.length){for(var e,n,r=0,i=t[0];++re?1:t>=e?0:NaN}_d.invert=_d;var Md,Ld;1===(Md=Pd).length&&(Ld=Md,Md=function(t,e){return Pd(Ld(t),e)});function Od(t){for(var e,n,r,i=t.length,o=-1,s=0;++o=0;)for(e=(r=t[i]).length;--e>=0;)n[--s]=r[e];return n}var Rd=1e9,Td=-Rd;function Ad(t,e,n,r){function i(i,o){return t<=i&&i<=n&&e<=o&&o<=r}function o(i,o,a,l){var c=0,h=0;if(null==i||(c=s(i,a))!==(h=s(o,a))||u(i,o)<0^a>0)do{l.point(0===c||3===c?t:n,c>1?r:e)}while((c=(c+a+4)%4)!==h);else l.point(o[0],o[1])}function s(r,i){return Zg(r[0]-t)0?0:3:Zg(r[0]-n)0?2:1:Zg(r[1]-e)0?1:0:i>0?3:2}function a(t,e){return u(t.x,e.x)}function u(t,e){var n=s(t,1),r=s(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(s){var u,l,c,h,p,f,g,d,y,v,_,m=s,x=wd(),E={point:b,lineStart:function(){E.point=w,l&&l.push(c=[]);v=!0,y=!1,g=d=NaN},lineEnd:function(){u&&(w(h,p),f&&y&&x.rejoin(),u.push(x.result()));E.point=b,y&&m.lineEnd()},polygonStart:function(){m=x,u=[],l=[],_=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=l.length;nr&&(p-o)*(r-s)>(f-s)*(t-o)&&++e:f<=r&&(p-o)*(r-s)<(f-s)*(t-o)&&--e;return e}(),n=_&&e,i=(u=Od(u)).length;(n||i)&&(s.polygonStart(),n&&(s.lineStart(),o(null,null,1,s),s.lineEnd()),i&&Sd(u,a,e,o,s),s.polygonEnd());m=s,u=l=c=null}};function b(t,e){i(t,e)&&m.point(t,e)}function w(o,s){var a=i(o,s);if(l&&c.push([o,s]),v)h=o,p=s,f=a,v=!1,a&&(m.lineStart(),m.point(o,s));else if(a&&y)m.point(o,s);else{var u=[g=Math.max(Td,Math.min(Rd,g)),d=Math.max(Td,Math.min(Rd,d))],x=[o=Math.max(Td,Math.min(Rd,o)),s=Math.max(Td,Math.min(Rd,s))];!function(t,e,n,r,i,o){var s,a=t[0],u=t[1],l=0,c=1,h=e[0]-a,p=e[1]-u;if(s=n-a,h||!(s>0)){if(s/=h,h<0){if(s0){if(s>c)return;s>l&&(l=s)}if(s=i-a,h||!(s<0)){if(s/=h,h<0){if(s>c)return;s>l&&(l=s)}else if(h>0){if(s0)){if(s/=p,p<0){if(s0){if(s>c)return;s>l&&(l=s)}if(s=o-u,p||!(s<0)){if(s/=p,p<0){if(s>c)return;s>l&&(l=s)}else if(p>0){if(s0&&(t[0]=a+l*h,t[1]=u+l*p),c<1&&(e[0]=a+c*h,e[1]=u+c*p),!0}}}}}(u,x,t,e,n,r)?a&&(m.lineStart(),m.point(o,s),_=!1):(y||(m.lineStart(),m.point(u[0],u[1])),m.point(x[0],x[1]),a||m.lineEnd(),_=!1)}g=o,d=s,y=a}return E}}var Dd=qg();qg();function Fd(t){return t}qg(),qg();var kd=1/0,Gd=kd,qd=-kd,Bd=qd,zd={point:function(t,e){tqd&&(qd=t);eBd&&(Bd=e)},lineStart:id,lineEnd:id,polygonStart:id,polygonEnd:id,result:function(){var t=[[kd,Gd],[qd,Bd]];return qd=Bd=-(Gd=kd=1/0),t}};qg();function jd(t,e,n,r){return function(i,o){var s,a,u,l=e(o),c=i.invert(r[0],r[1]),h=wd(),p=e(h),f=!1,g={point:d,lineStart:v,lineEnd:_,polygonStart:function(){g.point=m,g.lineStart=x,g.lineEnd=E,a=[],s=[]},polygonEnd:function(){g.point=d,g.lineStart=v,g.lineEnd=_,a=Od(a);var t=function(t,e){var n=e[0],r=e[1],i=[td(n),-$g(n),0],o=0,s=0;Dd.reset();for(var a=0,u=t.length;a=0?1:-1,I=w*b,N=I>Vg,S=g*x;if(Dd.add(Qg(S*w*td(I),d*E+S*$g(I))),o+=N?b+w*Hg:b,N^p>=n^_>=n){var C=fd(hd(h),hd(v));yd(C);var P=fd(i,C);yd(P);var M=(N^b>=0?-1:1)*rd(P[2]);(r>M||r===M&&(C[0]||C[1]))&&(s+=N^b>=0?1:-1)}}return(o<-1e-6||o0){for(f||(o.polygonStart(),f=!0),o.lineStart(),t=0;t1&&2&i&&l.push(l.pop().concat(l.shift())),a.push(l.filter(Ud))}return g}}function Ud(t){return t.length>1}function Vd(t,e){return((t=t.x)[0]<0?t[1]-Xg-Ug:Xg-t[1])-((e=e.x)[0]<0?e[1]-Xg-Ug:Xg-e[1])}var Xd=jd((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(o,s){var a=o>0?Vg:-Vg,u=Zg(o-n);Zg(u-Vg)0?Xg:-Xg),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),t.point(o,r),e=0):i!==a&&u>=Vg&&(Zg(n-i)Ug?Kg((td(e)*(o=$g(r))*td(n)-td(r)*(i=$g(e))*td(t))/(i*o*s)):(e+r)/2}(n,r,o,s),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),e=0),t.point(n=o,r=s),i=a},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*Xg,r.point(-Vg,i),r.point(0,i),r.point(Vg,i),r.point(Vg,0),r.point(Vg,-i),r.point(0,-i),r.point(-Vg,-i),r.point(-Vg,0),r.point(-Vg,i);else if(Zg(t[0]-e[0])>Ug){var o=t[0]0,i=Zg(n)>Ug;function o(t,e){return $g(t)*$g(e)>n}function s(t,e,r){var i=[1,0,0],o=fd(hd(t),hd(e)),s=pd(o,o),a=o[0],u=s-a*a;if(!u)return!r&&t;var l=n*s/u,c=-n*a/u,h=fd(i,o),p=dd(i,l);gd(p,dd(o,c));var f=h,g=pd(p,f),d=pd(f,f),y=g*g-d*(pd(p,p)-1);if(!(y<0)){var v=ed(y),_=dd(f,(-g-v)/d);if(gd(_,p),_=cd(_),!r)return _;var m,x=t[0],E=e[0],b=t[1],w=e[1];E0^_[1]<(Zg(_[0]-x)Vg^(x<=_[0]&&_[0]<=E)){var S=dd(f,(-g+v)/d);return gd(S,p),[_,cd(S)]}}}function a(e,n){var i=r?t:Vg-t,o=0;return e<-i?o|=1:e>i&&(o|=2),n<-i?o|=4:n>i&&(o|=8),o}return jd(o,(function(t){var e,n,u,l,c;return{lineStart:function(){l=u=!1,c=1},point:function(h,p){var f,g=[h,p],d=o(h,p),y=r?d?0:a(h,p):d?a(h+(h<0?Vg:-Vg),p):0;if(!e&&(l=u=d)&&t.lineStart(),d!==u&&(!(f=s(e,g))||Id(e,f)||Id(g,f))&&(g[0]+=Ug,g[1]+=Ug,d=o(g[0],g[1])),d!==u)c=0,d?(t.lineStart(),f=s(g,e),t.point(f[0],f[1])):(f=s(e,g),t.point(f[0],f[1]),t.lineEnd()),e=f;else if(i&&e&&r^d){var v;y&n||!(v=s(g,e,!0))||(c=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!d||e&&Id(e,g)||t.point(g[0],g[1]),e=g,u=d,n=y},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return c|(l&&u)<<1}}}),(function(n,r,i,o){!function(t,e,n,r,i,o){if(n){var s=$g(e),a=td(e),u=r*n;null==i?(i=e+r*Hg,o=e-u/2):(i=bd(s,i),o=bd(s,o),(r>0?io)&&(i+=r*Hg));for(var l,c=i;r>0?c>o:c4*e&&d--){var x=s+p,E=a+f,b=u+g,w=ed(x*x+E*E+b*b),I=rd(b/=w),N=Zg(Zg(b)-1)e||Zg((v*M+_*L)/m-.5)>.3||s*p+a*f+u*g2?t[2]%360*Jg:0,P()):[y*Wg,v*Wg,_*Wg]},N.precision=function(t){return arguments.length?(I=Kd(C,w=t*t),M()):ed(w)},N.fitExtent=function(t,e){return Jd(N,t,e)},N.fitSize=function(t,e){return function(t,e,n){return Jd(t,[[0,0],e],n)}(N,t,e)},function(){return e=t.apply(this,arguments),N.invert=e.invert&&S,P()}}((function(){return t}))()}var ty=function(t){return function(e,n){var r=$g(e),i=$g(n),o=t(r*i);return[o*i*td(e),o*td(n)]}}((function(t){return(t=nd(t))&&t/td(t)}));function ey(){return $d(ty).scale(79.4188).clipAngle(179.999)}function ny(t,n,r,i){var s=t.properties||{},a="Feature"===t.type?t.geometry:t;if("GeometryCollection"===a.type){var u=[];return q(t,(function(t){var e=ny(t,n,r,i);e&&u.push(e)})),f(u)}var l=function(t){var n=xn(t).geometry.coordinates,r=[-n[0],-n[1]];return ey().rotate(r).scale(e)}(a),c={type:a.type,coordinates:iy(a.coordinates,l)},h=(new Ih).read(c),p=m(x(n,r),"meters"),g=_f.bufferOp(h,p,i);if(!ry((g=(new Nh).write(g)).coordinates))return o({type:g.type,coordinates:oy(g.coordinates,l)},s)}function ry(t){return Array.isArray(t[0])?ry(t[0]):isNaN(t[0])}function iy(t,e){return"object"!=typeof t[0]?e(t):t.map((function(t){return iy(t,e)}))}function oy(t,e){return"object"!=typeof t[0]?e.invert(t):t.map((function(t){return oy(t,e)}))}function sy(t,e,n){void 0===n&&(n={});var r=rt(t),i=rt(e),o=$u.intersection(r.coordinates,i.coordinates);return 0===o.length?null:1===o.length?l(o[0],n.properties):y(o,n.properties)}function ay(t,e,n){void 0===n&&(n={});var r=JSON.stringify(n.properties||{}),i=t[0],o=t[1],s=t[2],a=t[3],u=(o+a)/2,l=(i+s)/2,c=2*e/me([i,u],[s,u],n)*(s-i),h=2*e/me([l,o],[l,a],n)*(a-o),p=c/2,g=2*p,d=Math.sqrt(3)/2*h,y=s-i,v=a-o,_=3/4*g,m=d,x=(y-g)/(g-p/2),E=Math.floor(x),b=(E*_-p/2-y)/2-p/2+_/2,w=Math.floor((v-d)/d),I=(v-w*d)/2,N=w*d-v>d/2;N&&(I-=d/4);for(var S=[],C=[],P=0;P<6;P++){var M=2*Math.PI/6*P;S.push(Math.cos(M)),C.push(Math.sin(M))}for(var L=[],O=0;O<=E;O++)for(var R=0;R<=w;R++){var T=O%2==1;if((0!==R||!T)&&(0!==R||!N)){var A=O*_+i-b,D=R*m+o+I;if(T&&(D-=d/2),!0===n.triangles)ly([A,D],c/2,h/2,JSON.parse(r),S,C).forEach((function(t){n.mask?sy(n.mask,t)&&L.push(t):L.push(t)}));else{var F=uy([A,D],c/2,h/2,JSON.parse(r),S,C);n.mask?sy(n.mask,F)&&L.push(F):L.push(F)}}}return f(L)}function uy(t,e,n,r,i,o){for(var s=[],a=0;a<6;a++){var u=t[0]+e*i[a],c=t[1]+n*o[a];s.push([u,c])}return s.push(s[0].slice()),l([s],r)}function ly(t,e,n,r,i,o){for(var s=[],a=0;a<6;a++){var u=[];u.push(t),u.push([t[0]+e*i[a],t[1]+n*o[a]]),u.push([t[0]+e*i[(a+1)%6],t[1]+n*o[(a+1)%6]]),u.push(t),s.push(l([u],r))}return s}function cy(t){return y(t)}function hy(t){return l(t&&t.geometry.coordinates||[[[180,90],[-180,90],[-180,-90],[180,-90],[180,90]]])}function py(t,e,n){return void 0===n&&(n={}),function(t,e,n,r){void 0===r&&(r={});for(var i=[],o=t[0],s=t[1],a=t[2],u=t[3],c=e/me([o,s],[a,s],r)*(a-o),h=n/me([o,s],[o,u],r)*(u-s),p=a-o,g=u-s,d=Math.floor(p/c),y=Math.floor(g/h),v=(g-y*h)/2,_=o+(p-d*c)/2,m=0;m=i&&o===r.length-1);o++){if(i>=e){var s=e-i;if(s){var u=mn(r[o],r[o-1])-180;return vn(r[o],s,u,n)}return a(r[o])}i+=me(r[o],r[o+1],n)}return a(r[r.length-1])},t.angle=function(t,e,n,r){if(void 0===r&&(r={}),!P(r))throw new Error("options is invalid");if(!t)throw new Error("startPoint is required");if(!e)throw new Error("midPoint is required");if(!n)throw new Error("endPoint is required");var i=t,o=e,s=n,a=b(!0!==r.mercator?mn(i,o):Bi(i,o)),u=b(!0!==r.mercator?mn(s,o):Bi(s,o)),l=Math.abs(a-u);return!0===r.explementary?360-l:l},t.applyFilter=uu,t.area=jr,t.areaFactors=i,t.bbox=Z,t.bboxClip=function(t,e){var n=rt(t),r=n.type,i="Feature"===t.type?t.properties:{},o=n.coordinates;switch(r){case"LineString":case"MultiLineString":var s=[];return"LineString"===r&&(o=[o]),o.forEach((function(t){!function(t,e,n){var r,i,o,s,a,u=t.length,l=Ri(t[0],e),c=[];for(n||(n=[]),r=1;r0)for(var n=0;n0},t.booleanParallel=function(t,e){if(!t)throw new Error("line1 is required");if(!e)throw new Error("line2 is required");if("LineString"!==Us(t,"line1"))throw new Error("line1 must be a LineString");if("LineString"!==Us(e,"line2"))throw new Error("line2 must be a LineString");for(var n=Zn(tn(t)).features,r=Zn(tn(e)).features,i=0;in&&(e.numberOfClusters=n),!0!==e.mutate&&(t=Ie(t));var r=G(t),i=r.slice(0,e.numberOfClusters),o=zs(r,e.numberOfClusters,i),s={};return o.centroids.forEach((function(t,e){s[e]=t})),F(t,(function(t,e){var n=o.idxs[e];t.properties.cluster=n,t.properties.centroid=s[n]})),t},t.collect=function(t,e,n,r){var i=Nt(6),o=e.features.map((function(t){var e;return{minX:t.geometry.coordinates[0],minY:t.geometry.coordinates[1],maxX:t.geometry.coordinates[0],maxY:t.geometry.coordinates[1],property:null===(e=t.properties)||void 0===e?void 0:e[n]}}));return i.load(o),t.features.forEach((function(t){t.properties||(t.properties={});var e=Z(t),n=i.search({minX:e[0],minY:e[1],maxX:e[2],maxY:e[3]}),o=[];n.forEach((function(e){ye([e.minX,e.minY],t)&&o.push(e.property)})),t.properties[r]=o})),t},t.collectionOf=nt,t.combine=function(t){var e={MultiPoint:{coordinates:[],properties:[]},MultiLineString:{coordinates:[],properties:[]},MultiPolygon:{coordinates:[],properties:[]}};return F(t,(function(t){var n,r,i,o;switch(null===(o=t.geometry)||void 0===o?void 0:o.type){case"Point":e.MultiPoint.coordinates.push(t.geometry.coordinates),e.MultiPoint.properties.push(t.properties);break;case"MultiPoint":(n=e.MultiPoint.coordinates).push.apply(n,t.geometry.coordinates),e.MultiPoint.properties.push(t.properties);break;case"LineString":e.MultiLineString.coordinates.push(t.geometry.coordinates),e.MultiLineString.properties.push(t.properties);break;case"MultiLineString":(r=e.MultiLineString.coordinates).push.apply(r,t.geometry.coordinates),e.MultiLineString.properties.push(t.properties);break;case"Polygon":e.MultiPolygon.coordinates.push(t.geometry.coordinates),e.MultiPolygon.properties.push(t.properties);break;case"MultiPolygon":(i=e.MultiPolygon.coordinates).push.apply(i,t.geometry.coordinates),e.MultiPolygon.properties.push(t.properties)}})),f(Object.keys(e).filter((function(t){return e[t].coordinates.length})).sort().map((function(t){return o({type:t,coordinates:e[t].coordinates},{collectedProperties:e[t].properties})})))},t.concave=function(t,e){void 0===e&&(e={});var n=e.maxEdge||1/0,r=xe(function(t){var e=[],n={};return F(t,(function(t){if(t.geometry){var r=t.geometry.coordinates.join("-");Object.prototype.hasOwnProperty.call(n,r)||(e.push(t),n[r]=!0)}})),f(e)}(t));if(r.features=r.features.filter((function(t){var r=t.geometry.coordinates[0][0],i=t.geometry.coordinates[0][1],o=t.geometry.coordinates[0][2],s=me(r,i,e),a=me(i,o,e),u=me(r,o,e);return s<=n&&a<=n&&u<=n})),r.features.length<1)return null;var i=$e(r);return 1===i.coordinates.length&&(i.coordinates=i.coordinates[0],i.type="Polygon"),o(i)},t.containsNumber=$,t.convertArea=S,t.convertDistance=N,t.convertLength=N,t.convex=de,t.coordAll=G,t.coordEach=R,t.coordReduce=T,t.createBins=au,t.degrees2radians=I,t.degreesToRadians=I,t.destination=vn,t.difference=function(t,e){var n=rt(t),r=rt(e),i=t.properties||{},o=$u.difference(n.coordinates,r.coordinates);return 0===o.length?null:1===o.length?l(o[0],i):y(o,i)},t.dissolve=function(t,e){if(!P(e=e||{}))throw new Error("options is invalid");var n=e.propertyName;nt(t,"Polygon","dissolve");var r=[];if(!e.propertyName)return ni(y($u.union.apply(null,t.features.map((function(t){return t.geometry.coordinates})))));var i={};F(t,(function(t){Object.prototype.hasOwnProperty.call(i,t.properties[n])||(i[t.properties[n]]=[]),i[t.properties[n]].push(t)}));for(var o=Object.keys(i),s=0;s0&&(s=l(o).geometry),qa(s,a),o=a.slice(0);n.push(l(o,i));break;case"MultiPolygon":o=[[[]]];for(var c=0;c0&&(s=y(o).geometry),Ba(s,a),o=a.slice(0);n.push(y(o,i));break;default:throw new Error("geometry is invalid, must be Polygon or MultiPolygon")}})),f(n)},t.polygonTangents=function(t,e){var n,r,i,o,s=Q(t),u=Q(e),l=Z(e),c=0,h=null;switch(s[0]>l[0]&&s[0]l[1]&&s[1] is required");if("boolean"!=typeof n)throw new Error(" must be a boolean");if("boolean"!=typeof r)throw new Error(" must be a boolean");!1===r&&(t=Ie(t));var i=[];switch(t.type){case"GeometryCollection":return q(t,(function(t){Hi(t,n)})),t;case"FeatureCollection":return F(t,(function(t){F(Hi(t,n),(function(t){i.push(t)}))})),f(i)}return Hi(t,n)},t.rhumbBearing=Bi,t.rhumbDestination=ji,t.rhumbDistance=Ar,t.round=_,t.sample=function(t,e){if(!t)throw new Error("featurecollection is required");if(null==e)throw new Error("num is required");if("number"!=typeof e)throw new Error("num must be a number");return f(function(t,e){var n,r,i=t.slice(0),o=t.length,s=o-e;for(;o-- >s;)n=i[r=Math.floor((o+1)*Math.random())],i[r]=i[o],i[o]=n;return i.slice(s)}(t.features,e))},t.sector=function(t,e,n,r,i){if(!P(i=i||{}))throw new Error("options is invalid");var o=i.properties;if(!t)throw new Error("center is required");if(null==n)throw new Error("bearing1 is required");if(null==r)throw new Error("bearing2 is required");if(!e)throw new Error("radius is required");if("object"!=typeof i)throw new Error("options must be an object");if(qi(n)===qi(r))return _n(t,e,i);var s=Q(t),a=bi(t,e,n,r,i),u=[[s]];return R(a,(function(t){u[0].push(t)})),u[0].push(s),l(u,o)},t.segmentEach=U,t.segmentReduce=V,t.shortestPath=function(t,e,n){if(!P(n=n||{}))throw new Error("options is invalid");var r=n.resolution,i=n.minDistance,s=n.obstacles||f([]);if(!t)throw new Error("start is required");if(!e)throw new Error("end is required");if(r&&!C(r)||r<=0)throw new Error("options.resolution must be a number, greater than 0");if(i)throw new Error("options.minDistance is not yet implemented");var u=K(t),l=K(e);switch(t=a(u),e=a(l),it(s)){case"FeatureCollection":if(0===s.features.length)return h([u,l]);break;case"Polygon":s=f([o(rt(s))]);break;default:throw new Error("invalid obstacles")}var c=s;c.features.push(t),c.features.push(e);var p=Z(ts(gn(Z(c)),1.15));r||(r=me([p[0],p[1]],[p[2],p[1]],n)/100),c.features.pop(),c.features.pop();for(var g=p[0],d=p[1],y=p[2],v=p[3],_=r/me([g,d],[y,d],n)*(y-g),m=r/me([g,d],[g,v],n)*(v-d),x=y-g,E=v-d,b=Math.floor(x/_),w=Math.floor(E/m),I=(x-b*_)/2,N=[],S=[],M=[],L=[],O=1/0,R=1/0,T=v-(E-w*m)/2,A=0;T>=d;){for(var D=[],F=[],k=g+I,G=0;k<=y;){var q=a([k,T]),B=Js(q,s);D.push(B?0:1),F.push(k+"|"+T);var z=me(q,t);!B&&z + + ... + +``` + +Cet ID va permettre de lier un fichier de configuration `config.json` avec un ***seul*** Mviewer. Dans ce cas, un seul dossier et un seul fichier de configuration seront utilisés. + +### **1.2. Importer le plugin** + +L'étape suivante consiste à importer le plugin dans le fichier de configuration de votre Mviewer. En effet, c'est une étape qui est identique pour n'importe quel plugin que l'on souhaite ajouter à notre application. Pour ce faire, il faut se rendre dans le fichier `XML` dans lequel il est nécessaire d'ajouter la balise suivante : + +```xml + + + +``` + +Une fois arrivé à ce stade de la configuration, le plugin est désormais importé dans votre application. + +## 2. Configuration du plugin + +Comme nous avons déjà pu le voir précédemment, l'extension est entièrement configurable. Nous allons donc voir dans cette partie les différentes configurations disponibles. + +Le fichier de configuration `config.json` est disponible dans le répertoire `addons/trackview`. L'emplacement de celui-ci peut être modifié en fonction de vos besoins. + +### **2.1. Une structure à respecter** + +Afin que l'extension puisse fonctionner correctement, il est très important de respecter la structure de configuration que l'on peut voir ci-dessous : + +```json +{ + "type": "module", + "js": [ + "../../../lib/chartjs-3.7.1/Chart.min.js", "lib/turf.min.js", "js/custom-dropdown.js", "js/trackview.js" + ], + "css": "/css/style.css", + "html": "./trackview.html", + "target": "page-content-wrapper" + ... +} +``` + +- `type` indique que le contenu est un module, un fichier pouvant contenir des fonctions, des objets ou encore des variables exportables et réutilisables dans d'autres parties du code. + +- `js` c'est ici que l'on renseigne les fichiers js que l'on souhaite charger. + +- `css` c'est ici que l'on renseigne le chemin vers le fichier de style + +- `html` c'est ici que l'on renseigne le chemin vers le fichier html pouvant contenir davantage d'éléments en fonction des besoins + +- `target` indique l'élément de la page dans lequel le contenu sera inséré. + +### **2.2. Une configuration par Mviewer** + +Il est très important de reprendre l'ID de votre Mviewer (voir **partie 1.1**), afin de le renseigner sous la propriété `"mviewer"`, comme nous pouvons le voir ci-dessous : + +```json +{ + "type": "module", + "js": [ + "../../../lib/chartjs-3.7.1/Chart.min.js", "lib/turf.min.js", "js/custom-dropdown.js", "js/trackview.js" + ], + "css": "/css/style.css", + "html": "./trackview.html", + "target": "page-content-wrapper", + "options" : { + "mviewer": { + "parcours": [ + { + ... + } + ... + ] + } + } +} +``` + +Dans notre exemple, nous avons utilisé l'ID `"parcours"`. + +### **2.3. Ajouter une couche** + +Le fichier `config.json` permet d'ajouter plusieurs couches chacune étant personnalisable comme on le souhaite. + +En effet, dans notre cas, il est possible de renseigner un seul parcours, ou bien d'en ajouter un 2e, un 3ème et ainsi de suite. + +Nous allons donc voir par la suite comment ajouter un parcours qui servira d'exemple en cas d'ajout d'un second. + +Pour commencer, nous pouvons voir ci-dessous la structure permettant l'ajout d'un ou de plusieurs parcours. + +```json +{ + "type": "module", + "js": [ + "../../../lib/chartjs-3.7.1/Chart.min.js", "lib/turf.min.js", "js/custom-dropdown.js", "js/trackview.js" + ], + "css": "/css/style.css", + "html": "./trackview.html", + "target": "page-content-wrapper", + "options" : { + "mviewer": { + "parcours": [ + { + "Premier parcours" + }, + { + "Seconds parcours" + }, + { + "Troisième parcours" + } + ... + ] + } + } +} +``` + +Les données de chaque parcours doivent être comprises entre les `{}` pour le bon fonctionnement du plugin. + +Pour une meilleure lisibilité, nous allons voir en plusieurs étapes les différentes données à renseigner dans le fichier `config.json`. + +#### **2.3.1. Les paramètres de base** + +Ci-dessous les paramètres nécessaires à l'ajout des données sur Mviewer. + +```json +{ + "type": "module", + "js": [ + "../../../lib/chartjs-3.7.1/Chart.min.js", "lib/turf.min.js", "js/custom-dropdown.js", "js/trackview.js" + ], + "css": "/css/style.css", + "html": "./trackview.html", + "target": "page-content-wrapper", + "options" : { + "mviewer": { + "parcours": [ + { + "id": 0, + "label": "Parcours 13 km", + "title": "Circuit", + "param": { + "pointKilometers": { + "display": "true" + }, + "tolerance": { + "value": 2 + } + }, + "stats": { + "type": "customlayer", + "layerId": "parcours_1", + "opacity": 0.8 + }, + "data": { + "url": "demo/trackview/data/gpx/parcours_13km.gpx" + } + } + ... + ] + } + } +} +``` + +- `id` sert d'identifiant pour un parcours, le premier avec l'identifiant 0, le second avec l'identifiant 1, le troisième avec le 2 et ainsi de suite. + +- `label` sert à donner un titre à la légende. + +- `title` permet de donner une description de ce que représente la légende. + +Pour une meilleure compréhension, voici une illustration ci-dessous : + +![legend.png](img/legend.png) + +- `param` permet de stocker différents paramètres propres au parcours + - `pointKilometers` paramètre concernant les points kilométriques + - `display` prend la valeur **true** ou **false** pour savoir si on souhaite afficher les points tous les kilomètres ou non. + + - `tolerance` paramètre concernant la tolérance + - `value` prend une valeur en pixel qui permet de détecter le parcours plus facilement ou non. Plus la valeur est élévée, plus facile sera la détection. + +- `stats` + + - `type` permet de définir le type de la couche, ici "*customlayer*" + - `layerId` c'est grâce à cette ID que Mviewer fait le lien entre la légende et les thèmes (pour plus d'informations sur les thèmes : [les thèmes avec Mviewer](https://mviewerdoc.readthedocs.io/fr/latest/doc_tech/config_topics.html)). + + En effet, afin que cet ID soit utile, il ne faut pas oublier de rajouter dans la configuration de l'application (**fichier XML**) le code suivant : + + ```xml + + + + + + ``` + + L'ID se situe donc dans la balise `layer` qui permettra de faire le lien avec la légende. + + Concernant les autres paramètres, merci de se rendre vers la documentation sur le lien ci-dessus. + + Pour une meilleure compréhension, voici une illustration ci-dessous. + + ![theme.png](img/theme.png) + + - `opacity` permet de définir l'opacité par défaut du parcours lors du chargement de la page. + +- `data` + - `url` permet de renseigner le chemin vers les données à charger. + + ***Remarque:*** Les données doivent impérativement être au format **GPX**. + +#### **2.3.2. Le style** + +Une fois arrivé à ce stade de la configuration, nous allons maintenant voir les différents paramètres disponibles afin de styliser le plugin comme on le souhaite. + +Pour ce faire, il faut ajouter le code ci-dessous sous la propriété `"data"`. Le code ci-dessous peut également servir d'exemple. + +```json +{ + "style": { + "geometry": "LineString", + "segment": { + "color": { + "default": "#f00", + "selected": "#03224c" + }, + "width": { + "default": 3, + "selected": 5 + } + }, + "point": { + "color": { + "image": "#03224c", + "stroke": "#fff" + }, + "radius": 7, + "width": 2 + }, + "pointKilometers": { + "color": { + "image": "#fff", + "stroke": "f00", + "text": "#333" + }, + "radius": 9, + "width": 0.8 + }, + "graph": { + "type": "line", + "title": "Dénivelé du parcours en fonction de la distance parcourue", + "name": { + "xAxis": { + "text": "Distance (km)" + }, + "yAxis": { + "text": "Dénivelé (m)" + } + }, + "color": { + "segment": "#f00", + "point": "#f00" + } + } + } +} +``` + +Pour commencer, on va voir plus en détails la configuration du style pour les **segments**, qui correspondent au parcours que vous avez chargé. + +- `style` c'est ici que se situe tous les styles. + - `geometry` c'est ici qu'il faut renseigner le type du parcours, soit "**LineString**". + - `segment` concerne le style des segments (du parcours). + - `color` couleur + - `default` couleur par défaut d'un segment (ou couleur du parcours). + - `selected` on renseigne la couleur d'un segment selectionné/survolé par la souris. + - `width` taille (épaisseur) + - `default` largeur par défaut d'un segment (ou largeur du parcours). + - `selected` on renseigne la taille d'un segment selectionné/survolé par la souris. + +***Remarque:*** La couleur peut être renseignée de plusieurs manières, que ce soit en **hexa** (**#f00** ou encore **#ff0000** pour du rouge par exemple), par leur **simple nom** en **anglais** (**red** ou **green**) ou enfin, en **RGB** (**rgb(255, 0, 0)** pour le **rouge**). + +Ensuite, nous allons maintenant voir le style pour les **points** qui se situe en bout de parcours lors du survol de la souris, à ne pas confondre avec les points kilométriques. + +- `point` concerne le style des points (en bout de parcours). + - `color` couleur + - `image` c'est ici que l'on renseigne la couleur du point. + - `stroke` c'est ici que l'on renseigne la couleur des contours du point. + - `radius` c'est ici que l'on renseigne le rayon du point. + - `width` c'est ici que l'on renseigne la largeur du point. + +Concernant les **points kilométriques**, le principe est presque le même comme nous allons le voir ci-dessous. + +- `pointKilometers` concerne le style des points kilométriques. + - `color` couleur + - `image` c'est ici que l'on renseigne la couleur du point. + - `stroke` c'est ici que l'on renseigne la couleur des contours du point. + - `text` c'est ici que l'on renseigne la couleur du texte sur le point. + - `radius` c'est ici que l'on renseigne le rayon du point. + - `width` c'est ici que l'on renseigne la largeur du point. + +Enfin, nous allons maintenant voir la configuration du **graphique altimétrique** qui, comme son nom l'indique, permet de voir l'altimétrie (ou altitude) à un instant précis du parcours. Celui-ci est également paramétrable afin de le rendre le plus personnalisable possible. + +- `graph` contient tous les paramètres du graphique altimétrique. + - `type` c'est ici que l'on va renseigner le type du graphique, soit ici "**line**". + - `title` permet de renseigner le titre du graphique (exemple "*Graphique montrant l'altitude*"). + - `name` contient les informations sur les différents axes du graphique (abscisse et ordonnée). + - `xAxis` concerne l'axe des abscisses. + - `text` c'est ici que l'on renseigne le nom de l'axe concerné. + - `yAxis` concerne l'axe des ordonnées. + - `text` c'est ici que l'on renseigne le nom de l'axe concerné. + - `color` couleur + - `segment` c'est ici que l'on renseigne la couleur des segments qui sont sur le graphique. + - `point` c'est ici que l'on renseigne la couleur des points qui sont présent sur le graphique. + +Une fois arrivé à ce stade de la configuration, vous êtes désormais capable de configurer entièrement le plugin, que ce soit d'un point de vue style, taille, texte ou encore concernant l'emplacement des données à charger. + +Enfin, si le plugin est utilisé pour visualiser qu'un seul parcours, le bouton qui est présent peut être soit déplacé, soit modifier ou soit supprimé en fonction des besoins. \ No newline at end of file diff --git a/demo/addons/trackview/trackview.html b/demo/addons/trackview/trackview.html new file mode 100644 index 000000000..b7f035e70 --- /dev/null +++ b/demo/addons/trackview/trackview.html @@ -0,0 +1,13 @@ +
+ +
+ + + \ No newline at end of file diff --git a/demo/trackview.xml b/demo/trackview.xml new file mode 100644 index 000000000..ecbabec22 --- /dev/null +++ b/demo/trackview.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/demo/trackview/data/parcours_13km.gpx b/demo/trackview/data/parcours_13km.gpx new file mode 100644 index 000000000..82352392b --- /dev/null +++ b/demo/trackview/data/parcours_13km.gpx @@ -0,0 +1,730 @@ + + + Parcours 12,5kmDef-18686465 + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 2 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 3 + + + + 2 + + + + 2 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + 2 + + + + 2 + + + + 3 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 3 + + + + 3 + + + + 2 + + + + 2 + + + + 2 + + + + 3 + + + + 2 + + + + 2 + + + + 1 + + + + 0 + + + + 1 + + + + 2 + + + + 2 + + + + 3 + + + + 2 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + -2 + + + + -0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 3 + + + + 2 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 0 + + + + -1 + + + + -1 + + + + -1 + + + + -1 + + + + -1 + + + + -1 + + + + -0 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 2 + + + + 2 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 1 + + + + 2 + + + + 2 + + + + 1 + + + + 1 + + + + 1 + + + + 2 + + + + 1 + + + + 1 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 2 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + 2 + + + + 2 + + + + 3 + + + + 2 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + -0 + + + + 0 + + + + 1 + + + + 2 + + + + 2 + + + + 2 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 4 + + + + 5 + + + + 5 + + + + 4 + + + + 6 + + + + 4 + + + + 4 + + + + 6 + + + + 6 + + + + 5 + + + + 5 + + + + 6 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 2 + + + + 3 + + + + 3 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + + \ No newline at end of file diff --git a/demo/trackview/data/parcours_5km.gpx b/demo/trackview/data/parcours_5km.gpx new file mode 100644 index 000000000..f67a0f3b6 --- /dev/null +++ b/demo/trackview/data/parcours_5km.gpx @@ -0,0 +1,302 @@ + + + Parcours 5,5km-18427827 + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 2 + + + + 2 + + + + 1 + + + + 1 + + + + 0 + + + + -0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + 2 + + + + 2 + + + + 2 + + + + 1 + + + + 0 + + + + 1 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + -0 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 2 + + + + 2 + + + + 2 + + + + 3 + + + + 3 + + + + 3 + + + + 3 + + + + 4 + + + + 5 + + + + 5 + + + + 5 + + + + 4 + + + + 3 + + + + 6 + + + + 5 + + + + 6 + + + + 6 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 2 + + + + 3 + + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + + \ No newline at end of file diff --git a/demo/trackview/data/pierre.gpx b/demo/trackview/data/pierre.gpx new file mode 100644 index 000000000..95417a205 --- /dev/null +++ b/demo/trackview/data/pierre.gpx @@ -0,0 +1,29409 @@ + + + + + Garmin Connect + + + + + Perros-Guirec VTT + mountain_biking + + + -27.200000762939453125 + + + + 28.0 + 99 + + + + + -27.200000762939453125 + + + + 28.0 + 98 + + + + + -27.200000762939453125 + + + + 28.0 + 101 + + + + + -26.6000003814697265625 + + + + 28.0 + 104 + + + + + -26.6000003814697265625 + + + + 28.0 + 105 + + + + + -26.799999237060546875 + + + + 28.0 + 108 + + + + + -26.799999237060546875 + + + + 28.0 + 105 + + + + + -27.3999996185302734375 + + + + 27.0 + 106 + + + + + -27 + + + + 27.0 + 103 + + + + + -27 + + + + 27.0 + 104 + + + + + -26.6000003814697265625 + + + + 27.0 + 101 + + + + + -26.3999996185302734375 + + + + 27.0 + 102 + + + + + -25.6000003814697265625 + + + + 27.0 + 101 + + + + + -25.3999996185302734375 + + + + 27.0 + 102 + + + + + -25.3999996185302734375 + + + + 27.0 + 99 + + + + + -25.3999996185302734375 + + + + 27.0 + 98 + + + + + -25 + + + + 27.0 + 98 + + + + + -25 + + + + 27.0 + 97 + + + + + -25 + + + + 27.0 + 96 + + + + + -25.3999996185302734375 + + + + 26.0 + 97 + + + + + -25.799999237060546875 + + + + 26.0 + 96 + + + + + -26 + + + + 26.0 + 95 + + + + + -26.6000003814697265625 + + + + 26.0 + 94 + + + + + -27.6000003814697265625 + + + + 26.0 + 92 + + + + + -27.799999237060546875 + + + + 26.0 + 93 + + + + + -27.799999237060546875 + + + + 26.0 + 91 + + + + + -28.6000003814697265625 + + + + 26.0 + 93 + + + + + -28.799999237060546875 + + + + 26.0 + 93 + + + + + -29.200000762939453125 + + + + 26.0 + 91 + + + + + -30 + + + + 26.0 + 95 + + + + + -30 + + + + 25.0 + 95 + + + + + -29.799999237060546875 + + + + 25.0 + 94 + + + + + -29.799999237060546875 + + + + 25.0 + 93 + + + + + -30 + + + + 25.0 + 93 + + + + + -30.200000762939453125 + + + + 25.0 + 89 + + + + + -30.200000762939453125 + + + + 25.0 + 93 + + + + + -30 + + + + 25.0 + 98 + + + + + -29.799999237060546875 + + + + 25.0 + 101 + + + + + -29.3999996185302734375 + + + + 25.0 + 101 + + + + + -29.200000762939453125 + + + + 25.0 + 104 + + + + + -28.6000003814697265625 + + + + 25.0 + 108 + + + + + -27.799999237060546875 + + + + 25.0 + 110 + + + + + -27.3999996185302734375 + + + + 25.0 + 111 + + + + + -26.3999996185302734375 + + + + 25.0 + 114 + + + + + -25.6000003814697265625 + + + + 25.0 + 117 + + + + + -25.3999996185302734375 + + + + 24.0 + 117 + + + + + -24.200000762939453125 + + + + 24.0 + 118 + + + + + -23.200000762939453125 + + + + 24.0 + 117 + + + + + -23 + + + + 24.0 + 118 + + + + + -21.6000003814697265625 + + + + 24.0 + 121 + + + + + -21 + + + + 24.0 + 121 + + + + + -20.6000003814697265625 + + + + 24.0 + 121 + + + + + -21.799999237060546875 + + + + 24.0 + 122 + + + + + -22 + + + + 24.0 + 121 + + + + + -22 + + + + 24.0 + 119 + + + + + -22 + + + + 24.0 + 117 + + + + + -22 + + + + 24.0 + 117 + + + + + -22.200000762939453125 + + + + 24.0 + 119 + + + + + -22.3999996185302734375 + + + + 24.0 + 118 + + + + + -22.799999237060546875 + + + + 24.0 + 119 + + + + + -23.200000762939453125 + + + + 24.0 + 119 + + + + + -23.799999237060546875 + + + + 24.0 + 118 + + + + + -24 + + + + 24.0 + 121 + + + + + -24.3999996185302734375 + + + + 24.0 + 120 + + + + + -24.6000003814697265625 + + + + 24.0 + 121 + + + + + -23.799999237060546875 + + + + 24.0 + 125 + + + + + -23.6000003814697265625 + + + + 24.0 + 123 + + + + + -23.200000762939453125 + + + + 24.0 + 122 + + + + + -23 + + + + 24.0 + 121 + + + + + -23 + + + + 24.0 + 121 + + + + + -23 + + + + 24.0 + 122 + + + + + -23.6000003814697265625 + + + + 24.0 + 121 + + + + + -24.200000762939453125 + + + + 24.0 + 122 + + + + + -25.3999996185302734375 + + + + 24.0 + 122 + + + + + -25.799999237060546875 + + + + 24.0 + 122 + + + + + -25.799999237060546875 + + + + 24.0 + 121 + + + + + -25.799999237060546875 + + + + 24.0 + 120 + + + + + -24.200000762939453125 + + + + 24.0 + 118 + + + + + -23.3999996185302734375 + + + + 24.0 + 115 + + + + + -23.200000762939453125 + + + + 24.0 + 115 + + + + + -22.6000003814697265625 + + + + 24.0 + 112 + + + + + -22 + + + + 24.0 + 114 + + + + + -21 + + + + 24.0 + 118 + + + + + -20.200000762939453125 + + + + 24.0 + 120 + + + + + -19.6000003814697265625 + + + + 24.0 + 123 + + + + + -19.3999996185302734375 + + + + 24.0 + 122 + + + + + -18.799999237060546875 + + + + 24.0 + 123 + + + + + -18.200000762939453125 + + + + 24.0 + 126 + + + + + -17.6000003814697265625 + + + + 24.0 + 126 + + + + + -16.799999237060546875 + + + + 24.0 + 126 + + + + + -16.799999237060546875 + + + + 24.0 + 126 + + + + + -16.6000003814697265625 + + + + 24.0 + 126 + + + + + -16.6000003814697265625 + + + + 24.0 + 126 + + + + + -16.3999996185302734375 + + + + 24.0 + 126 + + + + + -15.3999996185302734375 + + + + 23.0 + + + + + -15.19999980926513671875 + + + + 23.0 + + + + + -14 + + + + 23.0 + + + + + -12.6000003814697265625 + + + + 23.0 + 126 + + + + + -12.19999980926513671875 + + + + 23.0 + 127 + + + + + -11.6000003814697265625 + + + + 23.0 + 126 + + + + + -11 + + + + 23.0 + 123 + + + + + -11 + + + + 23.0 + 120 + + + + + -11 + + + + 23.0 + 122 + + + + + -11 + + + + 23.0 + 123 + + + + + -10.6000003814697265625 + + + + 23.0 + 122 + + + + + -10 + + + + 23.0 + 119 + + + + + -10 + + + + 23.0 + 118 + + + + + -10 + + + + 23.0 + 118 + + + + + -11 + + + + 23.0 + 119 + + + + + -11.19999980926513671875 + + + + 23.0 + 119 + + + + + -11.3999996185302734375 + + + + 23.0 + 120 + + + + + -11.80000019073486328125 + + + + 23.0 + 120 + + + + + -12.19999980926513671875 + + + + 23.0 + 122 + + + + + -12.3999996185302734375 + + + + 23.0 + 123 + + + + + -12.6000003814697265625 + + + + 23.0 + + + + + -12.6000003814697265625 + + + + 23.0 + 126 + + + + + -12.6000003814697265625 + + + + 23.0 + 123 + + + + + -12.80000019073486328125 + + + + 23.0 + 123 + + + + + -13.19999980926513671875 + + + + 23.0 + 122 + + + + + -13.3999996185302734375 + + + + 23.0 + 123 + + + + + -13.80000019073486328125 + + + + 23.0 + 123 + + + + + -14.19999980926513671875 + + + + 23.0 + 120 + + + + + -14.3999996185302734375 + + + + 23.0 + 119 + + + + + -13.80000019073486328125 + + + + 23.0 + 115 + + + + + -13.80000019073486328125 + + + + 23.0 + 115 + + + + + -13.80000019073486328125 + + + + 23.0 + + + + + -14 + + + + 23.0 + 114 + + + + + -13.80000019073486328125 + + + + 23.0 + 115 + + + + + -13.6000003814697265625 + + + + 23.0 + 112 + + + + + -13.3999996185302734375 + + + + 23.0 + 113 + + + + + -13 + + + + 23.0 + 113 + + + + + -12.6000003814697265625 + + + + 23.0 + 112 + + + + + -12.3999996185302734375 + + + + 23.0 + 110 + + + + + -12.3999996185302734375 + + + + 23.0 + 109 + + + + + -12.19999980926513671875 + + + + 23.0 + 109 + + + + + -12 + + + + 23.0 + 109 + + + + + -11.80000019073486328125 + + + + 23.0 + 108 + + + + + -11.6000003814697265625 + + + + 23.0 + 108 + + + + + -11.19999980926513671875 + + + + 23.0 + 109 + + + + + -11 + + + + 23.0 + 113 + + + + + -11 + + + + 23.0 + 117 + + + + + -11.19999980926513671875 + + + + 23.0 + 119 + + + + + -11.19999980926513671875 + + + + 23.0 + 121 + + + + + -11.3999996185302734375 + + + + 23.0 + 123 + + + + + -10.6000003814697265625 + + + + 23.0 + 124 + + + + + -10.3999996185302734375 + + + + 23.0 + 125 + + + + + -10 + + + + 23.0 + 128 + + + + + -9.6000003814697265625 + + + + 23.0 + 129 + + + + + -9 + + + + 23.0 + 131 + + + + + -8.3999996185302734375 + + + + 23.0 + 130 + + + + + -7.80000019073486328125 + + + + 23.0 + 129 + + + + + -7.400000095367431640625 + + + + 23.0 + 129 + + + + + -7.19999980926513671875 + + + + 23.0 + 129 + + + + + -7.19999980926513671875 + + + + 23.0 + 131 + + + + + -7.19999980926513671875 + + + + 23.0 + 129 + + + + + -6.80000019073486328125 + + + + 23.0 + 127 + + + + + -6.19999980926513671875 + + + + 23.0 + 126 + + + + + -5.80000019073486328125 + + + + 23.0 + 123 + + + + + -5.19999980926513671875 + + + + 23.0 + 124 + + + + + -4.599999904632568359375 + + + + 23.0 + 125 + + + + + -4.400000095367431640625 + + + + 23.0 + 129 + + + + + -4.19999980926513671875 + + + + 23.0 + 128 + + + + + -3 + + + + 23.0 + 127 + + + + + -3 + + + + 23.0 + 126 + + + + + -3 + + + + 23.0 + 125 + + + + + -3.400000095367431640625 + + + + 23.0 + 122 + + + + + -3.7999999523162841796875 + + + + 23.0 + 121 + + + + + -4.19999980926513671875 + + + + 23.0 + 120 + + + + + -5.400000095367431640625 + + + + 23.0 + 119 + + + + + -7 + + + + 23.0 + 115 + + + + + -7.19999980926513671875 + + + + 23.0 + 115 + + + + + -8 + + + + 23.0 + 114 + + + + + -8 + + + + 23.0 + 113 + + + + + -7 + + + + 23.0 + 112 + + + + + -6.80000019073486328125 + + + + 23.0 + 111 + + + + + -6.400000095367431640625 + + + + 23.0 + 110 + + + + + -6.19999980926513671875 + + + + 23.0 + 110 + + + + + -6.19999980926513671875 + + + + 23.0 + 114 + + + + + -6.19999980926513671875 + + + + 23.0 + 117 + + + + + -6.19999980926513671875 + + + + 23.0 + 118 + + + + + -6.19999980926513671875 + + + + 23.0 + 121 + + + + + -6.19999980926513671875 + + + + 23.0 + 120 + + + + + -6.599999904632568359375 + + + + 23.0 + 117 + + + + + -6.599999904632568359375 + + + + 23.0 + 117 + + + + + -6.19999980926513671875 + + + + 23.0 + 114 + + + + + -6.400000095367431640625 + + + + 23.0 + 112 + + + + + -5.80000019073486328125 + + + + 23.0 + 109 + + + + + -5.599999904632568359375 + + + + 23.0 + 111 + + + + + -5.80000019073486328125 + + + + 23.0 + 117 + + + + + -5.80000019073486328125 + + + + 23.0 + 117 + + + + + -5.599999904632568359375 + + + + 23.0 + 120 + + + + + -4.80000019073486328125 + + + + 23.0 + 123 + + + + + -4 + + + + 22.0 + 126 + + + + + -4 + + + + 22.0 + 130 + + + + + -4.400000095367431640625 + + + + 22.0 + 132 + + + + + -5 + + + + 22.0 + 132 + + + + + -5.400000095367431640625 + + + + 22.0 + 131 + + + + + -5.80000019073486328125 + + + + 22.0 + 128 + + + + + -5.599999904632568359375 + + + + 22.0 + 125 + + + + + -5.599999904632568359375 + + + + 22.0 + 121 + + + + + -5.599999904632568359375 + + + + 22.0 + 122 + + + + + -6 + + + + 22.0 + 123 + + + + + -6.400000095367431640625 + + + + 22.0 + 123 + + + + + -6.400000095367431640625 + + + + 22.0 + 123 + + + + + -6.400000095367431640625 + + + + 22.0 + 122 + + + + + -6.400000095367431640625 + + + + 22.0 + 122 + + + + + -6.599999904632568359375 + + + + 22.0 + 121 + + + + + -7.19999980926513671875 + + + + 22.0 + 121 + + + + + -8 + + + + 22.0 + 117 + + + + + -8 + + + + 22.0 + 117 + + + + + -8.19999980926513671875 + + + + 22.0 + 115 + + + + + -7.400000095367431640625 + + + + 22.0 + 114 + + + + + -7.19999980926513671875 + + + + 22.0 + 114 + + + + + -7.19999980926513671875 + + + + 22.0 + 114 + + + + + -7.19999980926513671875 + + + + 22.0 + 113 + + + + + -8.3999996185302734375 + + + + 22.0 + 113 + + + + + -9.6000003814697265625 + + + + 22.0 + 110 + + + + + -10.3999996185302734375 + + + + 22.0 + 110 + + + + + -10.80000019073486328125 + + + + 22.0 + 108 + + + + + -12 + + + + 22.0 + 109 + + + + + -12.6000003814697265625 + + + + 22.0 + 110 + + + + + -13.6000003814697265625 + + + + 22.0 + 107 + + + + + -14 + + + + 22.0 + 112 + + + + + -14 + + + + 22.0 + 112 + + + + + -14 + + + + 22.0 + 114 + + + + + -14 + + + + 22.0 + 115 + + + + + -14.6000003814697265625 + + + + 22.0 + 115 + + + + + -14.80000019073486328125 + + + + 22.0 + 114 + + + + + -14.6000003814697265625 + + + + 22.0 + 113 + + + + + -14.3999996185302734375 + + + + 22.0 + 111 + + + + + -14.3999996185302734375 + + + + 22.0 + 111 + + + + + -15 + + + + 22.0 + 109 + + + + + -14.80000019073486328125 + + + + 22.0 + 112 + + + + + -14.6000003814697265625 + + + + 22.0 + 116 + + + + + -14.80000019073486328125 + + + + 22.0 + 116 + + + + + -15.19999980926513671875 + + + + 22.0 + 121 + + + + + -15 + + + + 22.0 + 122 + + + + + -14.80000019073486328125 + + + + 22.0 + 122 + + + + + -14.6000003814697265625 + + + + 22.0 + + + + + -14.80000019073486328125 + + + + 22.0 + 124 + + + + + -14.80000019073486328125 + + + + 22.0 + 123 + + + + + -15.3999996185302734375 + + + + 22.0 + 122 + + + + + -15.80000019073486328125 + + + + 22.0 + 121 + + + + + -15.80000019073486328125 + + + + 22.0 + 120 + + + + + -15.80000019073486328125 + + + + 22.0 + 120 + + + + + -16.6000003814697265625 + + + + 22.0 + 117 + + + + + -16.799999237060546875 + + + + 22.0 + 117 + + + + + -16.6000003814697265625 + + + + 22.0 + 116 + + + + + -16.200000762939453125 + + + + 22.0 + 115 + + + + + -16 + + + + 22.0 + 115 + + + + + -16 + + + + 22.0 + 118 + + + + + -16 + + + + 22.0 + 121 + + + + + -15.6000003814697265625 + + + + 22.0 + 121 + + + + + -15.3999996185302734375 + + + + 22.0 + + + + + -15.3999996185302734375 + + + + 22.0 + + + + + -15.19999980926513671875 + + + + 22.0 + 128 + + + + + -15.19999980926513671875 + + + + 22.0 + 128 + + + + + -15.80000019073486328125 + + + + 22.0 + 126 + + + + + -15.80000019073486328125 + + + + 22.0 + 123 + + + + + -15.80000019073486328125 + + + + 22.0 + 122 + + + + + -15.80000019073486328125 + + + + 22.0 + 121 + + + + + -16.3999996185302734375 + + + + 22.0 + 118 + + + + + -16.6000003814697265625 + + + + 22.0 + 123 + + + + + -16.6000003814697265625 + + + + 22.0 + 123 + + + + + -16.6000003814697265625 + + + + 22.0 + 125 + + + + + -16.6000003814697265625 + + + + 22.0 + 122 + + + + + -16.6000003814697265625 + + + + 22.0 + 117 + + + + + -16.6000003814697265625 + + + + 22.0 + 111 + + + + + -16.200000762939453125 + + + + 22.0 + 106 + + + + + -15.80000019073486328125 + + + + 22.0 + 103 + + + + + -15.6000003814697265625 + + + + 22.0 + 103 + + + + + -16 + + + + 22.0 + 106 + + + + + -16.3999996185302734375 + + + + 22.0 + 105 + + + + + -16.6000003814697265625 + + + + 22.0 + 104 + + + + + -16.799999237060546875 + + + + 22.0 + 104 + + + + + -17 + + + + 22.0 + 101 + + + + + -17 + + + + 22.0 + 103 + + + + + -17 + + + + 22.0 + 102 + + + + + -16.6000003814697265625 + + + + 22.0 + 102 + + + + + -16.3999996185302734375 + + + + 22.0 + 101 + + + + + -16.6000003814697265625 + + + + 22.0 + 98 + + + + + -17 + + + + 22.0 + 97 + + + + + -17.3999996185302734375 + + + + 22.0 + 97 + + + + + -18.200000762939453125 + + + + 22.0 + 98 + + + + + -18.6000003814697265625 + + + + 22.0 + 97 + + + + + -18.799999237060546875 + + + + 22.0 + 98 + + + + + -19.3999996185302734375 + + + + 22.0 + 98 + + + + + -21.200000762939453125 + + + + 22.0 + 98 + + + + + -22 + + + + 22.0 + + + + + -22.3999996185302734375 + + + + 22.0 + + + + + -22.6000003814697265625 + + + + 22.0 + 97 + + + + + -23.6000003814697265625 + + + + 22.0 + 96 + + + + + -24.6000003814697265625 + + + + 22.0 + 94 + + + + + -26 + + + + 21.0 + 95 + + + + + -26.6000003814697265625 + + + + 21.0 + 93 + + + + + -28 + + + + 21.0 + 95 + + + + + -29.6000003814697265625 + + + + 21.0 + 93 + + + + + -31.799999237060546875 + + + + 21.0 + 91 + + + + + -33 + + + + 21.0 + 93 + + + + + -34.40000152587890625 + + + + 21.0 + 90 + + + + + -36 + + + + 21.0 + 91 + + + + + -36.799999237060546875 + + + + 21.0 + 92 + + + + + -36.59999847412109375 + + + + 21.0 + 91 + + + + + -36.200000762939453125 + + + + 21.0 + 91 + + + + + -35.59999847412109375 + + + + 21.0 + 92 + + + + + -35 + + + + 21.0 + 91 + + + + + -34.59999847412109375 + + + + 21.0 + 91 + + + + + -34.200000762939453125 + + + + 21.0 + 88 + + + + + -33.799999237060546875 + + + + 21.0 + 90 + + + + + -33.40000152587890625 + + + + 21.0 + 90 + + + + + -32.799999237060546875 + + + + 21.0 + 89 + + + + + -32 + + + + 21.0 + 89 + + + + + -31.799999237060546875 + + + + 21.0 + 94 + + + + + -31.6000003814697265625 + + + + 21.0 + 96 + + + + + -31 + + + + 21.0 + 100 + + + + + -30.6000003814697265625 + + + + 21.0 + 99 + + + + + -30.3999996185302734375 + + + + 21.0 + 101 + + + + + -30.200000762939453125 + + + + 21.0 + 106 + + + + + -31 + + + + 21.0 + 105 + + + + + -31.3999996185302734375 + + + + 21.0 + 105 + + + + + -32 + + + + 21.0 + 104 + + + + + -33 + + + + 21.0 + 104 + + + + + -34 + + + + 21.0 + 103 + + + + + -34 + + + + 21.0 + 98 + + + + + -34.200000762939453125 + + + + 21.0 + 100 + + + + + -35.200000762939453125 + + + + 21.0 + 99 + + + + + -35.200000762939453125 + + + + 21.0 + 97 + + + + + -34.40000152587890625 + + + + 21.0 + 97 + + + + + -34.200000762939453125 + + + + 21.0 + 98 + + + + + -34 + + + + 21.0 + 97 + + + + + -33 + + + + 21.0 + 99 + + + + + -32.799999237060546875 + + + + 21.0 + 101 + + + + + -32.200000762939453125 + + + + 21.0 + 102 + + + + + -31.6000003814697265625 + + + + 21.0 + 106 + + + + + -31 + + + + 21.0 + 109 + + + + + -30.3999996185302734375 + + + + 21.0 + 109 + + + + + -30.200000762939453125 + + + + 21.0 + 110 + + + + + -29.200000762939453125 + + + + 21.0 + 113 + + + + + -28 + + + + 21.0 + 115 + + + + + -27.799999237060546875 + + + + 21.0 + 118 + + + + + -27.6000003814697265625 + + + + 21.0 + 119 + + + + + -27.6000003814697265625 + + + + 21.0 + 125 + + + + + -27.3999996185302734375 + + + + 21.0 + 122 + + + + + -27 + + + + 21.0 + 122 + + + + + -27 + + + + 21.0 + 122 + + + + + -26.799999237060546875 + + + + 21.0 + 123 + + + + + -26.799999237060546875 + + + + 21.0 + 126 + + + + + -26.6000003814697265625 + + + + 21.0 + 127 + + + + + -26.6000003814697265625 + + + + 21.0 + 128 + + + + + -26.200000762939453125 + + + + 21.0 + 127 + + + + + -25.6000003814697265625 + + + + 21.0 + 127 + + + + + -24.3999996185302734375 + + + + 21.0 + 126 + + + + + -24 + + + + 21.0 + 127 + + + + + -24.799999237060546875 + + + + 21.0 + 127 + + + + + -25.200000762939453125 + + + + 21.0 + 125 + + + + + -25.200000762939453125 + + + + 21.0 + 122 + + + + + -24.799999237060546875 + + + + 21.0 + 121 + + + + + -24.6000003814697265625 + + + + 21.0 + 118 + + + + + -24.3999996185302734375 + + + + 21.0 + 117 + + + + + -24.200000762939453125 + + + + 21.0 + 122 + + + + + -23.799999237060546875 + + + + 21.0 + 122 + + + + + -23.3999996185302734375 + + + + 21.0 + 124 + + + + + -22.799999237060546875 + + + + 21.0 + 127 + + + + + -22.3999996185302734375 + + + + 21.0 + 126 + + + + + -22 + + + + 21.0 + 125 + + + + + -22 + + + + 21.0 + 127 + + + + + -22 + + + + 21.0 + 124 + + + + + -22 + + + + 21.0 + 121 + + + + + -22 + + + + 21.0 + 122 + + + + + -22.799999237060546875 + + + + 21.0 + 121 + + + + + -22.799999237060546875 + + + + 21.0 + 120 + + + + + -23.200000762939453125 + + + + 21.0 + + + + + -23.3999996185302734375 + + + + 21.0 + 119 + + + + + -23.6000003814697265625 + + + + 21.0 + 118 + + + + + -23.6000003814697265625 + + + + 21.0 + 115 + + + + + -23.3999996185302734375 + + + + 21.0 + 112 + + + + + -23 + + + + 21.0 + 111 + + + + + -22.3999996185302734375 + + + + 21.0 + 111 + + + + + -22.200000762939453125 + + + + 21.0 + 109 + + + + + -22.200000762939453125 + + + + 21.0 + 108 + + + + + -23.200000762939453125 + + + + 21.0 + 106 + + + + + -23.6000003814697265625 + + + + 21.0 + 107 + + + + + -24 + + + + 21.0 + 106 + + + + + -25 + + + + 21.0 + 106 + + + + + -27.200000762939453125 + + + + 21.0 + 106 + + + + + -29 + + + + 21.0 + 106 + + + + + -30.6000003814697265625 + + + + 21.0 + 104 + + + + + -32 + + + + 21.0 + 104 + + + + + -34.40000152587890625 + + + + 21.0 + 105 + + + + + -36 + + + + 21.0 + 103 + + + + + -37.200000762939453125 + + + + 21.0 + 103 + + + + + -37.799999237060546875 + + + + 21.0 + 103 + + + + + -40.799999237060546875 + + + + 21.0 + 106 + + + + + -42.40000152587890625 + + + + 21.0 + 110 + + + + + -43.40000152587890625 + + + + 21.0 + 114 + + + + + -44.200000762939453125 + + + + 21.0 + 116 + + + + + -45.200000762939453125 + + + + 21.0 + 119 + + + + + -47.40000152587890625 + + + + 21.0 + 122 + + + + + -50.40000152587890625 + + + + 21.0 + 126 + + + + + -52.200000762939453125 + + + + 21.0 + 128 + + + + + -53.799999237060546875 + + + + 21.0 + 128 + + + + + -55 + + + + 21.0 + + + + + -56.200000762939453125 + + + + 21.0 + + + + + -57 + + + + 21.0 + 126 + + + + + -57.799999237060546875 + + + + 21.0 + 126 + + + + + -58.40000152587890625 + + + + 20.0 + 125 + + + + + -58.40000152587890625 + + + + 20.0 + 122 + + + + + -58 + + + + 20.0 + 121 + + + + + -57.799999237060546875 + + + + 20.0 + 118 + + + + + -57.799999237060546875 + + + + 20.0 + 121 + + + + + -57.200000762939453125 + + + + 20.0 + 118 + + + + + -56.40000152587890625 + + + + 20.0 + 118 + + + + + -55.799999237060546875 + + + + 20.0 + 118 + + + + + -55.200000762939453125 + + + + 20.0 + 117 + + + + + -54.200000762939453125 + + + + 21.0 + 116 + + + + + -54.200000762939453125 + + + + 21.0 + 116 + + + + + -53.799999237060546875 + + + + 21.0 + 113 + + + + + -53.200000762939453125 + + + + 21.0 + 111 + + + + + -52 + + + + 21.0 + 110 + + + + + -50.59999847412109375 + + + + 21.0 + 109 + + + + + -50.200000762939453125 + + + + 21.0 + 110 + + + + + -50.200000762939453125 + + + + 21.0 + 112 + + + + + -50.799999237060546875 + + + + 21.0 + 120 + + + + + -50.799999237060546875 + + + + 21.0 + 120 + + + + + -50.40000152587890625 + + + + 21.0 + 120 + + + + + -50.40000152587890625 + + + + 21.0 + 120 + + + + + -49.200000762939453125 + + + + 21.0 + 120 + + + + + -47.59999847412109375 + + + + 21.0 + 118 + + + + + -46.200000762939453125 + + + + 21.0 + 119 + + + + + -45.40000152587890625 + + + + 21.0 + 116 + + + + + -45 + + + + 21.0 + 116 + + + + + -44.59999847412109375 + + + + 21.0 + 113 + + + + + -44.59999847412109375 + + + + 21.0 + 113 + + + + + -44.799999237060546875 + + + + 21.0 + 111 + + + + + -45.40000152587890625 + + + + 21.0 + 109 + + + + + -46.200000762939453125 + + + + 21.0 + 109 + + + + + -47.200000762939453125 + + + + 21.0 + 108 + + + + + -47.40000152587890625 + + + + 21.0 + 104 + + + + + -48 + + + + 21.0 + 107 + + + + + -48.799999237060546875 + + + + 21.0 + 105 + + + + + -49.40000152587890625 + + + + 21.0 + 105 + + + + + -50 + + + + 21.0 + 104 + + + + + -50.799999237060546875 + + + + 21.0 + 104 + + + + + -51 + + + + 21.0 + 105 + + + + + -51.200000762939453125 + + + + 21.0 + 102 + + + + + -51.40000152587890625 + + + + 21.0 + 102 + + + + + -52.40000152587890625 + + + + 21.0 + 101 + + + + + -53.40000152587890625 + + + + 21.0 + 101 + + + + + -53.799999237060546875 + + + + 21.0 + 100 + + + + + -53.40000152587890625 + + + + 20.0 + 100 + + + + + -52.200000762939453125 + + + + 21.0 + 98 + + + + + -52 + + + + 21.0 + 97 + + + + + -51.59999847412109375 + + + + 21.0 + 101 + + + + + -50.200000762939453125 + + + + 21.0 + 103 + + + + + -49.59999847412109375 + + + + 21.0 + 106 + + + + + -48.799999237060546875 + + + + 21.0 + 108 + + + + + -47.799999237060546875 + + + + 21.0 + 111 + + + + + -46.200000762939453125 + + + + 21.0 + 112 + + + + + -45.40000152587890625 + + + + 21.0 + 117 + + + + + -44.799999237060546875 + + + + 21.0 + 120 + + + + + -44 + + + + 21.0 + 124 + + + + + -43.799999237060546875 + + + + 21.0 + 126 + + + + + -43.200000762939453125 + + + + 21.0 + 125 + + + + + -43 + + + + 21.0 + 122 + + + + + -42.40000152587890625 + + + + 21.0 + 122 + + + + + -41.59999847412109375 + + + + 21.0 + 118 + + + + + -41.40000152587890625 + + + + 21.0 + 120 + + + + + -41.200000762939453125 + + + + 21.0 + 117 + + + + + -41.200000762939453125 + + + + 21.0 + 117 + + + + + -41.799999237060546875 + + + + 21.0 + 114 + + + + + -41.799999237060546875 + + + + 21.0 + 113 + + + + + -41.59999847412109375 + + + + 21.0 + 116 + + + + + -41.40000152587890625 + + + + 21.0 + 119 + + + + + -41 + + + + 21.0 + 126 + + + + + -40.59999847412109375 + + + + 21.0 + 130 + + + + + -40.40000152587890625 + + + + 21.0 + 134 + + + + + -40 + + + + 21.0 + 140 + + + + + -39.40000152587890625 + + + + 21.0 + 144 + + + + + -39.200000762939453125 + + + + 21.0 + 147 + + + + + -38.799999237060546875 + + + + 21.0 + 148 + + + + + -38.200000762939453125 + + + + 21.0 + 149 + + + + + -37.59999847412109375 + + + + 21.0 + 147 + + + + + -36.40000152587890625 + + + + 21.0 + 149 + + + + + -36.200000762939453125 + + + + 21.0 + 149 + + + + + -35.40000152587890625 + + + + 21.0 + 148 + + + + + -34 + + + + 21.0 + 148 + + + + + -33.200000762939453125 + + + + 21.0 + 146 + + + + + -32.799999237060546875 + + + + 21.0 + 145 + + + + + -32.40000152587890625 + + + + 21.0 + 144 + + + + + -32.200000762939453125 + + + + 21.0 + 147 + + + + + -31.799999237060546875 + + + + 21.0 + 144 + + + + + -31 + + + + 21.0 + 146 + + + + + -30.6000003814697265625 + + + + 21.0 + 144 + + + + + -29.3999996185302734375 + + + + 21.0 + 147 + + + + + -28.200000762939453125 + + + + 21.0 + 145 + + + + + -27.3999996185302734375 + + + + 21.0 + 145 + + + + + -26.799999237060546875 + + + + 21.0 + 146 + + + + + -26 + + + + 21.0 + 147 + + + + + -25.3999996185302734375 + + + + 21.0 + 147 + + + + + -24.200000762939453125 + + + + 21.0 + 148 + + + + + -23 + + + + 21.0 + 150 + + + + + -22 + + + + 21.0 + 150 + + + + + -21.6000003814697265625 + + + + 21.0 + 150 + + + + + -21.6000003814697265625 + + + + 21.0 + 150 + + + + + -21 + + + + 21.0 + 150 + + + + + -21 + + + + 21.0 + 149 + + + + + -21 + + + + 21.0 + 149 + + + + + -20.799999237060546875 + + + + 21.0 + 148 + + + + + -20.799999237060546875 + + + + 21.0 + 147 + + + + + -20.3999996185302734375 + + + + 21.0 + 146 + + + + + -19.3999996185302734375 + + + + 21.0 + 146 + + + + + -18.200000762939453125 + + + + 21.0 + 146 + + + + + -16.799999237060546875 + + + + 21.0 + 146 + + + + + -15.6000003814697265625 + + + + 21.0 + 146 + + + + + -15.3999996185302734375 + + + + 21.0 + 145 + + + + + -15.3999996185302734375 + + + + 21.0 + 144 + + + + + -15.3999996185302734375 + + + + 21.0 + 144 + + + + + -16.3999996185302734375 + + + + 21.0 + 144 + + + + + -16.799999237060546875 + + + + 21.0 + 143 + + + + + -17.200000762939453125 + + + + 21.0 + 141 + + + + + -17.200000762939453125 + + + + 21.0 + 140 + + + + + -17.799999237060546875 + + + + 21.0 + 138 + + + + + -18 + + + + 21.0 + 139 + + + + + -19.200000762939453125 + + + + 21.0 + 138 + + + + + -19.799999237060546875 + + + + 21.0 + 135 + + + + + -20.3999996185302734375 + + + + 21.0 + 133 + + + + + -21.200000762939453125 + + + + 21.0 + 133 + + + + + -22 + + + + 21.0 + 133 + + + + + -23.3999996185302734375 + + + + 21.0 + 133 + + + + + -25 + + + + 21.0 + 133 + + + + + -26.200000762939453125 + + + + 21.0 + 132 + + + + + -27.3999996185302734375 + + + + 21.0 + 132 + + + + + -27.799999237060546875 + + + + 21.0 + 133 + + + + + -28 + + + + 21.0 + 133 + + + + + -28 + + + + 21.0 + 134 + + + + + -28.200000762939453125 + + + + 21.0 + 134 + + + + + -29 + + + + 21.0 + 133 + + + + + -31.3999996185302734375 + + + + 21.0 + 133 + + + + + -33.59999847412109375 + + + + 21.0 + 132 + + + + + -34.799999237060546875 + + + + 21.0 + 131 + + + + + -36 + + + + 21.0 + 130 + + + + + -36.59999847412109375 + + + + 21.0 + 130 + + + + + -37 + + + + 21.0 + 130 + + + + + -36.59999847412109375 + + + + 21.0 + 131 + + + + + -35.799999237060546875 + + + + 21.0 + 131 + + + + + -35 + + + + 21.0 + 131 + + + + + -34.59999847412109375 + + + + 21.0 + 130 + + + + + -34.59999847412109375 + + + + 21.0 + 130 + + + + + -33.40000152587890625 + + + + 21.0 + 133 + + + + + -33.200000762939453125 + + + + 21.0 + 134 + + + + + -32.799999237060546875 + + + + 21.0 + 134 + + + + + -32.200000762939453125 + + + + 21.0 + 134 + + + + + -32 + + + + 21.0 + 134 + + + + + -31.799999237060546875 + + + + 21.0 + 135 + + + + + -31.6000003814697265625 + + + + 21.0 + 136 + + + + + -31.200000762939453125 + + + + 21.0 + 137 + + + + + -30 + + + + 21.0 + 136 + + + + + -29.799999237060546875 + + + + 21.0 + 135 + + + + + -29.3999996185302734375 + + + + 21.0 + 133 + + + + + -28.799999237060546875 + + + + 21.0 + 132 + + + + + -28.3999996185302734375 + + + + 21.0 + 132 + + + + + -28 + + + + 21.0 + 132 + + + + + -27.6000003814697265625 + + + + 21.0 + 128 + + + + + -27.3999996185302734375 + + + + 21.0 + 128 + + + + + -26.3999996185302734375 + + + + 21.0 + 133 + + + + + -25.799999237060546875 + + + + 21.0 + 134 + + + + + -24.799999237060546875 + + + + 21.0 + 135 + + + + + -23.799999237060546875 + + + + 21.0 + 135 + + + + + -23.6000003814697265625 + + + + 21.0 + 134 + + + + + -22.6000003814697265625 + + + + 21.0 + 134 + + + + + -21.3999996185302734375 + + + + 21.0 + 135 + + + + + -21 + + + + 21.0 + 133 + + + + + -20.6000003814697265625 + + + + 21.0 + 136 + + + + + -20 + + + + 21.0 + 137 + + + + + -19.799999237060546875 + + + + 21.0 + 139 + + + + + -19.3999996185302734375 + + + + 20.0 + 141 + + + + + -20.799999237060546875 + + + + 20.0 + 148 + + + + + -21.200000762939453125 + + + + 20.0 + 151 + + + + + -21.3999996185302734375 + + + + 20.0 + 148 + + + + + -21.799999237060546875 + + + + 20.0 + 149 + + + + + -22.200000762939453125 + + + + 20.0 + 149 + + + + + -22.3999996185302734375 + + + + 20.0 + 148 + + + + + -22.3999996185302734375 + + + + 20.0 + 147 + + + + + -23.3999996185302734375 + + + + 20.0 + 147 + + + + + -24 + + + + 20.0 + 147 + + + + + -24 + + + + 20.0 + 147 + + + + + -22.6000003814697265625 + + + + 20.0 + 147 + + + + + -22.3999996185302734375 + + + + 20.0 + 144 + + + + + -22.200000762939453125 + + + + 20.0 + 141 + + + + + -21.3999996185302734375 + + + + 20.0 + 142 + + + + + -21.3999996185302734375 + + + + 20.0 + 143 + + + + + -20.200000762939453125 + + + + 20.0 + 142 + + + + + -19.799999237060546875 + + + + 20.0 + 143 + + + + + -19.799999237060546875 + + + + 20.0 + 140 + + + + + -20 + + + + 20.0 + 139 + + + + + -21 + + + + 20.0 + 139 + + + + + -19.6000003814697265625 + + + + 20.0 + 139 + + + + + -19.200000762939453125 + + + + 20.0 + 140 + + + + + -19 + + + + 20.0 + 140 + + + + + -19.3999996185302734375 + + + + 20.0 + 138 + + + + + -19.6000003814697265625 + + + + 20.0 + 137 + + + + + -20.200000762939453125 + + + + 20.0 + 137 + + + + + -20.799999237060546875 + + + + 20.0 + 137 + + + + + -21.200000762939453125 + + + + 20.0 + 137 + + + + + -22 + + + + 20.0 + 137 + + + + + -22.200000762939453125 + + + + 20.0 + 138 + + + + + -22.200000762939453125 + + + + 20.0 + 138 + + + + + -22.200000762939453125 + + + + 20.0 + 139 + + + + + -22.6000003814697265625 + + + + 20.0 + 139 + + + + + -22.799999237060546875 + + + + 20.0 + 138 + + + + + -23.799999237060546875 + + + + 20.0 + 138 + + + + + -24 + + + + 20.0 + 137 + + + + + -24.200000762939453125 + + + + 20.0 + 137 + + + + + -22.799999237060546875 + + + + 20.0 + 135 + + + + + -22.6000003814697265625 + + + + 20.0 + 136 + + + + + -22 + + + + 20.0 + 135 + + + + + -21.799999237060546875 + + + + 20.0 + 135 + + + + + -21.6000003814697265625 + + + + 20.0 + 132 + + + + + -21.200000762939453125 + + + + 20.0 + 133 + + + + + -20.6000003814697265625 + + + + 20.0 + 131 + + + + + -20.200000762939453125 + + + + 20.0 + 131 + + + + + -19.6000003814697265625 + + + + 20.0 + 128 + + + + + -19.6000003814697265625 + + + + 20.0 + 129 + + + + + -19.200000762939453125 + + + + 20.0 + 129 + + + + + -19 + + + + 20.0 + 128 + + + + + -17.799999237060546875 + + + + 20.0 + 129 + + + + + -17 + + + + 20.0 + 130 + + + + + -16.799999237060546875 + + + + 20.0 + 128 + + + + + -16 + + + + 20.0 + 128 + + + + + -15.80000019073486328125 + + + + 20.0 + 129 + + + + + -15.6000003814697265625 + + + + 20.0 + 132 + + + + + -14.80000019073486328125 + + + + 20.0 + 134 + + + + + -14.19999980926513671875 + + + + 20.0 + 136 + + + + + -13.6000003814697265625 + + + + 20.0 + 145 + + + + + -13 + + + + 20.0 + 148 + + + + + -12.6000003814697265625 + + + + 20.0 + 151 + + + + + -11.3999996185302734375 + + + + 20.0 + 152 + + + + + -10.19999980926513671875 + + + + 20.0 + 153 + + + + + -9.6000003814697265625 + + + + 20.0 + 154 + + + + + -9.6000003814697265625 + + + + 20.0 + 156 + + + + + -10 + + + + 20.0 + 156 + + + + + -10.19999980926513671875 + + + + 20.0 + 155 + + + + + -10.19999980926513671875 + + + + 20.0 + 154 + + + + + -9.80000019073486328125 + + + + 20.0 + 153 + + + + + -9.19999980926513671875 + + + + 20.0 + 151 + + + + + -8.19999980926513671875 + + + + 20.0 + 150 + + + + + -7.80000019073486328125 + + + + 20.0 + 148 + + + + + -8.19999980926513671875 + + + + 20.0 + 145 + + + + + -8 + + + + 20.0 + 144 + + + + + -9 + + + + 20.0 + 142 + + + + + -9.3999996185302734375 + + + + 20.0 + 144 + + + + + -9.80000019073486328125 + + + + 20.0 + 143 + + + + + -10.19999980926513671875 + + + + 20.0 + 145 + + + + + -10.19999980926513671875 + + + + 20.0 + 144 + + + + + -10.19999980926513671875 + + + + 20.0 + 144 + + + + + -10.3999996185302734375 + + + + 20.0 + 145 + + + + + -10.6000003814697265625 + + + + 20.0 + 141 + + + + + -10.80000019073486328125 + + + + 20.0 + 140 + + + + + -10.80000019073486328125 + + + + 20.0 + 139 + + + + + -10.80000019073486328125 + + + + 20.0 + 139 + + + + + -10.80000019073486328125 + + + + 20.0 + 139 + + + + + -10.3999996185302734375 + + + + 20.0 + 139 + + + + + -10 + + + + 20.0 + 138 + + + + + -9.6000003814697265625 + + + + 20.0 + 137 + + + + + -9.3999996185302734375 + + + + 20.0 + 137 + + + + + -9.19999980926513671875 + + + + 20.0 + 137 + + + + + -8.3999996185302734375 + + + + 20.0 + 137 + + + + + -8 + + + + 20.0 + 137 + + + + + -8.19999980926513671875 + + + + 20.0 + 136 + + + + + -8.3999996185302734375 + + + + 20.0 + 136 + + + + + -8.3999996185302734375 + + + + 20.0 + 137 + + + + + -8.3999996185302734375 + + + + 20.0 + 136 + + + + + -7.80000019073486328125 + + + + 20.0 + 136 + + + + + -7.400000095367431640625 + + + + 20.0 + 136 + + + + + -7.19999980926513671875 + + + + 20.0 + 138 + + + + + -7 + + + + 20.0 + 136 + + + + + -7.19999980926513671875 + + + + 20.0 + 135 + + + + + -7.19999980926513671875 + + + + 20.0 + 136 + + + + + -7.19999980926513671875 + + + + 20.0 + 138 + + + + + -7.19999980926513671875 + + + + 20.0 + 138 + + + + + -7.19999980926513671875 + + + + 20.0 + 137 + + + + + -7.19999980926513671875 + + + + 20.0 + 137 + + + + + -7.80000019073486328125 + + + + 20.0 + 135 + + + + + -8 + + + + 20.0 + + + + + -7.400000095367431640625 + + + + 20.0 + 135 + + + + + -6.80000019073486328125 + + + + 20.0 + 136 + + + + + -6.599999904632568359375 + + + + 20.0 + 134 + + + + + -6.599999904632568359375 + + + + 20.0 + 132 + + + + + -6.80000019073486328125 + + + + 20.0 + 130 + + + + + -7.599999904632568359375 + + + + 19.0 + 127 + + + + + -7.80000019073486328125 + + + + 19.0 + 127 + + + + + -7.599999904632568359375 + + + + 19.0 + 124 + + + + + -7.599999904632568359375 + + + + 19.0 + + + + + -7 + + + + 19.0 + 122 + + + + + -6.599999904632568359375 + + + + 19.0 + 123 + + + + + -6.599999904632568359375 + + + + 19.0 + 123 + + + + + -6.599999904632568359375 + + + + 19.0 + 126 + + + + + -6.400000095367431640625 + + + + 19.0 + 128 + + + + + -6.400000095367431640625 + + + + 19.0 + 129 + + + + + -5.80000019073486328125 + + + + 19.0 + 132 + + + + + -5.80000019073486328125 + + + + 19.0 + 129 + + + + + -5.80000019073486328125 + + + + 19.0 + 130 + + + + + -5.80000019073486328125 + + + + 19.0 + 133 + + + + + -5.599999904632568359375 + + + + 19.0 + 134 + + + + + -5.19999980926513671875 + + + + 19.0 + 134 + + + + + -4.80000019073486328125 + + + + 19.0 + 136 + + + + + -4.19999980926513671875 + + + + 19.0 + 138 + + + + + -3.400000095367431640625 + + + + 19.0 + 141 + + + + + -2.7999999523162841796875 + + + + 19.0 + 142 + + + + + -2.400000095367431640625 + + + + 19.0 + 146 + + + + + -2 + + + + 19.0 + 147 + + + + + -1.60000002384185791015625 + + + + 19.0 + 148 + + + + + -1 + + + + 19.0 + 149 + + + + + -0.60000002384185791015625 + + + + 19.0 + 148 + + + + + -0.20000000298023223876953125 + + + + 19.0 + 148 + + + + + 0 + + + + 19.0 + 146 + + + + + 0 + + + + 19.0 + 145 + + + + + 0 + + + + 19.0 + 144 + + + + + 0.20000000298023223876953125 + + + + 19.0 + 142 + + + + + 0.4000000059604644775390625 + + + + 19.0 + 140 + + + + + 0.800000011920928955078125 + + + + 19.0 + 136 + + + + + 1.39999997615814208984375 + + + + 19.0 + 135 + + + + + 1.39999997615814208984375 + + + + 19.0 + 136 + + + + + 1.7999999523162841796875 + + + + 19.0 + 137 + + + + + 2.2000000476837158203125 + + + + 19.0 + 137 + + + + + 2.400000095367431640625 + + + + 19.0 + 138 + + + + + 2.7999999523162841796875 + + + + 18.0 + 139 + + + + + 3.2000000476837158203125 + + + + 18.0 + 139 + + + + + 4 + + + + 18.0 + 140 + + + + + 4.400000095367431640625 + + + + 18.0 + 140 + + + + + 4 + + + + 18.0 + 143 + + + + + 3.599999904632568359375 + + + + 18.0 + 145 + + + + + 3.400000095367431640625 + + + + 18.0 + 142 + + + + + 3.400000095367431640625 + + + + 18.0 + 141 + + + + + 3 + + + + 18.0 + 141 + + + + + 2.7999999523162841796875 + + + + 18.0 + 141 + + + + + 2.2000000476837158203125 + + + + 18.0 + 140 + + + + + 1.60000002384185791015625 + + + + 18.0 + 139 + + + + + 0.800000011920928955078125 + + + + 18.0 + 137 + + + + + 0.4000000059604644775390625 + + + + 18.0 + 138 + + + + + 0.20000000298023223876953125 + + + + 18.0 + 133 + + + + + -0.20000000298023223876953125 + + + + 18.0 + 128 + + + + + -0.20000000298023223876953125 + + + + 18.0 + 124 + + + + + 0.4000000059604644775390625 + + + + 18.0 + 123 + + + + + 0.800000011920928955078125 + + + + 18.0 + 125 + + + + + 1.2000000476837158203125 + + + + 18.0 + 124 + + + + + 1.2000000476837158203125 + + + + 18.0 + 126 + + + + + 0.60000002384185791015625 + + + + 18.0 + 124 + + + + + 0.4000000059604644775390625 + + + + 18.0 + 122 + + + + + 0.20000000298023223876953125 + + + + 18.0 + 122 + + + + + 0.60000002384185791015625 + + + + 18.0 + 122 + + + + + 1 + + + + 18.0 + 125 + + + + + 1.39999997615814208984375 + + + + 18.0 + 126 + + + + + 1.39999997615814208984375 + + + + 18.0 + 124 + + + + + 1.60000002384185791015625 + + + + 18.0 + 125 + + + + + 1.7999999523162841796875 + + + + 18.0 + 125 + + + + + 1.7999999523162841796875 + + + + 18.0 + 124 + + + + + 1.7999999523162841796875 + + + + 18.0 + 127 + + + + + 1.7999999523162841796875 + + + + 18.0 + 128 + + + + + 1.60000002384185791015625 + + + + 18.0 + 131 + + + + + 1.60000002384185791015625 + + + + 18.0 + 133 + + + + + 1.60000002384185791015625 + + + + 18.0 + 132 + + + + + 1.2000000476837158203125 + + + + 18.0 + 133 + + + + + 1 + + + + 18.0 + 130 + + + + + 1 + + + + 18.0 + 129 + + + + + 0.800000011920928955078125 + + + + 18.0 + 130 + + + + + 1.2000000476837158203125 + + + + 18.0 + 132 + + + + + 1 + + + + 18.0 + + + + + 1.60000002384185791015625 + + + + 18.0 + 133 + + + + + 2.2000000476837158203125 + + + + 18.0 + 133 + + + + + 2.400000095367431640625 + + + + 18.0 + 131 + + + + + 2.599999904632568359375 + + + + 18.0 + 131 + + + + + 3 + + + + 18.0 + 130 + + + + + 3.400000095367431640625 + + + + 18.0 + 129 + + + + + 3.599999904632568359375 + + + + 18.0 + 130 + + + + + 4 + + + + 18.0 + 127 + + + + + 4.400000095367431640625 + + + + 18.0 + 128 + + + + + 4.400000095367431640625 + + + + 18.0 + 128 + + + + + 3.7999999523162841796875 + + + + 18.0 + 126 + + + + + 4 + + + + 18.0 + 129 + + + + + 4.80000019073486328125 + + + + 18.0 + 131 + + + + + 5 + + + + 18.0 + 133 + + + + + 5.19999980926513671875 + + + + 18.0 + 130 + + + + + 5.400000095367431640625 + + + + 18.0 + 133 + + + + + 5.599999904632568359375 + + + + 18.0 + 137 + + + + + 5.80000019073486328125 + + + + 18.0 + 140 + + + + + 6 + + + + 18.0 + 144 + + + + + 6.599999904632568359375 + + + + 18.0 + 146 + + + + + 6 + + + + 18.0 + 146 + + + + + 5.80000019073486328125 + + + + 18.0 + 146 + + + + + 5.400000095367431640625 + + + + 18.0 + 146 + + + + + 4.80000019073486328125 + + + + 18.0 + 145 + + + + + 4.599999904632568359375 + + + + 18.0 + 144 + + + + + 5.599999904632568359375 + + + + 18.0 + 143 + + + + + 5.80000019073486328125 + + + + 18.0 + 144 + + + + + 5.599999904632568359375 + + + + 18.0 + 144 + + + + + 5 + + + + 18.0 + 144 + + + + + 4.400000095367431640625 + + + + 18.0 + 143 + + + + + 3.400000095367431640625 + + + + 18.0 + 144 + + + + + 3.400000095367431640625 + + + + 18.0 + 141 + + + + + 3.2000000476837158203125 + + + + 18.0 + 141 + + + + + 2 + + + + 18.0 + 139 + + + + + 1.7999999523162841796875 + + + + 18.0 + 136 + + + + + 1.7999999523162841796875 + + + + 18.0 + 135 + + + + + 2.7999999523162841796875 + + + + 18.0 + 134 + + + + + 2.599999904632568359375 + + + + 18.0 + 133 + + + + + 1.60000002384185791015625 + + + + 18.0 + 130 + + + + + 1.39999997615814208984375 + + + + 18.0 + 129 + + + + + 1.39999997615814208984375 + + + + 18.0 + 128 + + + + + 1.2000000476837158203125 + + + + 18.0 + 128 + + + + + 1 + + + + 18.0 + 128 + + + + + -0.20000000298023223876953125 + + + + 18.0 + 130 + + + + + -1 + + + + 18.0 + 131 + + + + + -1.2000000476837158203125 + + + + 18.0 + 131 + + + + + -1 + + + + 18.0 + 131 + + + + + -1 + + + + 18.0 + 128 + + + + + -1.60000002384185791015625 + + + + 18.0 + 128 + + + + + -3 + + + + 18.0 + 129 + + + + + -6.599999904632568359375 + + + + 18.0 + 128 + + + + + -8.6000003814697265625 + + + + 18.0 + 126 + + + + + -11.3999996185302734375 + + + + 18.0 + 128 + + + + + -12.80000019073486328125 + + + + 18.0 + 126 + + + + + -15.80000019073486328125 + + + + 18.0 + 127 + + + + + -18 + + + + 18.0 + 126 + + + + + -19.3999996185302734375 + + + + 18.0 + 127 + + + + + -20.6000003814697265625 + + + + 18.0 + 126 + + + + + -21.6000003814697265625 + + + + 18.0 + 127 + + + + + -22.200000762939453125 + + + + 18.0 + 125 + + + + + -22.3999996185302734375 + + + + 18.0 + 125 + + + + + -22.200000762939453125 + + + + 18.0 + 123 + + + + + -22 + + + + 18.0 + 123 + + + + + -22 + + + + 18.0 + 123 + + + + + -22.200000762939453125 + + + + 18.0 + 121 + + + + + -23 + + + + 18.0 + 122 + + + + + -24 + + + + 18.0 + 122 + + + + + -24.200000762939453125 + + + + 18.0 + 121 + + + + + -25.200000762939453125 + + + + 18.0 + 122 + + + + + -25.3999996185302734375 + + + + 18.0 + 124 + + + + + -25.799999237060546875 + + + + 18.0 + 125 + + + + + -25.799999237060546875 + + + + 18.0 + 127 + + + + + -25.6000003814697265625 + + + + 18.0 + 127 + + + + + -25.200000762939453125 + + + + 18.0 + 129 + + + + + -25 + + + + 18.0 + 128 + + + + + -25 + + + + 18.0 + 131 + + + + + -25 + + + + 18.0 + 132 + + + + + -24.799999237060546875 + + + + 18.0 + 129 + + + + + -26.200000762939453125 + + + + 18.0 + 129 + + + + + -27.200000762939453125 + + + + 18.0 + 129 + + + + + -28.3999996185302734375 + + + + 18.0 + 128 + + + + + -28.3999996185302734375 + + + + 18.0 + 125 + + + + + -28.200000762939453125 + + + + 18.0 + 126 + + + + + -27.6000003814697265625 + + + + 18.0 + 127 + + + + + -27.3999996185302734375 + + + + 18.0 + 126 + + + + + -27.200000762939453125 + + + + 18.0 + 127 + + + + + -26.6000003814697265625 + + + + 18.0 + 124 + + + + + -27.200000762939453125 + + + + 17.0 + 122 + + + + + -26.799999237060546875 + + + + 17.0 + 121 + + + + + -26.200000762939453125 + + + + 17.0 + 122 + + + + + -26.200000762939453125 + + + + 17.0 + 122 + + + + + -26.799999237060546875 + + + + 17.0 + 119 + + + + + -27.200000762939453125 + + + + 17.0 + 118 + + + + + -27.799999237060546875 + + + + 17.0 + 118 + + + + + -28.6000003814697265625 + + + + 17.0 + 119 + + + + + -29.200000762939453125 + + + + 17.0 + 120 + + + + + -29.3999996185302734375 + + + + 17.0 + 118 + + + + + -29.3999996185302734375 + + + + 17.0 + 118 + + + + + -29.799999237060546875 + + + + 17.0 + 118 + + + + + -30.3999996185302734375 + + + + 17.0 + 116 + + + + + -31 + + + + 17.0 + 117 + + + + + -31.6000003814697265625 + + + + 17.0 + 117 + + + + + -32.200000762939453125 + + + + 17.0 + 117 + + + + + -33.200000762939453125 + + + + 17.0 + 117 + + + + + -32.59999847412109375 + + + + 17.0 + 115 + + + + + -32.40000152587890625 + + + + 17.0 + 115 + + + + + -33 + + + + 17.0 + 115 + + + + + -32.200000762939453125 + + + + 17.0 + 115 + + + + + -30.6000003814697265625 + + + + 18.0 + 114 + + + + + -29.6000003814697265625 + + + + 18.0 + 116 + + + + + -29.3999996185302734375 + + + + 18.0 + 115 + + + + + -30.200000762939453125 + + + + 18.0 + 113 + + + + + -30.200000762939453125 + + + + 18.0 + 113 + + + + + -29.799999237060546875 + + + + 18.0 + 112 + + + + + -29.799999237060546875 + + + + 18.0 + 114 + + + + + -29.799999237060546875 + + + + 18.0 + 112 + + + + + -29.799999237060546875 + + + + 18.0 + 113 + + + + + -29.799999237060546875 + + + + 18.0 + 112 + + + + + -30 + + + + 18.0 + 115 + + + + + -30 + + + + 18.0 + 118 + + + + + -30 + + + + 18.0 + 121 + + + + + -29.799999237060546875 + + + + 18.0 + 124 + + + + + -29.6000003814697265625 + + + + 18.0 + 122 + + + + + -29.3999996185302734375 + + + + 18.0 + 121 + + + + + -29.6000003814697265625 + + + + 18.0 + 124 + + + + + -29.3999996185302734375 + + + + 18.0 + 128 + + + + + -29.3999996185302734375 + + + + 18.0 + 130 + + + + + -29.6000003814697265625 + + + + 18.0 + 129 + + + + + -28.799999237060546875 + + + + 18.0 + 133 + + + + + -28.6000003814697265625 + + + + 18.0 + 133 + + + + + -28.200000762939453125 + + + + 18.0 + 132 + + + + + -28.3999996185302734375 + + + + 18.0 + 130 + + + + + -27.799999237060546875 + + + + 18.0 + 129 + + + + + -27.3999996185302734375 + + + + 18.0 + 126 + + + + + -26.6000003814697265625 + + + + 18.0 + 127 + + + + + -26.6000003814697265625 + + + + 18.0 + 126 + + + + + -26.6000003814697265625 + + + + 18.0 + 126 + + + + + -28 + + + + 18.0 + 123 + + + + + -28.3999996185302734375 + + + + 18.0 + 124 + + + + + -29.6000003814697265625 + + + + 18.0 + 124 + + + + + -29.799999237060546875 + + + + 18.0 + 122 + + + + + -29 + + + + 18.0 + 123 + + + + + -28.799999237060546875 + + + + 18.0 + 121 + + + + + -29 + + + + 18.0 + 124 + + + + + -29.200000762939453125 + + + + 18.0 + 126 + + + + + -29 + + + + 18.0 + 130 + + + + + -28.799999237060546875 + + + + 18.0 + 128 + + + + + -29 + + + + 18.0 + 128 + + + + + -29.200000762939453125 + + + + 18.0 + 131 + + + + + -29.799999237060546875 + + + + 18.0 + 133 + + + + + -29.799999237060546875 + + + + 18.0 + 134 + + + + + -29.799999237060546875 + + + + 18.0 + 133 + + + + + -29.6000003814697265625 + + + + 18.0 + 136 + + + + + -29.3999996185302734375 + + + + 18.0 + 137 + + + + + -29.3999996185302734375 + + + + 18.0 + 139 + + + + + -29.3999996185302734375 + + + + 18.0 + 139 + + + + + -29.3999996185302734375 + + + + 18.0 + 139 + + + + + -29.6000003814697265625 + + + + 18.0 + 138 + + + + + -29.6000003814697265625 + + + + 18.0 + 138 + + + + + -30.6000003814697265625 + + + + 18.0 + 138 + + + + + -31.200000762939453125 + + + + 18.0 + 138 + + + + + -31.6000003814697265625 + + + + 18.0 + 139 + + + + + -32 + + + + 18.0 + 139 + + + + + -32.799999237060546875 + + + + 18.0 + 139 + + + + + -33.799999237060546875 + + + + 18.0 + 141 + + + + + -34.200000762939453125 + + + + 18.0 + 142 + + + + + -35.200000762939453125 + + + + 18.0 + 142 + + + + + -35.59999847412109375 + + + + 18.0 + 144 + + + + + -36.799999237060546875 + + + + 18.0 + 143 + + + + + -38.59999847412109375 + + + + 18.0 + 144 + + + + + -40.200000762939453125 + + + + 18.0 + 142 + + + + + -41.40000152587890625 + + + + 18.0 + 142 + + + + + -42 + + + + 18.0 + 139 + + + + + -42.200000762939453125 + + + + 18.0 + 139 + + + + + -42.40000152587890625 + + + + 18.0 + 139 + + + + + -43.200000762939453125 + + + + 18.0 + 139 + + + + + -43.59999847412109375 + + + + 18.0 + 139 + + + + + -44 + + + + 18.0 + 138 + + + + + -44.59999847412109375 + + + + 18.0 + 135 + + + + + -44.799999237060546875 + + + + 18.0 + 137 + + + + + -45 + + + + 18.0 + 136 + + + + + -45.59999847412109375 + + + + 18.0 + 135 + + + + + -45.799999237060546875 + + + + 18.0 + 136 + + + + + -45.799999237060546875 + + + + 18.0 + 133 + + + + + -46 + + + + 18.0 + 132 + + + + + -46.40000152587890625 + + + + 18.0 + 135 + + + + + -47 + + + + 18.0 + 138 + + + + + -47.799999237060546875 + + + + 18.0 + 139 + + + + + -48 + + + + 18.0 + 136 + + + + + -48 + + + + 18.0 + 136 + + + + + -48 + + + + 18.0 + 133 + + + + + -48.200000762939453125 + + + + 18.0 + 135 + + + + + -49.40000152587890625 + + + + 18.0 + 135 + + + + + -50 + + + + 18.0 + 137 + + + + + -50.59999847412109375 + + + + 18.0 + 137 + + + + + -51.799999237060546875 + + + + 18.0 + 138 + + + + + -52.200000762939453125 + + + + 18.0 + 139 + + + + + -53 + + + + 18.0 + 140 + + + + + -53.40000152587890625 + + + + 18.0 + + + + + -53.40000152587890625 + + + + 18.0 + 144 + + + + + -54.40000152587890625 + + + + 18.0 + 143 + + + + + -54.59999847412109375 + + + + 18.0 + 142 + + + + + -55 + + + + 18.0 + 139 + + + + + -55 + + + + 18.0 + 140 + + + + + -55 + + + + 18.0 + 140 + + + + + -55.59999847412109375 + + + + 18.0 + 139 + + + + + -56.59999847412109375 + + + + 18.0 + 138 + + + + + -57 + + + + 18.0 + 137 + + + + + -58 + + + + 18.0 + 134 + + + + + -59 + + + + 18.0 + 130 + + + + + -57.40000152587890625 + + + + 18.0 + 127 + + + + + -57 + + + + 18.0 + 125 + + + + + -56.40000152587890625 + + + + 18.0 + 125 + + + + + -56.200000762939453125 + + + + 18.0 + 124 + + + + + -56.40000152587890625 + + + + 18.0 + 124 + + + + + -56 + + + + 18.0 + 123 + + + + + -55.59999847412109375 + + + + 18.0 + 122 + + + + + -55 + + + + 18.0 + 121 + + + + + -55 + + + + 18.0 + 122 + + + + + -55 + + + + 18.0 + 123 + + + + + -55.200000762939453125 + + + + 18.0 + 123 + + + + + -55.799999237060546875 + + + + 18.0 + 128 + + + + + -56.200000762939453125 + + + + 18.0 + 129 + + + + + -56.59999847412109375 + + + + 18.0 + 128 + + + + + -57 + + + + 18.0 + 126 + + + + + -57.200000762939453125 + + + + 18.0 + 122 + + + + + -57.59999847412109375 + + + + 18.0 + 119 + + + + + -57.59999847412109375 + + + + 18.0 + 119 + + + + + -57.59999847412109375 + + + + 18.0 + 117 + + + + + -57.799999237060546875 + + + + 18.0 + 117 + + + + + -57.799999237060546875 + + + + 18.0 + 118 + + + + + -58.59999847412109375 + + + + 18.0 + 119 + + + + + -59 + + + + 18.0 + 119 + + + + + -59.799999237060546875 + + + + 18.0 + 119 + + + + + -59.799999237060546875 + + + + 18.0 + 118 + + + + + -59.40000152587890625 + + + + 18.0 + 121 + + + + + -59.59999847412109375 + + + + 18.0 + 118 + + + + + -59.59999847412109375 + + + + 18.0 + 118 + + + + + -60.40000152587890625 + + + + 18.0 + 119 + + + + + -60.59999847412109375 + + + + 18.0 + 115 + + + + + -60.59999847412109375 + + + + 18.0 + 111 + + + + + -60.799999237060546875 + + + + 18.0 + 109 + + + + + -61 + + + + 18.0 + 106 + + + + + -61.799999237060546875 + + + + 18.0 + + + + + -62.200000762939453125 + + + + 18.0 + 104 + + + + + -62.40000152587890625 + + + + 18.0 + 102 + + + + + -62.40000152587890625 + + + + 18.0 + 102 + + + + + -62.799999237060546875 + + + + 18.0 + 102 + + + + + -62.59999847412109375 + + + + 18.0 + 105 + + + + + -62.200000762939453125 + + + + 18.0 + 103 + + + + + -61.40000152587890625 + + + + 18.0 + 102 + + + + + -61 + + + + 18.0 + 105 + + + + + -60.200000762939453125 + + + + 18.0 + 103 + + + + + -60.200000762939453125 + + + + 18.0 + 101 + + + + + -60.200000762939453125 + + + + 18.0 + 104 + + + + + -59.799999237060546875 + + + + 18.0 + 104 + + + + + -59.40000152587890625 + + + + 18.0 + 103 + + + + + -59.200000762939453125 + + + + 18.0 + 103 + + + + + -59 + + + + 18.0 + 102 + + + + + -58.799999237060546875 + + + + 18.0 + 104 + + + + + -58.59999847412109375 + + + + 18.0 + 105 + + + + + -58.40000152587890625 + + + + 18.0 + 104 + + + + + -58.200000762939453125 + + + + 18.0 + 107 + + + + + -58.200000762939453125 + + + + 18.0 + 104 + + + + + -57.40000152587890625 + + + + 18.0 + 102 + + + + + -57 + + + + 18.0 + 105 + + + + + -56.59999847412109375 + + + + 18.0 + 108 + + + + + -56.200000762939453125 + + + + 18.0 + 110 + + + + + -55.59999847412109375 + + + + 18.0 + 112 + + + + + -55 + + + + 18.0 + 114 + + + + + -53.59999847412109375 + + + + 18.0 + 117 + + + + + -53 + + + + 18.0 + 119 + + + + + -53 + + + + 18.0 + 116 + + + + + -52.59999847412109375 + + + + 18.0 + 119 + + + + + -52.200000762939453125 + + + + 18.0 + 121 + + + + + -50.40000152587890625 + + + + 18.0 + 121 + + + + + -49.799999237060546875 + + + + 18.0 + 120 + + + + + -49.40000152587890625 + + + + 18.0 + 120 + + + + + -49.200000762939453125 + + + + 18.0 + 119 + + + + + -49.200000762939453125 + + + + 18.0 + 120 + + + + + -48.799999237060546875 + + + + 18.0 + 122 + + + + + -48.799999237060546875 + + + + 18.0 + 122 + + + + + -49.40000152587890625 + + + + 18.0 + 120 + + + + + -50.799999237060546875 + + + + 18.0 + 121 + + + + + -51.40000152587890625 + + + + 18.0 + 121 + + + + + -51.40000152587890625 + + + + 18.0 + 117 + + + + + -51.200000762939453125 + + + + 18.0 + 116 + + + + + -51 + + + + 18.0 + 117 + + + + + -50.799999237060546875 + + + + 19.0 + 116 + + + + + -50.799999237060546875 + + + + 19.0 + 116 + + + + + -51.40000152587890625 + + + + 19.0 + 117 + + + + + -51.40000152587890625 + + + + 19.0 + 118 + + + + + -51.59999847412109375 + + + + 19.0 + 117 + + + + + -51.799999237060546875 + + + + 19.0 + 116 + + + + + -52 + + + + 19.0 + 118 + + + + + -53 + + + + 19.0 + 114 + + + + + -53.200000762939453125 + + + + 19.0 + 116 + + + + + -53.200000762939453125 + + + + 19.0 + 113 + + + + + -54.200000762939453125 + + + + 19.0 + 114 + + + + + -54.200000762939453125 + + + + 19.0 + 111 + + + + + -54 + + + + 19.0 + 114 + + + + + -53.59999847412109375 + + + + 18.0 + 113 + + + + + -54.200000762939453125 + + + + 18.0 + 112 + + + + + -54.40000152587890625 + + + + 18.0 + 111 + + + + + -54.40000152587890625 + + + + 18.0 + 114 + + + + + -54.59999847412109375 + + + + 18.0 + 110 + + + + + -54.799999237060546875 + + + + 18.0 + 112 + + + + + -55.59999847412109375 + + + + 18.0 + 113 + + + + + -55.799999237060546875 + + + + 18.0 + 112 + + + + + -57 + + + + 18.0 + 111 + + + + + -58.200000762939453125 + + + + 18.0 + 111 + + + + + -58.799999237060546875 + + + + 18.0 + 110 + + + + + -59.40000152587890625 + + + + 18.0 + 109 + + + + + -60 + + + + 18.0 + 114 + + + + + -60.200000762939453125 + + + + 18.0 + 115 + + + + + -60.40000152587890625 + + + + 18.0 + 116 + + + + + -61.59999847412109375 + + + + 18.0 + 116 + + + + + -62 + + + + 18.0 + 116 + + + + + -62.799999237060546875 + + + + 18.0 + 118 + + + + + -64.40000152587890625 + + + + 18.0 + 119 + + + + + -65 + + + + 18.0 + 119 + + + + + -65.59999847412109375 + + + + 18.0 + 120 + + + + + -67 + + + + 18.0 + 121 + + + + + -67.1999969482421875 + + + + 18.0 + 118 + + + + + -68.40000152587890625 + + + + 18.0 + 120 + + + + + -69.40000152587890625 + + + + 18.0 + 123 + + + + + -69.8000030517578125 + + + + 18.0 + 123 + + + + + -69.8000030517578125 + + + + 18.0 + + + + + -69.1999969482421875 + + + + 18.0 + 120 + + + + + -69.1999969482421875 + + + + 18.0 + 120 + + + + + -68.59999847412109375 + + + + 18.0 + 119 + + + + + -68.1999969482421875 + + + + 18.0 + 119 + + + + + -68.1999969482421875 + + + + 18.0 + 121 + + + + + -68 + + + + 18.0 + 125 + + + + + -68 + + + + 18.0 + 129 + + + + + -68 + + + + 19.0 + 133 + + + + + -68 + + + + 19.0 + 139 + + + + + -68.1999969482421875 + + + + 19.0 + 142 + + + + + -68 + + + + 19.0 + 141 + + + + + -67.59999847412109375 + + + + 19.0 + 138 + + + + + -67.59999847412109375 + + + + 19.0 + 137 + + + + + -67.40000152587890625 + + + + 19.0 + 137 + + + + + -67.40000152587890625 + + + + 19.0 + 137 + + + + + -67.59999847412109375 + + + + 19.0 + 135 + + + + + -67.59999847412109375 + + + + 19.0 + 134 + + + + + -67.59999847412109375 + + + + 19.0 + 134 + + + + + -67.8000030517578125 + + + + 19.0 + 135 + + + + + -67.8000030517578125 + + + + 19.0 + 138 + + + + + -67.8000030517578125 + + + + 19.0 + 136 + + + + + -68 + + + + 19.0 + 133 + + + + + -68.59999847412109375 + + + + 19.0 + 136 + + + + + -68.59999847412109375 + + + + 19.0 + 133 + + + + + -68 + + + + 19.0 + 131 + + + + + -68 + + + + 19.0 + 131 + + + + + -69.1999969482421875 + + + + 19.0 + 130 + + + + + -68.59999847412109375 + + + + 19.0 + 130 + + + + + -67.59999847412109375 + + + + 19.0 + 129 + + + + + -67.59999847412109375 + + + + 19.0 + 129 + + + + + -68 + + + + 19.0 + 126 + + + + + -68.59999847412109375 + + + + 19.0 + 128 + + + + + -69.1999969482421875 + + + + 19.0 + 128 + + + + + -68.8000030517578125 + + + + 19.0 + 128 + + + + + -68.59999847412109375 + + + + 19.0 + 127 + + + + + -68.1999969482421875 + + + + 19.0 + 130 + + + + + -67.40000152587890625 + + + + 19.0 + 130 + + + + + -66.59999847412109375 + + + + 19.0 + 128 + + + + + -66.40000152587890625 + + + + 19.0 + 129 + + + + + -66.1999969482421875 + + + + 19.0 + 127 + + + + + -65.59999847412109375 + + + + 19.0 + 129 + + + + + -65.59999847412109375 + + + + 19.0 + 128 + + + + + -65 + + + + 19.0 + 126 + + + + + -64.40000152587890625 + + + + 19.0 + 129 + + + + + -63.799999237060546875 + + + + 19.0 + 129 + + + + + -62.799999237060546875 + + + + 19.0 + 131 + + + + + -62 + + + + 19.0 + 136 + + + + + -61.799999237060546875 + + + + 19.0 + 139 + + + + + -61.59999847412109375 + + + + 19.0 + 140 + + + + + -61.799999237060546875 + + + + 19.0 + 141 + + + + + -61.40000152587890625 + + + + 19.0 + 140 + + + + + -60.59999847412109375 + + + + 19.0 + 139 + + + + + -60.40000152587890625 + + + + 19.0 + 140 + + + + + -59.59999847412109375 + + + + 19.0 + 140 + + + + + -59.200000762939453125 + + + + 19.0 + 141 + + + + + -58.40000152587890625 + + + + 19.0 + 141 + + + + + -58 + + + + 19.0 + 140 + + + + + -57 + + + + 19.0 + 140 + + + + + -56.59999847412109375 + + + + 19.0 + 138 + + + + + -56 + + + + 19.0 + 137 + + + + + -55.59999847412109375 + + + + 19.0 + 139 + + + + + -54.40000152587890625 + + + + 19.0 + 138 + + + + + -54.200000762939453125 + + + + 19.0 + 135 + + + + + -54 + + + + 19.0 + 132 + + + + + -53.40000152587890625 + + + + 19.0 + 131 + + + + + -53.200000762939453125 + + + + 19.0 + 132 + + + + + -52.200000762939453125 + + + + 19.0 + 133 + + + + + -52.200000762939453125 + + + + 19.0 + 133 + + + + + -52.59999847412109375 + + + + 19.0 + 133 + + + + + -52.799999237060546875 + + + + 19.0 + 132 + + + + + -52.799999237060546875 + + + + 19.0 + 133 + + + + + -52.799999237060546875 + + + + 19.0 + 132 + + + + + -52 + + + + 19.0 + 128 + + + + + -51.799999237060546875 + + + + 19.0 + 125 + + + + + -51.200000762939453125 + + + + 19.0 + 122 + + + + + -50.799999237060546875 + + + + 19.0 + 119 + + + + + -50.40000152587890625 + + + + 19.0 + 114 + + + + + -50 + + + + 19.0 + 114 + + + + + -49.799999237060546875 + + + + 19.0 + 114 + + + + + -49.59999847412109375 + + + + 19.0 + 114 + + + + + -48.59999847412109375 + + + + 19.0 + 113 + + + + + -48 + + + + 19.0 + 116 + + + + + -47.59999847412109375 + + + + 19.0 + 117 + + + + + -47.40000152587890625 + + + + 19.0 + 118 + + + + + -46.799999237060546875 + + + + 19.0 + 121 + + + + + -46.40000152587890625 + + + + 19.0 + 123 + + + + + -45.40000152587890625 + + + + 19.0 + 124 + + + + + -45.200000762939453125 + + + + 19.0 + 124 + + + + + -44.200000762939453125 + + + + 19.0 + 126 + + + + + -43.59999847412109375 + + + + 19.0 + 127 + + + + + -43.200000762939453125 + + + + 19.0 + 130 + + + + + -43.200000762939453125 + + + + 19.0 + 131 + + + + + -43.200000762939453125 + + + + 19.0 + 133 + + + + + -44 + + + + 19.0 + 133 + + + + + -44.200000762939453125 + + + + 19.0 + 133 + + + + + -44.59999847412109375 + + + + 19.0 + 133 + + + + + -44.59999847412109375 + + + + 19.0 + 133 + + + + + -44.59999847412109375 + + + + 19.0 + 133 + + + + + -44.799999237060546875 + + + + 19.0 + 133 + + + + + -46.200000762939453125 + + + + 19.0 + 133 + + + + + -47.200000762939453125 + + + + 19.0 + 133 + + + + + -48 + + + + 19.0 + 132 + + + + + -48.59999847412109375 + + + + 19.0 + 132 + + + + + -50.40000152587890625 + + + + 19.0 + 133 + + + + + -51 + + + + 19.0 + 132 + + + + + -51.59999847412109375 + + + + 19.0 + 132 + + + + + -53 + + + + 19.0 + 130 + + + + + -54.59999847412109375 + + + + 19.0 + 132 + + + + + -56 + + + + 19.0 + 131 + + + + + -57.59999847412109375 + + + + 19.0 + 129 + + + + + -58.799999237060546875 + + + + 19.0 + 126 + + + + + -58.59999847412109375 + + + + 18.0 + 119 + + + + + -57.799999237060546875 + + + + 18.0 + 119 + + + + + -56.799999237060546875 + + + + 18.0 + 118 + + + + + -56.40000152587890625 + + + + 18.0 + 117 + + + + + -55.799999237060546875 + + + + 18.0 + 118 + + + + + -55.40000152587890625 + + + + 18.0 + 119 + + + + + -55.40000152587890625 + + + + 18.0 + 118 + + + + + -55.200000762939453125 + + + + 18.0 + 119 + + + + + -54.40000152587890625 + + + + 18.0 + 120 + + + + + -53.799999237060546875 + + + + 18.0 + 121 + + + + + -53.40000152587890625 + + + + 19.0 + 119 + + + + + -53.40000152587890625 + + + + 19.0 + 119 + + + + + -53.200000762939453125 + + + + 19.0 + 119 + + + + + -52.799999237060546875 + + + + 19.0 + 118 + + + + + -52.59999847412109375 + + + + 19.0 + 120 + + + + + -52.40000152587890625 + + + + 19.0 + 120 + + + + + -51.59999847412109375 + + + + 19.0 + 120 + + + + + -51.40000152587890625 + + + + 19.0 + 121 + + + + + -51.40000152587890625 + + + + 19.0 + 124 + + + + + -51.200000762939453125 + + + + 19.0 + 124 + + + + + -50.200000762939453125 + + + + 19.0 + 123 + + + + + -49.59999847412109375 + + + + 19.0 + 123 + + + + + -49.200000762939453125 + + + + 19.0 + 124 + + + + + -48 + + + + 19.0 + 124 + + + + + -47.799999237060546875 + + + + 19.0 + 125 + + + + + -47.40000152587890625 + + + + 19.0 + 122 + + + + + -47.40000152587890625 + + + + 19.0 + 124 + + + + + -47.59999847412109375 + + + + 19.0 + 121 + + + + + -47.799999237060546875 + + + + 19.0 + 121 + + + + + -48.40000152587890625 + + + + 19.0 + 122 + + + + + -49 + + + + 19.0 + 123 + + + + + -49.200000762939453125 + + + + 19.0 + 124 + + + + + -49.40000152587890625 + + + + 19.0 + 122 + + + + + -49.799999237060546875 + + + + 19.0 + 121 + + + + + -50.40000152587890625 + + + + 19.0 + 119 + + + + + -50.799999237060546875 + + + + 19.0 + 120 + + + + + -51.59999847412109375 + + + + 19.0 + 121 + + + + + -51.799999237060546875 + + + + 19.0 + 123 + + + + + -51.40000152587890625 + + + + 19.0 + 123 + + + + + -51.799999237060546875 + + + + 19.0 + 123 + + + + + -52.59999847412109375 + + + + 19.0 + 124 + + + + + -53.200000762939453125 + + + + 19.0 + 122 + + + + + -53.59999847412109375 + + + + 19.0 + 124 + + + + + -53.799999237060546875 + + + + 19.0 + 123 + + + + + -53.799999237060546875 + + + + 19.0 + 124 + + + + + -53.59999847412109375 + + + + 19.0 + 125 + + + + + -53.40000152587890625 + + + + 19.0 + 125 + + + + + -53.200000762939453125 + + + + 18.0 + 124 + + + + + -53.200000762939453125 + + + + 18.0 + 123 + + + + + -53.200000762939453125 + + + + 18.0 + 126 + + + + + -53.200000762939453125 + + + + 18.0 + 129 + + + + + -53.200000762939453125 + + + + 18.0 + 131 + + + + + -53.59999847412109375 + + + + 18.0 + 131 + + + + + -54.59999847412109375 + + + + 18.0 + 131 + + + + + -54.799999237060546875 + + + + 18.0 + 130 + + + + + -55.200000762939453125 + + + + 18.0 + 130 + + + + + -55.200000762939453125 + + + + 18.0 + 130 + + + + + -55.200000762939453125 + + + + 18.0 + 129 + + + + + -55 + + + + 18.0 + 129 + + + + + -54.799999237060546875 + + + + 18.0 + 132 + + + + + -54.799999237060546875 + + + + 18.0 + 132 + + + + + -55.200000762939453125 + + + + 18.0 + 135 + + + + + -55.799999237060546875 + + + + 19.0 + 135 + + + + + -55.799999237060546875 + + + + 19.0 + 137 + + + + + -56 + + + + 19.0 + 139 + + + + + -56 + + + + 19.0 + 138 + + + + + -56.200000762939453125 + + + + 19.0 + 137 + + + + + -56.200000762939453125 + + + + 19.0 + 138 + + + + + -57 + + + + 19.0 + 137 + + + + + -57.200000762939453125 + + + + 19.0 + 138 + + + + + -56.799999237060546875 + + + + 19.0 + 136 + + + + + -56.799999237060546875 + + + + 19.0 + 135 + + + + + -56.799999237060546875 + + + + 19.0 + 138 + + + + + -56.799999237060546875 + + + + 19.0 + 139 + + + + + -55.799999237060546875 + + + + 19.0 + 139 + + + + + -55.40000152587890625 + + + + 19.0 + 138 + + + + + -54.40000152587890625 + + + + 19.0 + 138 + + + + + -53.799999237060546875 + + + + 19.0 + 139 + + + + + -53.799999237060546875 + + + + 19.0 + 142 + + + + + -54 + + + + 19.0 + 140 + + + + + -53.40000152587890625 + + + + 19.0 + 138 + + + + + -52.40000152587890625 + + + + 19.0 + 137 + + + + + -51.40000152587890625 + + + + 19.0 + 138 + + + + + -51.200000762939453125 + + + + 19.0 + 138 + + + + + -51 + + + + 19.0 + 135 + + + + + -50.40000152587890625 + + + + 19.0 + 133 + + + + + -50.200000762939453125 + + + + 19.0 + 133 + + + + + -48.799999237060546875 + + + + 19.0 + 133 + + + + + -48.200000762939453125 + + + + 19.0 + 133 + + + + + -49.40000152587890625 + + + + 19.0 + 131 + + + + + -49.59999847412109375 + + + + 19.0 + 132 + + + + + -49.799999237060546875 + + + + 19.0 + 131 + + + + + -51.200000762939453125 + + + + 19.0 + 133 + + + + + -51.40000152587890625 + + + + 19.0 + 134 + + + + + -51.40000152587890625 + + + + 19.0 + 137 + + + + + -52 + + + + 19.0 + 141 + + + + + -52.59999847412109375 + + + + 19.0 + 142 + + + + + -53.59999847412109375 + + + + 19.0 + 142 + + + + + -55 + + + + 19.0 + + + + + -55.40000152587890625 + + + + 19.0 + + + + + -55.799999237060546875 + + + + 19.0 + 144 + + + + + -56.799999237060546875 + + + + 19.0 + 144 + + + + + -57.799999237060546875 + + + + 19.0 + 144 + + + + + -57.200000762939453125 + + + + 19.0 + 142 + + + + + -57 + + + + 19.0 + 142 + + + + + -57 + + + + 19.0 + 141 + + + + + -57.200000762939453125 + + + + 19.0 + 141 + + + + + -57.40000152587890625 + + + + 19.0 + 142 + + + + + -57.40000152587890625 + + + + 19.0 + 142 + + + + + -57.59999847412109375 + + + + 19.0 + 139 + + + + + -57.40000152587890625 + + + + 19.0 + 140 + + + + + -57.40000152587890625 + + + + 19.0 + 137 + + + + + -57.59999847412109375 + + + + 19.0 + 134 + + + + + -57.59999847412109375 + + + + 19.0 + 133 + + + + + -57.59999847412109375 + + + + 19.0 + 130 + + + + + -57.200000762939453125 + + + + 19.0 + 130 + + + + + -57.200000762939453125 + + + + 19.0 + 127 + + + + + -57 + + + + 20.0 + 126 + + + + + -56.799999237060546875 + + + + 20.0 + 123 + + + + + -56.799999237060546875 + + + + 20.0 + 122 + + + + + -57 + + + + 20.0 + 122 + + + + + -58.40000152587890625 + + + + 20.0 + 121 + + + + + -59 + + + + 20.0 + 121 + + + + + -58.59999847412109375 + + + + 20.0 + 123 + + + + + -58.59999847412109375 + + + + 20.0 + 126 + + + + + -58.40000152587890625 + + + + 20.0 + 127 + + + + + -58.200000762939453125 + + + + 20.0 + 123 + + + + + -58.200000762939453125 + + + + 20.0 + 120 + + + + + -58.200000762939453125 + + + + 20.0 + 119 + + + + + -58.200000762939453125 + + + + 20.0 + 119 + + + + + -58 + + + + 20.0 + 119 + + + + + -57.799999237060546875 + + + + 21.0 + 120 + + + + + -57.799999237060546875 + + + + 21.0 + 123 + + + + + -57.799999237060546875 + + + + 21.0 + 122 + + + + + -58 + + + + 21.0 + 122 + + + + + -58.40000152587890625 + + + + 21.0 + 120 + + + + + -59.40000152587890625 + + + + 21.0 + 120 + + + + + -60.59999847412109375 + + + + 21.0 + 120 + + + + + -61.40000152587890625 + + + + 21.0 + 119 + + + + + -62.200000762939453125 + + + + 21.0 + 119 + + + + + -63.59999847412109375 + + + + 21.0 + 119 + + + + + -65.1999969482421875 + + + + 21.0 + 118 + + + + + -65.8000030517578125 + + + + 21.0 + 118 + + + + + -65.59999847412109375 + + + + 21.0 + 118 + + + + + -64.59999847412109375 + + + + 21.0 + 114 + + + + + -63.799999237060546875 + + + + 20.0 + 112 + + + + + -63.200000762939453125 + + + + 20.0 + 115 + + + + + -63 + + + + 20.0 + 115 + + + + + -62.799999237060546875 + + + + 20.0 + 115 + + + + + -62.799999237060546875 + + + + 20.0 + 115 + + + + + -62.200000762939453125 + + + + 20.0 + 115 + + + + + -61.40000152587890625 + + + + 20.0 + 115 + + + + + -62.59999847412109375 + + + + 20.0 + 114 + + + + + -63.59999847412109375 + + + + 20.0 + 116 + + + + + -64.8000030517578125 + + + + 20.0 + 119 + + + + + -65.40000152587890625 + + + + 20.0 + 120 + + + + + -66.1999969482421875 + + + + 20.0 + 121 + + + + + -67.1999969482421875 + + + + 20.0 + 123 + + + + + -68 + + + + 20.0 + 121 + + + + + -68.59999847412109375 + + + + 20.0 + 121 + + + + + -70.1999969482421875 + + + + 20.0 + 122 + + + + + -72.8000030517578125 + + + + 20.0 + 121 + + + + + -74.59999847412109375 + + + + 20.0 + 122 + + + + + -75.8000030517578125 + + + + 20.0 + 121 + + + + + -77.1999969482421875 + + + + 20.0 + 121 + + + + + -78.1999969482421875 + + + + 20.0 + 120 + + + + + -79.40000152587890625 + + + + 20.0 + 120 + + + + + -80.8000030517578125 + + + + 20.0 + 116 + + + + + -81.40000152587890625 + + + + 20.0 + 115 + + + + + -82.1999969482421875 + + + + 20.0 + 113 + + + + + -82.40000152587890625 + + + + 20.0 + 113 + + + + + -83 + + + + 20.0 + 111 + + + + + -83.1999969482421875 + + + + 20.0 + 110 + + + + + -83.40000152587890625 + + + + 20.0 + 110 + + + + + -83.40000152587890625 + + + + 20.0 + 110 + + + + + -83.40000152587890625 + + + + 20.0 + 109 + + + + + -83.40000152587890625 + + + + 20.0 + 109 + + + + + -83.8000030517578125 + + + + 20.0 + 110 + + + + + -83.8000030517578125 + + + + 20.0 + 108 + + + + + -83.59999847412109375 + + + + 20.0 + 109 + + + + + -83.59999847412109375 + + + + 20.0 + 111 + + + + + -83.1999969482421875 + + + + 20.0 + 111 + + + + + -83 + + + + 20.0 + 110 + + + + + -82.8000030517578125 + + + + 20.0 + 115 + + + + + -82.40000152587890625 + + + + 20.0 + 118 + + + + + -82.1999969482421875 + + + + 20.0 + 119 + + + + + -80.59999847412109375 + + + + 20.0 + 122 + + + + + -79.8000030517578125 + + + + 20.0 + 125 + + + + + -79.59999847412109375 + + + + 20.0 + 126 + + + + + -79 + + + + 20.0 + 126 + + + + + -78.59999847412109375 + + + + 20.0 + 126 + + + + + -79 + + + + 20.0 + 126 + + + + + -79.59999847412109375 + + + + 20.0 + 125 + + + + + -81 + + + + 20.0 + 125 + + + + + -81.8000030517578125 + + + + 20.0 + 126 + + + + + -82.1999969482421875 + + + + 20.0 + 126 + + + + + -83 + + + + 20.0 + 127 + + + + + -83.40000152587890625 + + + + 20.0 + 127 + + + + + -83 + + + + 20.0 + 126 + + + + + -82.1999969482421875 + + + + 20.0 + 126 + + + + + -81.8000030517578125 + + + + 20.0 + 126 + + + + + -81 + + + + 20.0 + 128 + + + + + -80.1999969482421875 + + + + 20.0 + 127 + + + + + -80 + + + + 20.0 + 126 + + + + + -80 + + + + 20.0 + 125 + + + + + -79.8000030517578125 + + + + 20.0 + 126 + + + + + -80 + + + + 20.0 + 126 + + + + + -80.40000152587890625 + + + + 20.0 + 130 + + + + + -79.8000030517578125 + + + + 20.0 + 134 + + + + + -79.1999969482421875 + + + + 20.0 + 135 + + + + + -79 + + + + 20.0 + 133 + + + + + -79 + + + + 20.0 + 129 + + + + + -79 + + + + 20.0 + 126 + + + + + -79 + + + + 20.0 + 123 + + + + + -79.1999969482421875 + + + + 20.0 + 122 + + + + + -79.1999969482421875 + + + + 20.0 + 120 + + + + + -79.1999969482421875 + + + + 20.0 + 119 + + + + + -79.59999847412109375 + + + + 21.0 + 118 + + + + + -80 + + + + 21.0 + 119 + + + + + -80.1999969482421875 + + + + 21.0 + 118 + + + + + -80.59999847412109375 + + + + 21.0 + 115 + + + + + -81 + + + + 21.0 + 118 + + + + + -81.40000152587890625 + + + + 21.0 + 118 + + + + + -82 + + + + 21.0 + 121 + + + + + -82.1999969482421875 + + + + 21.0 + 122 + + + + + -82.40000152587890625 + + + + 21.0 + 123 + + + + + -82.1999969482421875 + + + + 20.0 + 126 + + + + + -82.59999847412109375 + + + + 20.0 + 125 + + + + + -83.40000152587890625 + + + + 20.0 + 123 + + + + + -84.59999847412109375 + + + + 20.0 + 122 + + + + + -85.40000152587890625 + + + + 20.0 + 119 + + + + + -85.59999847412109375 + + + + 20.0 + 117 + + + + + -85.59999847412109375 + + + + 20.0 + 117 + + + + + -86 + + + + 20.0 + 117 + + + + + -86.1999969482421875 + + + + 20.0 + 117 + + + + + -87 + + + + 20.0 + 116 + + + + + -87.1999969482421875 + + + + 20.0 + 118 + + + + + -87.40000152587890625 + + + + 20.0 + 121 + + + + + -86.8000030517578125 + + + + 20.0 + 120 + + + + + -86.40000152587890625 + + + + 20.0 + 122 + + + + + -85.8000030517578125 + + + + 20.0 + 123 + + + + + -85.59999847412109375 + + + + 20.0 + 125 + + + + + -85.40000152587890625 + + + + 20.0 + 126 + + + + + -85 + + + + 20.0 + 129 + + + + + -84.8000030517578125 + + + + 20.0 + 129 + + + + + -85 + + + + 20.0 + 132 + + + + + -84.8000030517578125 + + + + 20.0 + 133 + + + + + -84.8000030517578125 + + + + 20.0 + 135 + + + + + -84.8000030517578125 + + + + 20.0 + 137 + + + + + -84.8000030517578125 + + + + 20.0 + 139 + + + + + -84.8000030517578125 + + + + 20.0 + 142 + + + + + -84.8000030517578125 + + + + 20.0 + 142 + + + + + -84.59999847412109375 + + + + 20.0 + 143 + + + + + -84.40000152587890625 + + + + 20.0 + 144 + + + + + -83.59999847412109375 + + + + 20.0 + 144 + + + + + -83.40000152587890625 + + + + 20.0 + 145 + + + + + -83.8000030517578125 + + + + 20.0 + 145 + + + + + -84 + + + + 20.0 + 144 + + + + + -83.40000152587890625 + + + + 20.0 + 146 + + + + + -83.1999969482421875 + + + + 20.0 + 147 + + + + + -83.1999969482421875 + + + + 20.0 + 148 + + + + + -84.1999969482421875 + + + + 20.0 + 149 + + + + + -84.8000030517578125 + + + + 20.0 + 149 + + + + + -85 + + + + 20.0 + 150 + + + + + -85.1999969482421875 + + + + 20.0 + 148 + + + + + -85.40000152587890625 + + + + 20.0 + 145 + + + + + -85.59999847412109375 + + + + 20.0 + 145 + + + + + -85.1999969482421875 + + + + 20.0 + 144 + + + + + -84.8000030517578125 + + + + 20.0 + 144 + + + + + -84.8000030517578125 + + + + 20.0 + 145 + + + + + -85.59999847412109375 + + + + 20.0 + 144 + + + + + -85.8000030517578125 + + + + 20.0 + 145 + + + + + -85.8000030517578125 + + + + 20.0 + 143 + + + + + -86.59999847412109375 + + + + 20.0 + 145 + + + + + -87 + + + + 20.0 + 145 + + + + + -87.59999847412109375 + + + + 20.0 + 146 + + + + + -88 + + + + 20.0 + 144 + + + + + -88.59999847412109375 + + + + 20.0 + 142 + + + + + -88.59999847412109375 + + + + 19.0 + 141 + + + + + -88.59999847412109375 + + + + 19.0 + 140 + + + + + -88.59999847412109375 + + + + 19.0 + 145 + + + + + -88.59999847412109375 + + + + 19.0 + 145 + + + + + -88.59999847412109375 + + + + 19.0 + 145 + + + + + -88.40000152587890625 + + + + 19.0 + 145 + + + + + -88.40000152587890625 + + + + 19.0 + 142 + + + + + -88.40000152587890625 + + + + 19.0 + 141 + + + + + -88.1999969482421875 + + + + 19.0 + 138 + + + + + -88.1999969482421875 + + + + 19.0 + 137 + + + + + -88 + + + + 19.0 + 137 + + + + + -88 + + + + 19.0 + 137 + + + + + -87.8000030517578125 + + + + 19.0 + 138 + + + + + -88.1999969482421875 + + + + 19.0 + 137 + + + + + -88.1999969482421875 + + + + 19.0 + 137 + + + + + -88 + + + + 19.0 + 140 + + + + + -87.1999969482421875 + + + + 19.0 + 137 + + + + + -87 + + + + 20.0 + 137 + + + + + -86.59999847412109375 + + + + 20.0 + 140 + + + + + -86.59999847412109375 + + + + 20.0 + 137 + + + + + -86.8000030517578125 + + + + 20.0 + 136 + + + + + -86.40000152587890625 + + + + 20.0 + 136 + + + + + -86 + + + + 20.0 + 135 + + + + + -85.8000030517578125 + + + + 20.0 + 134 + + + + + -85.8000030517578125 + + + + 20.0 + 136 + + + + + -85.8000030517578125 + + + + 20.0 + 135 + + + + + -86.1999969482421875 + + + + 20.0 + 132 + + + + + -86.1999969482421875 + + + + 20.0 + 132 + + + + + -86.40000152587890625 + + + + 20.0 + 133 + + + + + -86.1999969482421875 + + + + 21.0 + 133 + + + + + -85.59999847412109375 + + + + 21.0 + 131 + + + + + -85.8000030517578125 + + + + 21.0 + 130 + + + + + -85.8000030517578125 + + + + 21.0 + 131 + + + + + -86 + + + + 21.0 + 131 + + + + + -86 + + + + 21.0 + 131 + + + + + -86 + + + + 21.0 + 131 + + + + + -86.1999969482421875 + + + + 21.0 + 129 + + + + + -86.1999969482421875 + + + + 21.0 + 128 + + + + + -85.59999847412109375 + + + + 21.0 + 130 + + + + + -85.8000030517578125 + + + + 21.0 + 130 + + + + + -86.40000152587890625 + + + + 21.0 + 134 + + + + + -86.8000030517578125 + + + + 21.0 + 133 + + + + + -86.8000030517578125 + + + + 21.0 + 134 + + + + + -86.8000030517578125 + + + + 21.0 + 134 + + + + + -86.40000152587890625 + + + + 21.0 + 134 + + + + + -86.1999969482421875 + + + + 21.0 + 134 + + + + + -86 + + + + 20.0 + 133 + + + + + -85.59999847412109375 + + + + 20.0 + 133 + + + + + -85.59999847412109375 + + + + 20.0 + 128 + + + + + -85.1999969482421875 + + + + 20.0 + 122 + + + + + -85 + + + + 20.0 + 119 + + + + + -85 + + + + 20.0 + 116 + + + + + -85 + + + + 20.0 + 111 + + + + + -84.8000030517578125 + + + + 20.0 + 107 + + + + + -84.8000030517578125 + + + + 20.0 + 104 + + + + + -84.8000030517578125 + + + + 20.0 + 103 + + + + + -85 + + + + 20.0 + 105 + + + + + -85.59999847412109375 + + + + 20.0 + 106 + + + + + -86 + + + + 20.0 + 108 + + + + + -86.59999847412109375 + + + + 20.0 + 108 + + + + + -87 + + + + 20.0 + 108 + + + + + -87 + + + + 20.0 + 107 + + + + + -87.40000152587890625 + + + + 20.0 + 108 + + + + + -86.59999847412109375 + + + + 20.0 + 108 + + + + + -86.8000030517578125 + + + + 20.0 + 110 + + + + + -87.59999847412109375 + + + + 20.0 + 113 + + + + + -88 + + + + 20.0 + 113 + + + + + -87 + + + + 20.0 + 114 + + + + + -86 + + + + 20.0 + 115 + + + + + -85.40000152587890625 + + + + 20.0 + 116 + + + + + -85.1999969482421875 + + + + 20.0 + 119 + + + + + -85 + + + + 20.0 + 118 + + + + + -84.59999847412109375 + + + + 20.0 + 122 + + + + + -84.59999847412109375 + + + + 20.0 + 124 + + + + + -84.40000152587890625 + + + + 20.0 + 128 + + + + + -84 + + + + 20.0 + 132 + + + + + -83.59999847412109375 + + + + 20.0 + 133 + + + + + -83.1999969482421875 + + + + 20.0 + 133 + + + + + -83.1999969482421875 + + + + 20.0 + 133 + + + + + -83.1999969482421875 + + + + 20.0 + 133 + + + + + -83.1999969482421875 + + + + 20.0 + 132 + + + + + -84 + + + + 20.0 + 132 + + + + + -84.40000152587890625 + + + + 20.0 + 131 + + + + + -85.1999969482421875 + + + + 20.0 + 130 + + + + + -86.40000152587890625 + + + + 20.0 + 135 + + + + + -86.8000030517578125 + + + + 20.0 + 136 + + + + + -87 + + + + 20.0 + 137 + + + + + -87.1999969482421875 + + + + 20.0 + 139 + + + + + -87.59999847412109375 + + + + 20.0 + 139 + + + + + -88.59999847412109375 + + + + 20.0 + 140 + + + + + -88.8000030517578125 + + + + 20.0 + 140 + + + + + -87.59999847412109375 + + + + 20.0 + 137 + + + + + -86.59999847412109375 + + + + 20.0 + 139 + + + + + -86.40000152587890625 + + + + 20.0 + 138 + + + + + -85.8000030517578125 + + + + 20.0 + 139 + + + + + -85.59999847412109375 + + + + 20.0 + 138 + + + + + -85.59999847412109375 + + + + 20.0 + 135 + + + + + -85.59999847412109375 + + + + 20.0 + 136 + + + + + -85.40000152587890625 + + + + 20.0 + 135 + + + + + -85.40000152587890625 + + + + 20.0 + 137 + + + + + -85.40000152587890625 + + + + 20.0 + 138 + + + + + -86.59999847412109375 + + + + 20.0 + 139 + + + + + -87.59999847412109375 + + + + 20.0 + 138 + + + + + -88.40000152587890625 + + + + 20.0 + 138 + + + + + -88.59999847412109375 + + + + 20.0 + 138 + + + + + -88.59999847412109375 + + + + 20.0 + 138 + + + + + -88.8000030517578125 + + + + 20.0 + 138 + + + + + -88.59999847412109375 + + + + 20.0 + 138 + + + + + -88.40000152587890625 + + + + 20.0 + 138 + + + + + -89 + + + + 20.0 + 138 + + + + + -88.59999847412109375 + + + + 20.0 + 138 + + + + + -88.59999847412109375 + + + + 20.0 + 138 + + + + + -88.40000152587890625 + + + + 20.0 + 139 + + + + + -88 + + + + 20.0 + 137 + + + + + -87.8000030517578125 + + + + 20.0 + 138 + + + + + -87.8000030517578125 + + + + 20.0 + 138 + + + + + -87.59999847412109375 + + + + 20.0 + 137 + + + + + -87.40000152587890625 + + + + 20.0 + 136 + + + + + -87 + + + + 20.0 + 136 + + + + + -87 + + + + 20.0 + 135 + + + + + -87 + + + + 20.0 + 139 + + + + + -87 + + + + 20.0 + 140 + + + + + -86.8000030517578125 + + + + 20.0 + 145 + + + + + -86.8000030517578125 + + + + 20.0 + 149 + + + + + -86.8000030517578125 + + + + 20.0 + 149 + + + + + -86.8000030517578125 + + + + 20.0 + 149 + + + + + -86.40000152587890625 + + + + 20.0 + 151 + + + + + -86.40000152587890625 + + + + 20.0 + 151 + + + + + -86.1999969482421875 + + + + 20.0 + 152 + + + + + -86.1999969482421875 + + + + 20.0 + 151 + + + + + -86.1999969482421875 + + + + 20.0 + 151 + + + + + -87 + + + + 20.0 + 149 + + + + + -87.1999969482421875 + + + + 20.0 + 148 + + + + + -87.8000030517578125 + + + + 20.0 + 150 + + + + + -87.1999969482421875 + + + + 20.0 + 150 + + + + + -87.1999969482421875 + + + + 20.0 + 151 + + + + + -87.1999969482421875 + + + + 20.0 + 150 + + + + + -87.1999969482421875 + + + + 20.0 + 148 + + + + + -87.59999847412109375 + + + + 20.0 + 148 + + + + + -87.8000030517578125 + + + + 20.0 + 145 + + + + + -88.1999969482421875 + + + + 20.0 + 145 + + + + + -88.8000030517578125 + + + + 20.0 + 145 + + + + + -89 + + + + 20.0 + 147 + + + + + -89.40000152587890625 + + + + 20.0 + 144 + + + + + -89.8000030517578125 + + + + 20.0 + 146 + + + + + -90 + + + + 20.0 + 144 + + + + + -89.1999969482421875 + + + + 20.0 + 145 + + + + + -88.8000030517578125 + + + + 20.0 + 146 + + + + + -88.1999969482421875 + + + + 20.0 + 146 + + + + + -87.59999847412109375 + + + + 20.0 + 144 + + + + + -87.1999969482421875 + + + + 20.0 + 143 + + + + + -86.40000152587890625 + + + + 20.0 + 141 + + + + + -86.40000152587890625 + + + + 20.0 + 140 + + + + + -86.40000152587890625 + + + + 20.0 + 137 + + + + + -86.40000152587890625 + + + + 20.0 + 136 + + + + + -86.1999969482421875 + + + + 20.0 + 135 + + + + + -86 + + + + 20.0 + 135 + + + + + -86 + + + + 20.0 + 134 + + + + + -86 + + + + 20.0 + 134 + + + + + -86 + + + + 20.0 + 133 + + + + + -86.1999969482421875 + + + + 20.0 + 133 + + + + + -86.59999847412109375 + + + + 21.0 + 133 + + + + + -86.59999847412109375 + + + + 21.0 + 133 + + + + + -86.8000030517578125 + + + + 21.0 + 133 + + + + + -86.8000030517578125 + + + + 21.0 + 132 + + + + + -86.8000030517578125 + + + + 21.0 + 131 + + + + + -86.8000030517578125 + + + + 21.0 + 128 + + + + + -86.8000030517578125 + + + + 21.0 + 128 + + + + + -86.1999969482421875 + + + + 21.0 + 127 + + + + + -85.8000030517578125 + + + + 21.0 + 131 + + + + + -85.8000030517578125 + + + + 21.0 + 131 + + + + + -85.8000030517578125 + + + + 21.0 + 134 + + + + + -85.8000030517578125 + + + + 21.0 + 135 + + + + + -86.40000152587890625 + + + + 21.0 + 137 + + + + + -87.40000152587890625 + + + + 21.0 + 138 + + + + + -87.8000030517578125 + + + + 21.0 + 138 + + + + + -88.59999847412109375 + + + + 21.0 + 139 + + + + + -88.8000030517578125 + + + + 21.0 + 140 + + + + + -89.8000030517578125 + + + + 21.0 + 141 + + + + + -90.40000152587890625 + + + + 21.0 + 142 + + + + + -89.40000152587890625 + + + + 21.0 + 143 + + + + + -88.59999847412109375 + + + + 21.0 + 146 + + + + + -88.1999969482421875 + + + + 21.0 + 146 + + + + + -87.59999847412109375 + + + + 21.0 + 147 + + + + + -86.8000030517578125 + + + + 21.0 + 147 + + + + + -86.8000030517578125 + + + + 21.0 + 142 + + + + + -86.59999847412109375 + + + + 21.0 + 140 + + + + + -86.59999847412109375 + + + + 21.0 + 141 + + + + + -86.40000152587890625 + + + + 21.0 + 141 + + + + + -85 + + + + 21.0 + 140 + + + + + -84.1999969482421875 + + + + 21.0 + 138 + + + + + -84 + + + + 21.0 + 139 + + + + + -83.8000030517578125 + + + + 21.0 + 141 + + + + + -83.59999847412109375 + + + + 21.0 + 142 + + + + + -83.8000030517578125 + + + + 21.0 + 140 + + + + + -83.8000030517578125 + + + + 21.0 + 140 + + + + + -84.40000152587890625 + + + + 21.0 + 140 + + + + + -84.40000152587890625 + + + + 21.0 + 139 + + + + + -84.1999969482421875 + + + + 21.0 + 140 + + + + + -84.40000152587890625 + + + + 21.0 + 139 + + + + + -83 + + + + 21.0 + 137 + + + + + -82.8000030517578125 + + + + 21.0 + 138 + + + + + -82.59999847412109375 + + + + 21.0 + 139 + + + + + -82.59999847412109375 + + + + 21.0 + 138 + + + + + -83.1999969482421875 + + + + 21.0 + 139 + + + + + -83.59999847412109375 + + + + 21.0 + 138 + + + + + -83.40000152587890625 + + + + 21.0 + 136 + + + + + -82.40000152587890625 + + + + 21.0 + 135 + + + + + -82.1999969482421875 + + + + 21.0 + 132 + + + + + -82.1999969482421875 + + + + 21.0 + 129 + + + + + -81.8000030517578125 + + + + 21.0 + 127 + + + + + -82 + + + + 21.0 + 126 + + + + + -82 + + + + 21.0 + 125 + + + + + -81.59999847412109375 + + + + 21.0 + 124 + + + + + -81.1999969482421875 + + + + 21.0 + 126 + + + + + -81.59999847412109375 + + + + 21.0 + 126 + + + + + -81 + + + + 21.0 + 125 + + + + + -81.40000152587890625 + + + + 21.0 + 122 + + + + + -81.40000152587890625 + + + + 21.0 + 119 + + + + + -81.1999969482421875 + + + + 21.0 + 117 + + + + + -80.8000030517578125 + + + + 21.0 + 117 + + + + + -80.8000030517578125 + + + + 21.0 + 114 + + + + + -81 + + + + 21.0 + 111 + + + + + -81.8000030517578125 + + + + 21.0 + 111 + + + + + -81.59999847412109375 + + + + 21.0 + 112 + + + + + -81.8000030517578125 + + + + 21.0 + 110 + + + + + -81.59999847412109375 + + + + 21.0 + 110 + + + + + -81.40000152587890625 + + + + 21.0 + 108 + + + + + -80.59999847412109375 + + + + 21.0 + 108 + + + + + -81 + + + + 21.0 + 109 + + + + + -80.8000030517578125 + + + + 21.0 + 107 + + + + + -80.59999847412109375 + + + + 21.0 + 110 + + + + + -81.59999847412109375 + + + + 21.0 + 107 + + + + + -81.59999847412109375 + + + + 21.0 + 107 + + + + + -81.8000030517578125 + + + + 21.0 + 107 + + + + + -82.1999969482421875 + + + + 21.0 + 110 + + + + + -82.40000152587890625 + + + + 21.0 + 112 + + + + + -82.40000152587890625 + + + + 21.0 + 116 + + + + + -82.59999847412109375 + + + + 21.0 + 119 + + + + + -82.40000152587890625 + + + + 21.0 + 122 + + + + + -83 + + + + 21.0 + 124 + + + + + -83.59999847412109375 + + + + 21.0 + 125 + + + + + -83.8000030517578125 + + + + 21.0 + 125 + + + + + -84 + + + + 21.0 + 125 + + + + + -83.8000030517578125 + + + + 21.0 + 125 + + + + + -83.8000030517578125 + + + + 21.0 + 124 + + + + + -83.40000152587890625 + + + + 21.0 + 124 + + + + + -83.40000152587890625 + + + + 21.0 + 124 + + + + + -83.8000030517578125 + + + + 21.0 + 123 + + + + + -84 + + + + 21.0 + 123 + + + + + -84.1999969482421875 + + + + 21.0 + 123 + + + + + -84.40000152587890625 + + + + 21.0 + 123 + + + + + -84.59999847412109375 + + + + 21.0 + 125 + + + + + -84 + + + + 21.0 + 125 + + + + + -83.8000030517578125 + + + + 21.0 + 125 + + + + + -83.8000030517578125 + + + + 21.0 + 128 + + + + + -83.59999847412109375 + + + + 21.0 + 125 + + + + + -83.59999847412109375 + + + + 21.0 + 126 + + + + + -83.8000030517578125 + + + + 21.0 + 126 + + + + + -83.59999847412109375 + + + + 21.0 + 126 + + + + + -83 + + + + 21.0 + 127 + + + + + -83.59999847412109375 + + + + 21.0 + 127 + + + + + -84 + + + + 21.0 + 126 + + + + + -84.59999847412109375 + + + + 21.0 + 127 + + + + + -84.8000030517578125 + + + + 21.0 + 125 + + + + + -84.8000030517578125 + + + + 21.0 + 125 + + + + + -85 + + + + 21.0 + 124 + + + + + -85.1999969482421875 + + + + 21.0 + 124 + + + + + -85.1999969482421875 + + + + 21.0 + 124 + + + + + -84.40000152587890625 + + + + 21.0 + 125 + + + + + -84.40000152587890625 + + + + 21.0 + 126 + + + + + -85.40000152587890625 + + + + 21.0 + 127 + + + + + -84.8000030517578125 + + + + 21.0 + 128 + + + + + -84.59999847412109375 + + + + 21.0 + 128 + + + + + -84.40000152587890625 + + + + 21.0 + 129 + + + + + -84.59999847412109375 + + + + 21.0 + 130 + + + + + -85 + + + + 21.0 + 130 + + + + + -85 + + + + 21.0 + 130 + + + + + -85 + + + + 21.0 + 129 + + + + + -85.40000152587890625 + + + + 21.0 + 129 + + + + + -85.59999847412109375 + + + + 21.0 + 128 + + + + + -86.8000030517578125 + + + + 21.0 + 128 + + + + + -87.40000152587890625 + + + + 21.0 + 128 + + + + + -88 + + + + 21.0 + 129 + + + + + -88 + + + + 21.0 + 129 + + + + + -87.8000030517578125 + + + + 21.0 + 129 + + + + + -86.8000030517578125 + + + + 21.0 + 129 + + + + + -86.59999847412109375 + + + + 21.0 + 127 + + + + + -86.40000152587890625 + + + + 21.0 + 127 + + + + + -86.8000030517578125 + + + + 21.0 + 128 + + + + + -87.8000030517578125 + + + + 21.0 + 128 + + + + + -87.40000152587890625 + + + + 21.0 + 130 + + + + + -87.1999969482421875 + + + + 21.0 + 132 + + + + + -87 + + + + 21.0 + 132 + + + + + -86.40000152587890625 + + + + 21.0 + 132 + + + + + -86.59999847412109375 + + + + 21.0 + 133 + + + + + -87.59999847412109375 + + + + 21.0 + 136 + + + + + -87.59999847412109375 + + + + 21.0 + 137 + + + + + -88 + + + + 21.0 + 137 + + + + + -87.59999847412109375 + + + + 21.0 + 135 + + + + + -87.40000152587890625 + + + + 21.0 + 135 + + + + + -87.8000030517578125 + + + + 21.0 + 135 + + + + + -87.8000030517578125 + + + + 21.0 + 138 + + + + + -87.1999969482421875 + + + + 21.0 + 139 + + + + + -86.8000030517578125 + + + + 21.0 + 140 + + + + + -86.59999847412109375 + + + + 21.0 + 140 + + + + + -86.40000152587890625 + + + + 21.0 + 137 + + + + + -86.40000152587890625 + + + + 21.0 + 136 + + + + + -86.1999969482421875 + + + + 21.0 + 139 + + + + + -85.8000030517578125 + + + + 21.0 + 140 + + + + + -85.8000030517578125 + + + + 21.0 + 145 + + + + + -85.8000030517578125 + + + + 21.0 + 145 + + + + + -85.8000030517578125 + + + + 21.0 + 146 + + + + + -85.59999847412109375 + + + + 21.0 + 143 + + + + + -85.40000152587890625 + + + + 21.0 + 143 + + + + + -85.40000152587890625 + + + + 21.0 + 144 + + + + + -85.40000152587890625 + + + + 21.0 + 143 + + + + + -85.59999847412109375 + + + + 21.0 + 144 + + + + + -85.59999847412109375 + + + + 21.0 + 145 + + + + + -85.8000030517578125 + + + + 21.0 + 145 + + + + + -85.8000030517578125 + + + + 21.0 + 146 + + + + + -85.40000152587890625 + + + + 21.0 + 147 + + + + + -85.1999969482421875 + + + + 21.0 + 147 + + + + + -84.59999847412109375 + + + + 21.0 + 148 + + + + + -84.1999969482421875 + + + + 21.0 + 148 + + + + + -84.40000152587890625 + + + + 21.0 + 146 + + + + + -84.59999847412109375 + + + + 21.0 + 146 + + + + + -84.8000030517578125 + + + + 21.0 + 146 + + + + + -84.8000030517578125 + + + + 21.0 + 146 + + + + + -84.8000030517578125 + + + + 21.0 + 146 + + + + + -84.8000030517578125 + + + + 21.0 + 145 + + + + + -85 + + + + 21.0 + 145 + + + + + -85 + + + + 21.0 + 144 + + + + + -85.1999969482421875 + + + + 21.0 + 143 + + + + + -85.59999847412109375 + + + + 21.0 + 142 + + + + + -85.40000152587890625 + + + + 21.0 + 143 + + + + + -85.1999969482421875 + + + + 21.0 + 142 + + + + + -84 + + + + 21.0 + 142 + + + + + -83.40000152587890625 + + + + 21.0 + 141 + + + + + -82.40000152587890625 + + + + 21.0 + 141 + + + + + -81.8000030517578125 + + + + 21.0 + 142 + + + + + -81.8000030517578125 + + + + 21.0 + 139 + + + + + -81.1999969482421875 + + + + 21.0 + 139 + + + + + -82 + + + + 21.0 + 138 + + + + + -82.40000152587890625 + + + + 21.0 + 137 + + + + + -82.59999847412109375 + + + + 21.0 + 141 + + + + + -84 + + + + 21.0 + 142 + + + + + -85.1999969482421875 + + + + 21.0 + 143 + + + + + -86.1999969482421875 + + + + 21.0 + 146 + + + + + -85.8000030517578125 + + + + 22.0 + 143 + + + + + -86.1999969482421875 + + + + 22.0 + 145 + + + + + -86.1999969482421875 + + + + 22.0 + 147 + + + + + -86.1999969482421875 + + + + 22.0 + 150 + + + + + -85.8000030517578125 + + + + 22.0 + 147 + + + + + -85.59999847412109375 + + + + 22.0 + 148 + + + + + -85.59999847412109375 + + + + 22.0 + 145 + + + + + -85 + + + + 22.0 + 145 + + + + + -84.59999847412109375 + + + + 22.0 + 145 + + + + + -83.8000030517578125 + + + + 22.0 + 146 + + + + + -83.59999847412109375 + + + + 22.0 + 150 + + + + + -83.59999847412109375 + + + + 22.0 + 151 + + + + + -83.1999969482421875 + + + + 22.0 + 154 + + + + + -83 + + + + 22.0 + 154 + + + + + -82.8000030517578125 + + + + 22.0 + 154 + + + + + -82.8000030517578125 + + + + 22.0 + 155 + + + + + -83.1999969482421875 + + + + 22.0 + 156 + + + + + -83.8000030517578125 + + + + 22.0 + 156 + + + + + -84.1999969482421875 + + + + 22.0 + 156 + + + + + -83.40000152587890625 + + + + 22.0 + 155 + + + + + -83.59999847412109375 + + + + 22.0 + 152 + + + + + -83.59999847412109375 + + + + 22.0 + 152 + + + + + -83.59999847412109375 + + + + 22.0 + 150 + + + + + -83.59999847412109375 + + + + 22.0 + 150 + + + + + -83.59999847412109375 + + + + 22.0 + 149 + + + + + -83.1999969482421875 + + + + 22.0 + 147 + + + + + -82.8000030517578125 + + + + 22.0 + 147 + + + + + -81.59999847412109375 + + + + 22.0 + 146 + + + + + -81 + + + + 22.0 + 146 + + + + + -80.59999847412109375 + + + + 22.0 + 145 + + + + + -80.59999847412109375 + + + + 22.0 + 145 + + + + + -80.59999847412109375 + + + + 22.0 + 145 + + + + + -80 + + + + 22.0 + 147 + + + + + -79.40000152587890625 + + + + 22.0 + 147 + + + + + -78.40000152587890625 + + + + 22.0 + 146 + + + + + -78.59999847412109375 + + + + 22.0 + 146 + + + + + -80.1999969482421875 + + + + 22.0 + 144 + + + + + -80.59999847412109375 + + + + 22.0 + 143 + + + + + -81.1999969482421875 + + + + 22.0 + 140 + + + + + -81.8000030517578125 + + + + 22.0 + 139 + + + + + -82.59999847412109375 + + + + 22.0 + 138 + + + + + -83.1999969482421875 + + + + 22.0 + 137 + + + + + -83.1999969482421875 + + + + 22.0 + 137 + + + + + -84 + + + + 22.0 + 136 + + + + + -84.1999969482421875 + + + + 22.0 + 136 + + + + + -84.59999847412109375 + + + + 22.0 + 135 + + + + + -85 + + + + 22.0 + 136 + + + + + -85 + + + + 22.0 + 137 + + + + + -85 + + + + 22.0 + 140 + + + + + -84.8000030517578125 + + + + 22.0 + 141 + + + + + -85 + + + + 22.0 + 144 + + + + + -84.8000030517578125 + + + + 22.0 + 140 + + + + + -84.59999847412109375 + + + + 22.0 + 141 + + + + + -85.40000152587890625 + + + + 22.0 + 137 + + + + + -85.40000152587890625 + + + + 22.0 + 132 + + + + + -84.1999969482421875 + + + + 22.0 + 131 + + + + + -84 + + + + 22.0 + 131 + + + + + -84 + + + + 22.0 + 131 + + + + + -84 + + + + 22.0 + 132 + + + + + -84 + + + + 22.0 + 134 + + + + + -84 + + + + 22.0 + 135 + + + + + -85.40000152587890625 + + + + 22.0 + 135 + + + + + -85.40000152587890625 + + + + 22.0 + 135 + + + + + -84.40000152587890625 + + + + 22.0 + 138 + + + + + -84.1999969482421875 + + + + 22.0 + 138 + + + + + -83.8000030517578125 + + + + 22.0 + 137 + + + + + -83.1999969482421875 + + + + 22.0 + 136 + + + + + -82.8000030517578125 + + + + 22.0 + 137 + + + + + -82.8000030517578125 + + + + 22.0 + 137 + + + + + -82.8000030517578125 + + + + 22.0 + 137 + + + + + -83 + + + + 22.0 + 137 + + + + + -82.8000030517578125 + + + + 22.0 + 140 + + + + + -82.8000030517578125 + + + + 22.0 + 143 + + + + + -82.59999847412109375 + + + + 22.0 + 141 + + + + + -82.1999969482421875 + + + + 22.0 + 141 + + + + + -81.59999847412109375 + + + + 22.0 + 144 + + + + + -81.1999969482421875 + + + + 22.0 + 144 + + + + + -80 + + + + 22.0 + 143 + + + + + -78.8000030517578125 + + + + 22.0 + 141 + + + + + -77.59999847412109375 + + + + 22.0 + 140 + + + + + -76.8000030517578125 + + + + 22.0 + 140 + + + + + -76.59999847412109375 + + + + 22.0 + 139 + + + + + -76.40000152587890625 + + + + 22.0 + 139 + + + + + -76 + + + + 22.0 + 138 + + + + + -75.59999847412109375 + + + + 22.0 + 137 + + + + + -75.40000152587890625 + + + + 22.0 + 136 + + + + + -74.59999847412109375 + + + + 22.0 + 137 + + + + + -74.40000152587890625 + + + + 22.0 + 137 + + + + + -73.8000030517578125 + + + + 22.0 + 137 + + + + + -73.1999969482421875 + + + + 22.0 + 137 + + + + + -72 + + + + 22.0 + 136 + + + + + -71.59999847412109375 + + + + 22.0 + 136 + + + + + -71 + + + + 22.0 + 136 + + + + + -69.59999847412109375 + + + + 22.0 + 134 + + + + + -69.1999969482421875 + + + + 22.0 + 134 + + + + + -68.59999847412109375 + + + + 22.0 + 136 + + + + + -68 + + + + 22.0 + 136 + + + + + -67.40000152587890625 + + + + 22.0 + 134 + + + + + -67.40000152587890625 + + + + 22.0 + 135 + + + + + -66.59999847412109375 + + + + 22.0 + 132 + + + + + -66.40000152587890625 + + + + 22.0 + 132 + + + + + -66.40000152587890625 + + + + 22.0 + 133 + + + + + -65.40000152587890625 + + + + 22.0 + 132 + + + + + -64.40000152587890625 + + + + 22.0 + 133 + + + + + -63.59999847412109375 + + + + 22.0 + 133 + + + + + -63 + + + + 22.0 + 133 + + + + + -62.799999237060546875 + + + + 22.0 + 126 + + + + + -62.59999847412109375 + + + + 22.0 + 126 + + + + + -62.40000152587890625 + + + + 22.0 + 127 + + + + + -62.59999847412109375 + + + + 22.0 + 128 + + + + + -63 + + + + 22.0 + 126 + + + + + -63.200000762939453125 + + + + 22.0 + 129 + + + + + -63.200000762939453125 + + + + 22.0 + 131 + + + + + -63.200000762939453125 + + + + 22.0 + 130 + + + + + -62.799999237060546875 + + + + 22.0 + 129 + + + + + -62.200000762939453125 + + + + 22.0 + 128 + + + + + -62 + + + + 22.0 + 130 + + + + + -61.200000762939453125 + + + + 22.0 + 127 + + + + + -61 + + + + 22.0 + 129 + + + + + -61 + + + + 22.0 + 129 + + + + + -61 + + + + 22.0 + 130 + + + + + -60.59999847412109375 + + + + 22.0 + 130 + + + + + -60 + + + + 22.0 + 132 + + + + + -59.59999847412109375 + + + + 22.0 + 132 + + + + + -59.40000152587890625 + + + + 22.0 + 130 + + + + + -58.40000152587890625 + + + + 22.0 + 129 + + + + + -58.200000762939453125 + + + + 22.0 + 128 + + + + + -57.40000152587890625 + + + + 22.0 + 129 + + + + + -56 + + + + 22.0 + 128 + + + + + -54.799999237060546875 + + + + 22.0 + 128 + + + + + -54.799999237060546875 + + + + 22.0 + 130 + + + + + -54.799999237060546875 + + + + 22.0 + 131 + + + + + -54.59999847412109375 + + + + 22.0 + 131 + + + + + -54.200000762939453125 + + + + 22.0 + 131 + + + + + -55.799999237060546875 + + + + 22.0 + 128 + + + + + -54.59999847412109375 + + + + 22.0 + 128 + + + + + -53.59999847412109375 + + + + 22.0 + 131 + + + + + -53.59999847412109375 + + + + 22.0 + 131 + + + + + -53 + + + + 22.0 + 134 + + + + + -52.799999237060546875 + + + + 22.0 + 138 + + + + + -52.59999847412109375 + + + + 22.0 + 141 + + + + + -52.59999847412109375 + + + + 22.0 + 142 + + + + + -52.59999847412109375 + + + + 22.0 + 143 + + + + + -52.59999847412109375 + + + + 22.0 + 145 + + + + + -52.200000762939453125 + + + + 22.0 + 144 + + + + + -51.799999237060546875 + + + + 22.0 + 143 + + + + + -51.200000762939453125 + + + + 22.0 + 141 + + + + + -51.200000762939453125 + + + + 22.0 + 140 + + + + + -52.200000762939453125 + + + + 22.0 + 140 + + + + + -53 + + + + 22.0 + 140 + + + + + -53.40000152587890625 + + + + 22.0 + 139 + + + + + -53.59999847412109375 + + + + 22.0 + 140 + + + + + -53.40000152587890625 + + + + 22.0 + 141 + + + + + -53.200000762939453125 + + + + 22.0 + 142 + + + + + -53.40000152587890625 + + + + 22.0 + 140 + + + + + -53.40000152587890625 + + + + 22.0 + 137 + + + + + -53.40000152587890625 + + + + 22.0 + 133 + + + + + -53.200000762939453125 + + + + 22.0 + 130 + + + + + -53 + + + + 22.0 + 129 + + + + + -52.799999237060546875 + + + + 22.0 + 129 + + + + + -52.59999847412109375 + + + + 22.0 + 129 + + + + + -52.59999847412109375 + + + + 22.0 + 130 + + + + + -52.40000152587890625 + + + + 22.0 + 130 + + + + + -52.200000762939453125 + + + + 22.0 + 130 + + + + + -52.200000762939453125 + + + + 22.0 + 130 + + + + + -52.40000152587890625 + + + + 22.0 + 130 + + + + + -52.59999847412109375 + + + + 22.0 + 130 + + + + + -53.40000152587890625 + + + + 22.0 + 132 + + + + + -54 + + + + 22.0 + 132 + + + + + -54.59999847412109375 + + + + 22.0 + 132 + + + + + -55.59999847412109375 + + + + 22.0 + 132 + + + + + -56.40000152587890625 + + + + 22.0 + 132 + + + + + -57.40000152587890625 + + + + 22.0 + 133 + + + + + -57.40000152587890625 + + + + 22.0 + 133 + + + + + -57 + + + + 22.0 + 130 + + + + + -57 + + + + 22.0 + 129 + + + + + -57 + + + + 22.0 + 128 + + + + + -57 + + + + 22.0 + 126 + + + + + -58 + + + + 22.0 + 124 + + + + + -59.40000152587890625 + + + + 22.0 + 123 + + + + + -60.799999237060546875 + + + + 22.0 + 123 + + + + + -62 + + + + 22.0 + 123 + + + + + -62.200000762939453125 + + + + 22.0 + 123 + + + + + -61.59999847412109375 + + + + 22.0 + 125 + + + + + -61 + + + + 22.0 + 123 + + + + + -60.799999237060546875 + + + + 22.0 + 122 + + + + + -60.40000152587890625 + + + + 22.0 + 121 + + + + + -60.200000762939453125 + + + + 22.0 + 120 + + + + + -60 + + + + 22.0 + 119 + + + + + -59.799999237060546875 + + + + 22.0 + 119 + + + + + -59.799999237060546875 + + + + 22.0 + 119 + + + + + -59.59999847412109375 + + + + 22.0 + 118 + + + + + -59.40000152587890625 + + + + 22.0 + 118 + + + + + -59 + + + + 22.0 + 118 + + + + + -58.799999237060546875 + + + + 22.0 + 118 + + + + + -58.59999847412109375 + + + + 22.0 + 119 + + + + + -58.59999847412109375 + + + + 22.0 + 120 + + + + + -58.40000152587890625 + + + + 22.0 + 124 + + + + + -58.40000152587890625 + + + + 22.0 + 127 + + + + + -58.200000762939453125 + + + + 22.0 + 127 + + + + + -58 + + + + 22.0 + 130 + + + + + -57.799999237060546875 + + + + 22.0 + 133 + + + + + -57.799999237060546875 + + + + 22.0 + 134 + + + + + -57.799999237060546875 + + + + 22.0 + 134 + + + + + -57.799999237060546875 + + + + 22.0 + 135 + + + + + -57.40000152587890625 + + + + 22.0 + 135 + + + + + -55.799999237060546875 + + + + 22.0 + 135 + + + + + -55.40000152587890625 + + + + 22.0 + 136 + + + + + -55.59999847412109375 + + + + 22.0 + 134 + + + + + -56.40000152587890625 + + + + 22.0 + 131 + + + + + -56.200000762939453125 + + + + 22.0 + 131 + + + + + -56.200000762939453125 + + + + 22.0 + 131 + + + + + -55.200000762939453125 + + + + 22.0 + 134 + + + + + -54.59999847412109375 + + + + 22.0 + 136 + + + + + -53.59999847412109375 + + + + 22.0 + 137 + + + + + -53.40000152587890625 + + + + 22.0 + 139 + + + + + -52.59999847412109375 + + + + 22.0 + 139 + + + + + -52.200000762939453125 + + + + 22.0 + 142 + + + + + -51 + + + + 22.0 + 145 + + + + + -49.799999237060546875 + + + + 22.0 + 147 + + + + + -49.40000152587890625 + + + + 22.0 + 147 + + + + + -48.799999237060546875 + + + + 22.0 + 146 + + + + + -48.200000762939453125 + + + + 22.0 + 146 + + + + + -48 + + + + 22.0 + 149 + + + + + -48 + + + + 22.0 + 151 + + + + + -48.40000152587890625 + + + + 23.0 + 154 + + + + + -50.200000762939453125 + + + + 23.0 + 153 + + + + + -50.59999847412109375 + + + + 23.0 + 150 + + + + + -51.59999847412109375 + + + + 23.0 + 152 + + + + + -52.200000762939453125 + + + + 23.0 + 150 + + + + + -52.799999237060546875 + + + + 23.0 + 151 + + + + + -54.200000762939453125 + + + + 23.0 + + + + + -55.40000152587890625 + + + + 23.0 + 149 + + + + + -56.799999237060546875 + + + + 23.0 + 148 + + + + + -57.59999847412109375 + + + + 23.0 + 148 + + + + + -58.200000762939453125 + + + + 23.0 + 147 + + + + + -59.200000762939453125 + + + + 23.0 + 146 + + + + + -60.59999847412109375 + + + + 23.0 + 144 + + + + + -61 + + + + 23.0 + 146 + + + + + -61.799999237060546875 + + + + 22.0 + 148 + + + + + -62.59999847412109375 + + + + 22.0 + 149 + + + + + -62.799999237060546875 + + + + 22.0 + 149 + + + + + -64 + + + + 22.0 + 149 + + + + + -65.59999847412109375 + + + + 22.0 + 149 + + + + + -66.40000152587890625 + + + + 22.0 + 148 + + + + + -66.8000030517578125 + + + + 22.0 + 147 + + + + + -67.1999969482421875 + + + + 22.0 + + + + + -67.59999847412109375 + + + + 22.0 + 146 + + + + + -68 + + + + 22.0 + 146 + + + + + -69.1999969482421875 + + + + 22.0 + 146 + + + + + -69.40000152587890625 + + + + 22.0 + 144 + + + + + -69.59999847412109375 + + + + 22.0 + 145 + + + + + -69.8000030517578125 + + + + 22.0 + 144 + + + + + -69.40000152587890625 + + + + 22.0 + 145 + + + + + -69.1999969482421875 + + + + 22.0 + 145 + + + + + -69.8000030517578125 + + + + 22.0 + 146 + + + + + -70.1999969482421875 + + + + 22.0 + 148 + + + + + -70.59999847412109375 + + + + 22.0 + 147 + + + + + -70.8000030517578125 + + + + 22.0 + 145 + + + + + -69 + + + + 22.0 + 144 + + + + + -68.8000030517578125 + + + + 22.0 + 143 + + + + + -68.8000030517578125 + + + + 22.0 + 142 + + + + + -67.8000030517578125 + + + + 22.0 + 140 + + + + + -66.8000030517578125 + + + + 22.0 + 141 + + + + + -66.1999969482421875 + + + + 22.0 + 140 + + + + + -66.40000152587890625 + + + + 22.0 + 139 + + + + + -66.59999847412109375 + + + + 22.0 + 137 + + + + + -66.8000030517578125 + + + + 22.0 + 139 + + + + + -65.59999847412109375 + + + + 22.0 + 139 + + + + + -64.59999847412109375 + + + + 22.0 + 142 + + + + + -64.59999847412109375 + + + + 22.0 + 142 + + + + + -64 + + + + 22.0 + 141 + + + + + -63.799999237060546875 + + + + 22.0 + 144 + + + + + -63.59999847412109375 + + + + 22.0 + 148 + + + + + -63.40000152587890625 + + + + 22.0 + 150 + + + + + -63.40000152587890625 + + + + 22.0 + 150 + + + + + -63 + + + + 22.0 + 151 + + + + + -63.40000152587890625 + + + + 22.0 + 152 + + + + + -62.799999237060546875 + + + + 22.0 + 149 + + + + + -62.200000762939453125 + + + + 22.0 + 148 + + + + + -61.59999847412109375 + + + + 22.0 + 145 + + + + + -61.59999847412109375 + + + + 22.0 + 145 + + + + + -61.200000762939453125 + + + + 22.0 + 147 + + + + + -61 + + + + 22.0 + 146 + + + + + -60.799999237060546875 + + + + 22.0 + 146 + + + + + -60.40000152587890625 + + + + 22.0 + 144 + + + + + -60.59999847412109375 + + + + 22.0 + 144 + + + + + -60.59999847412109375 + + + + 22.0 + 144 + + + + + -59.799999237060546875 + + + + 22.0 + 143 + + + + + -59 + + + + 22.0 + 143 + + + + + -58.59999847412109375 + + + + 22.0 + 143 + + + + + -57.40000152587890625 + + + + 22.0 + 143 + + + + + -57.200000762939453125 + + + + 22.0 + 143 + + + + + -56.200000762939453125 + + + + 22.0 + 142 + + + + + -56 + + + + 22.0 + 140 + + + + + -55.200000762939453125 + + + + 22.0 + 141 + + + + + -53.799999237060546875 + + + + 22.0 + 142 + + + + + -52.799999237060546875 + + + + 22.0 + 141 + + + + + -52.40000152587890625 + + + + 22.0 + 138 + + + + + -52 + + + + 22.0 + 138 + + + + + -51.59999847412109375 + + + + 22.0 + 138 + + + + + -50.59999847412109375 + + + + 22.0 + 140 + + + + + -50.200000762939453125 + + + + 22.0 + 137 + + + + + -50 + + + + 22.0 + 138 + + + + + -49.40000152587890625 + + + + 22.0 + 136 + + + + + -49.200000762939453125 + + + + 22.0 + 137 + + + + + -49.200000762939453125 + + + + 22.0 + 136 + + + + + -48.200000762939453125 + + + + 22.0 + 135 + + + + + -47.59999847412109375 + + + + 22.0 + 134 + + + + + -47 + + + + 22.0 + 137 + + + + + -46.59999847412109375 + + + + 22.0 + 142 + + + + + -46.40000152587890625 + + + + 22.0 + 142 + + + + + -45.799999237060546875 + + + + 22.0 + 142 + + + + + -45.59999847412109375 + + + + 22.0 + 139 + + + + + -45.799999237060546875 + + + + 22.0 + 133 + + + + + -46.40000152587890625 + + + + 22.0 + 129 + + + + + -47 + + + + 22.0 + 128 + + + + + -47.200000762939453125 + + + + 22.0 + 128 + + + + + -47.40000152587890625 + + + + 22.0 + 128 + + + + + -47.59999847412109375 + + + + 22.0 + 129 + + + + + -47.799999237060546875 + + + + 22.0 + 127 + + + + + -48.200000762939453125 + + + + 22.0 + 127 + + + + + -48.200000762939453125 + + + + 22.0 + 125 + + + + + -48 + + + + 22.0 + 125 + + + + + -48.200000762939453125 + + + + 22.0 + 127 + + + + + -48.59999847412109375 + + + + 23.0 + 133 + + + + + -48.799999237060546875 + + + + 23.0 + 136 + + + + + -48.799999237060546875 + + + + 23.0 + 141 + + + + + -49 + + + + 23.0 + 146 + + + + + -49 + + + + 23.0 + 150 + + + + + -49 + + + + 23.0 + 156 + + + + + -49.200000762939453125 + + + + 23.0 + 160 + + + + + -49.40000152587890625 + + + + 23.0 + 165 + + + + + -49.40000152587890625 + + + + 23.0 + 166 + + + + + -49.40000152587890625 + + + + 23.0 + 166 + + + + + -49 + + + + 23.0 + 163 + + + + + -48.59999847412109375 + + + + 23.0 + 163 + + + + + -48 + + + + 23.0 + 163 + + + + + -46.59999847412109375 + + + + 23.0 + 161 + + + + + -46.200000762939453125 + + + + 23.0 + 158 + + + + + -45.59999847412109375 + + + + 23.0 + 157 + + + + + -44.59999847412109375 + + + + 23.0 + 160 + + + + + -44.200000762939453125 + + + + 23.0 + 162 + + + + + -43.799999237060546875 + + + + 23.0 + 163 + + + + + -43.200000762939453125 + + + + 23.0 + 162 + + + + + -42.40000152587890625 + + + + 23.0 + 154 + + + + + -42.200000762939453125 + + + + 23.0 + 153 + + + + + -40.799999237060546875 + + + + 23.0 + 151 + + + + + -40.200000762939453125 + + + + 23.0 + 150 + + + + + -40 + + + + 23.0 + 149 + + + + + -39.799999237060546875 + + + + 23.0 + 148 + + + + + -39.200000762939453125 + + + + 23.0 + 148 + + + + + -39.200000762939453125 + + + + 23.0 + 148 + + + + + -39 + + + + 23.0 + 148 + + + + + -38.799999237060546875 + + + + 23.0 + 147 + + + + + -38.59999847412109375 + + + + 23.0 + 147 + + + + + -38.59999847412109375 + + + + 23.0 + 146 + + + + + -38.40000152587890625 + + + + 23.0 + 147 + + + + + -38 + + + + 23.0 + 149 + + + + + -37.799999237060546875 + + + + 23.0 + 150 + + + + + -37.59999847412109375 + + + + 23.0 + 150 + + + + + -37.200000762939453125 + + + + 23.0 + 149 + + + + + -36.59999847412109375 + + + + 23.0 + 149 + + + + + -36.59999847412109375 + + + + 23.0 + 147 + + + + + -36.799999237060546875 + + + + 23.0 + 144 + + + + + -36.799999237060546875 + + + + 23.0 + 144 + + + + + -37.59999847412109375 + + + + 23.0 + 143 + + + + + -37 + + + + 23.0 + 142 + + + + + -37.40000152587890625 + + + + 23.0 + 142 + + + + + -36.59999847412109375 + + + + 23.0 + 143 + + + + + -36.40000152587890625 + + + + 23.0 + 143 + + + + + -36.40000152587890625 + + + + 23.0 + 143 + + + + + -36.200000762939453125 + + + + 23.0 + 143 + + + + + -36.40000152587890625 + + + + 23.0 + 143 + + + + + -36.799999237060546875 + + + + 23.0 + 139 + + + + + -37.200000762939453125 + + + + 23.0 + 138 + + + + + -37.59999847412109375 + + + + 23.0 + 138 + + + + + -38.40000152587890625 + + + + 23.0 + 137 + + + + + -38.799999237060546875 + + + + 23.0 + 139 + + + + + -40.200000762939453125 + + + + 23.0 + 141 + + + + + -40.40000152587890625 + + + + 23.0 + 141 + + + + + -41.200000762939453125 + + + + 23.0 + 140 + + + + + -42.59999847412109375 + + + + 23.0 + 140 + + + + + -43.59999847412109375 + + + + 23.0 + 141 + + + + + -44.799999237060546875 + + + + 23.0 + 141 + + + + + -45.200000762939453125 + + + + 23.0 + 141 + + + + + -45.799999237060546875 + + + + 23.0 + + + + + -46.40000152587890625 + + + + 23.0 + 143 + + + + + -47 + + + + 23.0 + 142 + + + + + -48 + + + + 23.0 + 140 + + + + + -47.799999237060546875 + + + + 23.0 + 139 + + + + + -47.799999237060546875 + + + + 23.0 + 141 + + + + + -48 + + + + 23.0 + 139 + + + + + -48.200000762939453125 + + + + 23.0 + 140 + + + + + -49.200000762939453125 + + + + 23.0 + 137 + + + + + -49.40000152587890625 + + + + 23.0 + 137 + + + + + -49.59999847412109375 + + + + 23.0 + 137 + + + + + -49.59999847412109375 + + + + 23.0 + 138 + + + + + -49.799999237060546875 + + + + 23.0 + 136 + + + + + -50 + + + + 23.0 + 137 + + + + + -50.40000152587890625 + + + + 23.0 + 137 + + + + + -51.59999847412109375 + + + + 23.0 + 138 + + + + + -52.40000152587890625 + + + + 23.0 + 138 + + + + + -52.59999847412109375 + + + + 23.0 + 139 + + + + + -53.799999237060546875 + + + + 23.0 + 138 + + + + + -54.59999847412109375 + + + + 23.0 + 135 + + + + + -54.799999237060546875 + + + + 23.0 + 135 + + + + + -54.799999237060546875 + + + + 23.0 + 135 + + + + + -56.40000152587890625 + + + + 23.0 + 135 + + + + + -57.59999847412109375 + + + + 23.0 + 135 + + + + + -58.799999237060546875 + + + + 23.0 + 135 + + + + + -60.200000762939453125 + + + + 23.0 + 135 + + + + + -61.40000152587890625 + + + + 22.0 + 135 + + + + + -63.200000762939453125 + + + + 22.0 + 134 + + + + + -64.8000030517578125 + + + + 22.0 + 134 + + + + + -66.59999847412109375 + + + + 22.0 + 133 + + + + + -68.1999969482421875 + + + + 22.0 + 133 + + + + + -69.8000030517578125 + + + + 22.0 + 132 + + + + + -70.40000152587890625 + + + + 22.0 + 136 + + + + + -70.8000030517578125 + + + + 22.0 + 137 + + + + + -72 + + + + 22.0 + 139 + + + + + -72.8000030517578125 + + + + 22.0 + 142 + + + + + -73 + + + + 22.0 + 141 + + + + + -73.1999969482421875 + + + + 22.0 + 143 + + + + + -74.1999969482421875 + + + + 22.0 + 142 + + + + + -74.40000152587890625 + + + + 22.0 + 142 + + + + + -74.8000030517578125 + + + + 22.0 + 140 + + + + + -74.59999847412109375 + + + + 22.0 + 139 + + + + + -74.59999847412109375 + + + + 22.0 + 139 + + + + + -74.8000030517578125 + + + + 22.0 + 136 + + + + + -74.8000030517578125 + + + + 22.0 + 131 + + + + + -75 + + + + 22.0 + 128 + + + + + -75.40000152587890625 + + + + 22.0 + 126 + + + + + -75.8000030517578125 + + + + 22.0 + 125 + + + + + -76.1999969482421875 + + + + 22.0 + 123 + + + + + -76.1999969482421875 + + + + 22.0 + 122 + + + + + -75.8000030517578125 + + + + 22.0 + 121 + + + + + -75.59999847412109375 + + + + 22.0 + 121 + + + + + -75.40000152587890625 + + + + 22.0 + 123 + + + + + -75.8000030517578125 + + + + 22.0 + 126 + + + + + -75.40000152587890625 + + + + 22.0 + 126 + + + + + -75.40000152587890625 + + + + 22.0 + 126 + + + + + -75.59999847412109375 + + + + 22.0 + 124 + + + + + -75.59999847412109375 + + + + 22.0 + 121 + + + + + -75.40000152587890625 + + + + 22.0 + 118 + + + + + -75 + + + + 22.0 + 118 + + + + + -74.59999847412109375 + + + + 22.0 + 117 + + + + + -74.1999969482421875 + + + + 22.0 + 117 + + + + + -74 + + + + 22.0 + 117 + + + + + -73.40000152587890625 + + + + 22.0 + 115 + + + + + -73.40000152587890625 + + + + 22.0 + 115 + + + + + -73.40000152587890625 + + + + 22.0 + 116 + + + + + -73.8000030517578125 + + + + 22.0 + 115 + + + + + -73.59999847412109375 + + + + 22.0 + 116 + + + + + -73.40000152587890625 + + + + 22.0 + 113 + + + + + -73.8000030517578125 + + + + 22.0 + 117 + + + + + -73.59999847412109375 + + + + 22.0 + 121 + + + + + -73 + + + + 22.0 + 126 + + + + + -72.59999847412109375 + + + + 22.0 + 132 + + + + + -72.1999969482421875 + + + + 22.0 + 137 + + + + + -72 + + + + 22.0 + 142 + + + + + -71.59999847412109375 + + + + 22.0 + 144 + + + + + -71.40000152587890625 + + + + 22.0 + 147 + + + + + -71.1999969482421875 + + + + 22.0 + 150 + + + + + -70.8000030517578125 + + + + 22.0 + 153 + + + + + -70.59999847412109375 + + + + 22.0 + 155 + + + + + -70.40000152587890625 + + + + 22.0 + 156 + + + + + -69.8000030517578125 + + + + 22.0 + 156 + + + + + -69.40000152587890625 + + + + 22.0 + 156 + + + + + -68.59999847412109375 + + + + 22.0 + 153 + + + + + -68.59999847412109375 + + + + 22.0 + 153 + + + + + -68.40000152587890625 + + + + 22.0 + 153 + + + + + -68.1999969482421875 + + + + 22.0 + 153 + + + + + -67.40000152587890625 + + + + 22.0 + 152 + + + + + -67 + + + + 22.0 + 150 + + + + + -65.59999847412109375 + + + + 22.0 + 153 + + + + + -64.1999969482421875 + + + + 22.0 + 154 + + + + + -63.799999237060546875 + + + + 22.0 + 154 + + + + + -63.40000152587890625 + + + + 22.0 + 154 + + + + + -63 + + + + 22.0 + 154 + + + + + -62 + + + + 22.0 + 153 + + + + + -61 + + + + 22.0 + 153 + + + + + -60.59999847412109375 + + + + 22.0 + 152 + + + + + -60.200000762939453125 + + + + 22.0 + 150 + + + + + -60.200000762939453125 + + + + 22.0 + 150 + + + + + -61.200000762939453125 + + + + 22.0 + 146 + + + + + -61.40000152587890625 + + + + 22.0 + 143 + + + + + -61.40000152587890625 + + + + 22.0 + 140 + + + + + -61.40000152587890625 + + + + 22.0 + 140 + + + + + -61.40000152587890625 + + + + 22.0 + 138 + + + + + -61.40000152587890625 + + + + 22.0 + 137 + + + + + -60.200000762939453125 + + + + 23.0 + 139 + + + + + -59.59999847412109375 + + + + 23.0 + 140 + + + + + -58.40000152587890625 + + + + 23.0 + 142 + + + + + -57.799999237060546875 + + + + 23.0 + 143 + + + + + -57.59999847412109375 + + + + 23.0 + 143 + + + + + -57.200000762939453125 + + + + 23.0 + 144 + + + + + -56.59999847412109375 + + + + 23.0 + 144 + + + + + -56 + + + + 23.0 + 147 + + + + + -54.59999847412109375 + + + + 23.0 + 148 + + + + + -54.200000762939453125 + + + + 23.0 + 148 + + + + + -53.200000762939453125 + + + + 23.0 + 149 + + + + + -52 + + + + 23.0 + 150 + + + + + -51 + + + + 23.0 + 151 + + + + + -50.200000762939453125 + + + + 23.0 + 152 + + + + + -50 + + + + 23.0 + 153 + + + + + -49.59999847412109375 + + + + 23.0 + 154 + + + + + -49.200000762939453125 + + + + 23.0 + 153 + + + + + -49 + + + + 23.0 + 156 + + + + + -49 + + + + 23.0 + 156 + + + + + -48.40000152587890625 + + + + 23.0 + 157 + + + + + -47.40000152587890625 + + + + 23.0 + 159 + + + + + -47.200000762939453125 + + + + 23.0 + 159 + + + + + -47.59999847412109375 + + + + 23.0 + 159 + + + + + -47.799999237060546875 + + + + 23.0 + 159 + + + + + -48.59999847412109375 + + + + 23.0 + 158 + + + + + -49.799999237060546875 + + + + 23.0 + 157 + + + + + -50.799999237060546875 + + + + 23.0 + 156 + + + + + -52 + + + + 23.0 + 156 + + + + + -51.59999847412109375 + + + + 23.0 + 156 + + + + + -50.799999237060546875 + + + + 23.0 + 156 + + + + + -50.59999847412109375 + + + + 23.0 + 155 + + + + + -52 + + + + 23.0 + 153 + + + + + -53 + + + + 23.0 + 154 + + + + + -53.799999237060546875 + + + + 23.0 + 153 + + + + + -54.200000762939453125 + + + + 23.0 + 151 + + + + + -54.59999847412109375 + + + + 23.0 + 148 + + + + + -54.40000152587890625 + + + + 23.0 + 145 + + + + + -54.59999847412109375 + + + + 23.0 + 142 + + + + + -54.799999237060546875 + + + + 23.0 + 141 + + + + + -55 + + + + 23.0 + 140 + + + + + -54.59999847412109375 + + + + 23.0 + 140 + + + + + -54.40000152587890625 + + + + 23.0 + 140 + + + + + -53.200000762939453125 + + + + 23.0 + 140 + + + + + -51.799999237060546875 + + + + 23.0 + + + + + -50.59999847412109375 + + + + 23.0 + + + + + -50.40000152587890625 + + + + 23.0 + + + + + -50.200000762939453125 + + + + 23.0 + + + + + -50.200000762939453125 + + + + 23.0 + + + + + -50.200000762939453125 + + + + 23.0 + + + + + -50.200000762939453125 + + + + 23.0 + 146 + + + + + -50 + + + + 23.0 + 146 + + + + + -49.799999237060546875 + + + + 23.0 + 145 + + + + + -49.799999237060546875 + + + + 24.0 + 145 + + + + + -50 + + + + 24.0 + 144 + + + + + -49.59999847412109375 + + + + 24.0 + 143 + + + + + -49.799999237060546875 + + + + 24.0 + 143 + + + + + -50 + + + + 24.0 + 143 + + + + + -50 + + + + 24.0 + 147 + + + + + -50 + + + + 24.0 + 149 + + + + + -49.799999237060546875 + + + + 24.0 + 149 + + + + + -49.59999847412109375 + + + + 24.0 + 148 + + + + + -49.59999847412109375 + + + + 24.0 + 150 + + + + + -49.59999847412109375 + + + + 24.0 + 155 + + + + + -49.59999847412109375 + + + + 24.0 + 159 + + + + + -49.40000152587890625 + + + + 24.0 + 160 + + + + + -49.200000762939453125 + + + + 24.0 + 160 + + + + + -49.200000762939453125 + + + + 24.0 + 157 + + + + + -48.799999237060546875 + + + + 24.0 + 158 + + + + + -48.799999237060546875 + + + + 24.0 + 158 + + + + + -48.799999237060546875 + + + + 24.0 + 157 + + + + + -48.59999847412109375 + + + + 24.0 + 155 + + + + + -48.40000152587890625 + + + + 24.0 + 154 + + + + + -48.40000152587890625 + + + + 24.0 + 154 + + + + + -48.200000762939453125 + + + + 24.0 + 151 + + + + + -48 + + + + 24.0 + 152 + + + + + -47.799999237060546875 + + + + 25.0 + 153 + + + + + -47.40000152587890625 + + + + 25.0 + 152 + + + + + -47.40000152587890625 + + + + 25.0 + 152 + + + + + -47.40000152587890625 + + + + 25.0 + 150 + + + + + -47 + + + + 25.0 + 150 + + + + + -46.59999847412109375 + + + + 25.0 + 149 + + + + + -46.40000152587890625 + + + + 25.0 + 148 + + + + + -46 + + + + 25.0 + 149 + + + + + -45.799999237060546875 + + + + 25.0 + 143 + + + + + -45.799999237060546875 + + + + 25.0 + 146 + + + + + -45.799999237060546875 + + + + 25.0 + 149 + + + + + -45.799999237060546875 + + + + 25.0 + 149 + + + + + -45.799999237060546875 + + + + 25.0 + 150 + + + + + -45.40000152587890625 + + + + 25.0 + 152 + + + + + -45.40000152587890625 + + + + 25.0 + 152 + + + + + -45 + + + + 25.0 + 149 + + + + + -44.40000152587890625 + + + + 25.0 + 149 + + + + + -44 + + + + 25.0 + 149 + + + + + -43.200000762939453125 + + + + 25.0 + 150 + + + + + -43 + + + + 25.0 + 150 + + + + + -42.799999237060546875 + + + + 25.0 + 153 + + + + + -42.59999847412109375 + + + + 25.0 + 153 + + + + + -42.40000152587890625 + + + + 25.0 + 154 + + + + + -42.200000762939453125 + + + + 25.0 + 155 + + + + + -41.59999847412109375 + + + + 24.0 + 158 + + + + + -41 + + + + 24.0 + 159 + + + + + -40.40000152587890625 + + + + 24.0 + 158 + + + + + -39.799999237060546875 + + + + 24.0 + 157 + + + + + -38.799999237060546875 + + + + 24.0 + 156 + + + + + -37.799999237060546875 + + + + 24.0 + 159 + + + + + -37.40000152587890625 + + + + 24.0 + 157 + + + + + -36.40000152587890625 + + + + 24.0 + 159 + + + + + -36 + + + + 24.0 + 164 + + + + + -36 + + + + 24.0 + 168 + + + + + -36 + + + + 24.0 + 167 + + + + + -35.40000152587890625 + + + + 24.0 + 167 + + + + + -34.200000762939453125 + + + + 24.0 + 169 + + + + + -34.200000762939453125 + + + + 24.0 + 163 + + + + + -34 + + + + 24.0 + 163 + + + + + -34.200000762939453125 + + + + 24.0 + 161 + + + + + -34.59999847412109375 + + + + 24.0 + 164 + + + + + -34.799999237060546875 + + + + 24.0 + 167 + + + + + -35 + + + + 24.0 + 169 + + + + + -35 + + + + 24.0 + 170 + + + + + -35.200000762939453125 + + + + 24.0 + 170 + + + + + -35.59999847412109375 + + + + 24.0 + 171 + + + + + -35.59999847412109375 + + + + 24.0 + 169 + + + + + -34.40000152587890625 + + + + 24.0 + 168 + + + + + -34.200000762939453125 + + + + 24.0 + 168 + + + + + -33.799999237060546875 + + + + 24.0 + 166 + + + + + -33.59999847412109375 + + + + 24.0 + 164 + + + + + -33.59999847412109375 + + + + 24.0 + 160 + + + + + -33.59999847412109375 + + + + 24.0 + 157 + + + + + -33.59999847412109375 + + + + 24.0 + 147 + + + + + -33.59999847412109375 + + + + 24.0 + 145 + + + + + -33.59999847412109375 + + + + 24.0 + 146 + + + + + -34.40000152587890625 + + + + 24.0 + 145 + + + + + -34.40000152587890625 + + + + 23.0 + 144 + + + + + -34.200000762939453125 + + + + 23.0 + 145 + + + + + -34.40000152587890625 + + + + 23.0 + 145 + + + + + -34.59999847412109375 + + + + 23.0 + 147 + + + + + -34.799999237060546875 + + + + 23.0 + 149 + + + + + -35 + + + + 23.0 + 150 + + + + + -35 + + + + 23.0 + 151 + + + + + -35 + + + + 23.0 + 151 + + + + + -35 + + + + 23.0 + 151 + + + + + -34.799999237060546875 + + + + 23.0 + 151 + + + + + -34.40000152587890625 + + + + 23.0 + 151 + + + + + -34.200000762939453125 + + + + 23.0 + 148 + + + + + -34.200000762939453125 + + + + 23.0 + 148 + + + + + -34.40000152587890625 + + + + 23.0 + 148 + + + + + -35 + + + + 23.0 + 148 + + + + + -35.200000762939453125 + + + + 23.0 + 149 + + + + + -34.59999847412109375 + + + + 23.0 + 150 + + + + + -34.200000762939453125 + + + + 23.0 + 151 + + + + + -34.200000762939453125 + + + + 23.0 + 151 + + + + + -34.200000762939453125 + + + + 23.0 + 152 + + + + + -34.40000152587890625 + + + + 23.0 + 151 + + + + + -33.59999847412109375 + + + + 23.0 + 149 + + + + + -33.200000762939453125 + + + + 23.0 + 149 + + + + + -33.200000762939453125 + + + + 23.0 + 148 + + + + + -32.59999847412109375 + + + + 23.0 + 149 + + + + + -32.40000152587890625 + + + + 23.0 + 154 + + + + + -32.59999847412109375 + + + + 23.0 + 156 + + + + + -32.59999847412109375 + + + + 23.0 + 156 + + + + + -32.200000762939453125 + + + + 23.0 + 156 + + + + + -31.799999237060546875 + + + + 23.0 + 156 + + + + + -31.3999996185302734375 + + + + 23.0 + 157 + + + + + -30.799999237060546875 + + + + 23.0 + 157 + + + + + -30.3999996185302734375 + + + + 23.0 + 160 + + + + + -31.3999996185302734375 + + + + 23.0 + 160 + + + + + -31.6000003814697265625 + + + + 23.0 + 161 + + + + + -31.6000003814697265625 + + + + 23.0 + 160 + + + + + -31.6000003814697265625 + + + + 23.0 + 159 + + + + + -31.3999996185302734375 + + + + 23.0 + 160 + + + + + -31.3999996185302734375 + + + + 23.0 + 163 + + + + + -31.200000762939453125 + + + + 23.0 + 158 + + + + + -30.200000762939453125 + + + + 23.0 + 156 + + + + + -29.6000003814697265625 + + + + 23.0 + 155 + + + + + -28.6000003814697265625 + + + + 23.0 + 154 + + + + + -28.6000003814697265625 + + + + 23.0 + 153 + + + + + -28.6000003814697265625 + + + + 23.0 + 153 + + + + + -28.799999237060546875 + + + + 23.0 + 152 + + + + + -29 + + + + 23.0 + 153 + + + + + -29.3999996185302734375 + + + + 23.0 + 153 + + + + + -29.799999237060546875 + + + + 23.0 + 154 + + + + + -31 + + + + 23.0 + 155 + + + + + -31.6000003814697265625 + + + + 23.0 + 154 + + + + + -31.799999237060546875 + + + + 23.0 + 153 + + + + + -31.799999237060546875 + + + + 23.0 + 152 + + + + + -30.6000003814697265625 + + + + 23.0 + 152 + + + + + -29.799999237060546875 + + + + 23.0 + 151 + + + + + -29.3999996185302734375 + + + + 23.0 + 150 + + + + + -28.799999237060546875 + + + + 23.0 + 150 + + + + + -28.3999996185302734375 + + + + 23.0 + 151 + + + + + -28 + + + + 23.0 + 149 + + + + + -27.799999237060546875 + + + + 23.0 + 149 + + + + + -27.6000003814697265625 + + + + 23.0 + 145 + + + + + -27.200000762939453125 + + + + 23.0 + 146 + + + + + -27 + + + + 23.0 + 150 + + + + + -26.799999237060546875 + + + + 23.0 + 155 + + + + + -26.799999237060546875 + + + + 23.0 + 158 + + + + + -26.6000003814697265625 + + + + 23.0 + 157 + + + + + -26.799999237060546875 + + + + 23.0 + 156 + + + + + -27 + + + + 23.0 + 155 + + + + + -26.799999237060546875 + + + + 23.0 + 152 + + + + + -26.6000003814697265625 + + + + 23.0 + 151 + + + + + -25.799999237060546875 + + + + 23.0 + 148 + + + + + -25.799999237060546875 + + + + 23.0 + 147 + + + + + -26.3999996185302734375 + + + + 23.0 + 147 + + + + + -26 + + + + 23.0 + 146 + + + + + -24.799999237060546875 + + + + 23.0 + 146 + + + + + -24.799999237060546875 + + + + 23.0 + 146 + + + + + -24.6000003814697265625 + + + + 23.0 + 146 + + + + + -25.3999996185302734375 + + + + 23.0 + 146 + + + + + -25.3999996185302734375 + + + + 23.0 + 147 + + + + + -25 + + + + 23.0 + 148 + + + + + -24.799999237060546875 + + + + 23.0 + 148 + + + + + -24.799999237060546875 + + + + 23.0 + 151 + + + + + -23.6000003814697265625 + + + + 23.0 + 154 + + + + + -23.3999996185302734375 + + + + 23.0 + 153 + + + + + -23.3999996185302734375 + + + + 23.0 + 156 + + + + + -23 + + + + 23.0 + 154 + + + + + -22.6000003814697265625 + + + + 23.0 + 153 + + + + + -22 + + + + 23.0 + 150 + + + + + -21.3999996185302734375 + + + + 23.0 + 148 + + + + + -21.200000762939453125 + + + + 23.0 + 148 + + + + + -20.3999996185302734375 + + + + 24.0 + 152 + + + + + -20.200000762939453125 + + + + 24.0 + 147 + + + + + -19 + + + + 24.0 + 146 + + + + + -18.799999237060546875 + + + + 24.0 + 146 + + + + + -19.200000762939453125 + + + + 24.0 + 144 + + + + + -18.6000003814697265625 + + + + 24.0 + 144 + + + + + -18.799999237060546875 + + + + 24.0 + 145 + + + + + -18.799999237060546875 + + + + 24.0 + 145 + + + + + -19.3999996185302734375 + + + + 23.0 + 150 + + + + + -19.3999996185302734375 + + + + 23.0 + 153 + + + + + -19.6000003814697265625 + + + + 23.0 + 157 + + + + + -19.6000003814697265625 + + + + 23.0 + 160 + + + + + -19.799999237060546875 + + + + 23.0 + 163 + + + + + -19.799999237060546875 + + + + 23.0 + 165 + + + + + -20.200000762939453125 + + + + 23.0 + 166 + + + + + -20.200000762939453125 + + + + 23.0 + 166 + + + + + -20.6000003814697265625 + + + + 23.0 + 166 + + + + + -21.200000762939453125 + + + + 23.0 + 165 + + + + + -21.799999237060546875 + + + + 23.0 + 165 + + + + + -22 + + + + 23.0 + 164 + + + + + -22.3999996185302734375 + + + + 23.0 + 164 + + + + + -23.3999996185302734375 + + + + 23.0 + 163 + + + + + -23.6000003814697265625 + + + + 23.0 + 163 + + + + + -24.6000003814697265625 + + + + 23.0 + 165 + + + + + -25.3999996185302734375 + + + + 23.0 + 163 + + + + + -25.6000003814697265625 + + + + 23.0 + 163 + + + + + -26.200000762939453125 + + + + 23.0 + 163 + + + + + -26.3999996185302734375 + + + + 23.0 + 162 + + + + + -26.6000003814697265625 + + + + 23.0 + 160 + + + + + -26.6000003814697265625 + + + + 23.0 + 154 + + + + + -26.6000003814697265625 + + + + 23.0 + 150 + + + + + -26.6000003814697265625 + + + + 23.0 + 145 + + + + + -26.6000003814697265625 + + + + 23.0 + 140 + + + + + -26.6000003814697265625 + + + + 23.0 + 137 + + + + + -26.6000003814697265625 + + + + 23.0 + 137 + + + + + -26.6000003814697265625 + + + + 23.0 + 136 + + + + + -25.799999237060546875 + + + + 23.0 + 134 + + + + + -26 + + + + 23.0 + 134 + + + + + -26.200000762939453125 + + + + 23.0 + 134 + + + + + -24.799999237060546875 + + + + 24.0 + 135 + + + + + -24.6000003814697265625 + + + + 24.0 + 135 + + + + + -24.6000003814697265625 + + + + 24.0 + 134 + + + + + -23.799999237060546875 + + + + 24.0 + 138 + + + + + -23.6000003814697265625 + + + + 24.0 + 135 + + + + + -23.6000003814697265625 + + + + 24.0 + 135 + + + + + -23.6000003814697265625 + + + + 24.0 + 137 + + + + + -23.799999237060546875 + + + + 24.0 + 137 + + + + + -23.799999237060546875 + + + + 24.0 + 137 + + + + + -24 + + + + 24.0 + 138 + + + + + -24.200000762939453125 + + + + 24.0 + 141 + + + + + -24.6000003814697265625 + + + + 24.0 + 142 + + + + + -25.200000762939453125 + + + + 24.0 + 141 + + + + + -25.200000762939453125 + + + + 24.0 + 143 + + + + + -25.3999996185302734375 + + + + 24.0 + 142 + + + + + -25 + + + + 25.0 + 142 + + + + + -25 + + + + 25.0 + 141 + + + + + -24.799999237060546875 + + + + 25.0 + 142 + + + + + -25 + + + + 25.0 + 142 + + + + + -25.799999237060546875 + + + + 25.0 + 141 + + + + + -27 + + + + 25.0 + 141 + + + + + -28 + + + + 25.0 + 141 + + + + + -28.3999996185302734375 + + + + 25.0 + 143 + + + + + -28.799999237060546875 + + + + 25.0 + 142 + + + + + -28.799999237060546875 + + + + 25.0 + 142 + + + + + -28.799999237060546875 + + + + 25.0 + 141 + + + + + -29 + + + + 25.0 + 139 + + + + + -29 + + + + 25.0 + 139 + + + + + -28.799999237060546875 + + + + 25.0 + 138 + + + + + -28.200000762939453125 + + + + 25.0 + 136 + + + + + -28 + + + + 25.0 + 132 + + + + + -28 + + + + 25.0 + 131 + + + + + -28 + + + + 25.0 + 128 + + + + + -28.3999996185302734375 + + + + 25.0 + 128 + + + + + -29.200000762939453125 + + + + 25.0 + 128 + + + + + -29.6000003814697265625 + + + + 26.0 + 128 + + + + + -29.6000003814697265625 + + + + 26.0 + 131 + + + + + -29.6000003814697265625 + + + + 26.0 + 131 + + + + + -29.6000003814697265625 + + + + 26.0 + 128 + + + + + -29.6000003814697265625 + + + + 26.0 + 124 + + + + + -29.6000003814697265625 + + + + 26.0 + 122 + + + + + -29.6000003814697265625 + + + + 26.0 + 122 + + + + + -29.6000003814697265625 + + + + 26.0 + 122 + + + + + -29.6000003814697265625 + + + + 26.0 + 122 + + + + + -29.6000003814697265625 + + + + 26.0 + 120 + + + + + -29.6000003814697265625 + + + + 26.0 + 122 + + + + + -29.6000003814697265625 + + + + 26.0 + 123 + + + + + -32.40000152587890625 + + + + 26.0 + 124 + + + + + -32.40000152587890625 + + + + 26.0 + 124 + + + + + -33.200000762939453125 + + + + 26.0 + 125 + + + + + -33.40000152587890625 + + + + 26.0 + 125 + + + + + -33.59999847412109375 + + + + 26.0 + 125 + + + + + -33.799999237060546875 + + + + 26.0 + 126 + + + + + -33.799999237060546875 + + + + 26.0 + 124 + + + + + -33.59999847412109375 + + + + 26.0 + 124 + + + + + -33.59999847412109375 + + + + 26.0 + 127 + + + + + -33.799999237060546875 + + + + 26.0 + 130 + + + + + -33.799999237060546875 + + + + 26.0 + 135 + + + + + -33.799999237060546875 + + + + 26.0 + 137 + + + + + -33.799999237060546875 + + + + 26.0 + 142 + + + + + -33.799999237060546875 + + + + 26.0 + 146 + + + + + -33.799999237060546875 + + + + 26.0 + 147 + + + + + -33.799999237060546875 + + + + 26.0 + 147 + + + + + -33.200000762939453125 + + + + 26.0 + 149 + + + + + -32.59999847412109375 + + + + 26.0 + 150 + + + + + -32.200000762939453125 + + + + 26.0 + 150 + + + + + -31.3999996185302734375 + + + + 26.0 + 150 + + + + + -30.6000003814697265625 + + + + 26.0 + 150 + + + + + -30 + + + + 26.0 + 150 + + + + + -29 + + + + 26.0 + 150 + + + + + -28.6000003814697265625 + + + + 26.0 + 150 + + + + + -28.799999237060546875 + + + + 26.0 + 149 + + + + + -29 + + + + 25.0 + 149 + + + + + -29.3999996185302734375 + + + + 25.0 + 147 + + + + + -30 + + + + 25.0 + 148 + + + + + -30.799999237060546875 + + + + 25.0 + 147 + + + + + -30.799999237060546875 + + + + 25.0 + 146 + + + + + -30.799999237060546875 + + + + 25.0 + 148 + + + + + -30.799999237060546875 + + + + 25.0 + 147 + + + + + -30.6000003814697265625 + + + + 25.0 + 147 + + + + + -30.6000003814697265625 + + + + 25.0 + 143 + + + + + -30.6000003814697265625 + + + + 25.0 + 141 + + + + + -30.3999996185302734375 + + + + 25.0 + 142 + + + + + -29 + + + + 25.0 + 142 + + + + + -29 + + + + 25.0 + 143 + + + + + -28.799999237060546875 + + + + 25.0 + 144 + + + + + -28.200000762939453125 + + + + 25.0 + 147 + + + + + -28.200000762939453125 + + + + 25.0 + 149 + + + + + -28 + + + + 25.0 + 149 + + + + + -28 + + + + 25.0 + 150 + + + + + -27.799999237060546875 + + + + 25.0 + 149 + + + + + -28.6000003814697265625 + + + + 25.0 + 147 + + + + + -28.799999237060546875 + + + + 25.0 + 146 + + + + + -29 + + + + 25.0 + 147 + + + + + -29.6000003814697265625 + + + + 25.0 + 147 + + + + + -29.799999237060546875 + + + + 25.0 + 147 + + + + + -29.799999237060546875 + + + + 25.0 + 147 + + + + + -30 + + + + 25.0 + 147 + + + + + -30.200000762939453125 + + + + 25.0 + 147 + + + + + -30.6000003814697265625 + + + + 25.0 + 147 + + + + + -30 + + + + 25.0 + 148 + + + + + -28.6000003814697265625 + + + + 25.0 + 147 + + + + + -27.799999237060546875 + + + + 25.0 + 147 + + + + + -27.200000762939453125 + + + + 25.0 + 147 + + + + + -26.6000003814697265625 + + + + 25.0 + 147 + + + + + -26.200000762939453125 + + + + 25.0 + 147 + + + + + -27 + + + + 24.0 + 149 + + + + + -27 + + + + 24.0 + 150 + + + + + -27.200000762939453125 + + + + 24.0 + 150 + + + + + -27.200000762939453125 + + + + 24.0 + 150 + + + + + -27.3999996185302734375 + + + + 24.0 + 151 + + + + + -28.200000762939453125 + + + + 24.0 + 151 + + + + + -29.3999996185302734375 + + + + 24.0 + 151 + + + + + -30 + + + + 24.0 + 155 + + + + + -30.3999996185302734375 + + + + 24.0 + 150 + + + + + -31 + + + + 24.0 + 148 + + + + + -31.799999237060546875 + + + + 24.0 + 145 + + + + + -32.40000152587890625 + + + + 24.0 + 142 + + + + + -32.799999237060546875 + + + + 24.0 + 140 + + + + + -33 + + + + 24.0 + 139 + + + + + -33 + + + + 24.0 + 139 + + + + + -32.59999847412109375 + + + + 24.0 + 137 + + + + + -31.799999237060546875 + + + + 24.0 + 136 + + + + + -32.799999237060546875 + + + + 24.0 + 134 + + + + + -33.40000152587890625 + + + + 24.0 + 132 + + + + + -34.799999237060546875 + + + + 24.0 + 130 + + + + + -36.59999847412109375 + + + + 24.0 + 128 + + + + + -38.40000152587890625 + + + + 24.0 + 127 + + + + + -39.40000152587890625 + + + + 24.0 + 127 + + + + + -40.59999847412109375 + + + + 24.0 + 125 + + + + + -40.799999237060546875 + + + + 24.0 + 124 + + + + + -41 + + + + 24.0 + 124 + + + + + -41.200000762939453125 + + + + 24.0 + 124 + + + + + -41.200000762939453125 + + + + 24.0 + 123 + + + + + -41.40000152587890625 + + + + 24.0 + 124 + + + + + -41.59999847412109375 + + + + 24.0 + 124 + + + + + -41.799999237060546875 + + + + 24.0 + 124 + + + + + -42.40000152587890625 + + + + 24.0 + 125 + + + + + -43 + + + + 24.0 + 125 + + + + + -43.59999847412109375 + + + + 24.0 + 125 + + + + + -43.799999237060546875 + + + + 24.0 + 125 + + + + + -44.200000762939453125 + + + + 24.0 + 125 + + + + + -45.59999847412109375 + + + + 24.0 + 125 + + + + + -46.799999237060546875 + + + + 24.0 + 125 + + + + + -48.200000762939453125 + + + + 24.0 + 125 + + + + + -49.200000762939453125 + + + + 24.0 + 125 + + + + + -50 + + + + 24.0 + 125 + + + + + -50.40000152587890625 + + + + 24.0 + 125 + + + + + -49.40000152587890625 + + + + 24.0 + 125 + + + + + -48 + + + + 24.0 + 125 + + + + + -47.200000762939453125 + + + + 24.0 + 125 + + + + + -46.59999847412109375 + + + + 24.0 + 126 + + + + + -46 + + + + 23.0 + 126 + + + + + -44.799999237060546875 + + + + 23.0 + 126 + + + + + -42.799999237060546875 + + + + 23.0 + 126 + + + + + -42 + + + + 23.0 + 124 + + + + + -41.40000152587890625 + + + + 23.0 + 126 + + + + + -40 + + + + 23.0 + 124 + + + + + -38.799999237060546875 + + + + 23.0 + 128 + + + + + -37.59999847412109375 + + + + 23.0 + 127 + + + + + -36.59999847412109375 + + + + 23.0 + 128 + + + + + -34.799999237060546875 + + + + 23.0 + 128 + + + + + -34.200000762939453125 + + + + 23.0 + 131 + + + + + -33.799999237060546875 + + + + 23.0 + 133 + + + + + -33.40000152587890625 + + + + 24.0 + 138 + + + + + -33.40000152587890625 + + + + 24.0 + 141 + + + + + -33.40000152587890625 + + + + 24.0 + 145 + + + + + -33.40000152587890625 + + + + 24.0 + 144 + + + + + -33.40000152587890625 + + + + 24.0 + 144 + + + + + -33.40000152587890625 + + + + 24.0 + 148 + + + + + -33.200000762939453125 + + + + 24.0 + 149 + + + + + -32.59999847412109375 + + + + 24.0 + 152 + + + + + -32.40000152587890625 + + + + 24.0 + 152 + + + + + -31.3999996185302734375 + + + + 24.0 + 155 + + + + + -31 + + + + 24.0 + 155 + + + + + -30.3999996185302734375 + + + + 24.0 + 155 + + + + + -29.6000003814697265625 + + + + 24.0 + 155 + + + + + -29.200000762939453125 + + + + 24.0 + 155 + + + + + -28 + + + + 24.0 + 156 + + + + + -27.6000003814697265625 + + + + 24.0 + 156 + + + + + -26.200000762939453125 + + + + 24.0 + 154 + + + + + -25.3999996185302734375 + + + + 24.0 + 154 + + + + + -25 + + + + 24.0 + 154 + + + + + -23.6000003814697265625 + + + + 24.0 + 155 + + + + + -22.3999996185302734375 + + + + 24.0 + 156 + + + + + -21.200000762939453125 + + + + 24.0 + 157 + + + + + -20.799999237060546875 + + + + 24.0 + 157 + + + + + -19.6000003814697265625 + + + + 24.0 + 158 + + + + + -19 + + + + 24.0 + 158 + + + + + -18.3999996185302734375 + + + + 24.0 + 158 + + + + + -17.3999996185302734375 + + + + 24.0 + 159 + + + + + -16.3999996185302734375 + + + + 24.0 + 158 + + + + + -15 + + + + 24.0 + 158 + + + + + -14.6000003814697265625 + + + + 24.0 + 158 + + + + + -13.3999996185302734375 + + + + 24.0 + 159 + + + + + -12 + + + + 24.0 + 159 + + + + + -10.80000019073486328125 + + + + 24.0 + 160 + + + + + -9.80000019073486328125 + + + + 24.0 + 159 + + + + + -9.6000003814697265625 + + + + 24.0 + 159 + + + + + -8.3999996185302734375 + + + + 24.0 + 159 + + + + + -7.19999980926513671875 + + + + 24.0 + 159 + + + + + -6.400000095367431640625 + + + + 24.0 + 159 + + + + + -6 + + + + 24.0 + 159 + + + + + -5.80000019073486328125 + + + + 24.0 + 159 + + + + + -5.80000019073486328125 + + + + 24.0 + 158 + + + + + -6.19999980926513671875 + + + + 24.0 + 158 + + + + + -6.599999904632568359375 + + + + 24.0 + 158 + + + + + -7.19999980926513671875 + + + + 24.0 + 158 + + + + + -7.599999904632568359375 + + + + 24.0 + 158 + + + + + -8.19999980926513671875 + + + + 24.0 + 159 + + + + + -9 + + + + 24.0 + 158 + + + + + -9.3999996185302734375 + + + + 24.0 + 157 + + + + + -9.3999996185302734375 + + + + 24.0 + 157 + + + + + -9.6000003814697265625 + + + + 24.0 + 156 + + + + + -8.19999980926513671875 + + + + 24.0 + 155 + + + + + -7.80000019073486328125 + + + + 24.0 + 155 + + + + + -7.599999904632568359375 + + + + 24.0 + 155 + + + + + -6.599999904632568359375 + + + + 24.0 + 155 + + + + + -5.400000095367431640625 + + + + 24.0 + 154 + + + + + -5.599999904632568359375 + + + + 24.0 + 153 + + + + + -6.19999980926513671875 + + + + 24.0 + 153 + + + + + -6.19999980926513671875 + + + + 24.0 + 153 + + + + + -4.80000019073486328125 + + + + 24.0 + 156 + + + + + -4.400000095367431640625 + + + + 24.0 + 156 + + + + + -4.19999980926513671875 + + + + 24.0 + 156 + + + + + -4 + + + + 24.0 + 156 + + + + + -3.7999999523162841796875 + + + + 24.0 + 155 + + + + + -3.7999999523162841796875 + + + + 24.0 + 154 + + + + + -3.7999999523162841796875 + + + + 24.0 + 154 + + + + + -4 + + + + 24.0 + 154 + + + + + -5.19999980926513671875 + + + + 24.0 + 151 + + + + + -5.400000095367431640625 + + + + 24.0 + 150 + + + + + -6 + + + + 24.0 + 149 + + + + + -6.599999904632568359375 + + + + 24.0 + 151 + + + + + -7.19999980926513671875 + + + + 24.0 + 153 + + + + + -8 + + + + 24.0 + 153 + + + + + -8.19999980926513671875 + + + + 24.0 + 153 + + + + + -9.3999996185302734375 + + + + 24.0 + 155 + + + + + -10.19999980926513671875 + + + + 24.0 + 155 + + + + + -10.3999996185302734375 + + + + 24.0 + 156 + + + + + -9.6000003814697265625 + + + + 24.0 + 158 + + + + + -10.19999980926513671875 + + + + 23.0 + 159 + + + + + -11.6000003814697265625 + + + + 23.0 + 159 + + + + + -11.80000019073486328125 + + + + 23.0 + 159 + + + + + -12.3999996185302734375 + + + + 23.0 + 159 + + + + + -12.6000003814697265625 + + + + 23.0 + 158 + + + + + -14 + + + + 23.0 + 158 + + + + + -14.6000003814697265625 + + + + 23.0 + 155 + + + + + -15 + + + + 23.0 + 154 + + + + + -15.80000019073486328125 + + + + 23.0 + 157 + + + + + -15.80000019073486328125 + + + + 23.0 + 160 + + + + + -15.80000019073486328125 + + + + 23.0 + 163 + + + + + -15.6000003814697265625 + + + + 23.0 + 165 + + + + + -15.3999996185302734375 + + + + 23.0 + 166 + + + + + -15 + + + + 23.0 + 167 + + + + + -15.3999996185302734375 + + + + 23.0 + 170 + + + + + -15.3999996185302734375 + + + + 23.0 + 170 + + + + + -15.19999980926513671875 + + + + 23.0 + 170 + + + + + -16 + + + + 23.0 + 171 + + + + + -16.200000762939453125 + + + + 23.0 + 171 + + + + + -16.200000762939453125 + + + + 23.0 + 171 + + + + + -14.3999996185302734375 + + + + 23.0 + 170 + + + + + -13.3999996185302734375 + + + + 23.0 + 170 + + + + + -13.19999980926513671875 + + + + 23.0 + 173 + + + + + -13 + + + + 23.0 + 173 + + + + + -12.80000019073486328125 + + + + 23.0 + 174 + + + + + -12.80000019073486328125 + + + + 23.0 + 174 + + + + + -14 + + + + 23.0 + 174 + + + + + -14.19999980926513671875 + + + + 23.0 + 175 + + + + + -14.19999980926513671875 + + + + 23.0 + 175 + + + + + -16.3999996185302734375 + + + + 23.0 + 174 + + + + + -17.3999996185302734375 + + + + 23.0 + 173 + + + + + -17.3999996185302734375 + + + + 23.0 + 170 + + + + + -17.799999237060546875 + + + + 23.0 + 170 + + + + + -17 + + + + 23.0 + 169 + + + + + -16.3999996185302734375 + + + + 23.0 + 167 + + + + + -16.200000762939453125 + + + + 23.0 + 167 + + + + + -16.200000762939453125 + + + + 23.0 + 168 + + + + + -17.799999237060546875 + + + + 23.0 + 169 + + + + + -18.799999237060546875 + + + + 23.0 + 169 + + + + + -20.200000762939453125 + + + + 23.0 + 169 + + + + + -21 + + + + 23.0 + 170 + + + + + -21.3999996185302734375 + + + + 23.0 + 170 + + + + + -22.200000762939453125 + + + + 23.0 + 169 + + + + + -22.3999996185302734375 + + + + 23.0 + 169 + + + + + -22.6000003814697265625 + + + + 23.0 + 169 + + + + + -22.200000762939453125 + + + + 23.0 + 168 + + + + + -21.3999996185302734375 + + + + 23.0 + 168 + + + + + -21.200000762939453125 + + + + 23.0 + 168 + + + + + -20.799999237060546875 + + + + 23.0 + 167 + + + + + -20.3999996185302734375 + + + + 23.0 + 166 + + + + + -20.200000762939453125 + + + + 23.0 + 163 + + + + + -20.200000762939453125 + + + + 23.0 + 163 + + + + + -20.3999996185302734375 + + + + 23.0 + 162 + + + + + -20.3999996185302734375 + + + + 23.0 + 162 + + + + + -20.799999237060546875 + + + + 23.0 + 161 + + + + + -21.6000003814697265625 + + + + 23.0 + 160 + + + + + -23.200000762939453125 + + + + 23.0 + 160 + + + + + -24.6000003814697265625 + + + + 23.0 + 159 + + + + + -25.799999237060546875 + + + + 23.0 + 158 + + + + + -26.200000762939453125 + + + + 23.0 + 156 + + + + + -26.3999996185302734375 + + + + 23.0 + 153 + + + + + -26.3999996185302734375 + + + + 23.0 + 151 + + + + + -26.3999996185302734375 + + + + 23.0 + 151 + + + + + -26.3999996185302734375 + + + + 23.0 + 149 + + + + + -26.200000762939453125 + + + + 23.0 + 148 + + + + + -26 + + + + 23.0 + 145 + + + + + -26.3999996185302734375 + + + + 23.0 + 144 + + + + + -26.3999996185302734375 + + + + 23.0 + 144 + + + + + -26.799999237060546875 + + + + 23.0 + 143 + + + + + -26.799999237060546875 + + + + 23.0 + 142 + + + + + -26.799999237060546875 + + + + 23.0 + 144 + + + + + -26.799999237060546875 + + + + 23.0 + 144 + + + + + -26.799999237060546875 + + + + 23.0 + 145 + + + + + -26.799999237060546875 + + + + 23.0 + 146 + + + + + -27 + + + + 23.0 + 147 + + + + + -27.200000762939453125 + + + + 23.0 + 148 + + + + + -27.6000003814697265625 + + + + 23.0 + 149 + + + + + -27.6000003814697265625 + + + + 23.0 + 149 + + + + + -28.3999996185302734375 + + + + 23.0 + 148 + + + + + -29 + + + + 23.0 + 147 + + + + + -29.3999996185302734375 + + + + 23.0 + 147 + + + + + -29.6000003814697265625 + + + + 23.0 + 146 + + + + + -29.799999237060546875 + + + + 23.0 + 146 + + + + + -30 + + + + 23.0 + 145 + + + + + -30 + + + + 23.0 + 145 + + + + + -30.3999996185302734375 + + + + 23.0 + 145 + + + + + -30.799999237060546875 + + + + 23.0 + 145 + + + + + -31 + + + + 23.0 + 145 + + + + + -31.200000762939453125 + + + + 23.0 + 145 + + + + + -31.799999237060546875 + + + + 23.0 + 145 + + + + + -31.799999237060546875 + + + + 23.0 + 145 + + + + + -30.6000003814697265625 + + + + 23.0 + 145 + + + + + -30.3999996185302734375 + + + + 23.0 + 144 + + + + + -30.200000762939453125 + + + + 23.0 + 145 + + + + + -30.200000762939453125 + + + + 22.0 + 144 + + + + + -30.3999996185302734375 + + + + 23.0 + 145 + + + + + -30.6000003814697265625 + + + + 23.0 + 145 + + + + + -31 + + + + 23.0 + 144 + + + + + -32 + + + + 23.0 + 144 + + + + + -32.59999847412109375 + + + + 23.0 + 145 + + + + + -33 + + + + 23.0 + 145 + + + + + -33.200000762939453125 + + + + 23.0 + 147 + + + + + -34.59999847412109375 + + + + 22.0 + 151 + + + + + -34.799999237060546875 + + + + 22.0 + 154 + + + + + -35.200000762939453125 + + + + 22.0 + 154 + + + + + -35.40000152587890625 + + + + 22.0 + 155 + + + + + -35.40000152587890625 + + + + 22.0 + 155 + + + + + -35.40000152587890625 + + + + 22.0 + 155 + + + + + -34.200000762939453125 + + + + 22.0 + 154 + + + + + -34.200000762939453125 + + + + 22.0 + 150 + + + + + -34.200000762939453125 + + + + 22.0 + 150 + + + + + -34.59999847412109375 + + + + 23.0 + 149 + + + + + -34.799999237060546875 + + + + 23.0 + 149 + + + + + -34.799999237060546875 + + + + 23.0 + 146 + + + + + -34.59999847412109375 + + + + 23.0 + 148 + + + + + + diff --git a/docs/_images/dev/config_extension/trackview.png b/docs/_images/dev/config_extension/trackview.png new file mode 100644 index 000000000..ff8e59dc6 Binary files /dev/null and b/docs/_images/dev/config_extension/trackview.png differ diff --git a/docs/doc_tech/config_extensions.rst b/docs/doc_tech/config_extensions.rst index b7c874c3b..395c659e4 100644 --- a/docs/doc_tech/config_extensions.rst +++ b/docs/doc_tech/config_extensions.rst @@ -408,4 +408,52 @@ Voici un exemple : **Personnalisation du modèle** -Pour la personnalisation du modèle, se référer à la documentation ici https://github.com/mviewer/mviewer/tree/master/demo/addons/print#layout-with-a-json-template \ No newline at end of file +Pour la personnalisation du modèle, se référer à la documentation ici https://github.com/mviewer/mviewer/tree/master/demo/addons/print#layout-with-a-json-template + +Extension trackview +------------------- +Ce plugin permet de consulter une tarce d'activités ( vtt, course à pied, etc. ) par l'utilisation de fichier de données au format GPX. +Pour plus de détails, il permet également de visualiser ces données sous la forme d'un graphique altimétrique. + +.. image:: ../_images/dev/config_extension/trackview.png + :alt: Visualiser un parcours GPX + :align: center + +**Installation** + +L'extension **trackview** se situe par défaut, dans le répertoire ``/demo/addons``. Pour une meilleure organisation et une maintenance plus facile, il est conseillé de déplacer les addons utilisés dans un dossier séparé. + +1. Ajout de l'extension dans votre fichier de config **.xml** + +Il est nécessaire d'ajouter les lignes de code ci-dessous afin d'ajouter l'extension à votre application. + +.. code-block:: xml + + + + + +2. Utilisation d'un ID unique + +Dans la balise *application* se trouve un attribut que l'on nomme *id*. C'est ici qu'il faut renseigner l'id qu'on souhaite donner à notre application. + +.. code-block:: xml + + + +3. Intégrer votre application dans le fichier de configuration **config.json** + +Il est essentiel de renseigner le même id que précédemment pour assurer le bon fonctionnement de l’extension. + +.. code-block:: json + + "options": { + "mviewer": { + "mon_id": { + } + } + } + +**Personnalisation de l'extension** + +Pour plus d'informations sur la personnalisation de cette extension, veuillez consulter la documentation complète à l'adresse suivante : https://github.com/mviewer/mviewer/tree/master/demo/addons/trackview/readme.md \ No newline at end of file