!function (t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.ol = e() : t.ol = e() }(window, (function () { return function (t) { var e = {}; function r(n) { if (e[n]) return e[n].exports; var i = e[n] = {i: n, l: !1, exports: {}}; return t[n].call(i.exports, i, i.exports, r), i.l = !0, i.exports } return r.m = t, r.c = e, r.d = function (t, e, n) { r.o(t, e) || Object.defineProperty(t, e, {enumerable: !0, get: n}) }, r.r = function (t) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(t, "__esModule", {value: !0}) }, r.t = function (t, e) { if (1 & e && (t = r(t)), 8 & e) return t; if (4 & e && "object" == typeof t && t && t.__esModule) return t; var n = Object.create(null); if (r.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t) for (var i in t) r.d(n, i, function (e) { return t[e] }.bind(null, i)); return n }, r.n = function (t) { var e = t && t.__esModule ? function () { return t.default } : function () { return t }; return r.d(e, "a", e), e }, r.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, r.p = "", r(r.s = 10) }([function (t, e, r) { "use strict"; (function (t, n) { r.d(e, "a", (function () { return J })), r.d(e, "b", (function () { return br })), r.d(e, "c", (function () { return $r })), r.d(e, "d", (function () { return hr })), r.d(e, "e", (function () { return Jr })), r.d(e, "f", (function () { return i })); var i = { $version: 8, $root: { version: { required: !0, type: "enum", values: [8], doc: "Style specification version number. Must be 8.", example: 8 }, name: {type: "string", doc: "A human-readable name for the style.", example: "Bright"}, metadata: { type: "*", doc: "Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'." }, center: { type: "array", value: "number", doc: "Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).", example: [-73.9749, 40.7736] }, zoom: { type: "number", doc: "Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).", example: 12.5 }, bearing: { type: "number", default: 0, period: 360, units: "degrees", doc: 'Default bearing, in degrees. The bearing is the compass direction that is "up"; for example, a bearing of 90° orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).', example: 29 }, pitch: { type: "number", default: 0, units: "degrees", doc: "Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).", example: 50 }, light: { type: "light", doc: "The global light source.", example: {anchor: "viewport", color: "white", intensity: .4} }, terrain: { type: "terrain", doc: "A global modifier that elevates layers and markers based on a DEM data source." }, sources: { required: !0, type: "sources", doc: "Data source specifications.", example: {"mapbox-streets": {type: "vector", url: "mapbox://mapbox.mapbox-streets-v6"}} }, sprite: { type: "string", doc: "A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).", example: "mapbox://sprites/mapbox/bright-v8" }, glyphs: { type: "string", doc: "A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).", example: "mapbox://fonts/mapbox/{fontstack}/{range}.pbf" }, transition: { type: "transition", doc: "A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.", example: {duration: 300, delay: 0} }, layers: { required: !0, type: "array", value: "layer", doc: "Layers will be drawn in the order of this array.", example: [{ id: "water", source: "mapbox-streets", "source-layer": "water", type: "fill", paint: {"fill-color": "#00ffff"} }] } }, sources: { "*": { type: "source", doc: "Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided." } }, source: ["source_vector", "source_raster", "source_raster_dem", "source_geojson", "source_video", "source_image"], source_vector: { type: { required: !0, type: "enum", values: {vector: {doc: "A vector tile source."}}, doc: "The type of the source." }, url: { type: "string", doc: "A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`." }, tiles: { type: "array", value: "string", doc: "An array of one or more tile source URLs, as in the TileJSON spec." }, bounds: { type: "array", value: "number", length: 4, default: [-180, -85.051129, 180, 85.051129], doc: "An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL." }, scheme: { type: "enum", values: {xyz: {doc: "Slippy map tilenames scheme."}, tms: {doc: "OSGeo spec scheme."}}, default: "xyz", doc: "Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed." }, minzoom: { type: "number", default: 0, doc: "Minimum zoom level for which tiles are available, as in the TileJSON spec." }, maxzoom: { type: "number", default: 22, doc: "Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels." }, attribution: { type: "string", doc: "Contains an attribution to be displayed when the map is shown to a user." }, promoteId: { type: "promoteId", doc: "A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`. If specified as a string for a vector tile source, the same property is used across all its source layers." }, volatile: { type: "boolean", default: !1, doc: "A setting to determine whether a source's tiles are cached locally.", "sdk-support": {"basic functionality": {android: "9.3.0", ios: "5.10.0"}} }, "*": {type: "*", doc: "Other keys to configure the data source."} }, source_raster: { type: { required: !0, type: "enum", values: {raster: {doc: "A raster tile source."}}, doc: "The type of the source." }, url: { type: "string", doc: "A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`." }, tiles: { type: "array", value: "string", doc: "An array of one or more tile source URLs, as in the TileJSON spec." }, bounds: { type: "array", value: "number", length: 4, default: [-180, -85.051129, 180, 85.051129], doc: "An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL." }, minzoom: { type: "number", default: 0, doc: "Minimum zoom level for which tiles are available, as in the TileJSON spec." }, maxzoom: { type: "number", default: 22, doc: "Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels." }, tileSize: { type: "number", default: 512, units: "pixels", doc: "The minimum visual size to display tiles for this layer. Only configurable for raster layers." }, scheme: { type: "enum", values: {xyz: {doc: "Slippy map tilenames scheme."}, tms: {doc: "OSGeo spec scheme."}}, default: "xyz", doc: "Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed." }, attribution: { type: "string", doc: "Contains an attribution to be displayed when the map is shown to a user." }, volatile: { type: "boolean", default: !1, doc: "A setting to determine whether a source's tiles are cached locally.", "sdk-support": {"basic functionality": {android: "9.3.0", ios: "5.10.0"}} }, "*": {type: "*", doc: "Other keys to configure the data source."} }, source_raster_dem: { type: { required: !0, type: "enum", values: {"raster-dem": {doc: "A RGB-encoded raster DEM source"}}, doc: "The type of the source." }, url: { type: "string", doc: "A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`." }, tiles: { type: "array", value: "string", doc: "An array of one or more tile source URLs, as in the TileJSON spec." }, bounds: { type: "array", value: "number", length: 4, default: [-180, -85.051129, 180, 85.051129], doc: "An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL." }, minzoom: { type: "number", default: 0, doc: "Minimum zoom level for which tiles are available, as in the TileJSON spec." }, maxzoom: { type: "number", default: 22, doc: "Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels." }, tileSize: { type: "number", default: 512, units: "pixels", doc: "The minimum visual size to display tiles for this layer. Only configurable for raster layers." }, attribution: { type: "string", doc: "Contains an attribution to be displayed when the map is shown to a user." }, encoding: { type: "enum", values: { terrarium: {doc: "Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info."}, mapbox: {doc: "Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info."} }, default: "mapbox", doc: "The encoding used by this source. Mapbox Terrain RGB is used by default" }, volatile: { type: "boolean", default: !1, doc: "A setting to determine whether a source's tiles are cached locally.", "sdk-support": {"basic functionality": {android: "9.3.0", ios: "5.10.0"}} }, "*": {type: "*", doc: "Other keys to configure the data source."} }, source_geojson: { type: { required: !0, type: "enum", values: {geojson: {doc: "A GeoJSON data source."}}, doc: "The data type of the GeoJSON source." }, data: {type: "*", doc: "A URL to a GeoJSON file, or inline GeoJSON."}, maxzoom: { type: "number", default: 18, doc: "Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels)." }, attribution: { type: "string", doc: "Contains an attribution to be displayed when the map is shown to a user." }, buffer: { type: "number", default: 128, maximum: 512, minimum: 0, doc: "Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance." }, filter: {type: "*", doc: "An expression for filtering features prior to processing them for rendering."}, tolerance: { type: "number", default: .375, doc: "Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance)." }, cluster: { type: "boolean", default: !1, doc: "If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\n * `cluster` Is `true` if the point is a cluster \n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\n * `point_count` Number of original points grouped into this cluster\n * `point_count_abbreviated` An abbreviated point count" }, clusterRadius: { type: "number", default: 50, minimum: 0, doc: "Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile." }, clusterMaxZoom: { type: "number", doc: "Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered). Clusters are re-evaluated at integer zoom levels so setting clusterMaxZoom to 14 means the clusters will be displayed until z15." }, clusterMinPoints: { type: "number", doc: "Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`." }, clusterProperties: { type: "*", doc: 'An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{"property_name": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `"+"` or `"max"`) — it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\n\nExample: `{"sum": ["+", ["get", "scalerank"]]}`.\n\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `["accumulated"]` value, e.g.:\n`{"sum": [["+", ["accumulated"], ["get", "sum"]], ["get", "scalerank"]]}`' }, lineMetrics: { type: "boolean", default: !1, doc: "Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values." }, generateId: { type: "boolean", default: !1, doc: "Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values." }, promoteId: { type: "promoteId", doc: "A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`." } }, source_video: { type: { required: !0, type: "enum", values: {video: {doc: "A video data source."}}, doc: "The data type of the video source." }, urls: { required: !0, type: "array", value: "string", doc: "URLs to video content in order of preferred format." }, coordinates: { required: !0, doc: "Corners of video specified in longitude, latitude pairs.", type: "array", length: 4, value: {type: "array", length: 2, value: "number", doc: "A single longitude, latitude pair."} } }, source_image: { type: { required: !0, type: "enum", values: {image: {doc: "An image data source."}}, doc: "The data type of the image source." }, url: {required: !0, type: "string", doc: "URL that points to an image."}, coordinates: { required: !0, doc: "Corners of image specified in longitude, latitude pairs.", type: "array", length: 4, value: {type: "array", length: 2, value: "number", doc: "A single longitude, latitude pair."} } }, layer: { id: {type: "string", doc: "Unique layer name.", required: !0}, type: { type: "enum", values: { fill: { doc: "A filled polygon with an optional stroked border.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}} }, line: { doc: "A stroked line.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}} }, symbol: { doc: "An icon or a text label.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}} }, circle: { doc: "A filled circle.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}} }, heatmap: { doc: "A heatmap.", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "fill-extrusion": { doc: "An extruded (3D) polygon.", "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}} }, raster: { doc: "Raster map textures such as satellite imagery.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}} }, hillshade: { doc: "Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.", "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, background: { doc: "The background color or pattern of the map.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}} }, sky: { doc: "A spherical dome around the map that is always rendered behind all other layers.", "sdk-support": {"basic functionality": {js: "2.0.0"}} } }, doc: "Rendering type of this layer.", required: !0 }, metadata: { type: "*", doc: "Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'." }, source: { type: "string", doc: "Name of a source description to be used for this layer. Required for all layer types except `background`." }, "source-layer": { type: "string", doc: "Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources." }, minzoom: { type: "number", minimum: 0, maximum: 24, doc: "The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden." }, maxzoom: { type: "number", minimum: 0, maximum: 24, doc: "The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden." }, filter: { type: "filter", doc: "A expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `feature-state` expression is not supported in filter expressions." }, layout: {type: "layout", doc: "Layout properties for the layer."}, paint: {type: "paint", doc: "Default paint properties for this layer."} }, layout: ["layout_fill", "layout_line", "layout_circle", "layout_heatmap", "layout_fill-extrusion", "layout_symbol", "layout_raster", "layout_hillshade", "layout_background", "layout_sky"], layout_background: { visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, "property-type": "constant" } }, layout_sky: { visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "2.0.0"}}, "property-type": "constant" } }, layout_fill: { "fill-sort-key": { type: "number", doc: "Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.", "sdk-support": { "basic functionality": {js: "1.2.0", android: "9.1.0", ios: "5.8.0", macos: "0.15.0"}, "data-driven styling": {js: "1.2.0", android: "9.1.0", ios: "5.8.0", macos: "0.15.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, "property-type": "constant" } }, layout_circle: { "circle-sort-key": { type: "number", doc: "Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.", "sdk-support": { "basic functionality": {js: "1.2.0", android: "9.2.0", ios: "5.9.0", macos: "0.16.0"}, "data-driven styling": {js: "1.2.0", android: "9.2.0", ios: "5.9.0", macos: "0.16.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, "property-type": "constant" } }, layout_heatmap: { visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, "property-type": "constant" } }, "layout_fill-extrusion": { visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}}, "property-type": "constant" } }, layout_line: { "line-cap": { type: "enum", values: { butt: {doc: "A cap with a squared-off end which is drawn to the exact endpoint of the line."}, round: {doc: "A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."}, square: {doc: "A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."} }, default: "butt", doc: "The display of line endings.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "line-join": { type: "enum", values: { bevel: {doc: "A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."}, round: {doc: "A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."}, miter: {doc: "A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet."} }, default: "miter", doc: "The display of lines when joining.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.40.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "line-miter-limit": { type: "number", default: 2, doc: "Used to automatically convert miter joins to bevel joins for sharp angles.", requires: [{"line-join": "miter"}], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "line-round-limit": { type: "number", default: 1.05, doc: "Used to automatically convert round joins to miter joins for shallow angles.", requires: [{"line-join": "round"}], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "line-sort-key": { type: "number", doc: "Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.", "sdk-support": { "basic functionality": {js: "1.2.0", android: "9.1.0", ios: "5.8.0", macos: "0.15.0"}, "data-driven styling": {js: "1.2.0", android: "9.1.0", ios: "5.8.0", macos: "0.15.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, "property-type": "constant" } }, layout_symbol: { "symbol-placement": { type: "enum", values: { point: {doc: "The label is placed at the point where the geometry is located."}, line: {doc: "The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries."}, "line-center": {doc: "The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries."} }, default: "point", doc: "Label placement relative to its geometry.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "`line-center` value": {js: "0.47.0", android: "6.4.0", ios: "4.3.0", macos: "0.10.0"} }, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "symbol-spacing": { type: "number", default: 250, minimum: 1, units: "pixels", doc: "Distance between two symbol anchors.", requires: [{"symbol-placement": "line"}], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "symbol-avoid-edges": { type: "boolean", default: !1, doc: "If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "symbol-sort-key": { type: "number", doc: "Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first. When `icon-allow-overlap` or `text-allow-overlap` is `false`, features with a lower sort key will have priority during placement. When `icon-allow-overlap` or `text-allow-overlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.", "sdk-support": { "basic functionality": {js: "0.53.0", android: "7.4.0", ios: "4.11.0", macos: "0.14.0"}, "data-driven styling": {js: "0.53.0", android: "7.4.0", ios: "4.11.0", macos: "0.14.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "symbol-z-order": { type: "enum", values: { auto: {doc: "Sorts symbols by `symbol-sort-key` if set. Otherwise, sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."}, "viewport-y": {doc: "Sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."}, source: {doc: "Sorts symbols by `symbol-sort-key` if set. Otherwise, no sorting is applied; symbols are rendered in the same order as the source data."} }, default: "auto", doc: "Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their y-position relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbol-sort-key`.", "sdk-support": {"basic functionality": {js: "0.49.0", android: "6.6.0", ios: "4.5.0", macos: "0.12.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-allow-overlap": { type: "boolean", default: !1, doc: "If true, the icon will be visible even if it collides with other previously drawn symbols.", requires: ["icon-image"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-ignore-placement": { type: "boolean", default: !1, doc: "If true, other symbols can be visible even if they collide with the icon.", requires: ["icon-image"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-optional": { type: "boolean", default: !1, doc: "If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.", requires: ["icon-image", "text-field"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-rotation-alignment": { type: "enum", values: { map: {doc: "When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line."}, viewport: {doc: "Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."}, auto: {doc: "When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."} }, default: "auto", doc: "In combination with `symbol-placement`, determines the rotation behavior of icons.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "`auto` value": {js: "0.25.0", android: "4.2.0", ios: "3.4.0", macos: "0.3.0"} }, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-size": { type: "number", default: 1, minimum: 0, units: "factor of the original icon size", doc: "Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.35.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "icon-text-fit": { type: "enum", values: { none: {doc: "The icon is displayed at its intrinsic aspect ratio."}, width: {doc: "The icon is scaled in the x-dimension to fit the width of the text."}, height: {doc: "The icon is scaled in the y-dimension to fit the height of the text."}, both: {doc: "The icon is scaled in both x- and y-dimensions."} }, default: "none", doc: "Scales the icon to fit around the associated text.", requires: ["icon-image", "text-field"], "sdk-support": { "basic functionality": {js: "0.21.0", android: "4.2.0", ios: "3.4.0", macos: "0.2.1"}, "stretchable icons": {js: "1.6.0", android: "9.2.0", ios: "5.8.0", macos: "0.15.0"} }, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-text-fit-padding": { type: "array", value: "number", length: 4, default: [0, 0, 0, 0], units: "pixels", doc: "Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.", requires: ["icon-image", "text-field", {"icon-text-fit": ["both", "width", "height"]}], "sdk-support": {"basic functionality": {js: "0.21.0", android: "4.2.0", ios: "3.4.0", macos: "0.2.1"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-image": { type: "resolvedImage", doc: "Name of image in sprite to use for drawing an image background.", tokens: !0, "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.35.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "icon-rotate": { type: "number", default: 0, period: 360, units: "degrees", doc: "Rotates the icon clockwise.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.21.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "icon-padding": { type: "number", default: 2, minimum: 0, units: "pixels", doc: "Size of the additional area around the icon bounding box used for detecting symbol collisions.", requires: ["icon-image"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-keep-upright": { type: "boolean", default: !1, doc: "If true, the icon may be flipped to prevent it from being rendered upside-down.", requires: ["icon-image", {"icon-rotation-alignment": "map"}, {"symbol-placement": ["line", "line-center"]}], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-offset": { type: "array", value: "number", length: 2, default: [0, 0], doc: "Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "icon-anchor": { type: "enum", values: { center: {doc: "The center of the icon is placed closest to the anchor."}, left: {doc: "The left side of the icon is placed closest to the anchor."}, right: {doc: "The right side of the icon is placed closest to the anchor."}, top: {doc: "The top of the icon is placed closest to the anchor."}, bottom: {doc: "The bottom of the icon is placed closest to the anchor."}, "top-left": {doc: "The top left corner of the icon is placed closest to the anchor."}, "top-right": {doc: "The top right corner of the icon is placed closest to the anchor."}, "bottom-left": {doc: "The bottom left corner of the icon is placed closest to the anchor."}, "bottom-right": {doc: "The bottom right corner of the icon is placed closest to the anchor."} }, default: "center", doc: "Part of the icon placed closest to the anchor.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.40.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"}, "data-driven styling": {js: "0.40.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "icon-pitch-alignment": { type: "enum", values: { map: {doc: "The icon is aligned to the plane of the map."}, viewport: {doc: "The icon is aligned to the plane of the viewport."}, auto: {doc: "Automatically matches the value of `icon-rotation-alignment`."} }, default: "auto", doc: "Orientation of icon when map is pitched.", requires: ["icon-image"], "sdk-support": {"basic functionality": {js: "0.39.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-pitch-alignment": { type: "enum", values: { map: {doc: "The text is aligned to the plane of the map."}, viewport: {doc: "The text is aligned to the plane of the viewport."}, auto: {doc: "Automatically matches the value of `text-rotation-alignment`."} }, default: "auto", doc: "Orientation of text when map is pitched.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.21.0", android: "4.2.0", ios: "3.4.0", macos: "0.2.1"}, "`auto` value": {js: "0.25.0", android: "4.2.0", ios: "3.4.0", macos: "0.3.0"} }, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-rotation-alignment": { type: "enum", values: { map: {doc: "When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line."}, viewport: {doc: "Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."}, auto: {doc: "When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."} }, default: "auto", doc: "In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "`auto` value": {js: "0.25.0", android: "4.2.0", ios: "3.4.0", macos: "0.3.0"} }, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-field": { type: "formatted", default: "", tokens: !0, doc: "Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-font": { type: "array", value: "string", default: ["Open Sans Regular", "Arial Unicode MS Regular"], doc: "Font stack to use for displaying text.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-size": { type: "number", default: 16, minimum: 0, units: "pixels", doc: "Font size.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.35.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-max-width": { type: "number", default: 10, minimum: 0, units: "ems", doc: "The maximum line width for text wrapping.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.40.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-line-height": { type: "number", default: 1.2, units: "ems", doc: "Text leading value for multi-line text.", requires: ["text-field"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-letter-spacing": { type: "number", default: 0, units: "ems", doc: "Text tracking amount.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.40.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-justify": { type: "enum", values: { auto: {doc: "The text is aligned towards the anchor position."}, left: {doc: "The text is aligned to the left."}, center: {doc: "The text is centered."}, right: {doc: "The text is aligned to the right."} }, default: "center", doc: "Text justification options.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.39.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"}, auto: {js: "0.54.0", android: "7.4.0", ios: "4.10.0", macos: "0.14.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-radial-offset": { type: "number", units: "ems", default: 0, doc: "Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which defaults to using the two-dimensional `text-offset` if present.", "sdk-support": { "basic functionality": {js: "0.54.0", android: "7.4.0", ios: "4.10.0", macos: "0.14.0"}, "data-driven styling": {js: "0.54.0", android: "7.4.0", ios: "4.10.0", macos: "0.14.0"} }, requires: ["text-field"], "property-type": "data-driven", expression: {interpolated: !0, parameters: ["zoom", "feature"]} }, "text-variable-anchor": { type: "array", value: "enum", values: { center: {doc: "The center of the text is placed closest to the anchor."}, left: {doc: "The left side of the text is placed closest to the anchor."}, right: {doc: "The right side of the text is placed closest to the anchor."}, top: {doc: "The top of the text is placed closest to the anchor."}, bottom: {doc: "The bottom of the text is placed closest to the anchor."}, "top-left": {doc: "The top left corner of the text is placed closest to the anchor."}, "top-right": {doc: "The top right corner of the text is placed closest to the anchor."}, "bottom-left": {doc: "The bottom left corner of the text is placed closest to the anchor."}, "bottom-right": {doc: "The bottom right corner of the text is placed closest to the anchor."} }, requires: ["text-field", {"symbol-placement": ["point"]}], doc: "To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the renderer will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` or the two-dimensional `text-offset`.", "sdk-support": {"basic functionality": {js: "0.54.0", android: "7.4.0", ios: "4.10.0", macos: "0.14.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-anchor": { type: "enum", values: { center: {doc: "The center of the text is placed closest to the anchor."}, left: {doc: "The left side of the text is placed closest to the anchor."}, right: {doc: "The right side of the text is placed closest to the anchor."}, top: {doc: "The top of the text is placed closest to the anchor."}, bottom: {doc: "The bottom of the text is placed closest to the anchor."}, "top-left": {doc: "The top left corner of the text is placed closest to the anchor."}, "top-right": {doc: "The top right corner of the text is placed closest to the anchor."}, "bottom-left": {doc: "The bottom left corner of the text is placed closest to the anchor."}, "bottom-right": {doc: "The bottom right corner of the text is placed closest to the anchor."} }, default: "center", doc: "Part of the text placed closest to the anchor.", requires: ["text-field", {"!": "text-variable-anchor"}], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.39.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-max-angle": { type: "number", default: 45, units: "degrees", doc: "Maximum angle change between adjacent characters.", requires: ["text-field", {"symbol-placement": ["line", "line-center"]}], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-writing-mode": { type: "array", value: "enum", values: { horizontal: {doc: "If a text's language supports horizontal writing mode, symbols with point placement would be laid out horizontally."}, vertical: {doc: "If a text's language supports vertical writing mode, symbols with point placement would be laid out vertically."} }, doc: "The property allows control over a symbol's orientation. Note that the property values act as a hint, so that a symbol whose language doesn’t support the provided orientation will be laid out in its natural orientation. Example: English point symbol will be rendered horizontally even if array value contains single 'vertical' enum value. The order of elements in an array define priority order for the placement of an orientation variant.", requires: ["text-field", {"symbol-placement": ["point"]}], "sdk-support": {"basic functionality": {js: "1.3.0", android: "8.3.0", ios: "5.3.0", macos: "0.15.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-rotate": { type: "number", default: 0, period: 360, units: "degrees", doc: "Rotates the text clockwise.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.35.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-padding": { type: "number", default: 2, minimum: 0, units: "pixels", doc: "Size of the additional area around the text bounding box used for detecting symbol collisions.", requires: ["text-field"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-keep-upright": { type: "boolean", default: !0, doc: "If true, the text may be flipped vertically to prevent it from being rendered upside-down.", requires: ["text-field", {"text-rotation-alignment": "map"}, {"symbol-placement": ["line", "line-center"]}], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-transform": { type: "enum", values: { none: {doc: "The text is not altered."}, uppercase: {doc: "Forces all letters to be displayed in uppercase."}, lowercase: {doc: "Forces all letters to be displayed in lowercase."} }, default: "none", doc: "Specifies how to capitalize text, similar to the CSS `text-transform` property.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-offset": { type: "array", doc: "Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up. If used with text-variable-anchor, input values will be taken as absolute values. Offsets along the x- and y-axis will be applied automatically based on the anchor position.", value: "number", units: "ems", length: 2, default: [0, 0], requires: ["text-field", {"!": "text-radial-offset"}], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.35.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature"]}, "property-type": "data-driven" }, "text-allow-overlap": { type: "boolean", default: !1, doc: "If true, the text will be visible even if it collides with other previously drawn symbols.", requires: ["text-field"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-ignore-placement": { type: "boolean", default: !1, doc: "If true, other symbols can be visible even if they collide with the text.", requires: ["text-field"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-optional": { type: "boolean", default: !1, doc: "If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.", requires: ["text-field", "icon-image"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, "property-type": "constant" } }, layout_raster: { visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, "property-type": "constant" } }, layout_hillshade: { visibility: { type: "enum", values: {visible: {doc: "The layer is shown."}, none: {doc: "The layer is not shown."}}, default: "visible", doc: "Whether this layer is displayed.", "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, "property-type": "constant" } }, filter: {type: "array", value: "*", doc: "A filter selects specific features from a layer."}, filter_operator: { type: "enum", values: { "==": {doc: '`["==", key, value]` equality: `feature[key] = value`'}, "!=": {doc: '`["!=", key, value]` inequality: `feature[key] ≠ value`'}, ">": {doc: '`[">", key, value]` greater than: `feature[key] > value`'}, ">=": {doc: '`[">=", key, value]` greater than or equal: `feature[key] ≥ value`'}, "<": {doc: '`["<", key, value]` less than: `feature[key] < value`'}, "<=": {doc: '`["<=", key, value]` less than or equal: `feature[key] ≤ value`'}, in: {doc: '`["in", key, v0, ..., vn]` set inclusion: `feature[key] ∈ {v0, ..., vn}`'}, "!in": {doc: '`["!in", key, v0, ..., vn]` set exclusion: `feature[key] ∉ {v0, ..., vn}`'}, all: {doc: '`["all", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`'}, any: {doc: '`["any", f0, ..., fn]` logical `OR`: `f0 ∨ ... ∨ fn`'}, none: {doc: '`["none", f0, ..., fn]` logical `NOR`: `¬f0 ∧ ... ∧ ¬fn`'}, has: {doc: '`["has", key]` `feature[key]` exists'}, "!has": {doc: '`["!has", key]` `feature[key]` does not exist'}, within: {doc: '`["within", object]` feature geometry is within object geometry'} }, doc: "The filter operator." }, geometry_type: { type: "enum", values: { Point: {doc: "Filter to point geometries."}, LineString: {doc: "Filter to line geometries."}, Polygon: {doc: "Filter to polygon geometries."} }, doc: "The geometry type for the filter to select." }, function: { expression: {type: "expression", doc: "An expression."}, stops: {type: "array", doc: "An array of stops.", value: "function_stop"}, base: { type: "number", default: 1, minimum: 0, doc: "The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly." }, property: { type: "string", doc: "The name of a feature property to use as the function input.", default: "$zoom" }, type: { type: "enum", values: { identity: {doc: "Return the input value as the output value."}, exponential: {doc: "Generate an output by interpolating between stops just less than and just greater than the function input."}, interval: {doc: "Return the output value of the stop just less than the function input."}, categorical: {doc: "Return the output value of the stop equal to the function input."} }, doc: "The interpolation strategy to use in function evaluation.", default: "exponential" }, colorSpace: { type: "enum", values: { rgb: {doc: "Use the RGB color space to interpolate color values"}, lab: {doc: "Use the LAB color space to interpolate color values."}, hcl: {doc: "Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually."} }, doc: "The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.", default: "rgb" }, default: { type: "*", required: !1, doc: "A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\n* In categorical functions, when the feature value does not match any of the stop domain values.\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\nIf no default is provided, the style property's default is used in these circumstances." } }, function_stop: { type: "array", minimum: 0, maximum: 24, value: ["number", "color"], length: 2, doc: "Zoom level and value pair." }, expression: { type: "array", value: "*", minimum: 1, doc: "An expression defines a function that can be used for data-driven style properties or feature filters." }, expression_name: { doc: "", type: "enum", values: { let: { doc: 'Binds expressions to named variables, which can then be referenced in the result expression using ["var", "variable_name"].', group: "Variable binding", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, var: { doc: 'References variable bound using "let".', group: "Variable binding", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, literal: { doc: "Provides a literal array or object value.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, array: { doc: "Asserts that the input is an array (optionally with a specific item type and length). If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, at: { doc: "Retrieves an item from an array.", group: "Lookup", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, in: { doc: "Determines whether an item exists in an array or a substring exists in a string.", group: "Lookup", "sdk-support": {"basic functionality": {js: "1.6.0", android: "9.1.0", ios: "5.8.0", macos: "0.15.0"}} }, "index-of": { doc: "Returns the first position at which an item can be found in an array or a substring can be found in a string, or `-1` if the input cannot be found. Accepts an optional index from where to begin the search.", group: "Lookup", "sdk-support": {"basic functionality": {js: "1.10.0"}} }, slice: { doc: "Returns an item from an array or a substring from a string from a specified start index, or between a start index and an end index if set. The return value is inclusive of the start index but not of the end index.", group: "Lookup", "sdk-support": {"basic functionality": {js: "1.10.0"}} }, case: { doc: "Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.", group: "Decision", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, match: { doc: 'Selects the output whose label value matches the input value, or the fallback value if no match is found. The input can be any expression (e.g. `["get", "building_type"]`). Each label must be either:\n - a single literal value; or\n - an array of literal values, whose values must be all strings or all numbers (e.g. `[100, 101]` or `["c", "b"]`). The input matches if any of the values in the array matches, similar to the `"in"` operator.\nEach label must be unique. If the input type does not match the type of the labels, the result will be the fallback value.', group: "Decision", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, coalesce: { doc: "Evaluates each expression in turn until the first non-null value is obtained, and returns that value.", group: "Decision", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, step: { doc: 'Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first output if the input is less than the first stop.', group: "Ramps, scales, curves", "sdk-support": {"basic functionality": {js: "0.42.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, interpolate: { doc: 'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array`, or `color`.\n\nInterpolation types:\n- `["linear"]`: Interpolates linearly between the pair of stops just less than and just greater than the input.\n- `["exponential", base]`: Interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\n- `["cubic-bezier", x1, y1, x2, y2]`: Interpolates using the cubic bezier curve defined by the given control points.', group: "Ramps, scales, curves", "sdk-support": {"basic functionality": {js: "0.42.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "interpolate-hcl": { doc: 'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.', group: "Ramps, scales, curves", "sdk-support": {"basic functionality": {js: "0.49.0"}} }, "interpolate-lab": { doc: 'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.', group: "Ramps, scales, curves", "sdk-support": {"basic functionality": {js: "0.49.0"}} }, ln2: { doc: "Returns mathematical constant ln(2).", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, pi: { doc: "Returns the mathematical constant pi.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, e: { doc: "Returns the mathematical constant e.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, typeof: { doc: "Returns a string describing the type of the given value.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, string: { doc: "Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, number: { doc: "Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, boolean: { doc: "Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, object: { doc: "Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, collator: { doc: "Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.", group: "Types", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"}} }, format: { doc: 'Returns a `formatted` string for displaying mixed-format text in the `text-field` property. The input may contain a string literal or expression, including an [`\'image\'`](#types-image) expression. Strings may be followed by a style override object that supports the following properties:\n- `"text-font"`: Overrides the font stack specified by the root layout property.\n- `"text-color"`: Overrides the color specified by the root paint property.\n- `"font-scale"`: Applies a scaling factor on `text-size` as specified by the root layout property.', group: "Types", "sdk-support": { "basic functionality": {js: "0.48.0", android: "6.7.0", ios: "4.6.0", macos: "0.12.0"}, "text-font": {js: "0.48.0", android: "6.7.0", ios: "4.6.0", macos: "0.12.0"}, "font-scale": {js: "0.48.0", android: "6.7.0", ios: "4.6.0", macos: "0.12.0"}, "text-color": {js: "1.3.0", android: "7.3.0", ios: "4.10.0", macos: "0.14.0"}, image: {js: "1.6.0", android: "8.6.0", ios: "5.7.0", macos: "0.15.0"} } }, image: { doc: "Returns an `image` type for use in `icon-image`, `*-pattern` entries and as a section in the `format` expression. If set, the `image` argument will check that the requested image exists in the style and will return either the resolved image name or `null`, depending on whether or not the image is currently in the style. This validation process is synchronous and requires the image to have been added to the style before requesting it in the `image` argument.", group: "Types", "sdk-support": {"basic functionality": {js: "1.4.0", android: "8.6.0", ios: "5.7.0", macos: "0.15.0"}} }, "number-format": { doc: "Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.", group: "Types", "sdk-support": {"basic functionality": {js: "0.54.0"}} }, "to-string": { doc: 'Converts the input value to a string. If the input is `null`, the result is `""`. If the input is a boolean, the result is `"true"` or `"false"`. If the input is a number, it is converted to a string as specified by the ["NumberToString" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form `"rgba(r,g,b,a)"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.', group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "to-number": { doc: 'Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the ["ToNumber Applied to the String Type" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.', group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "to-boolean": { doc: "Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "to-rgba": { doc: "Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.", group: "Color", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "to-color": { doc: "Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.", group: "Types", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, rgb: { doc: "Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.", group: "Color", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, rgba: { doc: "Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.", group: "Color", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, get: { doc: "Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns null if the requested property is missing.", group: "Lookup", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, has: { doc: "Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.", group: "Lookup", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, length: { doc: "Gets the length of an array or string.", group: "Lookup", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, properties: { doc: 'Gets the feature properties object. Note that in some cases, it may be more efficient to use ["get", "property_name"] directly.', group: "Feature data", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "feature-state": { doc: "Retrieves a property value from the current feature's state. Returns null if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. Features are identified by their `id` attribute, which must be an integer or a string that can be cast to an integer. Note that [\"feature-state\"] can only be used with paint properties that support data-driven styling.", group: "Feature data", "sdk-support": {"basic functionality": {js: "0.46.0"}} }, "geometry-type": { doc: "Gets the feature's geometry type: `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`.", group: "Feature data", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, id: { doc: "Gets the feature's id, if it has one.", group: "Feature data", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, zoom: { doc: 'Gets the current zoom level. Note that in style layout and paint properties, ["zoom"] may only appear as the input to a top-level "step" or "interpolate" expression.', group: "Zoom", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "heatmap-density": { doc: "Gets the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.", group: "Heatmap", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "line-progress": { doc: "Gets the progress along a gradient line. Can only be used in the `line-gradient` property.", group: "Feature data", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.5.0", ios: "4.6.0", macos: "0.12.0"}} }, "sky-radial-progress": { doc: "Gets the distance of a point on the sky from the sun position. Returns 0 at sun position and 1 when the distance reaches `sky-gradient-radius`. Can only be used in the `sky-gradient` property.", group: "sky", "sdk-support": {"basic functionality": {js: "2.0.0"}} }, accumulated: { doc: "Gets the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.", group: "Feature data", "sdk-support": {"basic functionality": {js: "0.53.0"}} }, "+": { doc: "Returns the sum of the inputs.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "*": { doc: "Returns the product of the inputs.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "-": { doc: "For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "/": { doc: "Returns the result of floating point division of the first input by the second.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "%": { doc: "Returns the remainder after integer division of the first input by the second.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "^": { doc: "Returns the result of raising the first input to the power specified by the second.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, sqrt: { doc: "Returns the square root of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.42.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, log10: { doc: "Returns the base-ten logarithm of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, ln: { doc: "Returns the natural logarithm of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, log2: { doc: "Returns the base-two logarithm of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, sin: { doc: "Returns the sine of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, cos: { doc: "Returns the cosine of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, tan: { doc: "Returns the tangent of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, asin: { doc: "Returns the arcsine of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, acos: { doc: "Returns the arccosine of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, atan: { doc: "Returns the arctangent of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, min: { doc: "Returns the minimum value of the inputs.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, max: { doc: "Returns the maximum value of the inputs.", group: "Math", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, round: { doc: 'Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `["round", -1.5]` evaluates to -2.', group: "Math", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, abs: { doc: "Returns the absolute value of the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, ceil: { doc: "Returns the smallest integer that is greater than or equal to the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, floor: { doc: "Returns the largest integer that is less than or equal to the input.", group: "Math", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, distance: { doc: "Returns the shortest distance in meters between the evaluated feature and the input geometry. The input value can be a valid GeoJSON of type `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Distance values returned may vary in precision due to loss in precision from encoding geometries, particularly below zoom level 13.", group: "Math", "sdk-support": {"basic functionality": {android: "9.2.0", ios: "5.9.0", macos: "0.16.0"}} }, "==": { doc: "Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.", group: "Decision", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, collator: {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"} } }, "!=": { doc: "Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.", group: "Decision", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, collator: {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"} } }, ">": { doc: "Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.", group: "Decision", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, collator: {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"} } }, "<": { doc: "Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.", group: "Decision", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, collator: {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"} } }, ">=": { doc: "Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.", group: "Decision", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, collator: {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"} } }, "<=": { doc: "Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.", group: "Decision", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, collator: {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"} } }, all: { doc: "Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.", group: "Decision", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, any: { doc: "Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.", group: "Decision", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "!": { doc: "Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.", group: "Decision", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, within: { doc: "Returns `true` if the evaluated feature is fully contained inside a boundary of the input geometry, `false` otherwise. The input value can be a valid GeoJSON of type `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Supported features for evaluation:\n- `Point`: Returns `false` if a point is on the boundary or falls outside the boundary.\n- `LineString`: Returns `false` if any part of a line falls outside the boundary, the line intersects the boundary, or a line's endpoint is on the boundary.", group: "Decision", "sdk-support": {"basic functionality": {js: "1.9.0", android: "9.1.0", ios: "5.8.0", macos: "0.15.0"}} }, "is-supported-script": { doc: "Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in Mapbox GL JS).", group: "String", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.6.0"}} }, upcase: { doc: "Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.", group: "String", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, downcase: { doc: "Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.", group: "String", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, concat: { doc: "Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.", group: "String", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}} }, "resolved-locale": { doc: "Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.", group: "String", "sdk-support": {"basic functionality": {js: "0.45.0", android: "6.5.0", ios: "4.2.0", macos: "0.9.0"}} } } }, light: { anchor: { type: "enum", default: "viewport", values: { map: {doc: "The position of the light source is aligned to the rotation of the map."}, viewport: {doc: "The position of the light source is aligned to the rotation of the viewport."} }, "property-type": "data-constant", transition: !1, expression: {interpolated: !1, parameters: ["zoom"]}, doc: "Whether extruded geometries are lit relative to the map or viewport.", example: "map", "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}} }, position: { type: "array", default: [1.15, 210, 30], length: 3, value: "number", "property-type": "data-constant", transition: !0, expression: {interpolated: !0, parameters: ["zoom"]}, doc: "Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).", example: [1.5, 90, 80], "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}} }, color: { type: "color", "property-type": "data-constant", default: "#ffffff", expression: {interpolated: !0, parameters: ["zoom"]}, transition: !0, doc: "Color tint for lighting extruded geometries.", "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}} }, intensity: { type: "number", "property-type": "data-constant", default: .5, minimum: 0, maximum: 1, expression: {interpolated: !0, parameters: ["zoom"]}, transition: !0, doc: "Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.", "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}} } }, terrain: { source: { type: "string", doc: "Name of a source of `raster_dem` type to be used for terrain elevation.", required: !0 }, exaggeration: { type: "number", "property-type": "data-constant", default: 1, minimum: 0, maximum: 1e3, expression: {interpolated: !0, parameters: ["zoom"]}, transition: !0, doc: "Exaggerates the elevation of the terrain by multiplying the data from the DEM with this value.", "sdk-support": {"basic functionality": {js: "2.0.0"}} } }, paint: ["paint_fill", "paint_line", "paint_circle", "paint_heatmap", "paint_fill-extrusion", "paint_symbol", "paint_raster", "paint_hillshade", "paint_background", "paint_sky"], paint_fill: { "fill-antialias": { type: "boolean", default: !0, doc: "Whether or not the fill should be antialiased.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "fill-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, doc: "The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.", transition: !0, "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.21.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "fill-color": { type: "color", default: "#000000", doc: "The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.", transition: !0, requires: [{"!": "fill-pattern"}], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.19.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "fill-outline-color": { type: "color", doc: "The outline color of the fill. Matches the value of `fill-color` if unspecified.", transition: !0, requires: [{"!": "fill-pattern"}, {"fill-antialias": !0}], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.19.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "fill-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "fill-translate-anchor": { type: "enum", values: { map: {doc: "The fill is translated relative to the map."}, viewport: {doc: "The fill is translated relative to the viewport."} }, doc: "Controls the frame of reference for `fill-translate`.", default: "map", requires: ["fill-translate"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "fill-pattern": { type: "resolvedImage", transition: !0, doc: "Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.49.0", android: "6.5.0", macos: "0.11.0", ios: "4.4.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "cross-faded-data-driven" } }, "paint_fill-extrusion": { "fill-extrusion-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, doc: "The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.", transition: !0, "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "fill-extrusion-color": { type: "color", default: "#000000", doc: "The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.", transition: !0, requires: [{"!": "fill-extrusion-pattern"}], "sdk-support": { "basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}, "data-driven styling": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "fill-extrusion-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.", "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "fill-extrusion-translate-anchor": { type: "enum", values: { map: {doc: "The fill extrusion is translated relative to the map."}, viewport: {doc: "The fill extrusion is translated relative to the viewport."} }, doc: "Controls the frame of reference for `fill-extrusion-translate`.", default: "map", requires: ["fill-extrusion-translate"], "sdk-support": {"basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "fill-extrusion-pattern": { type: "resolvedImage", transition: !0, doc: "Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.", "sdk-support": { "basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}, "data-driven styling": {js: "0.49.0", android: "6.5.0", macos: "0.11.0", ios: "4.4.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "cross-faded-data-driven" }, "fill-extrusion-height": { type: "number", default: 0, minimum: 0, units: "meters", doc: "The height with which to extrude this layer.", transition: !0, "sdk-support": { "basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}, "data-driven styling": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "fill-extrusion-base": { type: "number", default: 0, minimum: 0, units: "meters", doc: "The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.", transition: !0, requires: ["fill-extrusion-height"], "sdk-support": { "basic functionality": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"}, "data-driven styling": {js: "0.27.0", android: "5.1.0", ios: "3.6.0", macos: "0.5.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "fill-extrusion-vertical-gradient": { type: "boolean", default: !0, doc: "Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.", transition: !1, "sdk-support": {"basic functionality": {js: "0.50.0", ios: "4.7.0", macos: "0.13.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" } }, paint_line: { "line-opacity": { type: "number", doc: "The opacity at which the line will be drawn.", default: 1, minimum: 0, maximum: 1, transition: !0, "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "line-color": { type: "color", doc: "The color with which the line will be drawn.", default: "#000000", transition: !0, requires: [{"!": "line-pattern"}], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.23.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "line-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "line-translate-anchor": { type: "enum", values: { map: {doc: "The line is translated relative to the map."}, viewport: {doc: "The line is translated relative to the viewport."} }, doc: "Controls the frame of reference for `line-translate`.", default: "map", requires: ["line-translate"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "line-width": { type: "number", default: 1, minimum: 0, transition: !0, units: "pixels", doc: "Stroke thickness.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.39.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "line-gap-width": { type: "number", default: 0, minimum: 0, doc: "Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.", transition: !0, units: "pixels", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "line-offset": { type: "number", default: 0, doc: "The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.", transition: !0, units: "pixels", "sdk-support": { "basic functionality": {js: "0.12.1", android: "3.0.0", ios: "3.1.0", macos: "0.1.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "line-blur": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", doc: "Blur applied to the line, in pixels.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "line-dasharray": { type: "array", value: "number", doc: "Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.", minimum: 0, transition: !0, units: "line widths", requires: [{"!": "line-pattern"}], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {} }, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "cross-faded" }, "line-pattern": { type: "resolvedImage", transition: !0, doc: "Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.49.0", android: "6.5.0", macos: "0.11.0", ios: "4.4.0"} }, expression: {interpolated: !1, parameters: ["zoom", "feature"]}, "property-type": "cross-faded-data-driven" }, "line-gradient": { type: "color", doc: 'Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `"lineMetrics": true`.', transition: !1, requires: [{"!": "line-dasharray"}, {"!": "line-pattern"}, {source: "geojson", has: {lineMetrics: !0}}], "sdk-support": { "basic functionality": {js: "0.45.0", android: "6.5.0", ios: "4.4.0", macos: "0.11.0"}, "data-driven styling": {} }, expression: {interpolated: !0, parameters: ["line-progress"]}, "property-type": "color-ramp" } }, paint_circle: { "circle-radius": { type: "number", default: 5, minimum: 0, transition: !0, units: "pixels", doc: "Circle radius.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.18.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "circle-color": { type: "color", default: "#000000", doc: "The fill color of the circle.", transition: !0, "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.18.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "circle-blur": { type: "number", default: 0, doc: "Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.", transition: !0, "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.20.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "circle-opacity": { type: "number", doc: "The opacity at which the circle will be drawn.", default: 1, minimum: 0, maximum: 1, transition: !0, "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.20.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "circle-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", doc: "The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "circle-translate-anchor": { type: "enum", values: { map: {doc: "The circle is translated relative to the map."}, viewport: {doc: "The circle is translated relative to the viewport."} }, doc: "Controls the frame of reference for `circle-translate`.", default: "map", requires: ["circle-translate"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "circle-pitch-scale": { type: "enum", values: { map: {doc: "Circles are scaled according to their apparent distance to the camera."}, viewport: {doc: "Circles are not scaled."} }, default: "map", doc: "Controls the scaling behavior of the circle when the map is pitched.", "sdk-support": {"basic functionality": {js: "0.21.0", android: "4.2.0", ios: "3.4.0", macos: "0.2.1"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "circle-pitch-alignment": { type: "enum", values: { map: {doc: "The circle is aligned to the plane of the map."}, viewport: {doc: "The circle is aligned to the plane of the viewport."} }, default: "viewport", doc: "Orientation of circle when map is pitched.", "sdk-support": {"basic functionality": {js: "0.39.0", android: "5.2.0", ios: "3.7.0", macos: "0.6.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "circle-stroke-width": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", doc: "The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.", "sdk-support": { "basic functionality": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "circle-stroke-color": { type: "color", default: "#000000", doc: "The stroke color of the circle.", transition: !0, "sdk-support": { "basic functionality": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "circle-stroke-opacity": { type: "number", doc: "The opacity of the circle's stroke.", default: 1, minimum: 0, maximum: 1, transition: !0, "sdk-support": { "basic functionality": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"}, "data-driven styling": {js: "0.29.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" } }, paint_heatmap: { "heatmap-radius": { type: "number", default: 30, minimum: 1, transition: !0, units: "pixels", doc: "Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed.", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, "data-driven styling": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "heatmap-weight": { type: "number", default: 1, minimum: 0, transition: !1, doc: "A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.", "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, "data-driven styling": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "heatmap-intensity": { type: "number", default: 1, minimum: 0, transition: !0, doc: "Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.", "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "heatmap-color": { type: "color", default: ["interpolate", ["linear"], ["heatmap-density"], 0, "rgba(0, 0, 255, 0)", .1, "royalblue", .3, "cyan", .5, "lime", .7, "yellow", 1, "red"], doc: 'Defines the color of each pixel based on its density value in a heatmap. Should be an expression that uses `["heatmap-density"]` as input.', transition: !1, "sdk-support": { "basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}, "data-driven styling": {} }, expression: {interpolated: !0, parameters: ["heatmap-density"]}, "property-type": "color-ramp" }, "heatmap-opacity": { type: "number", doc: "The global opacity at which the heatmap layer will be drawn.", default: 1, minimum: 0, maximum: 1, transition: !0, "sdk-support": {"basic functionality": {js: "0.41.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" } }, paint_symbol: { "icon-opacity": { doc: "The opacity at which the icon will be drawn.", type: "number", default: 1, minimum: 0, maximum: 1, transition: !0, requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "icon-color": { type: "color", default: "#000000", transition: !0, doc: "The color of the icon. This can only be used with sdf icons.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "icon-halo-color": { type: "color", default: "rgba(0, 0, 0, 0)", transition: !0, doc: "The color of the icon's halo. Icon halos can only be used with SDF icons.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "icon-halo-width": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", doc: "Distance of halo to the icon outline.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "icon-halo-blur": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", doc: "Fade out the halo towards the outside.", requires: ["icon-image"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "icon-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", doc: "Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.", requires: ["icon-image"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "icon-translate-anchor": { type: "enum", values: { map: {doc: "Icons are translated relative to the map."}, viewport: {doc: "Icons are translated relative to the viewport."} }, doc: "Controls the frame of reference for `icon-translate`.", default: "map", requires: ["icon-image", "icon-translate"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-opacity": { type: "number", doc: "The opacity at which the text will be drawn.", default: 1, minimum: 0, maximum: 1, transition: !0, requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "text-color": { type: "color", doc: "The color with which the text will be drawn.", default: "#000000", transition: !0, overridable: !0, requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "text-halo-color": { type: "color", default: "rgba(0, 0, 0, 0)", transition: !0, doc: "The color of the text's halo, which helps it stand out from backgrounds.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "text-halo-width": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", doc: "Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "text-halo-blur": { type: "number", default: 0, minimum: 0, transition: !0, units: "pixels", doc: "The halo's fadeout distance towards the outside.", requires: ["text-field"], "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {js: "0.33.0", android: "5.0.0", ios: "3.5.0", macos: "0.4.0"} }, expression: {interpolated: !0, parameters: ["zoom", "feature", "feature-state"]}, "property-type": "data-driven" }, "text-translate": { type: "array", value: "number", length: 2, default: [0, 0], transition: !0, units: "pixels", doc: "Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.", requires: ["text-field"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "text-translate-anchor": { type: "enum", values: { map: {doc: "The text is translated relative to the map."}, viewport: {doc: "The text is translated relative to the viewport."} }, doc: "Controls the frame of reference for `text-translate`.", default: "map", requires: ["text-field", "text-translate"], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" } }, paint_raster: { "raster-opacity": { type: "number", doc: "The opacity at which the image will be drawn.", default: 1, minimum: 0, maximum: 1, transition: !0, "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "raster-hue-rotate": { type: "number", default: 0, period: 360, transition: !0, units: "degrees", doc: "Rotates hues around the color wheel.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "raster-brightness-min": { type: "number", doc: "Increase or reduce the brightness of the image. The value is the minimum brightness.", default: 0, minimum: 0, maximum: 1, transition: !0, "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "raster-brightness-max": { type: "number", doc: "Increase or reduce the brightness of the image. The value is the maximum brightness.", default: 1, minimum: 0, maximum: 1, transition: !0, "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "raster-saturation": { type: "number", doc: "Increase or reduce the saturation of the image.", default: 0, minimum: -1, maximum: 1, transition: !0, "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "raster-contrast": { type: "number", doc: "Increase or reduce the contrast of the image.", default: 0, minimum: -1, maximum: 1, transition: !0, "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "raster-resampling": { type: "enum", doc: "The resampling/interpolation method to use for overscaling, also known as texture magnification filter", values: { linear: {doc: "(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled"}, nearest: {doc: "Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled"} }, default: "linear", "sdk-support": {"basic functionality": {js: "0.47.0", android: "6.3.0", ios: "4.2.0", macos: "0.9.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "raster-fade-duration": { type: "number", default: 300, minimum: 0, transition: !1, units: "milliseconds", doc: "Fade duration when a new tile is added.", "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" } }, paint_hillshade: { "hillshade-illumination-direction": { type: "number", default: 335, minimum: 0, maximum: 359, doc: "The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.", transition: !1, "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "hillshade-illumination-anchor": { type: "enum", values: { map: {doc: "The hillshade illumination is relative to the north direction."}, viewport: {doc: "The hillshade illumination is relative to the top of the viewport."} }, default: "viewport", doc: "Direction of light source when map is rotated.", "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "hillshade-exaggeration": { type: "number", doc: "Intensity of the hillshade", default: .5, minimum: 0, maximum: 1, transition: !0, "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "hillshade-shadow-color": { type: "color", default: "#000000", doc: "The shading color of areas that face away from the light source.", transition: !0, "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "hillshade-highlight-color": { type: "color", default: "#FFFFFF", doc: "The shading color of areas that faces towards the light source.", transition: !0, "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "hillshade-accent-color": { type: "color", default: "#000000", doc: "The shading color used to accentuate rugged terrain like sharp cliffs and gorges.", transition: !0, "sdk-support": {"basic functionality": {js: "0.43.0", android: "6.0.0", ios: "4.0.0", macos: "0.7.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" } }, paint_background: { "background-color": { type: "color", default: "#000000", doc: "The color with which the background will be drawn.", transition: !0, requires: [{"!": "background-pattern"}], "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" }, "background-pattern": { type: "resolvedImage", transition: !0, doc: "Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.", "sdk-support": { "basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}, "data-driven styling": {} }, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "cross-faded" }, "background-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, doc: "The opacity at which the background will be drawn.", transition: !0, "sdk-support": {"basic functionality": {js: "0.10.0", android: "2.0.1", ios: "2.0.0", macos: "0.1.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" } }, paint_sky: { "sky-type": { type: "enum", values: { gradient: {doc: "Renders the sky with a gradient that can be configured with `sky-gradient-radius` and `sky-gradient`."}, atmosphere: {doc: "Renders the sky with a simulated atmospheric scattering algorithm, the sun direction can be attached to the light position or explicitly set through `sky-atmosphere-sun`."} }, default: "atmosphere", doc: "The type of the sky", "sdk-support": {"basic functionality": {js: "2.0.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "sky-atmosphere-sun": { type: "array", value: "number", length: 2, transition: !1, doc: "Position of the sun center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the sun relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the sun, where 0° is directly above, at zenith, and 90° at the horizon. When this property is ommitted, the sun center is directly inherited from the light position.", "sdk-support": {"basic functionality": {js: "2.0.0"}}, requires: [{"sky-type": "atmosphere"}], expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "sky-atmosphere-sun-intensity": { type: "number", requires: [{"sky-type": "atmosphere"}], default: 10, minimum: 0, maximum: 100, transition: !1, doc: "Intensity of the sun as a light source in the atmosphere (on a scale from 0 to a 100). Setting higher values will brighten up the sky.", "sdk-support": {"basic functionality": {js: "2.0.0"}}, "property-type": "data-constant" }, "sky-gradient-center": { type: "array", requires: [{"sky-type": "gradient"}], value: "number", default: [0, 0], length: 2, transition: !1, doc: "Position of the gradient center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the gradient center relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the gradient center, where 0° is directly above, at zenith, and 90° at the horizon.", "sdk-support": {"basic functionality": {js: "2.0.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "sky-gradient-radius": { type: "number", requires: [{"sky-type": "gradient"}], default: 90, minimum: 0, maximum: 180, transition: !1, doc: "The angular distance (measured in degrees) from `sky-gradient-center` up to which the gradient extends. A value of 180 causes the gradient to wrap around to the opposite direction from `sky-gradient-center`.", "sdk-support": {"basic functionality": {js: "2.0.0"}}, expression: {interpolated: !1, parameters: ["zoom"]}, "property-type": "data-constant" }, "sky-gradient": { type: "color", default: ["interpolate", ["linear"], ["sky-radial-progress"], .8, "#87ceeb", 1, "white"], doc: "Defines a radial color gradient with which to color the sky. The color values can be interpolated with an expression using `sky-radial-progress`. The range [0, 1] for the interpolant covers a radial distance (in degrees) of [0, `sky-gradient-radius`] centered at the position specified by `sky-gradient-center`.", transition: !1, requires: [{"sky-type": "gradient"}], "sdk-support": {"basic functionality": {js: "2.0.0"}, "data-driven styling": {}}, expression: {interpolated: !0, parameters: ["sky-radial-progress"]}, "property-type": "color-ramp" }, "sky-atmosphere-halo-color": { type: "color", default: "white", doc: "A color applied to the atmosphere sun halo. The alpha channel describes how strongly the sun halo is represented in an atmosphere sky layer.", transition: !1, requires: [{"sky-type": "atmosphere"}], "sdk-support": {"basic functionality": {js: "2.0.0"}}, "property-type": "data-constant" }, "sky-atmosphere-color": { type: "color", default: "white", doc: "A color used to tweak the main atmospheric scattering coefficients. Using white applies the default coefficients giving the natural blue color to the atmosphere. This color affects how heavily the corresponding wavelength is represented during scattering. The alpha channel describes the density of the atmosphere, with 1 maximum density and 0 no density.", transition: !1, requires: [{"sky-type": "atmosphere"}], "sdk-support": {"basic functionality": {js: "2.0.0"}}, "property-type": "data-constant" }, "sky-opacity": { type: "number", default: 1, minimum: 0, maximum: 1, doc: "The opacity of the entire sky layer.", transition: !0, "sdk-support": {"basic functionality": {js: "2.0.0"}}, expression: {interpolated: !0, parameters: ["zoom"]}, "property-type": "data-constant" } }, transition: { duration: { type: "number", default: 300, minimum: 0, units: "milliseconds", doc: "Time allotted for transitions to complete." }, delay: { type: "number", default: 0, minimum: 0, units: "milliseconds", doc: "Length of time before a transition begins." } }, "property-type": { "data-driven": { type: "property-type", doc: "Property is interpolable and can be represented using a property expression." }, "cross-faded": { type: "property-type", doc: "Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms." }, "cross-faded-data-driven": { type: "property-type", doc: "Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression." }, "color-ramp": { type: "property-type", doc: "Property should be specified using a color ramp from which the output color can be sampled based on a property calculation." }, "data-constant": { type: "property-type", doc: "Property is interpolable but cannot be represented using a property expression." }, constant: {type: "property-type", doc: "Property is constant across all zoom levels and property values."} }, promoteId: {"*": {type: "string", doc: "A name of a feature property to use as ID for feature state."}} }; var o = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : void 0 !== t ? t : "undefined" != typeof self ? self : {}; function a() { throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs") } function s(t, e) { return t(e = {exports: {}}, e.exports), e.exports } var l = s((function (t, e) { !function (r) { var n = e && !e.nodeType && e, i = t && !t.nodeType && t, a = "object" == typeof o && o; a.global !== a && a.window !== a && a.self !== a || (r = a); var s, l, u = 2147483647, c = /^xn--/, h = /[^\x20-\x7E]/, p = /[\x2E\u3002\uFF0E\uFF61]/g, f = { overflow: "Overflow: input needs wider integers to process", "not-basic": "Illegal input >= 0x80 (not a basic code point)", "invalid-input": "Invalid input" }, d = Math.floor, g = String.fromCharCode; function y(t) { throw RangeError(f[t]) } function m(t, e) { for (var r = t.length, n = []; r--;) n[r] = e(t[r]); return n } function v(t, e) { var r = t.split("@"), n = ""; return r.length > 1 && (n = r[0] + "@", t = r[1]), n + m((t = t.replace(p, ".")).split("."), e).join(".") } function _(t) { for (var e, r, n = [], i = 0, o = t.length; i < o;) (e = t.charCodeAt(i++)) >= 55296 && e <= 56319 && i < o ? 56320 == (64512 & (r = t.charCodeAt(i++))) ? n.push(((1023 & e) << 10) + (1023 & r) + 65536) : (n.push(e), i--) : n.push(e); return n } function b(t) { return m(t, (function (t) { var e = ""; return t > 65535 && (e += g((t -= 65536) >>> 10 & 1023 | 55296), t = 56320 | 1023 & t), e += g(t) })).join("") } function x(t, e) { return t + 22 + 75 * (t < 26) - ((0 != e) << 5) } function w(t, e, r) { var n = 0; for (t = r ? d(t / 700) : t >> 1, t += d(t / e); t > 455; n += 36) t = d(t / 35); return d(n + 36 * t / (t + 38)) } function S(t) { var e, r, n, i, o, a, s, l, c, h, p, f = [], g = t.length, m = 0, v = 128, _ = 72; for ((r = t.lastIndexOf("-")) < 0 && (r = 0), n = 0; n < r; ++n) t.charCodeAt(n) >= 128 && y("not-basic"), f.push(t.charCodeAt(n)); for (i = r > 0 ? r + 1 : 0; i < g;) { for (o = m, a = 1, s = 36; i >= g && y("invalid-input"), ((l = (p = t.charCodeAt(i++)) - 48 < 10 ? p - 22 : p - 65 < 26 ? p - 65 : p - 97 < 26 ? p - 97 : 36) >= 36 || l > d((u - m) / a)) && y("overflow"), m += l * a, !(l < (c = s <= _ ? 1 : s >= _ + 26 ? 26 : s - _)); s += 36) a > d(u / (h = 36 - c)) && y("overflow"), a *= h; _ = w(m - o, e = f.length + 1, 0 == o), d(m / e) > u - v && y("overflow"), v += d(m / e), m %= e, f.splice(m++, 0, v) } return b(f) } function E(t) { var e, r, n, i, o, a, s, l, c, h, p, f, m, v, b, S = []; for (f = (t = _(t)).length, e = 128, r = 0, o = 72, a = 0; a < f; ++a) (p = t[a]) < 128 && S.push(g(p)); for (n = i = S.length, i && S.push("-"); n < f;) { for (s = u, a = 0; a < f; ++a) (p = t[a]) >= e && p < s && (s = p); for (s - e > d((u - r) / (m = n + 1)) && y("overflow"), r += (s - e) * m, e = s, a = 0; a < f; ++a) if ((p = t[a]) < e && ++r > u && y("overflow"), p == e) { for (l = r, c = 36; !(l < (h = c <= o ? 1 : c >= o + 26 ? 26 : c - o)); c += 36) b = l - h, v = 36 - h, S.push(g(x(h + b % v, 0))), l = d(b / v); S.push(g(x(l, 0))), o = w(r, m, n == i), r = 0, ++n } ++r, ++e } return S.join("") } if (s = { version: "1.3.2", ucs2: {decode: _, encode: b}, decode: S, encode: E, toASCII: function (t) { return v(t, (function (t) { return h.test(t) ? "xn--" + E(t) : t })) }, toUnicode: function (t) { return v(t, (function (t) { return c.test(t) ? S(t.slice(4).toLowerCase()) : t })) } }, n && i) if (t.exports == n) i.exports = s; else for (l in s) s.hasOwnProperty(l) && (n[l] = s[l]); else r.punycode = s }(o) })), u = function (t) { return "string" == typeof t }, c = function (t) { return "object" == typeof t && null !== t }, h = function (t) { return null === t }, p = function (t) { return null == t }; function f(t, e) { return Object.prototype.hasOwnProperty.call(t, e) } var d = function (t, e, r, n) { e = e || "&", r = r || "="; var i = {}; if ("string" != typeof t || 0 === t.length) return i; var o = /\+/g; t = t.split(e); var a = 1e3; n && "number" == typeof n.maxKeys && (a = n.maxKeys); var s = t.length; a > 0 && s > a && (s = a); for (var l = 0; l < s; ++l) { var u, c, h, p, d = t[l].replace(o, "%20"), g = d.indexOf(r); g >= 0 ? (u = d.substr(0, g), c = d.substr(g + 1)) : (u = d, c = ""), h = decodeURIComponent(u), p = decodeURIComponent(c), f(i, h) ? Array.isArray(i[h]) ? i[h].push(p) : i[h] = [i[h], p] : i[h] = p } return i }, g = function (t) { switch (typeof t) { case"string": return t; case"boolean": return t ? "true" : "false"; case"number": return isFinite(t) ? t : ""; default: return "" } }, y = function (t, e, r, n) { return e = e || "&", r = r || "=", null === t && (t = void 0), "object" == typeof t ? Object.keys(t).map((function (n) { var i = encodeURIComponent(g(n)) + r; return Array.isArray(t[n]) ? t[n].map((function (t) { return i + encodeURIComponent(g(t)) })).join(e) : i + encodeURIComponent(g(t[n])) })).join(e) : n ? encodeURIComponent(g(n)) + r + encodeURIComponent(g(t)) : "" }, m = s((function (t, e) { e.decode = e.parse = d, e.encode = e.stringify = y })); m.decode, m.parse, m.encode, m.stringify; function v() { this.protocol = null, this.slashes = null, this.auth = null, this.host = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.query = null, this.pathname = null, this.path = null, this.href = null } var _ = /^([a-z0-9.+-]+:)/i, b = /:[0-9]*$/, x = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, w = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", '"', "`", " ", "\r", "\n", "\t"]), S = ["'"].concat(w), E = ["%", "/", "?", ";", "#"].concat(S), T = ["/", "?", "#"], C = /^[+a-z0-9A-Z_-]{0,63}$/, O = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, P = {javascript: !0, "javascript:": !0}, R = {javascript: !0, "javascript:": !0}, I = { http: !0, https: !0, ftp: !0, gopher: !0, file: !0, "http:": !0, "https:": !0, "ftp:": !0, "gopher:": !0, "file:": !0 }; function L(t, e, r) { if (t && c(t) && t instanceof v) return t; var n = new v; return n.parse(t, e, r), n } v.prototype.parse = function (t, e, r) { if (!u(t)) throw new TypeError("Parameter 'url' must be a string, not " + typeof t); var n = t.indexOf("?"), i = -1 !== n && n < t.indexOf("#") ? "?" : "#", o = t.split(i); o[0] = o[0].replace(/\\/g, "/"); var a = t = o.join(i); if (a = a.trim(), !r && 1 === t.split("#").length) { var s = x.exec(a); if (s) return this.path = a, this.href = a, this.pathname = s[1], s[2] ? (this.search = s[2], this.query = e ? m.parse(this.search.substr(1)) : this.search.substr(1)) : e && (this.search = "", this.query = {}), this } var c = _.exec(a); if (c) { var h = (c = c[0]).toLowerCase(); this.protocol = h, a = a.substr(c.length) } if (r || c || a.match(/^\/\/[^@\/]+@[^@\/]+/)) { var p = "//" === a.substr(0, 2); !p || c && R[c] || (a = a.substr(2), this.slashes = !0) } if (!R[c] && (p || c && !I[c])) { for (var f, d, g = -1, y = 0; y < T.length; y++) { -1 !== (v = a.indexOf(T[y])) && (-1 === g || v < g) && (g = v) } -1 !== (d = -1 === g ? a.lastIndexOf("@") : a.lastIndexOf("@", g)) && (f = a.slice(0, d), a = a.slice(d + 1), this.auth = decodeURIComponent(f)), g = -1; for (y = 0; y < E.length; y++) { var v; -1 !== (v = a.indexOf(E[y])) && (-1 === g || v < g) && (g = v) } -1 === g && (g = a.length), this.host = a.slice(0, g), a = a.slice(g), this.parseHost(), this.hostname = this.hostname || ""; var b = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1]; if (!b) for (var w = this.hostname.split(/\./), L = (y = 0, w.length); y < L; y++) { var M = w[y]; if (M && !M.match(C)) { for (var F = "", A = 0, k = M.length; A < k; A++) M.charCodeAt(A) > 127 ? F += "x" : F += M[A]; if (!F.match(C)) { var j = w.slice(0, y), N = w.slice(y + 1), D = M.match(O); D && (j.push(D[1]), N.unshift(D[2])), N.length && (a = "/" + N.join(".") + a), this.hostname = j.join("."); break } } } this.hostname.length > 255 ? this.hostname = "" : this.hostname = this.hostname.toLowerCase(), b || (this.hostname = l.toASCII(this.hostname)); var G = this.port ? ":" + this.port : "", z = this.hostname || ""; this.host = z + G, this.href += this.host, b && (this.hostname = this.hostname.substr(1, this.hostname.length - 2), "/" !== a[0] && (a = "/" + a)) } if (!P[h]) for (y = 0, L = S.length; y < L; y++) { var U = S[y]; if (-1 !== a.indexOf(U)) { var B = encodeURIComponent(U); B === U && (B = escape(U)), a = a.split(U).join(B) } } var V = a.indexOf("#"); -1 !== V && (this.hash = a.substr(V), a = a.slice(0, V)); var Y = a.indexOf("?"); if (-1 !== Y ? (this.search = a.substr(Y), this.query = a.substr(Y + 1), e && (this.query = m.parse(this.query)), a = a.slice(0, Y)) : e && (this.search = "", this.query = {}), a && (this.pathname = a), I[h] && this.hostname && !this.pathname && (this.pathname = "/"), this.pathname || this.search) { G = this.pathname || ""; var W = this.search || ""; this.path = G + W } return this.href = this.format(), this }, v.prototype.format = function () { var t = this.auth || ""; t && (t = (t = encodeURIComponent(t)).replace(/%3A/i, ":"), t += "@"); var e = this.protocol || "", r = this.pathname || "", n = this.hash || "", i = !1, o = ""; this.host ? i = t + this.host : this.hostname && (i = t + (-1 === this.hostname.indexOf(":") ? this.hostname : "[" + this.hostname + "]"), this.port && (i += ":" + this.port)), this.query && c(this.query) && Object.keys(this.query).length && (o = m.stringify(this.query)); var a = this.search || o && "?" + o || ""; return e && ":" !== e.substr(-1) && (e += ":"), this.slashes || (!e || I[e]) && !1 !== i ? (i = "//" + (i || ""), r && "/" !== r.charAt(0) && (r = "/" + r)) : i || (i = ""), n && "#" !== n.charAt(0) && (n = "#" + n), a && "?" !== a.charAt(0) && (a = "?" + a), e + i + (r = r.replace(/[?#]/g, (function (t) { return encodeURIComponent(t) }))) + (a = a.replace("#", "%23")) + n }, v.prototype.resolve = function (t) { return this.resolveObject(L(t, !1, !0)).format() }, v.prototype.resolveObject = function (t) { if (u(t)) { var e = new v; e.parse(t, !1, !0), t = e } for (var r = new v, n = Object.keys(this), i = 0; i < n.length; i++) { var o = n[i]; r[o] = this[o] } if (r.hash = t.hash, "" === t.href) return r.href = r.format(), r; if (t.slashes && !t.protocol) { for (var a = Object.keys(t), s = 0; s < a.length; s++) { var l = a[s]; "protocol" !== l && (r[l] = t[l]) } return I[r.protocol] && r.hostname && !r.pathname && (r.path = r.pathname = "/"), r.href = r.format(), r } if (t.protocol && t.protocol !== r.protocol) { if (!I[t.protocol]) { for (var c = Object.keys(t), f = 0; f < c.length; f++) { var d = c[f]; r[d] = t[d] } return r.href = r.format(), r } if (r.protocol = t.protocol, t.host || R[t.protocol]) r.pathname = t.pathname; else { for (var g = (t.pathname || "").split("/"); g.length && !(t.host = g.shift());) ; t.host || (t.host = ""), t.hostname || (t.hostname = ""), "" !== g[0] && g.unshift(""), g.length < 2 && g.unshift(""), r.pathname = g.join("/") } if (r.search = t.search, r.query = t.query, r.host = t.host || "", r.auth = t.auth, r.hostname = t.hostname || t.host, r.port = t.port, r.pathname || r.search) { var y = r.pathname || "", m = r.search || ""; r.path = y + m } return r.slashes = r.slashes || t.slashes, r.href = r.format(), r } var _ = r.pathname && "/" === r.pathname.charAt(0), b = t.host || t.pathname && "/" === t.pathname.charAt(0), x = b || _ || r.host && t.pathname, w = x, S = r.pathname && r.pathname.split("/") || [], E = (g = t.pathname && t.pathname.split("/") || [], r.protocol && !I[r.protocol]); if (E && (r.hostname = "", r.port = null, r.host && ("" === S[0] ? S[0] = r.host : S.unshift(r.host)), r.host = "", t.protocol && (t.hostname = null, t.port = null, t.host && ("" === g[0] ? g[0] = t.host : g.unshift(t.host)), t.host = null), x = x && ("" === g[0] || "" === S[0])), b) r.host = t.host || "" === t.host ? t.host : r.host, r.hostname = t.hostname || "" === t.hostname ? t.hostname : r.hostname, r.search = t.search, r.query = t.query, S = g; else if (g.length) S || (S = []), S.pop(), S = S.concat(g), r.search = t.search, r.query = t.query; else if (!p(t.search)) { if (E) r.hostname = r.host = S.shift(), (L = !!(r.host && r.host.indexOf("@") > 0) && r.host.split("@")) && (r.auth = L.shift(), r.host = r.hostname = L.shift()); return r.search = t.search, r.query = t.query, h(r.pathname) && h(r.search) || (r.path = (r.pathname ? r.pathname : "") + (r.search ? r.search : "")), r.href = r.format(), r } if (!S.length) return r.pathname = null, r.search ? r.path = "/" + r.search : r.path = null, r.href = r.format(), r; for (var T = S.slice(-1)[0], C = (r.host || t.host || S.length > 1) && ("." === T || ".." === T) || "" === T, O = 0, P = S.length; P >= 0; P--) "." === (T = S[P]) ? S.splice(P, 1) : ".." === T ? (S.splice(P, 1), O++) : O && (S.splice(P, 1), O--); if (!x && !w) for (; O--; O) S.unshift(".."); !x || "" === S[0] || S[0] && "/" === S[0].charAt(0) || S.unshift(""), C && "/" !== S.join("/").substr(-1) && S.push(""); var L, M = "" === S[0] || S[0] && "/" === S[0].charAt(0); E && (r.hostname = r.host = M ? "" : S.length ? S.shift() : "", (L = !!(r.host && r.host.indexOf("@") > 0) && r.host.split("@")) && (r.auth = L.shift(), r.host = r.hostname = L.shift())); return (x = x || r.host && S.length) && !M && S.unshift(""), S.length ? r.pathname = S.join("/") : (r.pathname = null, r.path = null), h(r.pathname) && h(r.search) || (r.path = (r.pathname ? r.pathname : "") + (r.search ? r.search : "")), r.auth = t.auth || r.auth, r.slashes = r.slashes || t.slashes, r.href = r.format(), r }, v.prototype.parseHost = function () { var t = this.host, e = b.exec(t); e && (":" !== (e = e[0]) && (this.port = e.substr(1)), t = t.substr(0, t.length - e.length)), t && (this.hostname = t) }; function M(t, ...e) { for (const r of e) for (const e in r) t[e] = r[e]; return t } class F extends Error { constructor(t, e) { super(e), this.message = e, this.key = t } } class A { constructor(t, e = []) { this.parent = t, this.bindings = {}; for (const [t, r] of e) this.bindings[t] = r } concat(t) { return new A(this, t) } get(t) { if (this.bindings[t]) return this.bindings[t]; if (this.parent) return this.parent.get(t); throw new Error(t + " not found in scope.") } has(t) { return !!this.bindings[t] || !!this.parent && this.parent.has(t) } } const k = {kind: "null"}, j = {kind: "number"}, N = {kind: "string"}, D = {kind: "boolean"}, G = {kind: "color"}, z = {kind: "object"}, U = {kind: "value"}, B = {kind: "collator"}, V = {kind: "formatted"}, Y = {kind: "resolvedImage"}; function W(t, e) { return {kind: "array", itemType: t, N: e} } function q(t) { if ("array" === t.kind) { const e = q(t.itemType); return "number" == typeof t.N ? `array<${e}, ${t.N}>` : "value" === t.itemType.kind ? "array" : `array<${e}>` } return t.kind } const X = [k, j, N, D, G, V, z, W(U), Y]; function Z(t, e) { if ("error" === e.kind) return null; if ("array" === t.kind) { if ("array" === e.kind && (0 === e.N && "value" === e.itemType.kind || !Z(t.itemType, e.itemType)) && ("number" != typeof t.N || t.N === e.N)) return null } else { if (t.kind === e.kind) return null; if ("value" === t.kind) for (const t of X) if (!Z(t, e)) return null } return `Expected ${q(t)} but found ${q(e)} instead.` } function K(t, e) { return e.some(e => e.kind === t.kind) } function H(t, e) { return e.some(e => "null" === e ? null === t : "array" === e ? Array.isArray(t) : "object" === e ? t && !Array.isArray(t) && "object" == typeof t : e === typeof t) } var $ = s((function (t, e) { var r = { transparent: [0, 0, 0, 0], aliceblue: [240, 248, 255, 1], antiquewhite: [250, 235, 215, 1], aqua: [0, 255, 255, 1], aquamarine: [127, 255, 212, 1], azure: [240, 255, 255, 1], beige: [245, 245, 220, 1], bisque: [255, 228, 196, 1], black: [0, 0, 0, 1], blanchedalmond: [255, 235, 205, 1], blue: [0, 0, 255, 1], blueviolet: [138, 43, 226, 1], brown: [165, 42, 42, 1], burlywood: [222, 184, 135, 1], cadetblue: [95, 158, 160, 1], chartreuse: [127, 255, 0, 1], chocolate: [210, 105, 30, 1], coral: [255, 127, 80, 1], cornflowerblue: [100, 149, 237, 1], cornsilk: [255, 248, 220, 1], crimson: [220, 20, 60, 1], cyan: [0, 255, 255, 1], darkblue: [0, 0, 139, 1], darkcyan: [0, 139, 139, 1], darkgoldenrod: [184, 134, 11, 1], darkgray: [169, 169, 169, 1], darkgreen: [0, 100, 0, 1], darkgrey: [169, 169, 169, 1], darkkhaki: [189, 183, 107, 1], darkmagenta: [139, 0, 139, 1], darkolivegreen: [85, 107, 47, 1], darkorange: [255, 140, 0, 1], darkorchid: [153, 50, 204, 1], darkred: [139, 0, 0, 1], darksalmon: [233, 150, 122, 1], darkseagreen: [143, 188, 143, 1], darkslateblue: [72, 61, 139, 1], darkslategray: [47, 79, 79, 1], darkslategrey: [47, 79, 79, 1], darkturquoise: [0, 206, 209, 1], darkviolet: [148, 0, 211, 1], deeppink: [255, 20, 147, 1], deepskyblue: [0, 191, 255, 1], dimgray: [105, 105, 105, 1], dimgrey: [105, 105, 105, 1], dodgerblue: [30, 144, 255, 1], firebrick: [178, 34, 34, 1], floralwhite: [255, 250, 240, 1], forestgreen: [34, 139, 34, 1], fuchsia: [255, 0, 255, 1], gainsboro: [220, 220, 220, 1], ghostwhite: [248, 248, 255, 1], gold: [255, 215, 0, 1], goldenrod: [218, 165, 32, 1], gray: [128, 128, 128, 1], green: [0, 128, 0, 1], greenyellow: [173, 255, 47, 1], grey: [128, 128, 128, 1], honeydew: [240, 255, 240, 1], hotpink: [255, 105, 180, 1], indianred: [205, 92, 92, 1], indigo: [75, 0, 130, 1], ivory: [255, 255, 240, 1], khaki: [240, 230, 140, 1], lavender: [230, 230, 250, 1], lavenderblush: [255, 240, 245, 1], lawngreen: [124, 252, 0, 1], lemonchiffon: [255, 250, 205, 1], lightblue: [173, 216, 230, 1], lightcoral: [240, 128, 128, 1], lightcyan: [224, 255, 255, 1], lightgoldenrodyellow: [250, 250, 210, 1], lightgray: [211, 211, 211, 1], lightgreen: [144, 238, 144, 1], lightgrey: [211, 211, 211, 1], lightpink: [255, 182, 193, 1], lightsalmon: [255, 160, 122, 1], lightseagreen: [32, 178, 170, 1], lightskyblue: [135, 206, 250, 1], lightslategray: [119, 136, 153, 1], lightslategrey: [119, 136, 153, 1], lightsteelblue: [176, 196, 222, 1], lightyellow: [255, 255, 224, 1], lime: [0, 255, 0, 1], limegreen: [50, 205, 50, 1], linen: [250, 240, 230, 1], magenta: [255, 0, 255, 1], maroon: [128, 0, 0, 1], mediumaquamarine: [102, 205, 170, 1], mediumblue: [0, 0, 205, 1], mediumorchid: [186, 85, 211, 1], mediumpurple: [147, 112, 219, 1], mediumseagreen: [60, 179, 113, 1], mediumslateblue: [123, 104, 238, 1], mediumspringgreen: [0, 250, 154, 1], mediumturquoise: [72, 209, 204, 1], mediumvioletred: [199, 21, 133, 1], midnightblue: [25, 25, 112, 1], mintcream: [245, 255, 250, 1], mistyrose: [255, 228, 225, 1], moccasin: [255, 228, 181, 1], navajowhite: [255, 222, 173, 1], navy: [0, 0, 128, 1], oldlace: [253, 245, 230, 1], olive: [128, 128, 0, 1], olivedrab: [107, 142, 35, 1], orange: [255, 165, 0, 1], orangered: [255, 69, 0, 1], orchid: [218, 112, 214, 1], palegoldenrod: [238, 232, 170, 1], palegreen: [152, 251, 152, 1], paleturquoise: [175, 238, 238, 1], palevioletred: [219, 112, 147, 1], papayawhip: [255, 239, 213, 1], peachpuff: [255, 218, 185, 1], peru: [205, 133, 63, 1], pink: [255, 192, 203, 1], plum: [221, 160, 221, 1], powderblue: [176, 224, 230, 1], purple: [128, 0, 128, 1], rebeccapurple: [102, 51, 153, 1], red: [255, 0, 0, 1], rosybrown: [188, 143, 143, 1], royalblue: [65, 105, 225, 1], saddlebrown: [139, 69, 19, 1], salmon: [250, 128, 114, 1], sandybrown: [244, 164, 96, 1], seagreen: [46, 139, 87, 1], seashell: [255, 245, 238, 1], sienna: [160, 82, 45, 1], silver: [192, 192, 192, 1], skyblue: [135, 206, 235, 1], slateblue: [106, 90, 205, 1], slategray: [112, 128, 144, 1], slategrey: [112, 128, 144, 1], snow: [255, 250, 250, 1], springgreen: [0, 255, 127, 1], steelblue: [70, 130, 180, 1], tan: [210, 180, 140, 1], teal: [0, 128, 128, 1], thistle: [216, 191, 216, 1], tomato: [255, 99, 71, 1], turquoise: [64, 224, 208, 1], violet: [238, 130, 238, 1], wheat: [245, 222, 179, 1], white: [255, 255, 255, 1], whitesmoke: [245, 245, 245, 1], yellow: [255, 255, 0, 1], yellowgreen: [154, 205, 50, 1] }; function n(t) { return (t = Math.round(t)) < 0 ? 0 : t > 255 ? 255 : t } function i(t) { return t < 0 ? 0 : t > 1 ? 1 : t } function o(t) { return "%" === t[t.length - 1] ? n(parseFloat(t) / 100 * 255) : n(parseInt(t)) } function a(t) { return "%" === t[t.length - 1] ? i(parseFloat(t) / 100) : i(parseFloat(t)) } function s(t, e, r) { return r < 0 ? r += 1 : r > 1 && (r -= 1), 6 * r < 1 ? t + (e - t) * r * 6 : 2 * r < 1 ? e : 3 * r < 2 ? t + (e - t) * (2 / 3 - r) * 6 : t } try { e.parseCSSColor = function (t) { var e, i = t.replace(/ /g, "").toLowerCase(); if (i in r) return r[i].slice(); if ("#" === i[0]) return 4 === i.length ? (e = parseInt(i.substr(1), 16)) >= 0 && e <= 4095 ? [(3840 & e) >> 4 | (3840 & e) >> 8, 240 & e | (240 & e) >> 4, 15 & e | (15 & e) << 4, 1] : null : 7 === i.length && (e = parseInt(i.substr(1), 16)) >= 0 && e <= 16777215 ? [(16711680 & e) >> 16, (65280 & e) >> 8, 255 & e, 1] : null; var l = i.indexOf("("), u = i.indexOf(")"); if (-1 !== l && u + 1 === i.length) { var c = i.substr(0, l), h = i.substr(l + 1, u - (l + 1)).split(","), p = 1; switch (c) { case"rgba": if (4 !== h.length) return null; p = a(h.pop()); case"rgb": return 3 !== h.length ? null : [o(h[0]), o(h[1]), o(h[2]), p]; case"hsla": if (4 !== h.length) return null; p = a(h.pop()); case"hsl": if (3 !== h.length) return null; var f = (parseFloat(h[0]) % 360 + 360) % 360 / 360, d = a(h[1]), g = a(h[2]), y = g <= .5 ? g * (d + 1) : g + d - g * d, m = 2 * g - y; return [n(255 * s(m, y, f + 1 / 3)), n(255 * s(m, y, f)), n(255 * s(m, y, f - 1 / 3)), p]; default: return null } } return null } } catch (t) { } })).parseCSSColor; class J { constructor(t, e, r, n = 1) { this.r = t, this.g = e, this.b = r, this.a = n } static parse(t) { if (!t) return; if (t instanceof J) return t; if ("string" != typeof t) return; const e = $(t); return e ? new J(e[0] / 255 * e[3], e[1] / 255 * e[3], e[2] / 255 * e[3], e[3]) : void 0 } toString() { const [t, e, r, n] = this.toArray(); return `rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})` } toArray() { const {r: t, g: e, b: r, a: n} = this; return 0 === n ? [0, 0, 0, 0] : [255 * t / n, 255 * e / n, 255 * r / n, n] } } J.black = new J(0, 0, 0, 1), J.white = new J(1, 1, 1, 1), J.transparent = new J(0, 0, 0, 0), J.red = new J(1, 0, 0, 1), J.blue = new J(0, 0, 1, 1); class Q { constructor(t, e, r) { this.sensitivity = t ? e ? "variant" : "case" : e ? "accent" : "base", this.locale = r, this.collator = new Intl.Collator(this.locale ? this.locale : [], { sensitivity: this.sensitivity, usage: "search" }) } compare(t, e) { return this.collator.compare(t, e) } resolvedLocale() { return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale } } class tt { constructor(t, e, r, n, i) { this.text = t, this.image = e, this.scale = r, this.fontStack = n, this.textColor = i } } class et { constructor(t) { this.sections = t } static fromString(t) { return new et([new tt(t, null, null, null, null)]) } isEmpty() { return 0 === this.sections.length || !this.sections.some(t => 0 !== t.text.length || t.image && 0 !== t.image.name.length) } static factory(t) { return t instanceof et ? t : et.fromString(t) } toString() { return 0 === this.sections.length ? "" : this.sections.map(t => t.text).join("") } serialize() { const t = ["format"]; for (const e of this.sections) { if (e.image) { t.push(["image", e.image.name]); continue } t.push(e.text); const r = {}; e.fontStack && (r["text-font"] = ["literal", e.fontStack.split(",")]), e.scale && (r["font-scale"] = e.scale), e.textColor && (r["text-color"] = ["rgba"].concat(e.textColor.toArray())), t.push(r) } return t } } class rt { constructor(t) { this.name = t.name, this.available = t.available } toString() { return this.name } static fromString(t) { return t ? new rt({name: t, available: !1}) : null } serialize() { return ["image", this.name] } } function nt(t, e, r, n) { if (!("number" == typeof t && t >= 0 && t <= 255 && "number" == typeof e && e >= 0 && e <= 255 && "number" == typeof r && r >= 0 && r <= 255)) { return `Invalid rgba value [${("number" == typeof n ? [t, e, r, n] : [t, e, r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.` } return void 0 === n || "number" == typeof n && n >= 0 && n <= 1 ? null : `Invalid rgba value [${[t, e, r, n].join(", ")}]: 'a' must be between 0 and 1.` } function it(t) { if (null === t) return !0; if ("string" == typeof t) return !0; if ("boolean" == typeof t) return !0; if ("number" == typeof t) return !0; if (t instanceof J) return !0; if (t instanceof Q) return !0; if (t instanceof et) return !0; if (t instanceof rt) return !0; if (Array.isArray(t)) { for (const e of t) if (!it(e)) return !1; return !0 } if ("object" == typeof t) { for (const e in t) if (!it(t[e])) return !1; return !0 } return !1 } function ot(t) { if (null === t) return k; if ("string" == typeof t) return N; if ("boolean" == typeof t) return D; if ("number" == typeof t) return j; if (t instanceof J) return G; if (t instanceof Q) return B; if (t instanceof et) return V; if (t instanceof rt) return Y; if (Array.isArray(t)) { const e = t.length; let r; for (const e of t) { const t = ot(e); if (r) { if (r === t) continue; r = U; break } r = t } return W(r || U, e) } return z } function at(t) { const e = typeof t; return null === t ? "" : "string" === e || "number" === e || "boolean" === e ? String(t) : t instanceof J || t instanceof et || t instanceof rt ? t.toString() : JSON.stringify(t) } class st { constructor(t, e) { this.type = t, this.value = e } static parse(t, e) { if (2 !== t.length) return e.error(`'literal' expression requires exactly one argument, but found ${t.length - 1} instead.`); if (!it(t[1])) return e.error("invalid value"); const r = t[1]; let n = ot(r); const i = e.expectedType; return "array" !== n.kind || 0 !== n.N || !i || "array" !== i.kind || "number" == typeof i.N && 0 !== i.N || (n = i), new st(n, r) } evaluate() { return this.value } eachChild() { } outputDefined() { return !0 } serialize() { return "array" === this.type.kind || "object" === this.type.kind ? ["literal", this.value] : this.value instanceof J ? ["rgba"].concat(this.value.toArray()) : this.value instanceof et ? this.value.serialize() : this.value } } class lt { constructor(t) { this.name = "ExpressionEvaluationError", this.message = t } toJSON() { return this.message } } const ut = {string: N, number: j, boolean: D, object: z}; class ct { constructor(t, e) { this.type = t, this.args = e } static parse(t, e) { if (t.length < 2) return e.error("Expected at least one argument."); let r, n = 1; const i = t[0]; if ("array" === i) { let i, o; if (t.length > 2) { const r = t[1]; if ("string" != typeof r || !(r in ut) || "object" === r) return e.error('The item type argument of "array" must be one of string, number, boolean', 1); i = ut[r], n++ } else i = U; if (t.length > 3) { if (null !== t[2] && ("number" != typeof t[2] || t[2] < 0 || t[2] !== Math.floor(t[2]))) return e.error('The length argument to "array" must be a positive integer literal', 2); o = t[2], n++ } r = W(i, o) } else r = ut[i]; const o = []; for (; n < t.length; n++) { const r = e.parse(t[n], n, U); if (!r) return null; o.push(r) } return new ct(r, o) } evaluate(t) { for (let e = 0; e < this.args.length; e++) { const r = this.args[e].evaluate(t); if (!Z(this.type, ot(r))) return r; if (e === this.args.length - 1) throw new lt(`Expected value to be of type ${q(this.type)}, but found ${q(ot(r))} instead.`) } return null } eachChild(t) { this.args.forEach(t) } outputDefined() { return this.args.every(t => t.outputDefined()) } serialize() { const t = this.type, e = [t.kind]; if ("array" === t.kind) { const r = t.itemType; if ("string" === r.kind || "number" === r.kind || "boolean" === r.kind) { e.push(r.kind); const n = t.N; ("number" == typeof n || this.args.length > 1) && e.push(n) } } return e.concat(this.args.map(t => t.serialize())) } } class ht { constructor(t) { this.type = V, this.sections = t } static parse(t, e) { if (t.length < 2) return e.error("Expected at least one argument."); const r = t[1]; if (!Array.isArray(r) && "object" == typeof r) return e.error("First argument must be an image or text section."); const n = []; let i = !1; for (let r = 1; r <= t.length - 1; ++r) { const o = t[r]; if (i && "object" == typeof o && !Array.isArray(o)) { i = !1; let t = null; if (o["font-scale"] && (t = e.parse(o["font-scale"], 1, j), !t)) return null; let r = null; if (o["text-font"] && (r = e.parse(o["text-font"], 1, W(N)), !r)) return null; let a = null; if (o["text-color"] && (a = e.parse(o["text-color"], 1, G), !a)) return null; const s = n[n.length - 1]; s.scale = t, s.font = r, s.textColor = a } else { const o = e.parse(t[r], 1, U); if (!o) return null; const a = o.type.kind; if ("string" !== a && "value" !== a && "null" !== a && "resolvedImage" !== a) return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'."); i = !0, n.push({content: o, scale: null, font: null, textColor: null}) } } return new ht(n) } evaluate(t) { return new et(this.sections.map(e => { const r = e.content.evaluate(t); return ot(r) === Y ? new tt("", r, null, null, null) : new tt(at(r), null, e.scale ? e.scale.evaluate(t) : null, e.font ? e.font.evaluate(t).join(",") : null, e.textColor ? e.textColor.evaluate(t) : null) })) } eachChild(t) { for (const e of this.sections) t(e.content), e.scale && t(e.scale), e.font && t(e.font), e.textColor && t(e.textColor) } outputDefined() { return !1 } serialize() { const t = ["format"]; for (const e of this.sections) { t.push(e.content.serialize()); const r = {}; e.scale && (r["font-scale"] = e.scale.serialize()), e.font && (r["text-font"] = e.font.serialize()), e.textColor && (r["text-color"] = e.textColor.serialize()), t.push(r) } return t } } class pt { constructor(t) { this.type = Y, this.input = t } static parse(t, e) { if (2 !== t.length) return e.error("Expected two arguments."); const r = e.parse(t[1], 1, N); return r ? new pt(r) : e.error("No image name provided.") } evaluate(t) { const e = this.input.evaluate(t), r = rt.fromString(e); return r && t.availableImages && (r.available = t.availableImages.indexOf(e) > -1), r } eachChild(t) { t(this.input) } outputDefined() { return !1 } serialize() { return ["image", this.input.serialize()] } } const ft = {"to-boolean": D, "to-color": G, "to-number": j, "to-string": N}; class dt { constructor(t, e) { this.type = t, this.args = e } static parse(t, e) { if (t.length < 2) return e.error("Expected at least one argument."); const r = t[0]; if (("to-boolean" === r || "to-string" === r) && 2 !== t.length) return e.error("Expected one argument."); const n = ft[r], i = []; for (let r = 1; r < t.length; r++) { const n = e.parse(t[r], r, U); if (!n) return null; i.push(n) } return new dt(n, i) } evaluate(t) { if ("boolean" === this.type.kind) return Boolean(this.args[0].evaluate(t)); if ("color" === this.type.kind) { let e, r; for (const n of this.args) { if (e = n.evaluate(t), r = null, e instanceof J) return e; if ("string" == typeof e) { const r = t.parseColor(e); if (r) return r } else if (Array.isArray(e) && (r = e.length < 3 || e.length > 4 ? `Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.` : nt(e[0], e[1], e[2], e[3]), !r)) return new J(e[0] / 255, e[1] / 255, e[2] / 255, e[3]) } throw new lt(r || `Could not parse color from value '${"string" == typeof e ? e : String(JSON.stringify(e))}'`) } if ("number" === this.type.kind) { let e = null; for (const r of this.args) { if (e = r.evaluate(t), null === e) return 0; const n = Number(e); if (!isNaN(n)) return n } throw new lt(`Could not convert ${JSON.stringify(e)} to number.`) } return "formatted" === this.type.kind ? et.fromString(at(this.args[0].evaluate(t))) : "resolvedImage" === this.type.kind ? rt.fromString(at(this.args[0].evaluate(t))) : at(this.args[0].evaluate(t)) } eachChild(t) { this.args.forEach(t) } outputDefined() { return this.args.every(t => t.outputDefined()) } serialize() { if ("formatted" === this.type.kind) return new ht([{ content: this.args[0], scale: null, font: null, textColor: null }]).serialize(); if ("resolvedImage" === this.type.kind) return new pt(this.args[0]).serialize(); const t = ["to-" + this.type.kind]; return this.eachChild(e => { t.push(e.serialize()) }), t } } const gt = ["Unknown", "Point", "LineString", "Polygon"]; class yt { constructor() { this.globals = null, this.feature = null, this.featureState = null, this.formattedSection = null, this._parseColorCache = {}, this.availableImages = null, this.canonical = null } id() { return this.feature && "id" in this.feature ? this.feature.id : null } geometryType() { return this.feature ? "number" == typeof this.feature.type ? gt[this.feature.type] : this.feature.type : null } geometry() { return this.feature && "geometry" in this.feature ? this.feature.geometry : null } canonicalID() { return this.canonical } properties() { return this.feature && this.feature.properties || {} } parseColor(t) { let e = this._parseColorCache[t]; return e || (e = this._parseColorCache[t] = J.parse(t)), e } } class mt { constructor(t, e, r, n) { this.name = t, this.type = e, this._evaluate = r, this.args = n } evaluate(t) { return this._evaluate(t, this.args) } eachChild(t) { this.args.forEach(t) } outputDefined() { return !1 } serialize() { return [this.name].concat(this.args.map(t => t.serialize())) } static parse(t, e) { const r = t[0], n = mt.definitions[r]; if (!n) return e.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`, 0); const i = Array.isArray(n) ? n[0] : n.type, o = Array.isArray(n) ? [[n[1], n[2]]] : n.overloads, a = o.filter(([e]) => !Array.isArray(e) || e.length === t.length - 1); let s = null; for (const [n, o] of a) { s = new zt(e.registry, e.path, null, e.scope); const a = []; let l = !1; for (let e = 1; e < t.length; e++) { const r = t[e], i = Array.isArray(n) ? n[e - 1] : n.type, o = s.parse(r, 1 + a.length, i); if (!o) { l = !0; break } a.push(o) } if (!l) if (Array.isArray(n) && n.length !== a.length) s.error(`Expected ${n.length} arguments, but found ${a.length} instead.`); else { for (let t = 0; t < a.length; t++) { const e = Array.isArray(n) ? n[t] : n.type, r = a[t]; s.concat(t + 1).checkSubtype(e, r.type) } if (0 === s.errors.length) return new mt(r, i, o, a) } } if (1 === a.length) e.errors.push(...s.errors); else { const r = (a.length ? a : o).map(([t]) => { return e = t, Array.isArray(e) ? `(${e.map(q).join(", ")})` : `(${q(e.type)}...)`; var e }).join(" | "), n = []; for (let r = 1; r < t.length; r++) { const i = e.parse(t[r], 1 + n.length); if (!i) return null; n.push(q(i.type)) } e.error(`Expected arguments of type ${r}, but found (${n.join(", ")}) instead.`) } return null } static register(t, e) { mt.definitions = e; for (const r in e) t[r] = mt } } class vt { constructor(t, e, r) { this.type = B, this.locale = r, this.caseSensitive = t, this.diacriticSensitive = e } static parse(t, e) { if (2 !== t.length) return e.error("Expected one argument."); const r = t[1]; if ("object" != typeof r || Array.isArray(r)) return e.error("Collator options argument must be an object."); const n = e.parse(void 0 !== r["case-sensitive"] && r["case-sensitive"], 1, D); if (!n) return null; const i = e.parse(void 0 !== r["diacritic-sensitive"] && r["diacritic-sensitive"], 1, D); if (!i) return null; let o = null; return r.locale && (o = e.parse(r.locale, 1, N), !o) ? null : new vt(n, i, o) } evaluate(t) { return new Q(this.caseSensitive.evaluate(t), this.diacriticSensitive.evaluate(t), this.locale ? this.locale.evaluate(t) : null) } eachChild(t) { t(this.caseSensitive), t(this.diacriticSensitive), this.locale && t(this.locale) } outputDefined() { return !1 } serialize() { const t = {}; return t["case-sensitive"] = this.caseSensitive.serialize(), t["diacritic-sensitive"] = this.diacriticSensitive.serialize(), this.locale && (t.locale = this.locale.serialize()), ["collator", t] } } function _t(t, e) { t[0] = Math.min(t[0], e[0]), t[1] = Math.min(t[1], e[1]), t[2] = Math.max(t[2], e[0]), t[3] = Math.max(t[3], e[1]) } function bt(t, e) { return !(t[0] <= e[0]) && (!(t[2] >= e[2]) && (!(t[1] <= e[1]) && !(t[3] >= e[3]))) } function xt(t, e) { const r = (180 + t[0]) / 360; const n = (i = t[1], (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + i * Math.PI / 360))) / 360); var i; const o = Math.pow(2, e.z); return [Math.round(r * o * 8192), Math.round(n * o * 8192)] } function wt(t, e, r) { const n = t[0] - e[0], i = t[1] - e[1], o = t[0] - r[0], a = t[1] - r[1]; return n * a - o * i == 0 && n * o <= 0 && i * a <= 0 } function St(t, e) { let r = !1; for (let a = 0, s = e.length; a < s; a++) { const s = e[a]; for (let e = 0, a = s.length; e < a - 1; e++) { if (wt(t, s[e], s[e + 1])) return !1; n = t, i = s[e], o = s[e + 1], i[1] > n[1] != o[1] > n[1] && n[0] < (o[0] - i[0]) * (n[1] - i[1]) / (o[1] - i[1]) + i[0] && (r = !r) } } var n, i, o; return r } function Et(t, e) { for (let r = 0; r < e.length; r++) if (St(t, e[r])) return !0; return !1 } function Tt(t, e, r, n) { const i = t[0] - r[0], o = t[1] - r[1], a = e[0] - r[0], s = e[1] - r[1], l = n[0] - r[0], u = n[1] - r[1], c = i * u - l * o, h = a * u - l * s; return c > 0 && h < 0 || c < 0 && h > 0 } function Ct(t, e, r, n) { const i = [e[0] - t[0], e[1] - t[1]], o = [n[0] - r[0], n[1] - r[1]]; return 0 != (a = o)[0] * (s = i)[1] - a[1] * s[0] && !(!Tt(t, e, r, n) || !Tt(r, n, t, e)); var a, s } function Ot(t, e, r) { for (const n of r) for (let r = 0; r < n.length - 1; ++r) if (Ct(t, e, n[r], n[r + 1])) return !0; return !1 } function Pt(t, e) { for (let r = 0; r < t.length; ++r) if (!St(t[r], e)) return !1; for (let r = 0; r < t.length - 1; ++r) if (Ot(t[r], t[r + 1], e)) return !1; return !0 } function Rt(t, e) { for (let r = 0; r < e.length; r++) if (Pt(t, e[r])) return !0; return !1 } function It(t, e, r) { const n = []; for (let i = 0; i < t.length; i++) { const o = []; for (let n = 0; n < t[i].length; n++) { const a = xt(t[i][n], r); _t(e, a), o.push(a) } n.push(o) } return n } function Lt(t, e, r) { const n = []; for (let i = 0; i < t.length; i++) { const o = It(t[i], e, r); n.push(o) } return n } function Mt(t, e, r, n) { if (t[0] < r[0] || t[0] > r[2]) { const e = .5 * n; let i = t[0] - r[0] > e ? -n : r[0] - t[0] > e ? n : 0; 0 === i && (i = t[0] - r[2] > e ? -n : r[2] - t[0] > e ? n : 0), t[0] += i } _t(e, t) } function Ft(t, e, r, n) { const i = 8192 * Math.pow(2, n.z), o = [8192 * n.x, 8192 * n.y], a = []; for (const n of t) for (const t of n) { const n = [t.x + o[0], t.y + o[1]]; Mt(n, e, r, i), a.push(n) } return a } function At(t, e, r, n) { const i = 8192 * Math.pow(2, n.z), o = [8192 * n.x, 8192 * n.y], a = []; for (const r of t) { const t = []; for (const n of r) { const r = [n.x + o[0], n.y + o[1]]; _t(e, r), t.push(r) } a.push(t) } if (e[2] - e[0] <= i / 2) { (s = e)[0] = s[1] = 1 / 0, s[2] = s[3] = -1 / 0; for (const t of a) for (const n of t) Mt(n, e, r, i) } var s; return a } class kt { constructor(t, e) { this.type = D, this.geojson = t, this.geometries = e } static parse(t, e) { if (2 !== t.length) return e.error(`'within' expression requires exactly one argument, but found ${t.length - 1} instead.`); if (it(t[1])) { const e = t[1]; if ("FeatureCollection" === e.type) for (let t = 0; t < e.features.length; ++t) { const r = e.features[t].geometry.type; if ("Polygon" === r || "MultiPolygon" === r) return new kt(e, e.features[t].geometry) } else if ("Feature" === e.type) { const t = e.geometry.type; if ("Polygon" === t || "MultiPolygon" === t) return new kt(e, e.geometry) } else if ("Polygon" === e.type || "MultiPolygon" === e.type) return new kt(e, e) } return e.error("'within' expression requires valid geojson object that contains polygon geometry type.") } evaluate(t) { if (null != t.geometry() && null != t.canonicalID()) { if ("Point" === t.geometryType()) return function (t, e) { const r = [1 / 0, 1 / 0, -1 / 0, -1 / 0], n = [1 / 0, 1 / 0, -1 / 0, -1 / 0], i = t.canonicalID(); if ("Polygon" === e.type) { const o = It(e.coordinates, n, i), a = Ft(t.geometry(), r, n, i); if (!bt(r, n)) return !1; for (const t of a) if (!St(t, o)) return !1 } if ("MultiPolygon" === e.type) { const o = Lt(e.coordinates, n, i), a = Ft(t.geometry(), r, n, i); if (!bt(r, n)) return !1; for (const t of a) if (!Et(t, o)) return !1 } return !0 }(t, this.geometries); if ("LineString" === t.geometryType()) return function (t, e) { const r = [1 / 0, 1 / 0, -1 / 0, -1 / 0], n = [1 / 0, 1 / 0, -1 / 0, -1 / 0], i = t.canonicalID(); if ("Polygon" === e.type) { const o = It(e.coordinates, n, i), a = At(t.geometry(), r, n, i); if (!bt(r, n)) return !1; for (const t of a) if (!Pt(t, o)) return !1 } if ("MultiPolygon" === e.type) { const o = Lt(e.coordinates, n, i), a = At(t.geometry(), r, n, i); if (!bt(r, n)) return !1; for (const t of a) if (!Rt(t, o)) return !1 } return !0 }(t, this.geometries) } return !1 } eachChild() { } outputDefined() { return !0 } serialize() { return ["within", this.geojson] } } function jt(t) { if (t instanceof mt) { if ("get" === t.name && 1 === t.args.length) return !1; if ("feature-state" === t.name) return !1; if ("has" === t.name && 1 === t.args.length) return !1; if ("properties" === t.name || "geometry-type" === t.name || "id" === t.name) return !1; if (/^filter-/.test(t.name)) return !1 } if (t instanceof kt) return !1; let e = !0; return t.eachChild(t => { e && !jt(t) && (e = !1) }), e } function Nt(t) { if (t instanceof mt && "feature-state" === t.name) return !1; let e = !0; return t.eachChild(t => { e && !Nt(t) && (e = !1) }), e } function Dt(t, e) { if (t instanceof mt && e.indexOf(t.name) >= 0) return !1; let r = !0; return t.eachChild(t => { r && !Dt(t, e) && (r = !1) }), r } class Gt { constructor(t, e) { this.type = e.type, this.name = t, this.boundExpression = e } static parse(t, e) { if (2 !== t.length || "string" != typeof t[1]) return e.error("'var' expression requires exactly one string literal argument."); const r = t[1]; return e.scope.has(r) ? new Gt(r, e.scope.get(r)) : e.error(`Unknown variable "${r}". Make sure "${r}" has been bound in an enclosing "let" expression before using it.`, 1) } evaluate(t) { return this.boundExpression.evaluate(t) } eachChild() { } outputDefined() { return !1 } serialize() { return ["var", this.name] } } class zt { constructor(t, e = [], r, n = new A, i = []) { this.registry = t, this.path = e, this.key = e.map(t => `[${t}]`).join(""), this.scope = n, this.errors = i, this.expectedType = r } parse(t, e, r, n, i = {}) { return e ? this.concat(e, r, n)._parse(t, i) : this._parse(t, i) } _parse(t, e) { function r(t, e, r) { return "assert" === r ? new ct(e, [t]) : "coerce" === r ? new dt(e, [t]) : t } if (null !== t && "string" != typeof t && "boolean" != typeof t && "number" != typeof t || (t = ["literal", t]), Array.isArray(t)) { if (0 === t.length) return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].'); const n = t[0]; if ("string" != typeof n) return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`, 0), null; const i = this.registry[n]; if (i) { let n = i.parse(t, this); if (!n) return null; if (this.expectedType) { const t = this.expectedType, i = n.type; if ("string" !== t.kind && "number" !== t.kind && "boolean" !== t.kind && "object" !== t.kind && "array" !== t.kind || "value" !== i.kind) if ("color" !== t.kind && "formatted" !== t.kind && "resolvedImage" !== t.kind || "value" !== i.kind && "string" !== i.kind) { if (this.checkSubtype(t, i)) return null } else n = r(n, t, e.typeAnnotation || "coerce"); else n = r(n, t, e.typeAnnotation || "assert") } if (!(n instanceof st) && "resolvedImage" !== n.type.kind && function t(e) { if (e instanceof Gt) return t(e.boundExpression); if (e instanceof mt && "error" === e.name) return !1; if (e instanceof vt) return !1; if (e instanceof kt) return !1; const r = e instanceof dt || e instanceof ct; let n = !0; if (e.eachChild(e => { n = r ? n && t(e) : n && e instanceof st }), !n) return !1; return jt(e) && Dt(e, ["zoom", "heatmap-density", "line-progress", "sky-radial-progress", "accumulated", "is-supported-script"]) }(n)) { const t = new yt; try { n = new st(n.type, n.evaluate(t)) } catch (t) { return this.error(t.message), null } } return n } return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`, 0) } return void 0 === t ? this.error("'undefined' value invalid. Use null instead.") : "object" == typeof t ? this.error('Bare objects invalid. Use ["literal", {...}] instead.') : this.error(`Expected an array, but found ${typeof t} instead.`) } concat(t, e, r) { const n = "number" == typeof t ? this.path.concat(t) : this.path, i = r ? this.scope.concat(r) : this.scope; return new zt(this.registry, n, e || null, i, this.errors) } error(t, ...e) { const r = `${this.key}${e.map(t => `[${t}]`).join("")}`; this.errors.push(new F(r, t)) } checkSubtype(t, e) { const r = Z(t, e); return r && this.error(r), r } } function Ut(t, e) { const r = t.length - 1; let n, i, o = 0, a = r, s = 0; for (; o <= a;) if (s = Math.floor((o + a) / 2), n = t[s], i = t[s + 1], n <= e) { if (s === r || e < i) return s; o = s + 1 } else { if (!(n > e)) throw new lt("Input is not a number."); a = s - 1 } return 0 } class Bt { constructor(t, e, r) { this.type = t, this.input = e, this.labels = [], this.outputs = []; for (const [t, e] of r) this.labels.push(t), this.outputs.push(e) } static parse(t, e) { if (t.length - 1 < 4) return e.error(`Expected at least 4 arguments, but found only ${t.length - 1}.`); if ((t.length - 1) % 2 != 0) return e.error("Expected an even number of arguments."); const r = e.parse(t[1], 1, j); if (!r) return null; const n = []; let i = null; e.expectedType && "value" !== e.expectedType.kind && (i = e.expectedType); for (let r = 1; r < t.length; r += 2) { const o = 1 === r ? -1 / 0 : t[r], a = t[r + 1], s = r, l = r + 1; if ("number" != typeof o) return e.error('Input/output pairs for "step" expressions must be defined using literal numeric values (not computed expressions) for the input values.', s); if (n.length && n[n.length - 1][0] >= o) return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.', s); const u = e.parse(a, l, i); if (!u) return null; i = i || u.type, n.push([o, u]) } return new Bt(i, r, n) } evaluate(t) { const e = this.labels, r = this.outputs; if (1 === e.length) return r[0].evaluate(t); const n = this.input.evaluate(t); if (n <= e[0]) return r[0].evaluate(t); const i = e.length; if (n >= e[i - 1]) return r[i - 1].evaluate(t); return r[Ut(e, n)].evaluate(t) } eachChild(t) { t(this.input); for (const e of this.outputs) t(e) } outputDefined() { return this.outputs.every(t => t.outputDefined()) } serialize() { const t = ["step", this.input.serialize()]; for (let e = 0; e < this.labels.length; e++) e > 0 && t.push(this.labels[e]), t.push(this.outputs[e].serialize()); return t } } var Vt = Yt; function Yt(t, e, r, n) { this.cx = 3 * t, this.bx = 3 * (r - t) - this.cx, this.ax = 1 - this.cx - this.bx, this.cy = 3 * e, this.by = 3 * (n - e) - this.cy, this.ay = 1 - this.cy - this.by, this.p1x = t, this.p1y = n, this.p2x = r, this.p2y = n } function Wt(t, e, r) { return t * (1 - r) + e * r } Yt.prototype.sampleCurveX = function (t) { return ((this.ax * t + this.bx) * t + this.cx) * t }, Yt.prototype.sampleCurveY = function (t) { return ((this.ay * t + this.by) * t + this.cy) * t }, Yt.prototype.sampleCurveDerivativeX = function (t) { return (3 * this.ax * t + 2 * this.bx) * t + this.cx }, Yt.prototype.solveCurveX = function (t, e) { var r, n, i, o, a; for (void 0 === e && (e = 1e-6), i = t, a = 0; a < 8; a++) { if (o = this.sampleCurveX(i) - t, Math.abs(o) < e) return i; var s = this.sampleCurveDerivativeX(i); if (Math.abs(s) < 1e-6) break; i -= o / s } if ((i = t) < (r = 0)) return r; if (i > (n = 1)) return n; for (; r < n;) { if (o = this.sampleCurveX(i), Math.abs(o - t) < e) return i; t > o ? r = i : n = i, i = .5 * (n - r) + r } return i }, Yt.prototype.solve = function (t, e) { return this.sampleCurveY(this.solveCurveX(t, e)) }; var qt = Object.freeze({ __proto__: null, number: Wt, color: function (t, e, r) { return new J(Wt(t.r, e.r, r), Wt(t.g, e.g, r), Wt(t.b, e.b, r), Wt(t.a, e.a, r)) }, array: function (t, e, r) { return t.map((t, n) => Wt(t, e[n], r)) } }); const Xt = 6 / 29, Zt = 3 * Xt * Xt, Kt = Math.PI / 180, Ht = 180 / Math.PI; function $t(t) { return t > .008856451679035631 ? Math.pow(t, 1 / 3) : t / Zt + 4 / 29 } function Jt(t) { return t > Xt ? t * t * t : Zt * (t - 4 / 29) } function Qt(t) { return 255 * (t <= .0031308 ? 12.92 * t : 1.055 * Math.pow(t, 1 / 2.4) - .055) } function te(t) { return (t /= 255) <= .04045 ? t / 12.92 : Math.pow((t + .055) / 1.055, 2.4) } function ee(t) { const e = te(t.r), r = te(t.g), n = te(t.b), i = $t((.4124564 * e + .3575761 * r + .1804375 * n) / .95047), o = $t((.2126729 * e + .7151522 * r + .072175 * n) / 1); return { l: 116 * o - 16, a: 500 * (i - o), b: 200 * (o - $t((.0193339 * e + .119192 * r + .9503041 * n) / 1.08883)), alpha: t.a } } function re(t) { let e = (t.l + 16) / 116, r = isNaN(t.a) ? e : e + t.a / 500, n = isNaN(t.b) ? e : e - t.b / 200; return e = 1 * Jt(e), r = .95047 * Jt(r), n = 1.08883 * Jt(n), new J(Qt(3.2404542 * r - 1.5371385 * e - .4985314 * n), Qt(-.969266 * r + 1.8760108 * e + .041556 * n), Qt(.0556434 * r - .2040259 * e + 1.0572252 * n), t.alpha) } function ne(t, e, r) { const n = e - t; return t + r * (n > 180 || n < -180 ? n - 360 * Math.round(n / 360) : n) } const ie = { forward: ee, reverse: re, interpolate: function (t, e, r) { return {l: Wt(t.l, e.l, r), a: Wt(t.a, e.a, r), b: Wt(t.b, e.b, r), alpha: Wt(t.alpha, e.alpha, r)} } }, oe = { forward: function (t) { const {l: e, a: r, b: n} = ee(t), i = Math.atan2(n, r) * Ht; return {h: i < 0 ? i + 360 : i, c: Math.sqrt(r * r + n * n), l: e, alpha: t.a} }, reverse: function (t) { const e = t.h * Kt, r = t.c; return re({l: t.l, a: Math.cos(e) * r, b: Math.sin(e) * r, alpha: t.alpha}) }, interpolate: function (t, e, r) { return {h: ne(t.h, e.h, r), c: Wt(t.c, e.c, r), l: Wt(t.l, e.l, r), alpha: Wt(t.alpha, e.alpha, r)} } }; var ae = Object.freeze({__proto__: null, lab: ie, hcl: oe}); class se { constructor(t, e, r, n, i) { this.type = t, this.operator = e, this.interpolation = r, this.input = n, this.labels = [], this.outputs = []; for (const [t, e] of i) this.labels.push(t), this.outputs.push(e) } static interpolationFactor(t, e, r, n) { let i = 0; if ("exponential" === t.name) i = le(e, t.base, r, n); else if ("linear" === t.name) i = le(e, 1, r, n); else if ("cubic-bezier" === t.name) { const o = t.controlPoints; i = new Vt(o[0], o[1], o[2], o[3]).solve(le(e, 1, r, n)) } return i } static parse(t, e) { let [r, n, i, ...o] = t; if (!Array.isArray(n) || 0 === n.length) return e.error("Expected an interpolation type expression.", 1); if ("linear" === n[0]) n = {name: "linear"}; else if ("exponential" === n[0]) { const t = n[1]; if ("number" != typeof t) return e.error("Exponential interpolation requires a numeric base.", 1, 1); n = {name: "exponential", base: t} } else { if ("cubic-bezier" !== n[0]) return e.error("Unknown interpolation type " + String(n[0]), 1, 0); { const t = n.slice(1); if (4 !== t.length || t.some(t => "number" != typeof t || t < 0 || t > 1)) return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.", 1); n = {name: "cubic-bezier", controlPoints: t} } } if (t.length - 1 < 4) return e.error(`Expected at least 4 arguments, but found only ${t.length - 1}.`); if ((t.length - 1) % 2 != 0) return e.error("Expected an even number of arguments."); if (i = e.parse(i, 2, j), !i) return null; const a = []; let s = null; "interpolate-hcl" === r || "interpolate-lab" === r ? s = G : e.expectedType && "value" !== e.expectedType.kind && (s = e.expectedType); for (let t = 0; t < o.length; t += 2) { const r = o[t], n = o[t + 1], i = t + 3, l = t + 4; if ("number" != typeof r) return e.error('Input/output pairs for "interpolate" expressions must be defined using literal numeric values (not computed expressions) for the input values.', i); if (a.length && a[a.length - 1][0] >= r) return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.', i); const u = e.parse(n, l, s); if (!u) return null; s = s || u.type, a.push([r, u]) } return "number" === s.kind || "color" === s.kind || "array" === s.kind && "number" === s.itemType.kind && "number" == typeof s.N ? new se(s, r, n, i, a) : e.error(`Type ${q(s)} is not interpolatable.`) } evaluate(t) { const e = this.labels, r = this.outputs; if (1 === e.length) return r[0].evaluate(t); const n = this.input.evaluate(t); if (n <= e[0]) return r[0].evaluate(t); const i = e.length; if (n >= e[i - 1]) return r[i - 1].evaluate(t); const o = Ut(e, n), a = e[o], s = e[o + 1], l = se.interpolationFactor(this.interpolation, n, a, s), u = r[o].evaluate(t), c = r[o + 1].evaluate(t); return "interpolate" === this.operator ? qt[this.type.kind.toLowerCase()](u, c, l) : "interpolate-hcl" === this.operator ? oe.reverse(oe.interpolate(oe.forward(u), oe.forward(c), l)) : ie.reverse(ie.interpolate(ie.forward(u), ie.forward(c), l)) } eachChild(t) { t(this.input); for (const e of this.outputs) t(e) } outputDefined() { return this.outputs.every(t => t.outputDefined()) } serialize() { let t; t = "linear" === this.interpolation.name ? ["linear"] : "exponential" === this.interpolation.name ? 1 === this.interpolation.base ? ["linear"] : ["exponential", this.interpolation.base] : ["cubic-bezier"].concat(this.interpolation.controlPoints); const e = [this.operator, t, this.input.serialize()]; for (let t = 0; t < this.labels.length; t++) e.push(this.labels[t], this.outputs[t].serialize()); return e } } function le(t, e, r, n) { const i = n - r, o = t - r; return 0 === i ? 0 : 1 === e ? o / i : (Math.pow(e, o) - 1) / (Math.pow(e, i) - 1) } class ue { constructor(t, e) { this.type = t, this.args = e } static parse(t, e) { if (t.length < 2) return e.error("Expectected at least one argument."); let r = null; const n = e.expectedType; n && "value" !== n.kind && (r = n); const i = []; for (const n of t.slice(1)) { const t = e.parse(n, 1 + i.length, r, void 0, {typeAnnotation: "omit"}); if (!t) return null; r = r || t.type, i.push(t) } const o = n && i.some(t => Z(n, t.type)); return new ue(o ? U : r, i) } evaluate(t) { let e, r = null, n = 0; for (const i of this.args) if (n++, r = i.evaluate(t), r && r instanceof rt && !r.available && (e || (e = r.name), r = null, n === this.args.length && (r = e)), null !== r) break; return r } eachChild(t) { this.args.forEach(t) } outputDefined() { return this.args.every(t => t.outputDefined()) } serialize() { const t = ["coalesce"]; return this.eachChild(e => { t.push(e.serialize()) }), t } } class ce { constructor(t, e) { this.type = e.type, this.bindings = [].concat(t), this.result = e } evaluate(t) { return this.result.evaluate(t) } eachChild(t) { for (const e of this.bindings) t(e[1]); t(this.result) } static parse(t, e) { if (t.length < 4) return e.error(`Expected at least 3 arguments, but found ${t.length - 1} instead.`); const r = []; for (let n = 1; n < t.length - 1; n += 2) { const i = t[n]; if ("string" != typeof i) return e.error(`Expected string, but found ${typeof i} instead.`, n); if (/[^a-zA-Z0-9_]/.test(i)) return e.error("Variable names must contain only alphanumeric characters or '_'.", n); const o = e.parse(t[n + 1], n + 1); if (!o) return null; r.push([i, o]) } const n = e.parse(t[t.length - 1], t.length - 1, e.expectedType, r); return n ? new ce(r, n) : null } outputDefined() { return this.result.outputDefined() } serialize() { const t = ["let"]; for (const [e, r] of this.bindings) t.push(e, r.serialize()); return t.push(this.result.serialize()), t } } class he { constructor(t, e, r) { this.type = t, this.index = e, this.input = r } static parse(t, e) { if (3 !== t.length) return e.error(`Expected 2 arguments, but found ${t.length - 1} instead.`); const r = e.parse(t[1], 1, j), n = e.parse(t[2], 2, W(e.expectedType || U)); if (!r || !n) return null; const i = n.type; return new he(i.itemType, r, n) } evaluate(t) { const e = this.index.evaluate(t), r = this.input.evaluate(t); if (e < 0) throw new lt(`Array index out of bounds: ${e} < 0.`); if (e >= r.length) throw new lt(`Array index out of bounds: ${e} > ${r.length - 1}.`); if (e !== Math.floor(e)) throw new lt(`Array index must be an integer, but found ${e} instead.`); return r[e] } eachChild(t) { t(this.index), t(this.input) } outputDefined() { return !1 } serialize() { return ["at", this.index.serialize(), this.input.serialize()] } } class pe { constructor(t, e) { this.type = D, this.needle = t, this.haystack = e } static parse(t, e) { if (3 !== t.length) return e.error(`Expected 2 arguments, but found ${t.length - 1} instead.`); const r = e.parse(t[1], 1, U), n = e.parse(t[2], 2, U); return r && n ? K(r.type, [D, N, j, k, U]) ? new pe(r, n) : e.error(`Expected first argument to be of type boolean, string, number or null, but found ${q(r.type)} instead`) : null } evaluate(t) { const e = this.needle.evaluate(t), r = this.haystack.evaluate(t); if (!r) return !1; if (!H(e, ["boolean", "string", "number", "null"])) throw new lt(`Expected first argument to be of type boolean, string, number or null, but found ${q(ot(e))} instead.`); if (!H(r, ["string", "array"])) throw new lt(`Expected second argument to be of type array or string, but found ${q(ot(r))} instead.`); return r.indexOf(e) >= 0 } eachChild(t) { t(this.needle), t(this.haystack) } outputDefined() { return !0 } serialize() { return ["in", this.needle.serialize(), this.haystack.serialize()] } } class fe { constructor(t, e, r) { this.type = j, this.needle = t, this.haystack = e, this.fromIndex = r } static parse(t, e) { if (t.length <= 2 || t.length >= 5) return e.error(`Expected 3 or 4 arguments, but found ${t.length - 1} instead.`); const r = e.parse(t[1], 1, U), n = e.parse(t[2], 2, U); if (!r || !n) return null; if (!K(r.type, [D, N, j, k, U])) return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${q(r.type)} instead`); if (4 === t.length) { const i = e.parse(t[3], 3, j); return i ? new fe(r, n, i) : null } return new fe(r, n) } evaluate(t) { const e = this.needle.evaluate(t), r = this.haystack.evaluate(t); if (!H(e, ["boolean", "string", "number", "null"])) throw new lt(`Expected first argument to be of type boolean, string, number or null, but found ${q(ot(e))} instead.`); if (!H(r, ["string", "array"])) throw new lt(`Expected second argument to be of type array or string, but found ${q(ot(r))} instead.`); if (this.fromIndex) { const n = this.fromIndex.evaluate(t); return r.indexOf(e, n) } return r.indexOf(e) } eachChild(t) { t(this.needle), t(this.haystack), this.fromIndex && t(this.fromIndex) } outputDefined() { return !1 } serialize() { if (null != this.fromIndex && void 0 !== this.fromIndex) { const t = this.fromIndex.serialize(); return ["index-of", this.needle.serialize(), this.haystack.serialize(), t] } return ["index-of", this.needle.serialize(), this.haystack.serialize()] } } class de { constructor(t, e, r, n, i, o) { this.inputType = t, this.type = e, this.input = r, this.cases = n, this.outputs = i, this.otherwise = o } static parse(t, e) { if (t.length < 5) return e.error(`Expected at least 4 arguments, but found only ${t.length - 1}.`); if (t.length % 2 != 1) return e.error("Expected an even number of arguments."); let r, n; e.expectedType && "value" !== e.expectedType.kind && (n = e.expectedType); const i = {}, o = []; for (let a = 2; a < t.length - 1; a += 2) { let s = t[a]; const l = t[a + 1]; Array.isArray(s) || (s = [s]); const u = e.concat(a); if (0 === s.length) return u.error("Expected at least one branch label."); for (const t of s) { if ("number" != typeof t && "string" != typeof t) return u.error("Branch labels must be numbers or strings."); if ("number" == typeof t && Math.abs(t) > Number.MAX_SAFE_INTEGER) return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`); if ("number" == typeof t && Math.floor(t) !== t) return u.error("Numeric branch labels must be integer values."); if (r) { if (u.checkSubtype(r, ot(t))) return null } else r = ot(t); if (void 0 !== i[String(t)]) return u.error("Branch labels must be unique."); i[String(t)] = o.length } const c = e.parse(l, a, n); if (!c) return null; n = n || c.type, o.push(c) } const a = e.parse(t[1], 1, U); if (!a) return null; const s = e.parse(t[t.length - 1], t.length - 1, n); return s ? "value" !== a.type.kind && e.concat(1).checkSubtype(r, a.type) ? null : new de(r, n, a, i, o, s) : null } evaluate(t) { const e = this.input.evaluate(t); return (ot(e) === this.inputType && this.outputs[this.cases[e]] || this.otherwise).evaluate(t) } eachChild(t) { t(this.input), this.outputs.forEach(t), t(this.otherwise) } outputDefined() { return this.outputs.every(t => t.outputDefined()) && this.otherwise.outputDefined() } serialize() { const t = ["match", this.input.serialize()], e = Object.keys(this.cases).sort(), r = [], n = {}; for (const t of e) { const e = n[this.cases[t]]; void 0 === e ? (n[this.cases[t]] = r.length, r.push([this.cases[t], [t]])) : r[e][1].push(t) } const i = t => "number" === this.inputType.kind ? Number(t) : t; for (const [e, n] of r) 1 === n.length ? t.push(i(n[0])) : t.push(n.map(i)), t.push(this.outputs[e].serialize()); return t.push(this.otherwise.serialize()), t } } class ge { constructor(t, e, r) { this.type = t, this.branches = e, this.otherwise = r } static parse(t, e) { if (t.length < 4) return e.error(`Expected at least 3 arguments, but found only ${t.length - 1}.`); if (t.length % 2 != 0) return e.error("Expected an odd number of arguments."); let r; e.expectedType && "value" !== e.expectedType.kind && (r = e.expectedType); const n = []; for (let i = 1; i < t.length - 1; i += 2) { const o = e.parse(t[i], i, D); if (!o) return null; const a = e.parse(t[i + 1], i + 1, r); if (!a) return null; n.push([o, a]), r = r || a.type } const i = e.parse(t[t.length - 1], t.length - 1, r); return i ? new ge(r, n, i) : null } evaluate(t) { for (const [e, r] of this.branches) if (e.evaluate(t)) return r.evaluate(t); return this.otherwise.evaluate(t) } eachChild(t) { for (const [e, r] of this.branches) t(e), t(r); t(this.otherwise) } outputDefined() { return this.branches.every(([t, e]) => e.outputDefined()) && this.otherwise.outputDefined() } serialize() { const t = ["case"]; return this.eachChild(e => { t.push(e.serialize()) }), t } } class ye { constructor(t, e, r, n) { this.type = t, this.input = e, this.beginIndex = r, this.endIndex = n } static parse(t, e) { if (t.length <= 2 || t.length >= 5) return e.error(`Expected 3 or 4 arguments, but found ${t.length - 1} instead.`); const r = e.parse(t[1], 1, U), n = e.parse(t[2], 2, j); if (!r || !n) return null; if (!K(r.type, [W(U), N, U])) return e.error(`Expected first argument to be of type array or string, but found ${q(r.type)} instead`); if (4 === t.length) { const i = e.parse(t[3], 3, j); return i ? new ye(r.type, r, n, i) : null } return new ye(r.type, r, n) } evaluate(t) { const e = this.input.evaluate(t), r = this.beginIndex.evaluate(t); if (!H(e, ["string", "array"])) throw new lt(`Expected first argument to be of type array or string, but found ${q(ot(e))} instead.`); if (this.endIndex) { const n = this.endIndex.evaluate(t); return e.slice(r, n) } return e.slice(r) } eachChild(t) { t(this.input), t(this.beginIndex), this.endIndex && t(this.endIndex) } outputDefined() { return !1 } serialize() { if (null != this.endIndex && void 0 !== this.endIndex) { const t = this.endIndex.serialize(); return ["slice", this.input.serialize(), this.beginIndex.serialize(), t] } return ["slice", this.input.serialize(), this.beginIndex.serialize()] } } function me(t, e) { return "==" === t || "!=" === t ? "boolean" === e.kind || "string" === e.kind || "number" === e.kind || "null" === e.kind || "value" === e.kind : "string" === e.kind || "number" === e.kind || "value" === e.kind } function ve(t, e, r, n) { return 0 === n.compare(e, r) } function _e(t, e, r) { const n = "==" !== t && "!=" !== t; return class i { constructor(t, e, r) { this.type = D, this.lhs = t, this.rhs = e, this.collator = r, this.hasUntypedArgument = "value" === t.type.kind || "value" === e.type.kind } static parse(t, e) { if (3 !== t.length && 4 !== t.length) return e.error("Expected two or three arguments."); const r = t[0]; let o = e.parse(t[1], 1, U); if (!o) return null; if (!me(r, o.type)) return e.concat(1).error(`"${r}" comparisons are not supported for type '${q(o.type)}'.`); let a = e.parse(t[2], 2, U); if (!a) return null; if (!me(r, a.type)) return e.concat(2).error(`"${r}" comparisons are not supported for type '${q(a.type)}'.`); if (o.type.kind !== a.type.kind && "value" !== o.type.kind && "value" !== a.type.kind) return e.error(`Cannot compare types '${q(o.type)}' and '${q(a.type)}'.`); n && ("value" === o.type.kind && "value" !== a.type.kind ? o = new ct(a.type, [o]) : "value" !== o.type.kind && "value" === a.type.kind && (a = new ct(o.type, [a]))); let s = null; if (4 === t.length) { if ("string" !== o.type.kind && "string" !== a.type.kind && "value" !== o.type.kind && "value" !== a.type.kind) return e.error("Cannot use collator to compare non-string types."); if (s = e.parse(t[3], 3, B), !s) return null } return new i(o, a, s) } evaluate(i) { const o = this.lhs.evaluate(i), a = this.rhs.evaluate(i); if (n && this.hasUntypedArgument) { const e = ot(o), r = ot(a); if (e.kind !== r.kind || "string" !== e.kind && "number" !== e.kind) throw new lt(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`) } if (this.collator && !n && this.hasUntypedArgument) { const t = ot(o), r = ot(a); if ("string" !== t.kind || "string" !== r.kind) return e(i, o, a) } return this.collator ? r(i, o, a, this.collator.evaluate(i)) : e(i, o, a) } eachChild(t) { t(this.lhs), t(this.rhs), this.collator && t(this.collator) } outputDefined() { return !0 } serialize() { const e = [t]; return this.eachChild(t => { e.push(t.serialize()) }), e } } } const be = _e("==", (function (t, e, r) { return e === r }), ve), xe = _e("!=", (function (t, e, r) { return e !== r }), (function (t, e, r, n) { return !ve(0, e, r, n) })), we = _e("<", (function (t, e, r) { return e < r }), (function (t, e, r, n) { return n.compare(e, r) < 0 })), Se = _e(">", (function (t, e, r) { return e > r }), (function (t, e, r, n) { return n.compare(e, r) > 0 })), Ee = _e("<=", (function (t, e, r) { return e <= r }), (function (t, e, r, n) { return n.compare(e, r) <= 0 })), Te = _e(">=", (function (t, e, r) { return e >= r }), (function (t, e, r, n) { return n.compare(e, r) >= 0 })); class Ce { constructor(t, e, r, n, i) { this.type = N, this.number = t, this.locale = e, this.currency = r, this.minFractionDigits = n, this.maxFractionDigits = i } static parse(t, e) { if (3 !== t.length) return e.error("Expected two arguments."); const r = e.parse(t[1], 1, j); if (!r) return null; const n = t[2]; if ("object" != typeof n || Array.isArray(n)) return e.error("NumberFormat options argument must be an object."); let i = null; if (n.locale && (i = e.parse(n.locale, 1, N), !i)) return null; let o = null; if (n.currency && (o = e.parse(n.currency, 1, N), !o)) return null; let a = null; if (n["min-fraction-digits"] && (a = e.parse(n["min-fraction-digits"], 1, j), !a)) return null; let s = null; return n["max-fraction-digits"] && (s = e.parse(n["max-fraction-digits"], 1, j), !s) ? null : new Ce(r, i, o, a, s) } evaluate(t) { return new Intl.NumberFormat(this.locale ? this.locale.evaluate(t) : [], { style: this.currency ? "currency" : "decimal", currency: this.currency ? this.currency.evaluate(t) : void 0, minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(t) : void 0, maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(t) : void 0 }).format(this.number.evaluate(t)) } eachChild(t) { t(this.number), this.locale && t(this.locale), this.currency && t(this.currency), this.minFractionDigits && t(this.minFractionDigits), this.maxFractionDigits && t(this.maxFractionDigits) } outputDefined() { return !1 } serialize() { const t = {}; return this.locale && (t.locale = this.locale.serialize()), this.currency && (t.currency = this.currency.serialize()), this.minFractionDigits && (t["min-fraction-digits"] = this.minFractionDigits.serialize()), this.maxFractionDigits && (t["max-fraction-digits"] = this.maxFractionDigits.serialize()), ["number-format", this.number.serialize(), t] } } class Oe { constructor(t) { this.type = j, this.input = t } static parse(t, e) { if (2 !== t.length) return e.error(`Expected 1 argument, but found ${t.length - 1} instead.`); const r = e.parse(t[1], 1); return r ? "array" !== r.type.kind && "string" !== r.type.kind && "value" !== r.type.kind ? e.error(`Expected argument of type string or array, but found ${q(r.type)} instead.`) : new Oe(r) : null } evaluate(t) { const e = this.input.evaluate(t); if ("string" == typeof e) return e.length; if (Array.isArray(e)) return e.length; throw new lt(`Expected value to be of type string or array, but found ${q(ot(e))} instead.`) } eachChild(t) { t(this.input) } outputDefined() { return !1 } serialize() { const t = ["length"]; return this.eachChild(e => { t.push(e.serialize()) }), t } } const Pe = { "==": be, "!=": xe, ">": Se, "<": we, ">=": Te, "<=": Ee, array: ct, at: he, boolean: ct, case: ge, coalesce: ue, collator: vt, format: ht, image: pt, in: pe, "index-of": fe, interpolate: se, "interpolate-hcl": se, "interpolate-lab": se, length: Oe, let: ce, literal: st, match: de, number: ct, "number-format": Ce, object: ct, slice: ye, step: Bt, string: ct, "to-boolean": dt, "to-color": dt, "to-number": dt, "to-string": dt, var: Gt, within: kt }; function Re(t, [e, r, n, i]) { e = e.evaluate(t), r = r.evaluate(t), n = n.evaluate(t); const o = i ? i.evaluate(t) : 1, a = nt(e, r, n, o); if (a) throw new lt(a); return new J(e / 255 * o, r / 255 * o, n / 255 * o, o) } function Ie(t, e) { return t in e } function Le(t, e) { const r = e[t]; return void 0 === r ? null : r } function Me(t) { return {type: t} } function Fe(t) { return {result: "success", value: t} } function Ae(t) { return {result: "error", value: t} } function ke(t) { return "data-driven" === t["property-type"] || "cross-faded-data-driven" === t["property-type"] } function je(t) { return !!t.expression && t.expression.parameters.indexOf("zoom") > -1 } function Ne(t) { return !!t.expression && t.expression.interpolated } function De(t) { return t instanceof Number ? "number" : t instanceof String ? "string" : t instanceof Boolean ? "boolean" : Array.isArray(t) ? "array" : null === t ? "null" : typeof t } function Ge(t) { return "object" == typeof t && null !== t && !Array.isArray(t) } function ze(t) { return t } function Ue(t, e) { const r = "color" === e.type, n = t.stops && "object" == typeof t.stops[0][0], i = n || void 0 !== t.property, o = n || !i, a = t.type || (Ne(e) ? "exponential" : "interval"); if (r && ((t = M({}, t)).stops && (t.stops = t.stops.map(t => [t[0], J.parse(t[1])])), t.default ? t.default = J.parse(t.default) : t.default = J.parse(e.default)), t.colorSpace && "rgb" !== t.colorSpace && !ae[t.colorSpace]) throw new Error("Unknown color space: " + t.colorSpace); let s, l, u; if ("exponential" === a) s = We; else if ("interval" === a) s = Ye; else if ("categorical" === a) { s = Ve, l = Object.create(null); for (const e of t.stops) l[e[0]] = e[1]; u = typeof t.stops[0][0] } else { if ("identity" !== a) throw new Error(`Unknown function type "${a}"`); s = qe } if (n) { const r = {}, n = []; for (let e = 0; e < t.stops.length; e++) { const i = t.stops[e], o = i[0].zoom; void 0 === r[o] && (r[o] = { zoom: o, type: t.type, property: t.property, default: t.default, stops: [] }, n.push(o)), r[o].stops.push([i[0].value, i[1]]) } const i = []; for (const t of n) i.push([r[t].zoom, Ue(r[t], e)]); const o = {name: "linear"}; return { kind: "composite", interpolationType: o, interpolationFactor: se.interpolationFactor.bind(void 0, o), zoomStops: i.map(t => t[0]), evaluate: ({zoom: r}, n) => We({stops: i, base: t.base}, e, r).evaluate(r, n) } } if (o) { const r = "exponential" === a ? {name: "exponential", base: void 0 !== t.base ? t.base : 1} : null; return { kind: "camera", interpolationType: r, interpolationFactor: se.interpolationFactor.bind(void 0, r), zoomStops: t.stops.map(t => t[0]), evaluate: ({zoom: r}) => s(t, e, r, l, u) } } return { kind: "source", evaluate(r, n) { const i = n && n.properties ? n.properties[t.property] : void 0; return void 0 === i ? Be(t.default, e.default) : s(t, e, i, l, u) } } } function Be(t, e, r) { return void 0 !== t ? t : void 0 !== e ? e : void 0 !== r ? r : void 0 } function Ve(t, e, r, n, i) { return Be(typeof r === i ? n[r] : void 0, t.default, e.default) } function Ye(t, e, r) { if ("number" !== De(r)) return Be(t.default, e.default); const n = t.stops.length; if (1 === n) return t.stops[0][1]; if (r <= t.stops[0][0]) return t.stops[0][1]; if (r >= t.stops[n - 1][0]) return t.stops[n - 1][1]; const i = Ut(t.stops.map(t => t[0]), r); return t.stops[i][1] } function We(t, e, r) { const n = void 0 !== t.base ? t.base : 1; if ("number" !== De(r)) return Be(t.default, e.default); const i = t.stops.length; if (1 === i) return t.stops[0][1]; if (r <= t.stops[0][0]) return t.stops[0][1]; if (r >= t.stops[i - 1][0]) return t.stops[i - 1][1]; const o = Ut(t.stops.map(t => t[0]), r), a = function (t, e, r, n) { const i = n - r, o = t - r; return 0 === i ? 0 : 1 === e ? o / i : (Math.pow(e, o) - 1) / (Math.pow(e, i) - 1) }(r, n, t.stops[o][0], t.stops[o + 1][0]), s = t.stops[o][1], l = t.stops[o + 1][1]; let u = qt[e.type] || ze; if (t.colorSpace && "rgb" !== t.colorSpace) { const e = ae[t.colorSpace]; u = (t, r) => e.reverse(e.interpolate(e.forward(t), e.forward(r), a)) } return "function" == typeof s.evaluate ? { evaluate(...t) { const e = s.evaluate.apply(void 0, t), r = l.evaluate.apply(void 0, t); if (void 0 !== e && void 0 !== r) return u(e, r, a) } } : u(s, l, a) } function qe(t, e, r) { return "color" === e.type ? r = J.parse(r) : "formatted" === e.type ? r = et.fromString(r.toString()) : "resolvedImage" === e.type ? r = rt.fromString(r.toString()) : De(r) === e.type || "enum" === e.type && e.values[r] || (r = void 0), Be(r, t.default, e.default) } mt.register(Pe, { error: [{kind: "error"}, [N], (t, [e]) => { throw new lt(e.evaluate(t)) }], typeof: [N, [U], (t, [e]) => q(ot(e.evaluate(t)))], "to-rgba": [W(j, 4), [G], (t, [e]) => e.evaluate(t).toArray()], rgb: [G, [j, j, j], Re], rgba: [G, [j, j, j, j], Re], has: { type: D, overloads: [[[N], (t, [e]) => Ie(e.evaluate(t), t.properties())], [[N, z], (t, [e, r]) => Ie(e.evaluate(t), r.evaluate(t))]] }, get: { type: U, overloads: [[[N], (t, [e]) => Le(e.evaluate(t), t.properties())], [[N, z], (t, [e, r]) => Le(e.evaluate(t), r.evaluate(t))]] }, "feature-state": [U, [N], (t, [e]) => Le(e.evaluate(t), t.featureState || {})], properties: [z, [], t => t.properties()], "geometry-type": [N, [], t => t.geometryType()], id: [U, [], t => t.id()], zoom: [j, [], t => t.globals.zoom], "heatmap-density": [j, [], t => t.globals.heatmapDensity || 0], "line-progress": [j, [], t => t.globals.lineProgress || 0], "sky-radial-progress": [j, [], t => t.globals.skyRadialProgress || 0], accumulated: [U, [], t => void 0 === t.globals.accumulated ? null : t.globals.accumulated], "+": [j, Me(j), (t, e) => { let r = 0; for (const n of e) r += n.evaluate(t); return r }], "*": [j, Me(j), (t, e) => { let r = 1; for (const n of e) r *= n.evaluate(t); return r }], "-": { type: j, overloads: [[[j, j], (t, [e, r]) => e.evaluate(t) - r.evaluate(t)], [[j], (t, [e]) => -e.evaluate(t)]] }, "/": [j, [j, j], (t, [e, r]) => e.evaluate(t) / r.evaluate(t)], "%": [j, [j, j], (t, [e, r]) => e.evaluate(t) % r.evaluate(t)], ln2: [j, [], () => Math.LN2], pi: [j, [], () => Math.PI], e: [j, [], () => Math.E], "^": [j, [j, j], (t, [e, r]) => Math.pow(e.evaluate(t), r.evaluate(t))], sqrt: [j, [j], (t, [e]) => Math.sqrt(e.evaluate(t))], log10: [j, [j], (t, [e]) => Math.log(e.evaluate(t)) / Math.LN10], ln: [j, [j], (t, [e]) => Math.log(e.evaluate(t))], log2: [j, [j], (t, [e]) => Math.log(e.evaluate(t)) / Math.LN2], sin: [j, [j], (t, [e]) => Math.sin(e.evaluate(t))], cos: [j, [j], (t, [e]) => Math.cos(e.evaluate(t))], tan: [j, [j], (t, [e]) => Math.tan(e.evaluate(t))], asin: [j, [j], (t, [e]) => Math.asin(e.evaluate(t))], acos: [j, [j], (t, [e]) => Math.acos(e.evaluate(t))], atan: [j, [j], (t, [e]) => Math.atan(e.evaluate(t))], min: [j, Me(j), (t, e) => Math.min(...e.map(e => e.evaluate(t)))], max: [j, Me(j), (t, e) => Math.max(...e.map(e => e.evaluate(t)))], abs: [j, [j], (t, [e]) => Math.abs(e.evaluate(t))], round: [j, [j], (t, [e]) => { const r = e.evaluate(t); return r < 0 ? -Math.round(-r) : Math.round(r) }], floor: [j, [j], (t, [e]) => Math.floor(e.evaluate(t))], ceil: [j, [j], (t, [e]) => Math.ceil(e.evaluate(t))], "filter-==": [D, [N, U], (t, [e, r]) => t.properties()[e.value] === r.value], "filter-id-==": [D, [U], (t, [e]) => t.id() === e.value], "filter-type-==": [D, [N], (t, [e]) => t.geometryType() === e.value], "filter-<": [D, [N, U], (t, [e, r]) => { const n = t.properties()[e.value], i = r.value; return typeof n == typeof i && n < i }], "filter-id-<": [D, [U], (t, [e]) => { const r = t.id(), n = e.value; return typeof r == typeof n && r < n }], "filter->": [D, [N, U], (t, [e, r]) => { const n = t.properties()[e.value], i = r.value; return typeof n == typeof i && n > i }], "filter-id->": [D, [U], (t, [e]) => { const r = t.id(), n = e.value; return typeof r == typeof n && r > n }], "filter-<=": [D, [N, U], (t, [e, r]) => { const n = t.properties()[e.value], i = r.value; return typeof n == typeof i && n <= i }], "filter-id-<=": [D, [U], (t, [e]) => { const r = t.id(), n = e.value; return typeof r == typeof n && r <= n }], "filter->=": [D, [N, U], (t, [e, r]) => { const n = t.properties()[e.value], i = r.value; return typeof n == typeof i && n >= i }], "filter-id->=": [D, [U], (t, [e]) => { const r = t.id(), n = e.value; return typeof r == typeof n && r >= n }], "filter-has": [D, [U], (t, [e]) => e.value in t.properties()], "filter-has-id": [D, [], t => null !== t.id() && void 0 !== t.id()], "filter-type-in": [D, [W(N)], (t, [e]) => e.value.indexOf(t.geometryType()) >= 0], "filter-id-in": [D, [W(U)], (t, [e]) => e.value.indexOf(t.id()) >= 0], "filter-in-small": [D, [N, W(U)], (t, [e, r]) => r.value.indexOf(t.properties()[e.value]) >= 0], "filter-in-large": [D, [N, W(U)], (t, [e, r]) => function (t, e, r, n) { for (; r <= n;) { const i = r + n >> 1; if (e[i] === t) return !0; e[i] > t ? n = i - 1 : r = i + 1 } return !1 }(t.properties()[e.value], r.value, 0, r.value.length - 1)], all: { type: D, overloads: [[[D, D], (t, [e, r]) => e.evaluate(t) && r.evaluate(t)], [Me(D), (t, e) => { for (const r of e) if (!r.evaluate(t)) return !1; return !0 }]] }, any: { type: D, overloads: [[[D, D], (t, [e, r]) => e.evaluate(t) || r.evaluate(t)], [Me(D), (t, e) => { for (const r of e) if (r.evaluate(t)) return !0; return !1 }]] }, "!": [D, [D], (t, [e]) => !e.evaluate(t)], "is-supported-script": [D, [N], (t, [e]) => { const r = t.globals && t.globals.isSupportedScript; return !r || r(e.evaluate(t)) }], upcase: [N, [N], (t, [e]) => e.evaluate(t).toUpperCase()], downcase: [N, [N], (t, [e]) => e.evaluate(t).toLowerCase()], concat: [N, Me(U), (t, e) => e.map(e => at(e.evaluate(t))).join("")], "resolved-locale": [N, [B], (t, [e]) => e.evaluate(t).resolvedLocale()] }); class Xe { constructor(t, e) { var r; this.expression = t, this._warningHistory = {}, this._evaluator = new yt, this._defaultValue = e ? "color" === (r = e).type && Ge(r.default) ? new J(0, 0, 0, 0) : "color" === r.type ? J.parse(r.default) || null : void 0 === r.default ? null : r.default : null, this._enumValues = e && "enum" === e.type ? e.values : null } evaluateWithoutErrorHandling(t, e, r, n, i, o) { return this._evaluator.globals = t, this._evaluator.feature = e, this._evaluator.featureState = r, this._evaluator.canonical = n, this._evaluator.availableImages = i || null, this._evaluator.formattedSection = o, this.expression.evaluate(this._evaluator) } evaluate(t, e, r, n, i, o) { this._evaluator.globals = t, this._evaluator.feature = e || null, this._evaluator.featureState = r || null, this._evaluator.canonical = n, this._evaluator.availableImages = i || null, this._evaluator.formattedSection = o || null; try { const t = this.expression.evaluate(this._evaluator); if (null == t || "number" == typeof t && t != t) return this._defaultValue; if (this._enumValues && !(t in this._enumValues)) throw new lt(`Expected value to be one of ${Object.keys(this._enumValues).map(t => JSON.stringify(t)).join(", ")}, but found ${JSON.stringify(t)} instead.`); return t } catch (t) { return this._warningHistory[t.message] || (this._warningHistory[t.message] = !0, "undefined" != typeof console && console.warn(t.message)), this._defaultValue } } } function Ze(t) { return Array.isArray(t) && t.length > 0 && "string" == typeof t[0] && t[0] in Pe } function Ke(t, e) { const r = new zt(Pe, [], e ? function (t) { const e = {color: G, string: N, number: j, enum: N, boolean: D, formatted: V, resolvedImage: Y}; if ("array" === t.type) return W(e[t.value] || U, t.length); return e[t.type] }(e) : void 0), n = r.parse(t, void 0, void 0, void 0, e && "string" === e.type ? {typeAnnotation: "coerce"} : void 0); return n ? Fe(new Xe(n, e)) : Ae(r.errors) } class He { constructor(t, e) { this.kind = t, this._styleExpression = e, this.isStateDependent = "constant" !== t && !Nt(e.expression) } evaluateWithoutErrorHandling(t, e, r, n, i, o) { return this._styleExpression.evaluateWithoutErrorHandling(t, e, r, n, i, o) } evaluate(t, e, r, n, i, o) { return this._styleExpression.evaluate(t, e, r, n, i, o) } } class $e { constructor(t, e, r, n) { this.kind = t, this.zoomStops = r, this._styleExpression = e, this.isStateDependent = "camera" !== t && !Nt(e.expression), this.interpolationType = n } evaluateWithoutErrorHandling(t, e, r, n, i, o) { return this._styleExpression.evaluateWithoutErrorHandling(t, e, r, n, i, o) } evaluate(t, e, r, n, i, o) { return this._styleExpression.evaluate(t, e, r, n, i, o) } interpolationFactor(t, e, r) { return this.interpolationType ? se.interpolationFactor(this.interpolationType, t, e, r) : 0 } } function Je(t, e) { if ("error" === (t = Ke(t, e)).result) return t; const r = t.value.expression, n = jt(r); if (!n && !ke(e)) return Ae([new F("", "data expressions not supported")]); const i = Dt(r, ["zoom"]); if (!i && !je(e)) return Ae([new F("", "zoom expressions not supported")]); const o = function t(e) { let r = null; if (e instanceof ce) r = t(e.result); else if (e instanceof ue) { for (const n of e.args) if (r = t(n), r) break } else (e instanceof Bt || e instanceof se) && e.input instanceof mt && "zoom" === e.input.name && (r = e); if (r instanceof F) return r; return e.eachChild(e => { const n = t(e); n instanceof F ? r = n : !r && n ? r = new F("", '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.') : r && n && r !== n && (r = new F("", 'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.')) }), r }(r); if (!o && !i) return Ae([new F("", '"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]); if (o instanceof F) return Ae([o]); if (o instanceof se && !Ne(e)) return Ae([new F("", '"interpolate" expressions cannot be used with this property')]); if (!o) return Fe(new He(n ? "constant" : "source", t.value)); const a = o instanceof se ? o.interpolation : void 0; return Fe(new $e(n ? "camera" : "composite", t.value, o.labels, a)) } class Qe { constructor(t, e) { this._parameters = t, this._specification = e, M(this, Ue(this._parameters, this._specification)) } static deserialize(t) { return new Qe(t._parameters, t._specification) } static serialize(t) { return {_parameters: t._parameters, _specification: t._specification} } } function tr(t) { return "object" == typeof t ? ["literal", t] : t } function er(t, e) { let r = t.stops; if (!r) return function (t, e) { const r = ["get", t.property]; if (void 0 === t.default) return "string" === e.type ? ["string", r] : r; if ("enum" === e.type) return ["match", r, Object.keys(e.values), r, t.default]; { const n = ["color" === e.type ? "to-color" : e.type, r, tr(t.default)]; return "array" === e.type && n.splice(1, 0, e.value, e.length || null), n } }(t, e); const n = r && "object" == typeof r[0][0], i = n || void 0 !== t.property, o = n || !i; return r = r.map(t => !i && e.tokens && "string" == typeof t[1] ? [t[0], lr(t[1])] : [t[0], tr(t[1])]), n ? function (t, e, r) { const n = {}, i = {}, o = []; for (let e = 0; e < r.length; e++) { const a = r[e], s = a[0].zoom; void 0 === n[s] && (n[s] = { zoom: s, type: t.type, property: t.property, default: t.default }, i[s] = [], o.push(s)), i[s].push([a[0].value, a[1]]) } if ("exponential" === sr({}, e)) { const r = [rr(t), ["linear"], ["zoom"]]; for (const t of o) { const o = ir(n[t], e, i[t]); ar(r, t, o, !1) } return r } { const t = ["step", ["zoom"]]; for (const r of o) { const o = ir(n[r], e, i[r]); ar(t, r, o, !0) } return or(t), t } }(t, e, r) : o ? function (t, e, r, n = ["zoom"]) { const i = sr(t, e); let o, a = !1; if ("interval" === i) o = ["step", n], a = !0; else { if ("exponential" !== i) throw new Error(`Unknown zoom function type "${i}"`); { const e = void 0 !== t.base ? t.base : 1; o = [rr(t), 1 === e ? ["linear"] : ["exponential", e], n] } } for (const t of r) ar(o, t[0], t[1], a); return or(o), o }(t, e, r) : ir(t, e, r) } function rr(t) { switch (t.colorSpace) { case"hcl": return "interpolate-hcl"; case"lab": return "interpolate-lab"; default: return "interpolate" } } function nr(t, e) { const r = tr((n = t.default, i = e.default, void 0 !== n ? n : void 0 !== i ? i : void 0)); var n, i; return void 0 === r && "resolvedImage" === e.type ? "" : r } function ir(t, e, r) { const n = sr(t, e), i = ["get", t.property]; if ("categorical" === n && "boolean" == typeof r[0][0]) { const n = ["case"]; for (const t of r) n.push(["==", i, t[0]], t[1]); return n.push(nr(t, e)), n } if ("categorical" === n) { const n = ["match", i]; for (const t of r) ar(n, t[0], t[1], !1); return n.push(nr(t, e)), n } if ("interval" === n) { const e = ["step", ["number", i]]; for (const t of r) ar(e, t[0], t[1], !0); return or(e), void 0 === t.default ? e : ["case", ["==", ["typeof", i], "number"], e, tr(t.default)] } if ("exponential" === n) { const e = void 0 !== t.base ? t.base : 1, n = [rr(t), 1 === e ? ["linear"] : ["exponential", e], ["number", i]]; for (const t of r) ar(n, t[0], t[1], !1); return void 0 === t.default ? n : ["case", ["==", ["typeof", i], "number"], n, tr(t.default)] } throw new Error("Unknown property function type " + n) } function or(t) { "step" === t[0] && 3 === t.length && (t.push(0), t.push(t[3])) } function ar(t, e, r, n) { t.length > 3 && e === t[t.length - 2] || (n && 2 === t.length || t.push(e), t.push(r)) } function sr(t, e) { return t.type ? t.type : e.expression.interpolated ? "exponential" : "interval" } function lr(t) { const e = ["concat"], r = /{([^{}]+)}/g; let n = 0; for (let i = r.exec(t); null !== i; i = r.exec(t)) { const o = t.slice(n, r.lastIndex - i[0].length); n = r.lastIndex, o.length > 0 && e.push(o), e.push(["get", i[1]]) } if (1 === e.length) return t; if (n < t.length) e.push(t.slice(n)); else if (2 === e.length) return ["to-string", e[1]]; return e } function ur(t) { if (!0 === t || !1 === t) return !0; if (!Array.isArray(t) || 0 === t.length) return !1; switch (t[0]) { case"has": return t.length >= 2 && "$id" !== t[1] && "$type" !== t[1]; case"in": return t.length >= 3 && ("string" != typeof t[1] || Array.isArray(t[2])); case"!in": case"!has": case"none": return !1; case"==": case"!=": case">": case">=": case"<": case"<=": return 3 !== t.length || Array.isArray(t[1]) || Array.isArray(t[2]); case"any": case"all": for (const e of t.slice(1)) if (!ur(e) && "boolean" != typeof e) return !1; return !0; default: return !0 } } const cr = { type: "boolean", default: !1, transition: !1, "property-type": "data-driven", expression: {interpolated: !1, parameters: ["zoom", "feature"]} }; function hr(t) { if (null == t) return {filter: () => !0, needGeometry: !1}; ur(t) || (t = fr(t)); const e = Ke(t, cr); if ("error" === e.result) throw new Error(e.value.map(t => `${t.key}: ${t.message}`).join(", ")); return { filter: (t, r, n) => e.value.evaluate(t, r, {}, n), needGeometry: function t(e) { if (!Array.isArray(e)) return !1; if ("within" === e[0]) return !0; for (let r = 1; r < e.length; r++) if (t(e[r])) return !0; return !1 }(t) } } function pr(t, e) { return t < e ? -1 : t > e ? 1 : 0 } function fr(t) { if (!t) return !0; const e = t[0]; if (t.length <= 1) return "any" !== e; var r; return "==" === e ? dr(t[1], t[2], "==") : "!=" === e ? mr(dr(t[1], t[2], "==")) : "<" === e || ">" === e || "<=" === e || ">=" === e ? dr(t[1], t[2], e) : "any" === e ? (r = t.slice(1), ["any"].concat(r.map(fr))) : "all" === e ? ["all"].concat(t.slice(1).map(fr)) : "none" === e ? ["all"].concat(t.slice(1).map(fr).map(mr)) : "in" === e ? gr(t[1], t.slice(2)) : "!in" === e ? mr(gr(t[1], t.slice(2))) : "has" === e ? yr(t[1]) : "!has" === e ? mr(yr(t[1])) : "within" !== e || t } function dr(t, e, r) { switch (t) { case"$type": return ["filter-type-" + r, e]; case"$id": return ["filter-id-" + r, e]; default: return ["filter-" + r, t, e] } } function gr(t, e) { if (0 === e.length) return !1; switch (t) { case"$type": return ["filter-type-in", ["literal", e]]; case"$id": return ["filter-id-in", ["literal", e]]; default: return e.length > 200 && !e.some(t => typeof t != typeof e[0]) ? ["filter-in-large", t, ["literal", e.sort(pr)]] : ["filter-in-small", t, ["literal", e]] } } function yr(t) { switch (t) { case"$type": return !0; case"$id": return ["filter-has-id"]; default: return ["filter-has", t] } } function mr(t) { return ["!", t] } var vr = ["type", "source", "source-layer", "minzoom", "maxzoom", "filter", "layout"]; function _r(t, e) { const r = {}; for (const e in t) "ref" !== e && (r[e] = t[e]); return vr.forEach(t => { t in e && (r[t] = e[t]) }), r } function br(t) { t = t.slice(); const e = Object.create(null); for (let r = 0; r < t.length; r++) e[t[r].id] = t[r]; for (let r = 0; r < t.length; r++) "ref" in t[r] && (t[r] = _r(t[r], e[t[r].ref])); return t } class xr { constructor(t, e, r, n) { this.message = (t ? t + ": " : "") + r, n && (this.identifier = n), null != e && e.__line__ && (this.line = e.__line__) } } class wr { constructor(t) { this.error = t, this.message = t.message; const e = t.message.match(/line (\d+)/); this.line = e ? parseInt(e[1], 10) : 0 } } function Sr(t) { const e = t.key, r = t.value; return r ? [new xr(e, r, "constants have been deprecated as of v8")] : [] } function Er(t) { return t instanceof Number || t instanceof String || t instanceof Boolean ? t.valueOf() : t } function Tr(t) { if (Array.isArray(t)) return t.map(Tr); if (t instanceof Object && !(t instanceof Number || t instanceof String || t instanceof Boolean)) { const e = {}; for (const r in t) e[r] = Tr(t[r]); return e } return Er(t) } function Cr(t) { const e = t.key, r = t.value, n = t.valueSpec || {}, i = t.objectElementValidators || {}, o = t.style, a = t.styleSpec; let s = []; const l = De(r); if ("object" !== l) return [new xr(e, r, `object expected, ${l} found`)]; for (const t in r) { const l = t.split(".")[0], u = n[l] || n["*"]; let c; if (i[l]) c = i[l]; else if (n[l]) c = Vr; else if (i["*"]) c = i["*"]; else { if (!n["*"]) { s.push(new xr(e, r[t], `unknown property "${t}"`)); continue } c = Vr } s = s.concat(c({ key: (e ? e + "." : e) + t, value: r[t], valueSpec: u, style: o, styleSpec: a, object: r, objectKey: t }, r)) } for (const t in n) i[t] || n[t].required && void 0 === n[t].default && void 0 === r[t] && s.push(new xr(e, r, `missing required property "${t}"`)); return s } function Or(t) { const e = t.value, r = t.valueSpec, n = t.style, i = t.styleSpec, o = t.key, a = t.arrayElementValidator || Vr; if ("array" !== De(e)) return [new xr(o, e, `array expected, ${De(e)} found`)]; if (r.length && e.length !== r.length) return [new xr(o, e, `array length ${r.length} expected, length ${e.length} found`)]; if (r["min-length"] && e.length < r["min-length"]) return [new xr(o, e, `array length at least ${r["min-length"]} expected, length ${e.length} found`)]; let s = {type: r.value, values: r.values}; i.$version < 7 && (s.function = r.function), "object" === De(r.value) && (s = r.value); let l = []; for (let t = 0; t < e.length; t++) l = l.concat(a({ array: e, arrayIndex: t, value: e[t], valueSpec: s, style: n, styleSpec: i, key: `${o}[${t}]` })); return l } function Pr(t) { const e = t.key, r = t.value, n = t.valueSpec; let i = De(r); return "number" === i && r != r && (i = "NaN"), "number" !== i ? [new xr(e, r, `number expected, ${i} found`)] : "minimum" in n && r < n.minimum ? [new xr(e, r, `${r} is less than the minimum value ${n.minimum}`)] : "maximum" in n && r > n.maximum ? [new xr(e, r, `${r} is greater than the maximum value ${n.maximum}`)] : [] } function Rr(t) { const e = t.valueSpec, r = Er(t.value.type); let n, i, o, a = {}; const s = "categorical" !== r && void 0 === t.value.property, l = !s, u = "array" === De(t.value.stops) && "array" === De(t.value.stops[0]) && "object" === De(t.value.stops[0][0]), c = Cr({ key: t.key, value: t.value, valueSpec: t.styleSpec.function, style: t.style, styleSpec: t.styleSpec, objectElementValidators: { stops: function (t) { if ("identity" === r) return [new xr(t.key, t.value, 'identity function may not have a "stops" property')]; let e = []; const n = t.value; e = e.concat(Or({ key: t.key, value: n, valueSpec: t.valueSpec, style: t.style, styleSpec: t.styleSpec, arrayElementValidator: h })), "array" === De(n) && 0 === n.length && e.push(new xr(t.key, n, "array must have at least one stop")); return e }, default: function (t) { return Vr({key: t.key, value: t.value, valueSpec: e, style: t.style, styleSpec: t.styleSpec}) } } }); return "identity" === r && s && c.push(new xr(t.key, t.value, 'missing required property "property"')), "identity" === r || t.value.stops || c.push(new xr(t.key, t.value, 'missing required property "stops"')), "exponential" === r && t.valueSpec.expression && !Ne(t.valueSpec) && c.push(new xr(t.key, t.value, "exponential functions not supported")), t.styleSpec.$version >= 8 && (l && !ke(t.valueSpec) ? c.push(new xr(t.key, t.value, "property functions not supported")) : s && !je(t.valueSpec) && c.push(new xr(t.key, t.value, "zoom functions not supported"))), "categorical" !== r && !u || void 0 !== t.value.property || c.push(new xr(t.key, t.value, '"property" property is required')), c; function h(t) { let r = []; const n = t.value, s = t.key; if ("array" !== De(n)) return [new xr(s, n, `array expected, ${De(n)} found`)]; if (2 !== n.length) return [new xr(s, n, `array length 2 expected, length ${n.length} found`)]; if (u) { if ("object" !== De(n[0])) return [new xr(s, n, `object expected, ${De(n[0])} found`)]; if (void 0 === n[0].zoom) return [new xr(s, n, "object stop key must have zoom")]; if (void 0 === n[0].value) return [new xr(s, n, "object stop key must have value")]; if (o && o > Er(n[0].zoom)) return [new xr(s, n[0].zoom, "stop zoom values must appear in ascending order")]; Er(n[0].zoom) !== o && (o = Er(n[0].zoom), i = void 0, a = {}), r = r.concat(Cr({ key: s + "[0]", value: n[0], valueSpec: {zoom: {}}, style: t.style, styleSpec: t.styleSpec, objectElementValidators: {zoom: Pr, value: p} })) } else r = r.concat(p({ key: s + "[0]", value: n[0], valueSpec: {}, style: t.style, styleSpec: t.styleSpec }, n)); return Ze(Tr(n[1])) ? r.concat([new xr(s + "[1]", n[1], "expressions are not allowed in function stops.")]) : r.concat(Vr({ key: s + "[1]", value: n[1], valueSpec: e, style: t.style, styleSpec: t.styleSpec })) } function p(t, o) { const s = De(t.value), l = Er(t.value), u = null !== t.value ? t.value : o; if (n) { if (s !== n) return [new xr(t.key, u, `${s} stop domain type must match previous stop domain type ${n}`)] } else n = s; if ("number" !== s && "string" !== s && "boolean" !== s) return [new xr(t.key, u, "stop domain value must be a number, string, or boolean")]; if ("number" !== s && "categorical" !== r) { let n = `number expected, ${s} found`; return ke(e) && void 0 === r && (n += '\nIf you intended to use a categorical function, specify `"type": "categorical"`.'), [new xr(t.key, u, n)] } return "categorical" !== r || "number" !== s || isFinite(l) && Math.floor(l) === l ? "categorical" !== r && "number" === s && void 0 !== i && l < i ? [new xr(t.key, u, "stop domain values must appear in ascending order")] : (i = l, "categorical" === r && l in a ? [new xr(t.key, u, "stop domain values must be unique")] : (a[l] = !0, [])) : [new xr(t.key, u, "integer expected, found " + l)] } } function Ir(t) { const e = ("property" === t.expressionContext ? Je : Ke)(Tr(t.value), t.valueSpec); if ("error" === e.result) return e.value.map(e => new xr(`${t.key}${e.key}`, t.value, e.message)); const r = e.value.expression || e.value._styleExpression.expression; if ("property" === t.expressionContext && "text-font" === t.propertyKey && !r.outputDefined()) return [new xr(t.key, t.value, `Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)]; if ("property" === t.expressionContext && "layout" === t.propertyType && !Nt(r)) return [new xr(t.key, t.value, '"feature-state" data expressions are not supported with layout properties.')]; if ("filter" === t.expressionContext && !Nt(r)) return [new xr(t.key, t.value, '"feature-state" data expressions are not supported with filters.')]; if (t.expressionContext && 0 === t.expressionContext.indexOf("cluster")) { if (!Dt(r, ["zoom", "feature-state"])) return [new xr(t.key, t.value, '"zoom" and "feature-state" expressions are not supported with cluster properties.')]; if ("cluster-initial" === t.expressionContext && !jt(r)) return [new xr(t.key, t.value, "Feature data expressions are not supported with initial expression part of cluster properties.")] } return [] } function Lr(t) { const e = t.key, r = t.value, n = t.valueSpec, i = []; return Array.isArray(n.values) ? -1 === n.values.indexOf(Er(r)) && i.push(new xr(e, r, `expected one of [${n.values.join(", ")}], ${JSON.stringify(r)} found`)) : -1 === Object.keys(n.values).indexOf(Er(r)) && i.push(new xr(e, r, `expected one of [${Object.keys(n.values).join(", ")}], ${JSON.stringify(r)} found`)), i } function Mr(t) { return ur(Tr(t.value)) ? Ir(M({}, t, { expressionContext: "filter", valueSpec: {value: "boolean"} })) : function t(e) { const r = e.value, n = e.key; if ("array" !== De(r)) return [new xr(n, r, `array expected, ${De(r)} found`)]; const i = e.styleSpec; let o, a = []; if (r.length < 1) return [new xr(n, r, "filter array must have at least 1 element")]; switch (a = a.concat(Lr({ key: n + "[0]", value: r[0], valueSpec: i.filter_operator, style: e.style, styleSpec: e.styleSpec })), Er(r[0])) { case"<": case"<=": case">": case">=": r.length >= 2 && "$type" === Er(r[1]) && a.push(new xr(n, r, `"$type" cannot be use with operator "${r[0]}"`)); case"==": case"!=": 3 !== r.length && a.push(new xr(n, r, `filter array for operator "${r[0]}" must have 3 elements`)); case"in": case"!in": r.length >= 2 && (o = De(r[1]), "string" !== o && a.push(new xr(n + "[1]", r[1], `string expected, ${o} found`))); for (let t = 2; t < r.length; t++) o = De(r[t]), "$type" === Er(r[1]) ? a = a.concat(Lr({ key: `${n}[${t}]`, value: r[t], valueSpec: i.geometry_type, style: e.style, styleSpec: e.styleSpec })) : "string" !== o && "number" !== o && "boolean" !== o && a.push(new xr(`${n}[${t}]`, r[t], `string, number, or boolean expected, ${o} found`)); break; case"any": case"all": case"none": for (let i = 1; i < r.length; i++) a = a.concat(t({ key: `${n}[${i}]`, value: r[i], style: e.style, styleSpec: e.styleSpec })); break; case"has": case"!has": o = De(r[1]), 2 !== r.length ? a.push(new xr(n, r, `filter array for "${r[0]}" operator must have 2 elements`)) : "string" !== o && a.push(new xr(n + "[1]", r[1], `string expected, ${o} found`)); break; case"within": o = De(r[1]), 2 !== r.length ? a.push(new xr(n, r, `filter array for "${r[0]}" operator must have 2 elements`)) : "object" !== o && a.push(new xr(n + "[1]", r[1], `object expected, ${o} found`)) } return a }(t) } function Fr(t, e) { const r = t.key, n = t.style, i = t.styleSpec, o = t.value, a = t.objectKey, s = i[`${e}_${t.layerType}`]; if (!s) return []; const l = a.match(/^(.*)-transition$/); if ("paint" === e && l && s[l[1]] && s[l[1]].transition) return Vr({ key: r, value: o, valueSpec: i.transition, style: n, styleSpec: i }); const u = t.valueSpec || s[a]; if (!u) return [new xr(r, o, `unknown property "${a}"`)]; let c; if ("string" === De(o) && ke(u) && !u.tokens && (c = /^{([^}]+)}$/.exec(o))) return [new xr(r, o, `"${a}" does not support interpolation syntax\nUse an identity property function instead: \`{ "type": "identity", "property": ${JSON.stringify(c[1])} }\`.`)]; const h = []; return "symbol" === t.layerType && ("text-field" === a && n && !n.glyphs && h.push(new xr(r, o, 'use of "text-field" requires a style "glyphs" property')), "text-font" === a && Ge(Tr(o)) && "identity" === Er(o.type) && h.push(new xr(r, o, '"text-font" does not support identity functions'))), h.concat(Vr({ key: t.key, value: o, valueSpec: u, style: n, styleSpec: i, expressionContext: "property", propertyType: e, propertyKey: a })) } function Ar(t) { return Fr(t, "paint") } function kr(t) { return Fr(t, "layout") } function jr(t) { let e = []; const r = t.value, n = t.key, i = t.style, o = t.styleSpec; r.type || r.ref || e.push(new xr(n, r, 'either "type" or "ref" is required')); let a = Er(r.type); const s = Er(r.ref); if (r.id) { const o = Er(r.id); for (let a = 0; a < t.arrayIndex; a++) { const t = i.layers[a]; Er(t.id) === o && e.push(new xr(n, r.id, `duplicate layer id "${r.id}", previously used at line ${t.id.__line__}`)) } } if ("ref" in r) { let t; ["type", "source", "source-layer", "filter", "layout"].forEach(t => { t in r && e.push(new xr(n, r[t], `"${t}" is prohibited for ref layers`)) }), i.layers.forEach(e => { Er(e.id) === s && (t = e) }), t ? t.ref ? e.push(new xr(n, r.ref, "ref cannot reference another ref layer")) : a = Er(t.type) : e.push(new xr(n, r.ref, `ref layer "${s}" not found`)) } else if ("background" !== a && "sky" !== a) if (r.source) { const t = i.sources && i.sources[r.source], o = t && Er(t.type); t ? "vector" === o && "raster" === a ? e.push(new xr(n, r.source, `layer "${r.id}" requires a raster source`)) : "raster" === o && "raster" !== a ? e.push(new xr(n, r.source, `layer "${r.id}" requires a vector source`)) : "vector" !== o || r["source-layer"] ? "raster-dem" === o && "hillshade" !== a ? e.push(new xr(n, r.source, "raster-dem source can only be used with layer type 'hillshade'.")) : "line" !== a || !r.paint || !r.paint["line-gradient"] || "geojson" === o && t.lineMetrics || e.push(new xr(n, r, `layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)) : e.push(new xr(n, r, `layer "${r.id}" must specify a "source-layer"`)) : e.push(new xr(n, r.source, `source "${r.source}" not found`)) } else e.push(new xr(n, r, 'missing required property "source"')); return e = e.concat(Cr({ key: n, value: r, valueSpec: o.layer, style: t.style, styleSpec: t.styleSpec, objectElementValidators: { "*": () => [], type: () => Vr({ key: n + ".type", value: r.type, valueSpec: o.layer.type, style: t.style, styleSpec: t.styleSpec, object: r, objectKey: "type" }), filter: Mr, layout: t => Cr({ layer: r, key: t.key, value: t.value, style: t.style, styleSpec: t.styleSpec, objectElementValidators: {"*": t => kr(M({layerType: a}, t))} }), paint: t => Cr({ layer: r, key: t.key, value: t.value, style: t.style, styleSpec: t.styleSpec, objectElementValidators: {"*": t => Ar(M({layerType: a}, t))} }) } })), e } function Nr(t) { const e = t.value, r = t.key, n = De(e); return "string" !== n ? [new xr(r, e, `string expected, ${n} found`)] : [] } const Dr = { promoteId: function ({key: t, value: e}) { if ("string" === De(e)) return Nr({key: t, value: e}); { const r = []; for (const n in e) r.push(...Nr({key: `${t}.${n}`, value: e[n]})); return r } } }; function Gr(t) { const e = t.value, r = t.key, n = t.styleSpec, i = t.style; if (!e.type) return [new xr(r, e, '"type" is required')]; const o = Er(e.type); let a; switch (o) { case"vector": case"raster": case"raster-dem": return a = Cr({ key: r, value: e, valueSpec: n["source_" + o.replace("-", "_")], style: t.style, styleSpec: n, objectElementValidators: Dr }), a; case"geojson": if (a = Cr({ key: r, value: e, valueSpec: n.source_geojson, style: i, styleSpec: n, objectElementValidators: Dr }), e.cluster) for (const t in e.clusterProperties) { const [n, i] = e.clusterProperties[t], o = "string" == typeof n ? [n, ["accumulated"], ["get", t]] : n; a.push(...Ir({ key: `${r}.${t}.map`, value: i, expressionContext: "cluster-map" })), a.push(...Ir({key: `${r}.${t}.reduce`, value: o, expressionContext: "cluster-reduce"})) } return a; case"video": return Cr({key: r, value: e, valueSpec: n.source_video, style: i, styleSpec: n}); case"image": return Cr({key: r, value: e, valueSpec: n.source_image, style: i, styleSpec: n}); case"canvas": return [new xr(r, null, "Please use runtime APIs to add canvas sources, rather than including them in stylesheets.", "source.canvas")]; default: return Lr({ key: r + ".type", value: e.type, valueSpec: {values: ["vector", "raster", "raster-dem", "geojson", "video", "image"]}, style: i, styleSpec: n }) } } function zr(t) { const e = t.value, r = t.styleSpec, n = r.light, i = t.style; let o = []; const a = De(e); if (void 0 === e) return o; if ("object" !== a) return o = o.concat([new xr("light", e, `object expected, ${a} found`)]), o; for (const t in e) { const a = t.match(/^(.*)-transition$/); o = a && n[a[1]] && n[a[1]].transition ? o.concat(Vr({ key: t, value: e[t], valueSpec: r.transition, style: i, styleSpec: r })) : n[t] ? o.concat(Vr({ key: t, value: e[t], valueSpec: n[t], style: i, styleSpec: r })) : o.concat([new xr(t, e[t], `unknown property "${t}"`)]) } return o } function Ur(t) { const e = t.value, r = t.key, n = t.style, i = t.styleSpec, o = i.terrain; let a = []; const s = De(e); if (void 0 === e) return a; if ("object" !== s) return a = a.concat([new xr("terrain", e, `object expected, ${s} found`)]), a; for (const t in e) { const r = t.match(/^(.*)-transition$/); a = r && o[r[1]] && o[r[1]].transition ? a.concat(Vr({ key: t, value: e[t], valueSpec: i.transition, style: n, styleSpec: i })) : o[t] ? a.concat(Vr({ key: t, value: e[t], valueSpec: o[t], style: n, styleSpec: i })) : a.concat([new xr(t, e[t], `unknown property "${t}"`)]) } if (e.source) { const t = n.sources && n.sources[e.source], i = t && Er(t.type); t ? "raster-dem" !== i && a.push(new xr(r, e.source, `terrain cannot be used with a source of type ${i}, it only be used with a "raster-dem" source type`)) : a.push(new xr(r, e.source, `source "${e.source}" not found`)) } else a.push(new xr(r, e, 'terrain is missing required property "source"')); return a } const Br = { "*": () => [], array: Or, boolean: function (t) { const e = t.value, r = t.key, n = De(e); return "boolean" !== n ? [new xr(r, e, `boolean expected, ${n} found`)] : [] }, number: Pr, color: function (t) { const e = t.key, r = t.value, n = De(r); return "string" !== n ? [new xr(e, r, `color expected, ${n} found`)] : null === $(r) ? [new xr(e, r, `color expected, "${r}" found`)] : [] }, constants: Sr, enum: Lr, filter: Mr, function: Rr, layer: jr, object: Cr, source: Gr, light: zr, terrain: Ur, string: Nr, formatted: function (t) { return 0 === Nr(t).length ? [] : Ir(t) }, resolvedImage: function (t) { return 0 === Nr(t).length ? [] : Ir(t) } }; function Vr(t) { const e = t.value, r = t.valueSpec, n = t.styleSpec; if (r.expression && Ge(Er(e))) return Rr(t); if (r.expression && Ze(Tr(e))) return Ir(t); if (r.type && Br[r.type]) return Br[r.type](t); return Cr(M({}, t, {valueSpec: r.type ? n[r.type] : r})) } function Yr(t) { const e = t.value, r = t.key, n = Nr(t); return n.length || (-1 === e.indexOf("{fontstack}") && n.push(new xr(r, e, '"glyphs" url must include a "{fontstack}" token')), -1 === e.indexOf("{range}") && n.push(new xr(r, e, '"glyphs" url must include a "{range}" token'))), n } function Wr(t, e = i) { let r = []; return r = r.concat(Vr({ key: "", value: t, valueSpec: e.$root, styleSpec: e, style: t, objectElementValidators: {glyphs: Yr, "*": () => []} })), t.constants && (r = r.concat(Sr({key: "constants", value: t.constants, style: t, styleSpec: e}))), qr(r) } function qr(t) { return [].concat(t).sort((t, e) => t.line - e.line) } function Xr(t) { return function (...e) { return qr(t.apply(this, e)) } } Wr.source = Xr(Gr), Wr.light = Xr(zr), Wr.terrain = Xr(Ur), Wr.layer = Xr(jr), Wr.filter = Xr(Mr), Wr.paintProperty = Xr(Ar), Wr.layoutProperty = Xr(kr); var Zr = s((function (t, e) { var r = function () { var t = function (t, e, r, n) { for (r = r || {}, n = t.length; n--; r[t[n]] = e) ; return r }, e = [1, 12], r = [1, 13], n = [1, 9], i = [1, 10], o = [1, 11], a = [1, 14], s = [1, 15], l = [14, 18, 22, 24], u = [18, 22], c = [22, 24], h = { trace: function () { }, yy: {}, symbols_: { error: 2, JSONString: 3, STRING: 4, JSONNumber: 5, NUMBER: 6, JSONNullLiteral: 7, NULL: 8, JSONBooleanLiteral: 9, TRUE: 10, FALSE: 11, JSONText: 12, JSONValue: 13, EOF: 14, JSONObject: 15, JSONArray: 16, "{": 17, "}": 18, JSONMemberList: 19, JSONMember: 20, ":": 21, ",": 22, "[": 23, "]": 24, JSONElementList: 25, $accept: 0, $end: 1 }, terminals_: { 2: "error", 4: "STRING", 6: "NUMBER", 8: "NULL", 10: "TRUE", 11: "FALSE", 14: "EOF", 17: "{", 18: "}", 21: ":", 22: ",", 23: "[", 24: "]" }, productions_: [0, [3, 1], [5, 1], [7, 1], [9, 1], [9, 1], [12, 2], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [13, 1], [15, 2], [15, 3], [20, 3], [19, 1], [19, 3], [16, 2], [16, 3], [25, 1], [25, 3]], performAction: function (t, e, r, n, i, o, a) { var s = o.length - 1; switch (i) { case 1: this.$ = new String(t.replace(/\\(\\|")/g, "$1").replace(/\\n/g, "\n").replace(/\\r/g, "\r").replace(/\\t/g, "\t").replace(/\\v/g, "\v").replace(/\\f/g, "\f").replace(/\\b/g, "\b")), this.$.__line__ = this._$.first_line; break; case 2: this.$ = new Number(t), this.$.__line__ = this._$.first_line; break; case 3: this.$ = null; break; case 4: this.$ = new Boolean(!0), this.$.__line__ = this._$.first_line; break; case 5: this.$ = new Boolean(!1), this.$.__line__ = this._$.first_line; break; case 6: return this.$ = o[s - 1]; case 13: this.$ = {}, Object.defineProperty(this.$, "__line__", {value: this._$.first_line, enumerable: !1}); break; case 14: case 19: this.$ = o[s - 1], Object.defineProperty(this.$, "__line__", { value: this._$.first_line, enumerable: !1 }); break; case 15: this.$ = [o[s - 2], o[s]]; break; case 16: this.$ = {}, this.$[o[s][0]] = o[s][1]; break; case 17: this.$ = o[s - 2], o[s - 2][o[s][0]] = o[s][1]; break; case 18: this.$ = [], Object.defineProperty(this.$, "__line__", {value: this._$.first_line, enumerable: !1}); break; case 20: this.$ = [o[s]]; break; case 21: this.$ = o[s - 2], o[s - 2].push(o[s]) } }, table: [{ 3: 5, 4: e, 5: 6, 6: r, 7: 3, 8: n, 9: 4, 10: i, 11: o, 12: 1, 13: 2, 15: 7, 16: 8, 17: a, 23: s }, {1: [3]}, {14: [1, 16]}, t(l, [2, 7]), t(l, [2, 8]), t(l, [2, 9]), t(l, [2, 10]), t(l, [2, 11]), t(l, [2, 12]), t(l, [2, 3]), t(l, [2, 4]), t(l, [2, 5]), t([14, 18, 21, 22, 24], [2, 1]), t(l, [2, 2]), { 3: 20, 4: e, 18: [1, 17], 19: 18, 20: 19 }, { 3: 5, 4: e, 5: 6, 6: r, 7: 3, 8: n, 9: 4, 10: i, 11: o, 13: 23, 15: 7, 16: 8, 17: a, 23: s, 24: [1, 21], 25: 22 }, {1: [2, 6]}, t(l, [2, 13]), { 18: [1, 24], 22: [1, 25] }, t(u, [2, 16]), {21: [1, 26]}, t(l, [2, 18]), { 22: [1, 28], 24: [1, 27] }, t(c, [2, 20]), t(l, [2, 14]), {3: 20, 4: e, 20: 29}, { 3: 5, 4: e, 5: 6, 6: r, 7: 3, 8: n, 9: 4, 10: i, 11: o, 13: 30, 15: 7, 16: 8, 17: a, 23: s }, t(l, [2, 19]), { 3: 5, 4: e, 5: 6, 6: r, 7: 3, 8: n, 9: 4, 10: i, 11: o, 13: 31, 15: 7, 16: 8, 17: a, 23: s }, t(u, [2, 17]), t(u, [2, 15]), t(c, [2, 21])], defaultActions: {16: [2, 6]}, parseError: function (t, e) { if (!e.recoverable) throw new Error(t); this.trace(t) }, parse: function (t) { var e = this, r = [0], n = [null], i = [], o = this.table, a = "", s = 0, l = 0, u = 2, c = 1, h = i.slice.call(arguments, 1), p = Object.create(this.lexer), f = {yy: {}}; for (var d in this.yy) Object.prototype.hasOwnProperty.call(this.yy, d) && (f.yy[d] = this.yy[d]); p.setInput(t, f.yy), f.yy.lexer = p, f.yy.parser = this, void 0 === p.yylloc && (p.yylloc = {}); var g = p.yylloc; i.push(g); var y = p.options && p.options.ranges; function m() { var t; return "number" != typeof (t = p.lex() || c) && (t = e.symbols_[t] || t), t } "function" == typeof f.yy.parseError ? this.parseError = f.yy.parseError : this.parseError = Object.getPrototypeOf(this).parseError; for (var v, _, b, x, w, S, E, T, C = {}; ;) { if (_ = r[r.length - 1], this.defaultActions[_] ? b = this.defaultActions[_] : (null == v && (v = m()), b = o[_] && o[_][v]), void 0 === b || !b.length || !b[0]) { var O = ""; for (w in T = [], o[_]) this.terminals_[w] && w > u && T.push("'" + this.terminals_[w] + "'"); O = p.showPosition ? "Parse error on line " + (s + 1) + ":\n" + p.showPosition() + "\nExpecting " + T.join(", ") + ", got '" + (this.terminals_[v] || v) + "'" : "Parse error on line " + (s + 1) + ": Unexpected " + (v == c ? "end of input" : "'" + (this.terminals_[v] || v) + "'"), this.parseError(O, { text: p.match, token: this.terminals_[v] || v, line: p.yylineno, loc: g, expected: T }) } if (b[0] instanceof Array && b.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + _ + ", token: " + v); switch (b[0]) { case 1: r.push(v), n.push(p.yytext), i.push(p.yylloc), r.push(b[1]), v = null, l = p.yyleng, a = p.yytext, s = p.yylineno, g = p.yylloc; break; case 2: if (S = this.productions_[b[1]][1], C.$ = n[n.length - S], C._$ = { first_line: i[i.length - (S || 1)].first_line, last_line: i[i.length - 1].last_line, first_column: i[i.length - (S || 1)].first_column, last_column: i[i.length - 1].last_column }, y && (C._$.range = [i[i.length - (S || 1)].range[0], i[i.length - 1].range[1]]), void 0 !== (x = this.performAction.apply(C, [a, l, s, f.yy, b[1], n, i].concat(h)))) return x; S && (r = r.slice(0, -1 * S * 2), n = n.slice(0, -1 * S), i = i.slice(0, -1 * S)), r.push(this.productions_[b[1]][0]), n.push(C.$), i.push(C._$), E = o[r[r.length - 2]][r[r.length - 1]], r.push(E); break; case 3: return !0 } } return !0 } }, p = { EOF: 1, parseError: function (t, e) { if (!this.yy.parser) throw new Error(t); this.yy.parser.parseError(t, e) }, setInput: function (t, e) { return this.yy = e || this.yy || {}, this._input = t, this._more = this._backtrack = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this }, input: function () { var t = this._input[0]; return this.yytext += t, this.yyleng++, this.offset++, this.match += t, this.matched += t, t.match(/(?:\r\n?|\n).*/g) ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), t }, unput: function (t) { var e = t.length, r = t.split(/(?:\r\n?|\n)/g); this._input = t + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - e), this.offset -= e; var n = this.match.split(/(?:\r\n?|\n)/g); this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), r.length - 1 && (this.yylineno -= r.length - 1); var i = this.yylloc.range; return this.yylloc = { first_line: this.yylloc.first_line, last_line: this.yylineno + 1, first_column: this.yylloc.first_column, last_column: r ? (r.length === n.length ? this.yylloc.first_column : 0) + n[n.length - r.length].length - r[0].length : this.yylloc.first_column - e }, this.options.ranges && (this.yylloc.range = [i[0], i[0] + this.yyleng - e]), this.yyleng = this.yytext.length, this }, more: function () { return this._more = !0, this }, reject: function () { return this.options.backtrack_lexer ? (this._backtrack = !0, this) : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { text: "", token: null, line: this.yylineno }) }, less: function (t) { this.unput(this.match.slice(t)) }, pastInput: function () { var t = this.matched.substr(0, this.matched.length - this.match.length); return (t.length > 20 ? "..." : "") + t.substr(-20).replace(/\n/g, "") }, upcomingInput: function () { var t = this.match; return t.length < 20 && (t += this._input.substr(0, 20 - t.length)), (t.substr(0, 20) + (t.length > 20 ? "..." : "")).replace(/\n/g, "") }, showPosition: function () { var t = this.pastInput(), e = new Array(t.length + 1).join("-"); return t + this.upcomingInput() + "\n" + e + "^" }, test_match: function (t, e) { var r, n, i; if (this.options.backtrack_lexer && (i = { yylineno: this.yylineno, yylloc: { first_line: this.yylloc.first_line, last_line: this.last_line, first_column: this.yylloc.first_column, last_column: this.yylloc.last_column }, yytext: this.yytext, match: this.match, matches: this.matches, matched: this.matched, yyleng: this.yyleng, offset: this.offset, _more: this._more, _input: this._input, yy: this.yy, conditionStack: this.conditionStack.slice(0), done: this.done }, this.options.ranges && (i.yylloc.range = this.yylloc.range.slice(0))), (n = t[0].match(/(?:\r\n?|\n).*/g)) && (this.yylineno += n.length), this.yylloc = { first_line: this.yylloc.last_line, last_line: this.yylineno + 1, first_column: this.yylloc.last_column, last_column: n ? n[n.length - 1].length - n[n.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + t[0].length }, this.yytext += t[0], this.match += t[0], this.matches = t, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._backtrack = !1, this._input = this._input.slice(t[0].length), this.matched += t[0], r = this.performAction.call(this, this.yy, this, e, this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), r) return r; if (this._backtrack) { for (var o in i) this[o] = i[o]; return !1 } return !1 }, next: function () { if (this.done) return this.EOF; var t, e, r, n; this._input || (this.done = !0), this._more || (this.yytext = "", this.match = ""); for (var i = this._currentRules(), o = 0; o < i.length; o++) if ((r = this._input.match(this.rules[i[o]])) && (!e || r[0].length > e[0].length)) { if (e = r, n = o, this.options.backtrack_lexer) { if (!1 !== (t = this.test_match(r, i[o]))) return t; if (this._backtrack) { e = !1; continue } return !1 } if (!this.options.flex) break } return e ? !1 !== (t = this.test_match(e, i[n])) && t : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { text: "", token: null, line: this.yylineno }) }, lex: function () { var t = this.next(); return t || this.lex() }, begin: function (t) { this.conditionStack.push(t) }, popState: function () { return this.conditionStack.length - 1 > 0 ? this.conditionStack.pop() : this.conditionStack[0] }, _currentRules: function () { return this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1] ? this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules : this.conditions.INITIAL.rules }, topState: function (t) { return (t = this.conditionStack.length - 1 - Math.abs(t || 0)) >= 0 ? this.conditionStack[t] : "INITIAL" }, pushState: function (t) { this.begin(t) }, stateStackSize: function () { return this.conditionStack.length }, options: {}, performAction: function (t, e, r, n) { switch (r) { case 0: break; case 1: return 6; case 2: return e.yytext = e.yytext.substr(1, e.yyleng - 2), 4; case 3: return 17; case 4: return 18; case 5: return 23; case 6: return 24; case 7: return 22; case 8: return 21; case 9: return 10; case 10: return 11; case 11: return 8; case 12: return 14; case 13: return "INVALID" } }, rules: [/^(?:\s+)/, /^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/, /^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/, /^(?:\{)/, /^(?:\})/, /^(?:\[)/, /^(?:\])/, /^(?:,)/, /^(?::)/, /^(?:true\b)/, /^(?:false\b)/, /^(?:null\b)/, /^(?:$)/, /^(?:.)/], conditions: {INITIAL: {rules: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], inclusive: !0}} }; function f() { this.yy = {} } return h.lexer = p, f.prototype = h, h.Parser = f, new f }(); void 0 !== a && (e.parser = r, e.Parser = r.Parser, e.parse = function () { return r.parse.apply(r, arguments) }) })); Zr.parser, Zr.Parser, Zr.parse; function Kr(t) { if (t instanceof String || "string" == typeof t || t instanceof n) try { return Zr.parse(t.toString()) } catch (t) { throw new wr(t) } return t } function Hr(t, e = i) { let r = t; try { r = Kr(r) } catch (t) { return [t] } return Wr(r, e) } const $r = { StyleExpression: Xe, isExpression: Ze, isExpressionFilter: ur, createExpression: Ke, createPropertyExpression: Je, normalizePropertyExpression: function (t, e) { if (Ge(t)) return new Qe(t, e); if (Ze(t)) { const r = Je(t, e); if ("error" === r.result) throw new Error(r.value.map(t => `${t.key}: ${t.message}`).join(", ")); return r.value } { let r = t; return "string" == typeof t && "color" === e.type && (r = J.parse(t)), {kind: "constant", evaluate: () => r} } }, ZoomConstantExpression: He, ZoomDependentExpression: $e, StylePropertyFunction: Qe }, Jr = {convertFunction: er, createFunction: Ue, isFunction: Ge}; Hr.parsed = Hr, Hr.latest = Hr }).call(this, r(4), r(7).Buffer) }, function (t, e, r) { t.exports = function () { "use strict"; function t(t, n, i, o, a) { !function t(r, n, i, o, a) { for (; o > i;) { if (o - i > 600) { var s = o - i + 1, l = n - i + 1, u = Math.log(s), c = .5 * Math.exp(2 * u / 3), h = .5 * Math.sqrt(u * c * (s - c) / s) * (l - s / 2 < 0 ? -1 : 1); t(r, n, Math.max(i, Math.floor(n - l * c / s + h)), Math.min(o, Math.floor(n + (s - l) * c / s + h)), a) } var p = r[n], f = i, d = o; for (e(r, i, n), a(r[o], p) > 0 && e(r, i, o); f < d;) { for (e(r, f, d), f++, d--; a(r[f], p) < 0;) f++; for (; a(r[d], p) > 0;) d-- } 0 === a(r[i], p) ? e(r, i, d) : e(r, ++d, o), d <= n && (i = d + 1), n <= d && (o = d - 1) } }(t, n, i || 0, o || t.length - 1, a || r) } function e(t, e, r) { var n = t[e]; t[e] = t[r], t[r] = n } function r(t, e) { return t < e ? -1 : t > e ? 1 : 0 } var n = function (t) { void 0 === t && (t = 9), this._maxEntries = Math.max(4, t), this._minEntries = Math.max(2, Math.ceil(.4 * this._maxEntries)), this.clear() }; function i(t, e, r) { if (!r) return e.indexOf(t); for (var n = 0; n < e.length; n++) if (r(t, e[n])) return n; return -1 } function o(t, e) { a(t, 0, t.children.length, e, t) } function a(t, e, r, n, i) { i || (i = d(null)), i.minX = 1 / 0, i.minY = 1 / 0, i.maxX = -1 / 0, i.maxY = -1 / 0; for (var o = e; o < r; o++) { var a = t.children[o]; s(i, t.leaf ? n(a) : a) } return i } function s(t, e) { return t.minX = Math.min(t.minX, e.minX), t.minY = Math.min(t.minY, e.minY), t.maxX = Math.max(t.maxX, e.maxX), t.maxY = Math.max(t.maxY, e.maxY), t } function l(t, e) { return t.minX - e.minX } function u(t, e) { return t.minY - e.minY } function c(t) { return (t.maxX - t.minX) * (t.maxY - t.minY) } function h(t) { return t.maxX - t.minX + (t.maxY - t.minY) } function p(t, e) { return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY } function f(t, e) { return e.minX <= t.maxX && e.minY <= t.maxY && e.maxX >= t.minX && e.maxY >= t.minY } function d(t) { return {children: t, height: 1, leaf: !0, minX: 1 / 0, minY: 1 / 0, maxX: -1 / 0, maxY: -1 / 0} } function g(e, r, n, i, o) { for (var a = [r, n]; a.length;) if (!((n = a.pop()) - (r = a.pop()) <= i)) { var s = r + Math.ceil((n - r) / i / 2) * i; t(e, s, r, n, o), a.push(r, s, s, n) } } return n.prototype.all = function () { return this._all(this.data, []) }, n.prototype.search = function (t) { var e = this.data, r = []; if (!f(t, e)) return r; for (var n = this.toBBox, i = []; e;) { for (var o = 0; o < e.children.length; o++) { var a = e.children[o], s = e.leaf ? n(a) : a; f(t, s) && (e.leaf ? r.push(a) : p(t, s) ? this._all(a, r) : i.push(a)) } e = i.pop() } return r }, n.prototype.collides = function (t) { var e = this.data; if (!f(t, e)) return !1; for (var r = []; e;) { for (var n = 0; n < e.children.length; n++) { var i = e.children[n], o = e.leaf ? this.toBBox(i) : i; if (f(t, o)) { if (e.leaf || p(t, o)) return !0; r.push(i) } } e = r.pop() } return !1 }, n.prototype.load = function (t) { if (!t || !t.length) return this; if (t.length < this._minEntries) { for (var e = 0; e < t.length; e++) this.insert(t[e]); return this } var r = this._build(t.slice(), 0, t.length - 1, 0); if (this.data.children.length) if (this.data.height === r.height) this._splitRoot(this.data, r); else { if (this.data.height < r.height) { var n = this.data; this.data = r, r = n } this._insert(r, this.data.height - r.height - 1, !0) } else this.data = r; return this }, n.prototype.insert = function (t) { return t && this._insert(t, this.data.height - 1), this }, n.prototype.clear = function () { return this.data = d([]), this }, n.prototype.remove = function (t, e) { if (!t) return this; for (var r, n, o, a = this.data, s = this.toBBox(t), l = [], u = []; a || l.length;) { if (a || (a = l.pop(), n = l[l.length - 1], r = u.pop(), o = !0), a.leaf) { var c = i(t, a.children, e); if (-1 !== c) return a.children.splice(c, 1), l.push(a), this._condense(l), this } o || a.leaf || !p(a, s) ? n ? (r++, a = n.children[r], o = !1) : a = null : (l.push(a), u.push(r), r = 0, n = a, a = a.children[0]) } return this }, n.prototype.toBBox = function (t) { return t }, n.prototype.compareMinX = function (t, e) { return t.minX - e.minX }, n.prototype.compareMinY = function (t, e) { return t.minY - e.minY }, n.prototype.toJSON = function () { return this.data }, n.prototype.fromJSON = function (t) { return this.data = t, this }, n.prototype._all = function (t, e) { for (var r = []; t;) t.leaf ? e.push.apply(e, t.children) : r.push.apply(r, t.children), t = r.pop(); return e }, n.prototype._build = function (t, e, r, n) { var i, a = r - e + 1, s = this._maxEntries; if (a <= s) return o(i = d(t.slice(e, r + 1)), this.toBBox), i; n || (n = Math.ceil(Math.log(a) / Math.log(s)), s = Math.ceil(a / Math.pow(s, n - 1))), (i = d([])).leaf = !1, i.height = n; var l = Math.ceil(a / s), u = l * Math.ceil(Math.sqrt(s)); g(t, e, r, u, this.compareMinX); for (var c = e; c <= r; c += u) { var h = Math.min(c + u - 1, r); g(t, c, h, l, this.compareMinY); for (var p = c; p <= h; p += l) { var f = Math.min(p + l - 1, h); i.children.push(this._build(t, p, f, n - 1)) } } return o(i, this.toBBox), i }, n.prototype._chooseSubtree = function (t, e, r, n) { for (; n.push(e), !e.leaf && n.length - 1 !== r;) { for (var i = 1 / 0, o = 1 / 0, a = void 0, s = 0; s < e.children.length; s++) { var l = e.children[s], u = c(l), h = (p = t, f = l, (Math.max(f.maxX, p.maxX) - Math.min(f.minX, p.minX)) * (Math.max(f.maxY, p.maxY) - Math.min(f.minY, p.minY)) - u); h < o ? (o = h, i = u < i ? u : i, a = l) : h === o && u < i && (i = u, a = l) } e = a || e.children[0] } var p, f; return e }, n.prototype._insert = function (t, e, r) { var n = r ? t : this.toBBox(t), i = [], o = this._chooseSubtree(n, this.data, e, i); for (o.children.push(t), s(o, n); e >= 0 && i[e].children.length > this._maxEntries;) this._split(i, e), e--; this._adjustParentBBoxes(n, i, e) }, n.prototype._split = function (t, e) { var r = t[e], n = r.children.length, i = this._minEntries; this._chooseSplitAxis(r, i, n); var a = this._chooseSplitIndex(r, i, n), s = d(r.children.splice(a, r.children.length - a)); s.height = r.height, s.leaf = r.leaf, o(r, this.toBBox), o(s, this.toBBox), e ? t[e - 1].children.push(s) : this._splitRoot(r, s) }, n.prototype._splitRoot = function (t, e) { this.data = d([t, e]), this.data.height = t.height + 1, this.data.leaf = !1, o(this.data, this.toBBox) }, n.prototype._chooseSplitIndex = function (t, e, r) { for (var n, i, o, s, l, u, h, p = 1 / 0, f = 1 / 0, d = e; d <= r - e; d++) { var g = a(t, 0, d, this.toBBox), y = a(t, d, r, this.toBBox), m = (i = g, o = y, s = Math.max(i.minX, o.minX), l = Math.max(i.minY, o.minY), u = Math.min(i.maxX, o.maxX), h = Math.min(i.maxY, o.maxY), Math.max(0, u - s) * Math.max(0, h - l)), v = c(g) + c(y); m < p ? (p = m, n = d, f = v < f ? v : f) : m === p && v < f && (f = v, n = d) } return n || r - e }, n.prototype._chooseSplitAxis = function (t, e, r) { var n = t.leaf ? this.compareMinX : l, i = t.leaf ? this.compareMinY : u; this._allDistMargin(t, e, r, n) < this._allDistMargin(t, e, r, i) && t.children.sort(n) }, n.prototype._allDistMargin = function (t, e, r, n) { t.children.sort(n); for (var i = this.toBBox, o = a(t, 0, e, i), l = a(t, r - e, r, i), u = h(o) + h(l), c = e; c < r - e; c++) { var p = t.children[c]; s(o, t.leaf ? i(p) : p), u += h(o) } for (var f = r - e - 1; f >= e; f--) { var d = t.children[f]; s(l, t.leaf ? i(d) : d), u += h(l) } return u }, n.prototype._adjustParentBBoxes = function (t, e, r) { for (var n = r; n >= 0; n--) s(e[n], t) }, n.prototype._condense = function (t) { for (var e = t.length - 1, r = void 0; e >= 0; e--) 0 === t[e].children.length ? e > 0 ? (r = t[e - 1].children).splice(r.indexOf(t[e]), 1) : this.clear() : o(t[e], this.toBBox) }, n }() }, function (t, e) { var r = { thin: 100, hairline: 100, "ultra-light": 100, "extra-light": 100, light: 200, book: 300, regular: 400, normal: 400, plain: 400, roman: 400, standard: 400, medium: 500, "semi-bold": 600, "demi-bold": 600, bold: 700, heavy: 800, black: 800, "extra-bold": 800, "ultra-black": 900, "extra-black": 900, "ultra-bold": 900, "heavy-black": 900, fat: 900, poster: 900 }, n = /(italic|oblique)$/i, i = {}; t.exports = function (t, e, o) { var a = i[t]; if (!a) { Array.isArray(t) || (t = [t]); for (var s = 400, l = "normal", u = [], c = 0, h = t.length; c < h; ++c) { var p = t[c].split(" "), f = p[p.length - 1].toLowerCase(); for (var d in "normal" == f || "italic" == f || "oblique" == f ? (l = f, p.pop(), f = p[p.length - 1].toLowerCase()) : n.test(f) && (f = f.replace(n, ""), l = p[p.length - 1].replace(f, "")), r) if (f == d || f == d.replace("-", "") || f == d.replace("-", " ")) { s = r[d], p.pop(); break } "number" == typeof f && (s = f); var g = p.join(" ").replace("Klokantech Noto Sans", "Noto Sans"); -1 !== g.indexOf(" ") && (g = '"' + g + '"'), u.push(g) } a = i[t] = [l, s, u] } return a[0] + " " + a[1] + " " + e + "px" + (o ? "/" + o : "") + " " + a[2] } }, function (t, e) { e.read = function (t, e, r, n, i) { var o, a, s = 8 * i - n - 1, l = (1 << s) - 1, u = l >> 1, c = -7, h = r ? i - 1 : 0, p = r ? -1 : 1, f = t[e + h]; for (h += p, o = f & (1 << -c) - 1, f >>= -c, c += s; c > 0; o = 256 * o + t[e + h], h += p, c -= 8) ; for (a = o & (1 << -c) - 1, o >>= -c, c += n; c > 0; a = 256 * a + t[e + h], h += p, c -= 8) ; if (0 === o) o = 1 - u; else { if (o === l) return a ? NaN : 1 / 0 * (f ? -1 : 1); a += Math.pow(2, n), o -= u } return (f ? -1 : 1) * a * Math.pow(2, o - n) }, e.write = function (t, e, r, n, i, o) { var a, s, l, u = 8 * o - i - 1, c = (1 << u) - 1, h = c >> 1, p = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, f = n ? 0 : o - 1, d = n ? 1 : -1, g = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0; for (e = Math.abs(e), isNaN(e) || e === 1 / 0 ? (s = isNaN(e) ? 1 : 0, a = c) : (a = Math.floor(Math.log(e) / Math.LN2), e * (l = Math.pow(2, -a)) < 1 && (a--, l *= 2), (e += a + h >= 1 ? p / l : p * Math.pow(2, 1 - h)) * l >= 2 && (a++, l /= 2), a + h >= c ? (s = 0, a = c) : a + h >= 1 ? (s = (e * l - 1) * Math.pow(2, i), a += h) : (s = e * Math.pow(2, h - 1) * Math.pow(2, i), a = 0)); i >= 8; t[r + f] = 255 & s, f += d, s /= 256, i -= 8) ; for (a = a << i | s, u += i; u > 0; t[r + f] = 255 & a, f += d, a /= 256, u -= 8) ; t[r + f - d] |= 128 * g } }, function (t, e) { var r; r = function () { return this }(); try { r = r || new Function("return this")() } catch (t) { "object" == typeof window && (r = window) } t.exports = r }, function (t, e, r) { "use strict"; t.exports = i; var n = r(3); function i(t) { this.buf = ArrayBuffer.isView && ArrayBuffer.isView(t) ? t : new Uint8Array(t || 0), this.pos = 0, this.type = 0, this.length = this.buf.length } i.Varint = 0, i.Fixed64 = 1, i.Bytes = 2, i.Fixed32 = 5; var o = "undefined" == typeof TextDecoder ? null : new TextDecoder("utf8"); function a(t) { return t.type === i.Bytes ? t.readVarint() + t.pos : t.pos + 1 } function s(t, e, r) { return r ? 4294967296 * e + (t >>> 0) : 4294967296 * (e >>> 0) + (t >>> 0) } function l(t, e, r) { var n = e <= 16383 ? 1 : e <= 2097151 ? 2 : e <= 268435455 ? 3 : Math.floor(Math.log(e) / (7 * Math.LN2)); r.realloc(n); for (var i = r.pos - 1; i >= t; i--) r.buf[i + n] = r.buf[i] } function u(t, e) { for (var r = 0; r < t.length; r++) e.writeVarint(t[r]) } function c(t, e) { for (var r = 0; r < t.length; r++) e.writeSVarint(t[r]) } function h(t, e) { for (var r = 0; r < t.length; r++) e.writeFloat(t[r]) } function p(t, e) { for (var r = 0; r < t.length; r++) e.writeDouble(t[r]) } function f(t, e) { for (var r = 0; r < t.length; r++) e.writeBoolean(t[r]) } function d(t, e) { for (var r = 0; r < t.length; r++) e.writeFixed32(t[r]) } function g(t, e) { for (var r = 0; r < t.length; r++) e.writeSFixed32(t[r]) } function y(t, e) { for (var r = 0; r < t.length; r++) e.writeFixed64(t[r]) } function m(t, e) { for (var r = 0; r < t.length; r++) e.writeSFixed64(t[r]) } function v(t, e) { return (t[e] | t[e + 1] << 8 | t[e + 2] << 16) + 16777216 * t[e + 3] } function _(t, e, r) { t[r] = e, t[r + 1] = e >>> 8, t[r + 2] = e >>> 16, t[r + 3] = e >>> 24 } function b(t, e) { return (t[e] | t[e + 1] << 8 | t[e + 2] << 16) + (t[e + 3] << 24) } i.prototype = { destroy: function () { this.buf = null }, readFields: function (t, e, r) { for (r = r || this.length; this.pos < r;) { var n = this.readVarint(), i = n >> 3, o = this.pos; this.type = 7 & n, t(i, e, this), this.pos === o && this.skip(n) } return e }, readMessage: function (t, e) { return this.readFields(t, e, this.readVarint() + this.pos) }, readFixed32: function () { var t = v(this.buf, this.pos); return this.pos += 4, t }, readSFixed32: function () { var t = b(this.buf, this.pos); return this.pos += 4, t }, readFixed64: function () { var t = v(this.buf, this.pos) + 4294967296 * v(this.buf, this.pos + 4); return this.pos += 8, t }, readSFixed64: function () { var t = v(this.buf, this.pos) + 4294967296 * b(this.buf, this.pos + 4); return this.pos += 8, t }, readFloat: function () { var t = n.read(this.buf, this.pos, !0, 23, 4); return this.pos += 4, t }, readDouble: function () { var t = n.read(this.buf, this.pos, !0, 52, 8); return this.pos += 8, t }, readVarint: function (t) { var e, r, n = this.buf; return e = 127 & (r = n[this.pos++]), r < 128 ? e : (e |= (127 & (r = n[this.pos++])) << 7, r < 128 ? e : (e |= (127 & (r = n[this.pos++])) << 14, r < 128 ? e : (e |= (127 & (r = n[this.pos++])) << 21, r < 128 ? e : function (t, e, r) { var n, i, o = r.buf; if (i = o[r.pos++], n = (112 & i) >> 4, i < 128) return s(t, n, e); if (i = o[r.pos++], n |= (127 & i) << 3, i < 128) return s(t, n, e); if (i = o[r.pos++], n |= (127 & i) << 10, i < 128) return s(t, n, e); if (i = o[r.pos++], n |= (127 & i) << 17, i < 128) return s(t, n, e); if (i = o[r.pos++], n |= (127 & i) << 24, i < 128) return s(t, n, e); if (i = o[r.pos++], n |= (1 & i) << 31, i < 128) return s(t, n, e); throw new Error("Expected varint not more than 10 bytes") }(e |= (15 & (r = n[this.pos])) << 28, t, this)))) }, readVarint64: function () { return this.readVarint(!0) }, readSVarint: function () { var t = this.readVarint(); return t % 2 == 1 ? (t + 1) / -2 : t / 2 }, readBoolean: function () { return Boolean(this.readVarint()) }, readString: function () { var t = this.readVarint() + this.pos, e = this.pos; return this.pos = t, t - e >= 12 && o ? function (t, e, r) { return o.decode(t.subarray(e, r)) }(this.buf, e, t) : function (t, e, r) { var n = "", i = e; for (; i < r;) { var o, a, s, l = t[i], u = null, c = l > 239 ? 4 : l > 223 ? 3 : l > 191 ? 2 : 1; if (i + c > r) break; 1 === c ? l < 128 && (u = l) : 2 === c ? 128 == (192 & (o = t[i + 1])) && (u = (31 & l) << 6 | 63 & o) <= 127 && (u = null) : 3 === c ? (o = t[i + 1], a = t[i + 2], 128 == (192 & o) && 128 == (192 & a) && ((u = (15 & l) << 12 | (63 & o) << 6 | 63 & a) <= 2047 || u >= 55296 && u <= 57343) && (u = null)) : 4 === c && (o = t[i + 1], a = t[i + 2], s = t[i + 3], 128 == (192 & o) && 128 == (192 & a) && 128 == (192 & s) && ((u = (15 & l) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s) <= 65535 || u >= 1114112) && (u = null)), null === u ? (u = 65533, c = 1) : u > 65535 && (u -= 65536, n += String.fromCharCode(u >>> 10 & 1023 | 55296), u = 56320 | 1023 & u), n += String.fromCharCode(u), i += c } return n }(this.buf, e, t) }, readBytes: function () { var t = this.readVarint() + this.pos, e = this.buf.subarray(this.pos, t); return this.pos = t, e }, readPackedVarint: function (t, e) { if (this.type !== i.Bytes) return t.push(this.readVarint(e)); var r = a(this); for (t = t || []; this.pos < r;) t.push(this.readVarint(e)); return t }, readPackedSVarint: function (t) { if (this.type !== i.Bytes) return t.push(this.readSVarint()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readSVarint()); return t }, readPackedBoolean: function (t) { if (this.type !== i.Bytes) return t.push(this.readBoolean()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readBoolean()); return t }, readPackedFloat: function (t) { if (this.type !== i.Bytes) return t.push(this.readFloat()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readFloat()); return t }, readPackedDouble: function (t) { if (this.type !== i.Bytes) return t.push(this.readDouble()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readDouble()); return t }, readPackedFixed32: function (t) { if (this.type !== i.Bytes) return t.push(this.readFixed32()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readFixed32()); return t }, readPackedSFixed32: function (t) { if (this.type !== i.Bytes) return t.push(this.readSFixed32()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readSFixed32()); return t }, readPackedFixed64: function (t) { if (this.type !== i.Bytes) return t.push(this.readFixed64()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readFixed64()); return t }, readPackedSFixed64: function (t) { if (this.type !== i.Bytes) return t.push(this.readSFixed64()); var e = a(this); for (t = t || []; this.pos < e;) t.push(this.readSFixed64()); return t }, skip: function (t) { var e = 7 & t; if (e === i.Varint) for (; this.buf[this.pos++] > 127;) ; else if (e === i.Bytes) this.pos = this.readVarint() + this.pos; else if (e === i.Fixed32) this.pos += 4; else { if (e !== i.Fixed64) throw new Error("Unimplemented type: " + e); this.pos += 8 } }, writeTag: function (t, e) { this.writeVarint(t << 3 | e) }, realloc: function (t) { for (var e = this.length || 16; e < this.pos + t;) e *= 2; if (e !== this.length) { var r = new Uint8Array(e); r.set(this.buf), this.buf = r, this.length = e } }, finish: function () { return this.length = this.pos, this.pos = 0, this.buf.subarray(0, this.length) }, writeFixed32: function (t) { this.realloc(4), _(this.buf, t, this.pos), this.pos += 4 }, writeSFixed32: function (t) { this.realloc(4), _(this.buf, t, this.pos), this.pos += 4 }, writeFixed64: function (t) { this.realloc(8), _(this.buf, -1 & t, this.pos), _(this.buf, Math.floor(t * (1 / 4294967296)), this.pos + 4), this.pos += 8 }, writeSFixed64: function (t) { this.realloc(8), _(this.buf, -1 & t, this.pos), _(this.buf, Math.floor(t * (1 / 4294967296)), this.pos + 4), this.pos += 8 }, writeVarint: function (t) { (t = +t || 0) > 268435455 || t < 0 ? function (t, e) { var r, n; t >= 0 ? (r = t % 4294967296 | 0, n = t / 4294967296 | 0) : (n = ~(-t / 4294967296), 4294967295 ^ (r = ~(-t % 4294967296)) ? r = r + 1 | 0 : (r = 0, n = n + 1 | 0)); if (t >= 0x10000000000000000 || t < -0x10000000000000000) throw new Error("Given varint doesn't fit into 10 bytes"); e.realloc(10), function (t, e, r) { r.buf[r.pos++] = 127 & t | 128, t >>>= 7, r.buf[r.pos++] = 127 & t | 128, t >>>= 7, r.buf[r.pos++] = 127 & t | 128, t >>>= 7, r.buf[r.pos++] = 127 & t | 128, t >>>= 7, r.buf[r.pos] = 127 & t }(r, 0, e), function (t, e) { var r = (7 & t) << 4; if (e.buf[e.pos++] |= r | ((t >>>= 3) ? 128 : 0), !t) return; if (e.buf[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0), !t) return; if (e.buf[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0), !t) return; if (e.buf[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0), !t) return; if (e.buf[e.pos++] = 127 & t | ((t >>>= 7) ? 128 : 0), !t) return; e.buf[e.pos++] = 127 & t }(n, e) }(t, this) : (this.realloc(4), this.buf[this.pos++] = 127 & t | (t > 127 ? 128 : 0), t <= 127 || (this.buf[this.pos++] = 127 & (t >>>= 7) | (t > 127 ? 128 : 0), t <= 127 || (this.buf[this.pos++] = 127 & (t >>>= 7) | (t > 127 ? 128 : 0), t <= 127 || (this.buf[this.pos++] = t >>> 7 & 127)))) }, writeSVarint: function (t) { this.writeVarint(t < 0 ? 2 * -t - 1 : 2 * t) }, writeBoolean: function (t) { this.writeVarint(Boolean(t)) }, writeString: function (t) { t = String(t), this.realloc(4 * t.length), this.pos++; var e = this.pos; this.pos = function (t, e, r) { for (var n, i, o = 0; o < e.length; o++) { if ((n = e.charCodeAt(o)) > 55295 && n < 57344) { if (!i) { n > 56319 || o + 1 === e.length ? (t[r++] = 239, t[r++] = 191, t[r++] = 189) : i = n; continue } if (n < 56320) { t[r++] = 239, t[r++] = 191, t[r++] = 189, i = n; continue } n = i - 55296 << 10 | n - 56320 | 65536, i = null } else i && (t[r++] = 239, t[r++] = 191, t[r++] = 189, i = null); n < 128 ? t[r++] = n : (n < 2048 ? t[r++] = n >> 6 | 192 : (n < 65536 ? t[r++] = n >> 12 | 224 : (t[r++] = n >> 18 | 240, t[r++] = n >> 12 & 63 | 128), t[r++] = n >> 6 & 63 | 128), t[r++] = 63 & n | 128) } return r }(this.buf, t, this.pos); var r = this.pos - e; r >= 128 && l(e, r, this), this.pos = e - 1, this.writeVarint(r), this.pos += r }, writeFloat: function (t) { this.realloc(4), n.write(this.buf, t, this.pos, !0, 23, 4), this.pos += 4 }, writeDouble: function (t) { this.realloc(8), n.write(this.buf, t, this.pos, !0, 52, 8), this.pos += 8 }, writeBytes: function (t) { var e = t.length; this.writeVarint(e), this.realloc(e); for (var r = 0; r < e; r++) this.buf[this.pos++] = t[r] }, writeRawMessage: function (t, e) { this.pos++; var r = this.pos; t(e, this); var n = this.pos - r; n >= 128 && l(r, n, this), this.pos = r - 1, this.writeVarint(n), this.pos += n }, writeMessage: function (t, e, r) { this.writeTag(t, i.Bytes), this.writeRawMessage(e, r) }, writePackedVarint: function (t, e) { e.length && this.writeMessage(t, u, e) }, writePackedSVarint: function (t, e) { e.length && this.writeMessage(t, c, e) }, writePackedBoolean: function (t, e) { e.length && this.writeMessage(t, f, e) }, writePackedFloat: function (t, e) { e.length && this.writeMessage(t, h, e) }, writePackedDouble: function (t, e) { e.length && this.writeMessage(t, p, e) }, writePackedFixed32: function (t, e) { e.length && this.writeMessage(t, d, e) }, writePackedSFixed32: function (t, e) { e.length && this.writeMessage(t, g, e) }, writePackedFixed64: function (t, e) { e.length && this.writeMessage(t, y, e) }, writePackedSFixed64: function (t, e) { e.length && this.writeMessage(t, m, e) }, writeBytesField: function (t, e) { this.writeTag(t, i.Bytes), this.writeBytes(e) }, writeFixed32Field: function (t, e) { this.writeTag(t, i.Fixed32), this.writeFixed32(e) }, writeSFixed32Field: function (t, e) { this.writeTag(t, i.Fixed32), this.writeSFixed32(e) }, writeFixed64Field: function (t, e) { this.writeTag(t, i.Fixed64), this.writeFixed64(e) }, writeSFixed64Field: function (t, e) { this.writeTag(t, i.Fixed64), this.writeSFixed64(e) }, writeVarintField: function (t, e) { this.writeTag(t, i.Varint), this.writeVarint(e) }, writeSVarintField: function (t, e) { this.writeTag(t, i.Varint), this.writeSVarint(e) }, writeStringField: function (t, e) { this.writeTag(t, i.Bytes), this.writeString(e) }, writeFloatField: function (t, e) { this.writeTag(t, i.Fixed32), this.writeFloat(e) }, writeDoubleField: function (t, e) { this.writeTag(t, i.Fixed64), this.writeDouble(e) }, writeBooleanField: function (t, e) { this.writeVarintField(t, Boolean(e)) } } }, function (t, e) { (function () { var e; t.exports = { icon: "icons/google.svg", name: "google", title: "Google Fonts", link: "google.com/fonts", getNames: function () { return e }, getLink: function (t) { return "https://fonts.google.com/specimen/" + t.replace(/( )/g, "+") }, normalizeName: function (t) { return t } }, e = ["ABeeZee", "Abel", "Abril Fatface", "Aclonica", "Acme", "Actor", "Adamina", "Advent Pro", "Aguafina Script", "Akronim", "Aladin", "Aldrich", "Alef", "Alegreya", "Alegreya SC", "Alegreya Sans", "Alegreya Sans SC", "Alex Brush", "Alfa Slab One", "Alice", "Alike", "Alike Angular", "Allan", "Allerta", "Allerta Stencil", "Allura", "Almendra", "Almendra Display", "Almendra SC", "Amarante", "Amaranth", "Amatic SC", "Amethysta", "Amiri", "Amita", "Anaheim", "Andada", "Andika", "Angkor", "Annie Use Your Telescope", "Anonymous Pro", "Antic", "Antic Didone", "Antic Slab", "Anton", "Arapey", "Arbutus", "Arbutus Slab", "Architects Daughter", "Archivo Black", "Archivo Narrow", "Arimo", "Arizonia", "Armata", "Artifika", "Arvo", "Arya", "Asap", "Asar", "Asset", "Astloch", "Asul", "Atomic Age", "Aubrey", "Audiowide", "Autour One", "Average", "Average Sans", "Averia Gruesa Libre", "Averia Libre", "Averia Sans Libre", "Averia Serif Libre", "Bad Script", "Balthazar", "Bangers", "Basic", "Battambang", "Baumans", "Bayon", "Belgrano", "Belleza", "BenchNine", "Bentham", "Berkshire Swash", "Bevan", "Bigelow Rules", "Bigshot One", "Bilbo", "Bilbo Swash Caps", "Biryani", "Bitter", "Black Ops One", "Bokor", "Bonbon", "Boogaloo", "Bowlby One", "Bowlby One SC", "Brawler", "Bree Serif", "Bubblegum Sans", "Bubbler One", "Buda", "Buenard", "Butcherman", "Butterfly Kids", "Cabin", "Cabin Condensed", "Cabin Sketch", "Caesar Dressing", "Cagliostro", "Calligraffitti", "Cambay", "Cambo", "Candal", "Cantarell", "Cantata One", "Cantora One", "Capriola", "Cardo", "Carme", "Carrois Gothic", "Carrois Gothic SC", "Carter One", "Catamaran", "Caudex", "Caveat", "Caveat Brush", "Cedarville Cursive", "Ceviche One", "Changa One", "Chango", "Chau Philomene One", "Chela One", "Chelsea Market", "Chenla", "Cherry Cream Soda", "Cherry Swash", "Chewy", "Chicle", "Chivo", "Chonburi", "Cinzel", "Cinzel Decorative", "Clicker Script", "Coda", "Coda Caption", "Codystar", "Combo", "Comfortaa", "Coming Soon", "Concert One", "Condiment", "Content", "Contrail One", "Convergence", "Cookie", "Copse", "Corben", "Courgette", "Cousine", "Coustard", "Covered By Your Grace", "Crafty Girls", "Creepster", "Crete Round", "Crimson Text", "Croissant One", "Crushed", "Cuprum", "Cutive", "Cutive Mono", "Damion", "Dancing Script", "Dangrek", "Dawning of a New Day", "Days One", "Dekko", "Delius", "Delius Swash Caps", "Delius Unicase", "Della Respira", "Denk One", "Devonshire", "Dhurjati", "Didact Gothic", "Diplomata", "Diplomata SC", "Domine", "Donegal One", "Doppio One", "Dorsa", "Dosis", "Dr Sugiyama", "Droid Sans", "Droid Sans Mono", "Droid Serif", "Duru Sans", "Dynalight", "EB Garamond", "Eagle Lake", "Eater", "Economica", "Eczar", "Ek Mukta", "Electrolize", "Elsie", "Elsie Swash Caps", "Emblema One", "Emilys Candy", "Engagement", "Englebert", "Enriqueta", "Erica One", "Esteban", "Euphoria Script", "Ewert", "Exo", "Exo 2", "Expletus Sans", "Fanwood Text", "Fascinate", "Fascinate Inline", "Faster One", "Fasthand", "Fauna One", "Federant", "Federo", "Felipa", "Fenix", "Finger Paint", "Fira Mono", "Fira Sans", "Fjalla One", "Fjord One", "Flamenco", "Flavors", "Fondamento", "Fontdiner Swanky", "Forum", "Francois One", "Freckle Face", "Fredericka the Great", "Fredoka One", "Freehand", "Fresca", "Frijole", "Fruktur", "Fugaz One", "GFS Didot", "GFS Neohellenic", "Gabriela", "Gafata", "Galdeano", "Galindo", "Gentium Basic", "Gentium Book Basic", "Geo", "Geostar", "Geostar Fill", "Germania One", "Gidugu", "Gilda Display", "Give You Glory", "Glass Antiqua", "Glegoo", "Gloria Hallelujah", "Goblin One", "Gochi Hand", "Gorditas", "Goudy Bookletter 1911", "Graduate", "Grand Hotel", "Gravitas One", "Great Vibes", "Griffy", "Gruppo", "Gudea", "Gurajada", "Habibi", "Halant", "Hammersmith One", "Hanalei", "Hanalei Fill", "Handlee", "Hanuman", "Happy Monkey", "Headland One", "Henny Penny", "Herr Von Muellerhoff", "Hind", "Hind Siliguri", "Hind Vadodara", "Holtwood One SC", "Homemade Apple", "Homenaje", "IM Fell DW Pica", "IM Fell DW Pica SC", "IM Fell Double Pica", "IM Fell Double Pica SC", "IM Fell English", "IM Fell English SC", "IM Fell French Canon", "IM Fell French Canon SC", "IM Fell Great Primer", "IM Fell Great Primer SC", "Iceberg", "Iceland", "Imprima", "Inconsolata", "Inder", "Indie Flower", "Inika", "Inknut Antiqua", "Irish Grover", "Istok Web", "Italiana", "Italianno", "Itim", "Jacques Francois", "Jacques Francois Shadow", "Jaldi", "Jim Nightshade", "Jockey One", "Jolly Lodger", "Josefin Sans", "Josefin Slab", "Joti One", "Judson", "Julee", "Julius Sans One", "Junge", "Jura", "Just Another Hand", "Just Me Again Down Here", "Kadwa", "Kalam", "Kameron", "Kantumruy", "Karla", "Karma", "Kaushan Script", "Kavoon", "Kdam Thmor", "Keania One", "Kelly Slab", "Kenia", "Khand", "Khmer", "Khula", "Kite One", "Knewave", "Kotta One", "Koulen", "Kranky", "Kreon", "Kristi", "Krona One", "Kurale", "La Belle Aurore", "Laila", "Lakki Reddy", "Lancelot", "Lateef", "Lato", "League Script", "Leckerli One", "Ledger", "Lekton", "Lemon", "Libre Baskerville", "Life Savers", "Lilita One", "Lily Script One", "Limelight", "Linden Hill", "Lobster", "Lobster Two", "Londrina Outline", "Londrina Shadow", "Londrina Sketch", "Londrina Solid", "Lora", "Love Ya Like A Sister", "Loved by the King", "Lovers Quarrel", "Luckiest Guy", "Lusitana", "Lustria", "Macondo", "Macondo Swash Caps", "Magra", "Maiden Orange", "Mako", "Mallanna", "Mandali", "Marcellus", "Marcellus SC", "Marck Script", "Margarine", "Marko One", "Marmelad", "Martel", "Martel Sans", "Marvel", "Mate", "Mate SC", "Maven Pro", "McLaren", "Meddon", "MedievalSharp", "Medula One", "Megrim", "Meie Script", "Merienda", "Merienda One", "Merriweather", "Merriweather Sans", "Metal", "Metal Mania", "Metamorphous", "Metrophobic", "Michroma", "Milonga", "Miltonian", "Miltonian Tattoo", "Miniver", "Miss Fajardose", "Modak", "Modern Antiqua", "Molengo", "Molle", "Monda", "Monofett", "Monoton", "Monsieur La Doulaise", "Montaga", "Montez", "Montserrat", "Montserrat Alternates", "Montserrat Subrayada", "Moul", "Moulpali", "Mountains of Christmas", "Mouse Memoirs", "Mr Bedfort", "Mr Dafoe", "Mr De Haviland", "Mrs Saint Delafield", "Mrs Sheppards", "Muli", "Mystery Quest", "NTR", "Neucha", "Neuton", "New Rocker", "News Cycle", "Niconne", "Nixie One", "Nobile", "Nokora", "Norican", "Nosifer", "Nothing You Could Do", "Noticia Text", "Noto Sans", "Noto Serif", "Nova Cut", "Nova Flat", "Nova Mono", "Nova Oval", "Nova Round", "Nova Script", "Nova Slim", "Nova Square", "Numans", "Nunito", "Odor Mean Chey", "Offside", "Old Standard TT", "Oldenburg", "Oleo Script", "Oleo Script Swash Caps", "Open Sans", "Open Sans Condensed", "Oranienbaum", "Orbitron", "Oregano", "Orienta", "Original Surfer", "Oswald", "Over the Rainbow", "Overlock", "Overlock SC", "Ovo", "Oxygen", "Oxygen Mono", "PT Mono", "PT Sans", "PT Sans Caption", "PT Sans Narrow", "PT Serif", "PT Serif Caption", "Pacifico", "Palanquin", "Palanquin Dark", "Paprika", "Parisienne", "Passero One", "Passion One", "Pathway Gothic One", "Patrick Hand", "Patrick Hand SC", "Patua One", "Paytone One", "Peddana", "Peralta", "Permanent Marker", "Petit Formal Script", "Petrona", "Philosopher", "Piedra", "Pinyon Script", "Pirata One", "Plaster", "Play", "Playball", "Playfair Display", "Playfair Display SC", "Podkova", "Poiret One", "Poller One", "Poly", "Pompiere", "Pontano Sans", "Poppins", "Port Lligat Sans", "Port Lligat Slab", "Pragati Narrow", "Prata", "Preahvihear", "Press Start 2P", "Princess Sofia", "Prociono", "Prosto One", "Puritan", "Purple Purse", "Quando", "Quantico", "Quattrocento", "Quattrocento Sans", "Questrial", "Quicksand", "Quintessential", "Qwigley", "Racing Sans One", "Radley", "Rajdhani", "Raleway", "Raleway Dots", "Ramabhadra", "Ramaraja", "Rambla", "Rammetto One", "Ranchers", "Rancho", "Ranga", "Rationale", "Ravi Prakash", "Redressed", "Reenie Beanie", "Revalia", "Rhodium Libre", "Ribeye", "Ribeye Marrow", "Righteous", "Risque", "Roboto", "Roboto Condensed", "Roboto Mono", "Roboto Slab", "Rochester", "Rock Salt", "Rokkitt", "Romanesco", "Ropa Sans", "Rosario", "Rosarivo", "Rouge Script", "Rozha One", "Rubik", "Rubik Mono One", "Rubik One", "Ruda", "Rufina", "Ruge Boogie", "Ruluko", "Rum Raisin", "Ruslan Display", "Russo One", "Ruthie", "Rye", "Sacramento", "Sahitya", "Sail", "Salsa", "Sanchez", "Sancreek", "Sansita One", "Sarala", "Sarina", "Sarpanch", "Satisfy", "Scada", "Scheherazade", "Schoolbell", "Seaweed Script", "Sevillana", "Seymour One", "Shadows Into Light", "Shadows Into Light Two", "Shanti", "Share", "Share Tech", "Share Tech Mono", "Shojumaru", "Short Stack", "Siemreap", "Sigmar One", "Signika", "Signika Negative", "Simonetta", "Sintony", "Sirin Stencil", "Six Caps", "Skranji", "Slabo 13px", "Slabo 27px", "Slackey", "Smokum", "Smythe", "Sniglet", "Snippet", "Snowburst One", "Sofadi One", "Sofia", "Sonsie One", "Sorts Mill Goudy", "Source Code Pro", "Source Sans Pro", "Source Serif Pro", "Special Elite", "Spicy Rice", "Spinnaker", "Spirax", "Squada One", "Sree Krushnadevaraya", "Stalemate", "Stalinist One", "Stardos Stencil", "Stint Ultra Condensed", "Stint Ultra Expanded", "Stoke", "Strait", "Sue Ellen Francisco", "Sumana", "Sunshiney", "Supermercado One", "Sura", "Suranna", "Suravaram", "Suwannaphum", "Swanky and Moo Moo", "Syncopate", "Tangerine", "Taprom", "Tauri", "Teko", "Telex", "Tenali Ramakrishna", "Tenor Sans", "Text Me One", "The Girl Next Door", "Tienne", "Tillana", "Timmana", "Tinos", "Titan One", "Titillium Web", "Trade Winds", "Trocchi", "Trochut", "Trykker", "Tulpen One", "Ubuntu", "Ubuntu Condensed", "Ubuntu Mono", "Ultra", "Uncial Antiqua", "Underdog", "Unica One", "UnifrakturCook", "UnifrakturMaguntia", "Unkempt", "Unlock", "Unna", "VT323", "Vampiro One", "Varela", "Varela Round", "Vast Shadow", "Vesper Libre", "Vibur", "Vidaloka", "Viga", "Voces", "Volkhov", "Vollkorn", "Voltaire", "Waiting for the Sunrise", "Wallpoet", "Walter Turncoat", "Warnes", "Wellfleet", "Wendy One", "Wire One", "Work Sans", "Yanone Kaffeesatz", "Yantramanav", "Yellowtail", "Yeseva One", "Yesteryear", "Zeyada"] }).call(this) }, function (t, e, r) { "use strict"; (function (t) { /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ var n = r(8), i = r(3), o = r(9); function a() { return l.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 } function s(t, e) { if (a() < e) throw new RangeError("Invalid typed array length"); return l.TYPED_ARRAY_SUPPORT ? (t = new Uint8Array(e)).__proto__ = l.prototype : (null === t && (t = new l(e)), t.length = e), t } function l(t, e, r) { if (!(l.TYPED_ARRAY_SUPPORT || this instanceof l)) return new l(t, e, r); if ("number" == typeof t) { if ("string" == typeof e) throw new Error("If encoding is specified then the first argument must be a string"); return h(this, t) } return u(this, t, e, r) } function u(t, e, r, n) { if ("number" == typeof e) throw new TypeError('"value" argument must not be a number'); return "undefined" != typeof ArrayBuffer && e instanceof ArrayBuffer ? function (t, e, r, n) { if (e.byteLength, r < 0 || e.byteLength < r) throw new RangeError("'offset' is out of bounds"); if (e.byteLength < r + (n || 0)) throw new RangeError("'length' is out of bounds"); e = void 0 === r && void 0 === n ? new Uint8Array(e) : void 0 === n ? new Uint8Array(e, r) : new Uint8Array(e, r, n); l.TYPED_ARRAY_SUPPORT ? (t = e).__proto__ = l.prototype : t = p(t, e); return t }(t, e, r, n) : "string" == typeof e ? function (t, e, r) { "string" == typeof r && "" !== r || (r = "utf8"); if (!l.isEncoding(r)) throw new TypeError('"encoding" must be a valid string encoding'); var n = 0 | d(e, r), i = (t = s(t, n)).write(e, r); i !== n && (t = t.slice(0, i)); return t }(t, e, r) : function (t, e) { if (l.isBuffer(e)) { var r = 0 | f(e.length); return 0 === (t = s(t, r)).length || e.copy(t, 0, 0, r), t } if (e) { if ("undefined" != typeof ArrayBuffer && e.buffer instanceof ArrayBuffer || "length" in e) return "number" != typeof e.length || (n = e.length) != n ? s(t, 0) : p(t, e); if ("Buffer" === e.type && o(e.data)) return p(t, e.data) } var n; throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") }(t, e) } function c(t) { if ("number" != typeof t) throw new TypeError('"size" argument must be a number'); if (t < 0) throw new RangeError('"size" argument must not be negative') } function h(t, e) { if (c(e), t = s(t, e < 0 ? 0 : 0 | f(e)), !l.TYPED_ARRAY_SUPPORT) for (var r = 0; r < e; ++r) t[r] = 0; return t } function p(t, e) { var r = e.length < 0 ? 0 : 0 | f(e.length); t = s(t, r); for (var n = 0; n < r; n += 1) t[n] = 255 & e[n]; return t } function f(t) { if (t >= a()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + a().toString(16) + " bytes"); return 0 | t } function d(t, e) { if (l.isBuffer(t)) return t.length; if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(t) || t instanceof ArrayBuffer)) return t.byteLength; "string" != typeof t && (t = "" + t); var r = t.length; if (0 === r) return 0; for (var n = !1; ;) switch (e) { case"ascii": case"latin1": case"binary": return r; case"utf8": case"utf-8": case void 0: return z(t).length; case"ucs2": case"ucs-2": case"utf16le": case"utf-16le": return 2 * r; case"hex": return r >>> 1; case"base64": return U(t).length; default: if (n) return z(t).length; e = ("" + e).toLowerCase(), n = !0 } } function g(t, e, r) { var n = !1; if ((void 0 === e || e < 0) && (e = 0), e > this.length) return ""; if ((void 0 === r || r > this.length) && (r = this.length), r <= 0) return ""; if ((r >>>= 0) <= (e >>>= 0)) return ""; for (t || (t = "utf8"); ;) switch (t) { case"hex": return R(this, e, r); case"utf8": case"utf-8": return C(this, e, r); case"ascii": return O(this, e, r); case"latin1": case"binary": return P(this, e, r); case"base64": return T(this, e, r); case"ucs2": case"ucs-2": case"utf16le": case"utf-16le": return I(this, e, r); default: if (n) throw new TypeError("Unknown encoding: " + t); t = (t + "").toLowerCase(), n = !0 } } function y(t, e, r) { var n = t[e]; t[e] = t[r], t[r] = n } function m(t, e, r, n, i) { if (0 === t.length) return -1; if ("string" == typeof r ? (n = r, r = 0) : r > 2147483647 ? r = 2147483647 : r < -2147483648 && (r = -2147483648), r = +r, isNaN(r) && (r = i ? 0 : t.length - 1), r < 0 && (r = t.length + r), r >= t.length) { if (i) return -1; r = t.length - 1 } else if (r < 0) { if (!i) return -1; r = 0 } if ("string" == typeof e && (e = l.from(e, n)), l.isBuffer(e)) return 0 === e.length ? -1 : v(t, e, r, n, i); if ("number" == typeof e) return e &= 255, l.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(t, e, r) : Uint8Array.prototype.lastIndexOf.call(t, e, r) : v(t, [e], r, n, i); throw new TypeError("val must be string, number or Buffer") } function v(t, e, r, n, i) { var o, a = 1, s = t.length, l = e.length; if (void 0 !== n && ("ucs2" === (n = String(n).toLowerCase()) || "ucs-2" === n || "utf16le" === n || "utf-16le" === n)) { if (t.length < 2 || e.length < 2) return -1; a = 2, s /= 2, l /= 2, r /= 2 } function u(t, e) { return 1 === a ? t[e] : t.readUInt16BE(e * a) } if (i) { var c = -1; for (o = r; o < s; o++) if (u(t, o) === u(e, -1 === c ? 0 : o - c)) { if (-1 === c && (c = o), o - c + 1 === l) return c * a } else -1 !== c && (o -= o - c), c = -1 } else for (r + l > s && (r = s - l), o = r; o >= 0; o--) { for (var h = !0, p = 0; p < l; p++) if (u(t, o + p) !== u(e, p)) { h = !1; break } if (h) return o } return -1 } function _(t, e, r, n) { r = Number(r) || 0; var i = t.length - r; n ? (n = Number(n)) > i && (n = i) : n = i; var o = e.length; if (o % 2 != 0) throw new TypeError("Invalid hex string"); n > o / 2 && (n = o / 2); for (var a = 0; a < n; ++a) { var s = parseInt(e.substr(2 * a, 2), 16); if (isNaN(s)) return a; t[r + a] = s } return a } function b(t, e, r, n) { return B(z(e, t.length - r), t, r, n) } function x(t, e, r, n) { return B(function (t) { for (var e = [], r = 0; r < t.length; ++r) e.push(255 & t.charCodeAt(r)); return e }(e), t, r, n) } function w(t, e, r, n) { return x(t, e, r, n) } function S(t, e, r, n) { return B(U(e), t, r, n) } function E(t, e, r, n) { return B(function (t, e) { for (var r, n, i, o = [], a = 0; a < t.length && !((e -= 2) < 0); ++a) r = t.charCodeAt(a), n = r >> 8, i = r % 256, o.push(i), o.push(n); return o }(e, t.length - r), t, r, n) } function T(t, e, r) { return 0 === e && r === t.length ? n.fromByteArray(t) : n.fromByteArray(t.slice(e, r)) } function C(t, e, r) { r = Math.min(t.length, r); for (var n = [], i = e; i < r;) { var o, a, s, l, u = t[i], c = null, h = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1; if (i + h <= r) switch (h) { case 1: u < 128 && (c = u); break; case 2: 128 == (192 & (o = t[i + 1])) && (l = (31 & u) << 6 | 63 & o) > 127 && (c = l); break; case 3: o = t[i + 1], a = t[i + 2], 128 == (192 & o) && 128 == (192 & a) && (l = (15 & u) << 12 | (63 & o) << 6 | 63 & a) > 2047 && (l < 55296 || l > 57343) && (c = l); break; case 4: o = t[i + 1], a = t[i + 2], s = t[i + 3], 128 == (192 & o) && 128 == (192 & a) && 128 == (192 & s) && (l = (15 & u) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s) > 65535 && l < 1114112 && (c = l) } null === c ? (c = 65533, h = 1) : c > 65535 && (c -= 65536, n.push(c >>> 10 & 1023 | 55296), c = 56320 | 1023 & c), n.push(c), i += h } return function (t) { var e = t.length; if (e <= 4096) return String.fromCharCode.apply(String, t); var r = "", n = 0; for (; n < e;) r += String.fromCharCode.apply(String, t.slice(n, n += 4096)); return r }(n) } e.Buffer = l, e.SlowBuffer = function (t) { +t != t && (t = 0); return l.alloc(+t) }, e.INSPECT_MAX_BYTES = 50, l.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : function () { try { var t = new Uint8Array(1); return t.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }, 42 === t.foo() && "function" == typeof t.subarray && 0 === t.subarray(1, 1).byteLength } catch (t) { return !1 } }(), e.kMaxLength = a(), l.poolSize = 8192, l._augment = function (t) { return t.__proto__ = l.prototype, t }, l.from = function (t, e, r) { return u(null, t, e, r) }, l.TYPED_ARRAY_SUPPORT && (l.prototype.__proto__ = Uint8Array.prototype, l.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && l[Symbol.species] === l && Object.defineProperty(l, Symbol.species, { value: null, configurable: !0 })), l.alloc = function (t, e, r) { return function (t, e, r, n) { return c(e), e <= 0 ? s(t, e) : void 0 !== r ? "string" == typeof n ? s(t, e).fill(r, n) : s(t, e).fill(r) : s(t, e) }(null, t, e, r) }, l.allocUnsafe = function (t) { return h(null, t) }, l.allocUnsafeSlow = function (t) { return h(null, t) }, l.isBuffer = function (t) { return !(null == t || !t._isBuffer) }, l.compare = function (t, e) { if (!l.isBuffer(t) || !l.isBuffer(e)) throw new TypeError("Arguments must be Buffers"); if (t === e) return 0; for (var r = t.length, n = e.length, i = 0, o = Math.min(r, n); i < o; ++i) if (t[i] !== e[i]) { r = t[i], n = e[i]; break } return r < n ? -1 : n < r ? 1 : 0 }, l.isEncoding = function (t) { switch (String(t).toLowerCase()) { case"hex": case"utf8": case"utf-8": case"ascii": case"latin1": case"binary": case"base64": case"ucs2": case"ucs-2": case"utf16le": case"utf-16le": return !0; default: return !1 } }, l.concat = function (t, e) { if (!o(t)) throw new TypeError('"list" argument must be an Array of Buffers'); if (0 === t.length) return l.alloc(0); var r; if (void 0 === e) for (e = 0, r = 0; r < t.length; ++r) e += t[r].length; var n = l.allocUnsafe(e), i = 0; for (r = 0; r < t.length; ++r) { var a = t[r]; if (!l.isBuffer(a)) throw new TypeError('"list" argument must be an Array of Buffers'); a.copy(n, i), i += a.length } return n }, l.byteLength = d, l.prototype._isBuffer = !0, l.prototype.swap16 = function () { var t = this.length; if (t % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); for (var e = 0; e < t; e += 2) y(this, e, e + 1); return this }, l.prototype.swap32 = function () { var t = this.length; if (t % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); for (var e = 0; e < t; e += 4) y(this, e, e + 3), y(this, e + 1, e + 2); return this }, l.prototype.swap64 = function () { var t = this.length; if (t % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); for (var e = 0; e < t; e += 8) y(this, e, e + 7), y(this, e + 1, e + 6), y(this, e + 2, e + 5), y(this, e + 3, e + 4); return this }, l.prototype.toString = function () { var t = 0 | this.length; return 0 === t ? "" : 0 === arguments.length ? C(this, 0, t) : g.apply(this, arguments) }, l.prototype.equals = function (t) { if (!l.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); return this === t || 0 === l.compare(this, t) }, l.prototype.inspect = function () { var t = "", r = e.INSPECT_MAX_BYTES; return this.length > 0 && (t = this.toString("hex", 0, r).match(/.{2}/g).join(" "), this.length > r && (t += " ... ")), "" }, l.prototype.compare = function (t, e, r, n, i) { if (!l.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); if (void 0 === e && (e = 0), void 0 === r && (r = t ? t.length : 0), void 0 === n && (n = 0), void 0 === i && (i = this.length), e < 0 || r > t.length || n < 0 || i > this.length) throw new RangeError("out of range index"); if (n >= i && e >= r) return 0; if (n >= i) return -1; if (e >= r) return 1; if (this === t) return 0; for (var o = (i >>>= 0) - (n >>>= 0), a = (r >>>= 0) - (e >>>= 0), s = Math.min(o, a), u = this.slice(n, i), c = t.slice(e, r), h = 0; h < s; ++h) if (u[h] !== c[h]) { o = u[h], a = c[h]; break } return o < a ? -1 : a < o ? 1 : 0 }, l.prototype.includes = function (t, e, r) { return -1 !== this.indexOf(t, e, r) }, l.prototype.indexOf = function (t, e, r) { return m(this, t, e, r, !0) }, l.prototype.lastIndexOf = function (t, e, r) { return m(this, t, e, r, !1) }, l.prototype.write = function (t, e, r, n) { if (void 0 === e) n = "utf8", r = this.length, e = 0; else if (void 0 === r && "string" == typeof e) n = e, r = this.length, e = 0; else { if (!isFinite(e)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); e |= 0, isFinite(r) ? (r |= 0, void 0 === n && (n = "utf8")) : (n = r, r = void 0) } var i = this.length - e; if ((void 0 === r || r > i) && (r = i), t.length > 0 && (r < 0 || e < 0) || e > this.length) throw new RangeError("Attempt to write outside buffer bounds"); n || (n = "utf8"); for (var o = !1; ;) switch (n) { case"hex": return _(this, t, e, r); case"utf8": case"utf-8": return b(this, t, e, r); case"ascii": return x(this, t, e, r); case"latin1": case"binary": return w(this, t, e, r); case"base64": return S(this, t, e, r); case"ucs2": case"ucs-2": case"utf16le": case"utf-16le": return E(this, t, e, r); default: if (o) throw new TypeError("Unknown encoding: " + n); n = ("" + n).toLowerCase(), o = !0 } }, l.prototype.toJSON = function () { return {type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0)} }; function O(t, e, r) { var n = ""; r = Math.min(t.length, r); for (var i = e; i < r; ++i) n += String.fromCharCode(127 & t[i]); return n } function P(t, e, r) { var n = ""; r = Math.min(t.length, r); for (var i = e; i < r; ++i) n += String.fromCharCode(t[i]); return n } function R(t, e, r) { var n = t.length; (!e || e < 0) && (e = 0), (!r || r < 0 || r > n) && (r = n); for (var i = "", o = e; o < r; ++o) i += G(t[o]); return i } function I(t, e, r) { for (var n = t.slice(e, r), i = "", o = 0; o < n.length; o += 2) i += String.fromCharCode(n[o] + 256 * n[o + 1]); return i } function L(t, e, r) { if (t % 1 != 0 || t < 0) throw new RangeError("offset is not uint"); if (t + e > r) throw new RangeError("Trying to access beyond buffer length") } function M(t, e, r, n, i, o) { if (!l.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (e > i || e < o) throw new RangeError('"value" argument is out of bounds'); if (r + n > t.length) throw new RangeError("Index out of range") } function F(t, e, r, n) { e < 0 && (e = 65535 + e + 1); for (var i = 0, o = Math.min(t.length - r, 2); i < o; ++i) t[r + i] = (e & 255 << 8 * (n ? i : 1 - i)) >>> 8 * (n ? i : 1 - i) } function A(t, e, r, n) { e < 0 && (e = 4294967295 + e + 1); for (var i = 0, o = Math.min(t.length - r, 4); i < o; ++i) t[r + i] = e >>> 8 * (n ? i : 3 - i) & 255 } function k(t, e, r, n, i, o) { if (r + n > t.length) throw new RangeError("Index out of range"); if (r < 0) throw new RangeError("Index out of range") } function j(t, e, r, n, o) { return o || k(t, 0, r, 4), i.write(t, e, r, n, 23, 4), r + 4 } function N(t, e, r, n, o) { return o || k(t, 0, r, 8), i.write(t, e, r, n, 52, 8), r + 8 } l.prototype.slice = function (t, e) { var r, n = this.length; if ((t = ~~t) < 0 ? (t += n) < 0 && (t = 0) : t > n && (t = n), (e = void 0 === e ? n : ~~e) < 0 ? (e += n) < 0 && (e = 0) : e > n && (e = n), e < t && (e = t), l.TYPED_ARRAY_SUPPORT) (r = this.subarray(t, e)).__proto__ = l.prototype; else { var i = e - t; r = new l(i, void 0); for (var o = 0; o < i; ++o) r[o] = this[o + t] } return r }, l.prototype.readUIntLE = function (t, e, r) { t |= 0, e |= 0, r || L(t, e, this.length); for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256);) n += this[t + o] * i; return n }, l.prototype.readUIntBE = function (t, e, r) { t |= 0, e |= 0, r || L(t, e, this.length); for (var n = this[t + --e], i = 1; e > 0 && (i *= 256);) n += this[t + --e] * i; return n }, l.prototype.readUInt8 = function (t, e) { return e || L(t, 1, this.length), this[t] }, l.prototype.readUInt16LE = function (t, e) { return e || L(t, 2, this.length), this[t] | this[t + 1] << 8 }, l.prototype.readUInt16BE = function (t, e) { return e || L(t, 2, this.length), this[t] << 8 | this[t + 1] }, l.prototype.readUInt32LE = function (t, e) { return e || L(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3] }, l.prototype.readUInt32BE = function (t, e) { return e || L(t, 4, this.length), 16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]) }, l.prototype.readIntLE = function (t, e, r) { t |= 0, e |= 0, r || L(t, e, this.length); for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256);) n += this[t + o] * i; return n >= (i *= 128) && (n -= Math.pow(2, 8 * e)), n }, l.prototype.readIntBE = function (t, e, r) { t |= 0, e |= 0, r || L(t, e, this.length); for (var n = e, i = 1, o = this[t + --n]; n > 0 && (i *= 256);) o += this[t + --n] * i; return o >= (i *= 128) && (o -= Math.pow(2, 8 * e)), o }, l.prototype.readInt8 = function (t, e) { return e || L(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] }, l.prototype.readInt16LE = function (t, e) { e || L(t, 2, this.length); var r = this[t] | this[t + 1] << 8; return 32768 & r ? 4294901760 | r : r }, l.prototype.readInt16BE = function (t, e) { e || L(t, 2, this.length); var r = this[t + 1] | this[t] << 8; return 32768 & r ? 4294901760 | r : r }, l.prototype.readInt32LE = function (t, e) { return e || L(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24 }, l.prototype.readInt32BE = function (t, e) { return e || L(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3] }, l.prototype.readFloatLE = function (t, e) { return e || L(t, 4, this.length), i.read(this, t, !0, 23, 4) }, l.prototype.readFloatBE = function (t, e) { return e || L(t, 4, this.length), i.read(this, t, !1, 23, 4) }, l.prototype.readDoubleLE = function (t, e) { return e || L(t, 8, this.length), i.read(this, t, !0, 52, 8) }, l.prototype.readDoubleBE = function (t, e) { return e || L(t, 8, this.length), i.read(this, t, !1, 52, 8) }, l.prototype.writeUIntLE = function (t, e, r, n) { (t = +t, e |= 0, r |= 0, n) || M(this, t, e, r, Math.pow(2, 8 * r) - 1, 0); var i = 1, o = 0; for (this[e] = 255 & t; ++o < r && (i *= 256);) this[e + o] = t / i & 255; return e + r }, l.prototype.writeUIntBE = function (t, e, r, n) { (t = +t, e |= 0, r |= 0, n) || M(this, t, e, r, Math.pow(2, 8 * r) - 1, 0); var i = r - 1, o = 1; for (this[e + i] = 255 & t; --i >= 0 && (o *= 256);) this[e + i] = t / o & 255; return e + r }, l.prototype.writeUInt8 = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 1, 255, 0), l.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), this[e] = 255 & t, e + 1 }, l.prototype.writeUInt16LE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : F(this, t, e, !0), e + 2 }, l.prototype.writeUInt16BE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 2, 65535, 0), l.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : F(this, t, e, !1), e + 2 }, l.prototype.writeUInt32LE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[e + 3] = t >>> 24, this[e + 2] = t >>> 16, this[e + 1] = t >>> 8, this[e] = 255 & t) : A(this, t, e, !0), e + 4 }, l.prototype.writeUInt32BE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 4, 4294967295, 0), l.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : A(this, t, e, !1), e + 4 }, l.prototype.writeIntLE = function (t, e, r, n) { if (t = +t, e |= 0, !n) { var i = Math.pow(2, 8 * r - 1); M(this, t, e, r, i - 1, -i) } var o = 0, a = 1, s = 0; for (this[e] = 255 & t; ++o < r && (a *= 256);) t < 0 && 0 === s && 0 !== this[e + o - 1] && (s = 1), this[e + o] = (t / a >> 0) - s & 255; return e + r }, l.prototype.writeIntBE = function (t, e, r, n) { if (t = +t, e |= 0, !n) { var i = Math.pow(2, 8 * r - 1); M(this, t, e, r, i - 1, -i) } var o = r - 1, a = 1, s = 0; for (this[e + o] = 255 & t; --o >= 0 && (a *= 256);) t < 0 && 0 === s && 0 !== this[e + o + 1] && (s = 1), this[e + o] = (t / a >> 0) - s & 255; return e + r }, l.prototype.writeInt8 = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 1, 127, -128), l.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), t < 0 && (t = 255 + t + 1), this[e] = 255 & t, e + 1 }, l.prototype.writeInt16LE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8) : F(this, t, e, !0), e + 2 }, l.prototype.writeInt16BE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 2, 32767, -32768), l.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 8, this[e + 1] = 255 & t) : F(this, t, e, !1), e + 2 }, l.prototype.writeInt32LE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 4, 2147483647, -2147483648), l.TYPED_ARRAY_SUPPORT ? (this[e] = 255 & t, this[e + 1] = t >>> 8, this[e + 2] = t >>> 16, this[e + 3] = t >>> 24) : A(this, t, e, !0), e + 4 }, l.prototype.writeInt32BE = function (t, e, r) { return t = +t, e |= 0, r || M(this, t, e, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), l.TYPED_ARRAY_SUPPORT ? (this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t) : A(this, t, e, !1), e + 4 }, l.prototype.writeFloatLE = function (t, e, r) { return j(this, t, e, !0, r) }, l.prototype.writeFloatBE = function (t, e, r) { return j(this, t, e, !1, r) }, l.prototype.writeDoubleLE = function (t, e, r) { return N(this, t, e, !0, r) }, l.prototype.writeDoubleBE = function (t, e, r) { return N(this, t, e, !1, r) }, l.prototype.copy = function (t, e, r, n) { if (r || (r = 0), n || 0 === n || (n = this.length), e >= t.length && (e = t.length), e || (e = 0), n > 0 && n < r && (n = r), n === r) return 0; if (0 === t.length || 0 === this.length) return 0; if (e < 0) throw new RangeError("targetStart out of bounds"); if (r < 0 || r >= this.length) throw new RangeError("sourceStart out of bounds"); if (n < 0) throw new RangeError("sourceEnd out of bounds"); n > this.length && (n = this.length), t.length - e < n - r && (n = t.length - e + r); var i, o = n - r; if (this === t && r < e && e < n) for (i = o - 1; i >= 0; --i) t[i + e] = this[i + r]; else if (o < 1e3 || !l.TYPED_ARRAY_SUPPORT) for (i = 0; i < o; ++i) t[i + e] = this[i + r]; else Uint8Array.prototype.set.call(t, this.subarray(r, r + o), e); return o }, l.prototype.fill = function (t, e, r, n) { if ("string" == typeof t) { if ("string" == typeof e ? (n = e, e = 0, r = this.length) : "string" == typeof r && (n = r, r = this.length), 1 === t.length) { var i = t.charCodeAt(0); i < 256 && (t = i) } if (void 0 !== n && "string" != typeof n) throw new TypeError("encoding must be a string"); if ("string" == typeof n && !l.isEncoding(n)) throw new TypeError("Unknown encoding: " + n) } else "number" == typeof t && (t &= 255); if (e < 0 || this.length < e || this.length < r) throw new RangeError("Out of range index"); if (r <= e) return this; var o; if (e >>>= 0, r = void 0 === r ? this.length : r >>> 0, t || (t = 0), "number" == typeof t) for (o = e; o < r; ++o) this[o] = t; else { var a = l.isBuffer(t) ? t : z(new l(t, n).toString()), s = a.length; for (o = 0; o < r - e; ++o) this[o + e] = a[o % s] } return this }; var D = /[^+\/0-9A-Za-z-_]/g; function G(t) { return t < 16 ? "0" + t.toString(16) : t.toString(16) } function z(t, e) { var r; e = e || 1 / 0; for (var n = t.length, i = null, o = [], a = 0; a < n; ++a) { if ((r = t.charCodeAt(a)) > 55295 && r < 57344) { if (!i) { if (r > 56319) { (e -= 3) > -1 && o.push(239, 191, 189); continue } if (a + 1 === n) { (e -= 3) > -1 && o.push(239, 191, 189); continue } i = r; continue } if (r < 56320) { (e -= 3) > -1 && o.push(239, 191, 189), i = r; continue } r = 65536 + (i - 55296 << 10 | r - 56320) } else i && (e -= 3) > -1 && o.push(239, 191, 189); if (i = null, r < 128) { if ((e -= 1) < 0) break; o.push(r) } else if (r < 2048) { if ((e -= 2) < 0) break; o.push(r >> 6 | 192, 63 & r | 128) } else if (r < 65536) { if ((e -= 3) < 0) break; o.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128) } else { if (!(r < 1114112)) throw new Error("Invalid code point"); if ((e -= 4) < 0) break; o.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128) } } return o } function U(t) { return n.toByteArray(function (t) { if ((t = function (t) { return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "") }(t).replace(D, "")).length < 2) return ""; for (; t.length % 4 != 0;) t += "="; return t }(t)) } function B(t, e, r, n) { for (var i = 0; i < n && !(i + r >= e.length || i >= t.length); ++i) e[i + r] = t[i]; return i } }).call(this, r(4)) }, function (t, e, r) { "use strict"; e.byteLength = function (t) { var e = u(t), r = e[0], n = e[1]; return 3 * (r + n) / 4 - n }, e.toByteArray = function (t) { var e, r, n = u(t), a = n[0], s = n[1], l = new o(function (t, e, r) { return 3 * (e + r) / 4 - r }(0, a, s)), c = 0, h = s > 0 ? a - 4 : a; for (r = 0; r < h; r += 4) e = i[t.charCodeAt(r)] << 18 | i[t.charCodeAt(r + 1)] << 12 | i[t.charCodeAt(r + 2)] << 6 | i[t.charCodeAt(r + 3)], l[c++] = e >> 16 & 255, l[c++] = e >> 8 & 255, l[c++] = 255 & e; 2 === s && (e = i[t.charCodeAt(r)] << 2 | i[t.charCodeAt(r + 1)] >> 4, l[c++] = 255 & e); 1 === s && (e = i[t.charCodeAt(r)] << 10 | i[t.charCodeAt(r + 1)] << 4 | i[t.charCodeAt(r + 2)] >> 2, l[c++] = e >> 8 & 255, l[c++] = 255 & e); return l }, e.fromByteArray = function (t) { for (var e, r = t.length, i = r % 3, o = [], a = 0, s = r - i; a < s; a += 16383) o.push(c(t, a, a + 16383 > s ? s : a + 16383)); 1 === i ? (e = t[r - 1], o.push(n[e >> 2] + n[e << 4 & 63] + "==")) : 2 === i && (e = (t[r - 2] << 8) + t[r - 1], o.push(n[e >> 10] + n[e >> 4 & 63] + n[e << 2 & 63] + "=")); return o.join("") }; for (var n = [], i = [], o = "undefined" != typeof Uint8Array ? Uint8Array : Array, a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0, l = a.length; s < l; ++s) n[s] = a[s], i[a.charCodeAt(s)] = s; function u(t) { var e = t.length; if (e % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); var r = t.indexOf("="); return -1 === r && (r = e), [r, r === e ? 0 : 4 - r % 4] } function c(t, e, r) { for (var i, o, a = [], s = e; s < r; s += 3) i = (t[s] << 16 & 16711680) + (t[s + 1] << 8 & 65280) + (255 & t[s + 2]), a.push(n[(o = i) >> 18 & 63] + n[o >> 12 & 63] + n[o >> 6 & 63] + n[63 & o]); return a.join("") } i["-".charCodeAt(0)] = 62, i["_".charCodeAt(0)] = 63 }, function (t, e) { var r = {}.toString; t.exports = Array.isArray || function (t) { return "[object Array]" == r.call(t) } }, function (t, e, r) { "use strict"; function n() { return function () { throw new Error("Unimplemented abstract method.") }() } r.r(e); var i = 0; function o(t) { return t.ol_uid || (t.ol_uid = String(++i)) } var a, s = (a = function (t, e) { return (a = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(t, e) }, function (t, e) { function r() { this.constructor = t } a(t, e), t.prototype = null === e ? Object.create(e) : (r.prototype = e.prototype, new r) }), l = function (t) { function e(e) { var r = this, n = "Assertion failed. See https://openlayers.org/en/" + ("v" + "6.5.0".split("-")[0]) + "/doc/errors/#" + e + " for details."; return (r = t.call(this, n) || this).code = e, r.name = "AssertionError", r.message = n, r } return s(e, t), e }(Error); function u(t) { t.stopPropagation() } var c = function () { function t(t) { this.propagationStopped, this.type = t, this.target = null } return t.prototype.preventDefault = function () { this.propagationStopped = !0 }, t.prototype.stopPropagation = function () { this.propagationStopped = !0 }, t }(), h = "propertychange", p = function () { function t() { this.disposed = !1 } return t.prototype.dispose = function () { this.disposed || (this.disposed = !0, this.disposeInternal()) }, t.prototype.disposeInternal = function () { }, t }(); function f(t, e, r) { for (var n, i, o = r || d, a = 0, s = t.length, l = !1; a < s;) (i = +o(t[n = a + (s - a >> 1)], e)) < 0 ? a = n + 1 : (s = n, l = !i); return l ? a : ~a } function d(t, e) { return t > e ? 1 : t < e ? -1 : 0 } function g(t, e) { return t.indexOf(e) >= 0 } function y(t, e, r) { var n = t.length; if (t[0] <= e) return 0; if (e <= t[n - 1]) return n - 1; var i = void 0; if (r > 0) { for (i = 1; i < n; ++i) if (t[i] < e) return i - 1 } else if (r < 0) { for (i = 1; i < n; ++i) if (t[i] <= e) return i } else for (i = 1; i < n; ++i) { if (t[i] == e) return i; if (t[i] < e) return t[i - 1] - e < e - t[i] ? i - 1 : i } return n - 1 } function m(t, e, r) { for (; e < r;) { var n = t[e]; t[e] = t[r], t[r] = n, ++e, --r } } function v(t, e) { for (var r = Array.isArray(e) ? e : [e], n = r.length, i = 0; i < n; i++) t[t.length] = r[i] } function _(t, e) { for (var r, n = t.length >>> 0, i = 0; i < n; i++) if (e(r = t[i], i, t)) return r; return null } function b(t, e) { var r = t.length; if (r !== e.length) return !1; for (var n = 0; n < r; n++) if (t[n] !== e[n]) return !1; return !0 } function x(t, e) { var r; return !t.every((function (n, i) { return r = i, !e(n, i, t) })) ? r : -1 } function w(t, e, r) { var n = e || d; return t.every((function (e, i) { if (0 === i) return !0; var o = n(t[i - 1], e); return !(o > 0 || r && 0 === o) })) } function S() { return !0 } function E() { return !1 } function T() { } function C(t) { var e, r, n, i = !1; return function () { var o = Array.prototype.slice.call(arguments); return i && this === n && b(o, r) || (i = !0, n = this, r = o, e = t.apply(this, arguments)), e } } var O = "function" == typeof Object.assign ? Object.assign : function (t, e) { if (null == t) throw new TypeError("Cannot convert undefined or null to object"); for (var r = Object(t), n = 1, i = arguments.length; n < i; ++n) { var o = arguments[n]; if (null != o) for (var a in o) o.hasOwnProperty(a) && (r[a] = o[a]) } return r }; function P(t) { for (var e in t) delete t[e] } var R = "function" == typeof Object.values ? Object.values : function (t) { var e = []; for (var r in t) e.push(t[r]); return e }; function I(t) { var e; for (e in t) return !1; return !e } var L = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), M = function (t) { function e(e) { var r = t.call(this) || this; return r.eventTarget_ = e, r.pendingRemovals_ = null, r.dispatching_ = null, r.listeners_ = null, r } return L(e, t), e.prototype.addEventListener = function (t, e) { if (t && e) { var r = this.listeners_ || (this.listeners_ = {}), n = r[t] || (r[t] = []); -1 === n.indexOf(e) && n.push(e) } }, e.prototype.dispatchEvent = function (t) { var e = "string" == typeof t ? new c(t) : t, r = e.type; e.target || (e.target = this.eventTarget_ || this); var n, i = this.listeners_ && this.listeners_[r]; if (i) { var o = this.dispatching_ || (this.dispatching_ = {}), a = this.pendingRemovals_ || (this.pendingRemovals_ = {}); r in o || (o[r] = 0, a[r] = 0), ++o[r]; for (var s = 0, l = i.length; s < l; ++s) if (!1 === (n = "handleEvent" in i[s] ? i[s].handleEvent(e) : i[s].call(this, e)) || e.propagationStopped) { n = !1; break } if (--o[r], 0 === o[r]) { var u = a[r]; for (delete a[r]; u--;) this.removeEventListener(r, T); delete o[r] } return n } }, e.prototype.disposeInternal = function () { this.listeners_ && P(this.listeners_) }, e.prototype.getListeners = function (t) { return this.listeners_ && this.listeners_[t] || void 0 }, e.prototype.hasListener = function (t) { return !!this.listeners_ && (t ? t in this.listeners_ : Object.keys(this.listeners_).length > 0) }, e.prototype.removeEventListener = function (t, e) { var r = this.listeners_ && this.listeners_[t]; if (r) { var n = r.indexOf(e); -1 !== n && (this.pendingRemovals_ && t in this.pendingRemovals_ ? (r[n] = T, ++this.pendingRemovals_[t]) : (r.splice(n, 1), 0 === r.length && delete this.listeners_[t])) } }, e }(p), F = "change", A = "error", k = "clear", j = "contextmenu", N = "click", D = "dblclick", G = "dragenter", z = "dragover", U = "drop", B = "keydown", V = "keypress", Y = "load", W = "resize", q = "touchmove", X = "wheel"; function Z(t, e, r, n, i) { if (n && n !== t && (r = r.bind(n)), i) { var o = r; r = function () { t.removeEventListener(e, r), o.apply(this, arguments) } } var a = {target: t, type: e, listener: r}; return t.addEventListener(e, r), a } function K(t, e, r, n) { return Z(t, e, r, n, !0) } function H(t) { t && t.target && (t.target.removeEventListener(t.type, t.listener), P(t)) } var $ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function J(t) { if (Array.isArray(t)) for (var e = 0, r = t.length; e < r; ++e) H(t[e]); else H(t) } var Q = function (t) { function e() { var e = t.call(this) || this; return e.revision_ = 0, e } return $(e, t), e.prototype.changed = function () { ++this.revision_, this.dispatchEvent(F) }, e.prototype.getRevision = function () { return this.revision_ }, e.prototype.on = function (t, e) { if (Array.isArray(t)) { for (var r = t.length, n = new Array(r), i = 0; i < r; ++i) n[i] = Z(this, t[i], e); return n } return Z(this, t, e) }, e.prototype.once = function (t, e) { var r; if (Array.isArray(t)) { var n = t.length; r = new Array(n); for (var i = 0; i < n; ++i) r[i] = K(this, t[i], e) } else r = K(this, t, e); return e.ol_key = r, r }, e.prototype.un = function (t, e) { var r = e.ol_key; if (r) J(r); else if (Array.isArray(t)) for (var n = 0, i = t.length; n < i; ++n) this.removeEventListener(t[n], e); else this.removeEventListener(t, e) }, e }(M), tt = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), et = function (t) { function e(e, r, n) { var i = t.call(this, e) || this; return i.key = r, i.oldValue = n, i } return tt(e, t), e }(c), rt = function (t) { function e(e) { var r = t.call(this) || this; return o(r), r.values_ = null, void 0 !== e && r.setProperties(e), r } return tt(e, t), e.prototype.get = function (t) { var e; return this.values_ && this.values_.hasOwnProperty(t) && (e = this.values_[t]), e }, e.prototype.getKeys = function () { return this.values_ && Object.keys(this.values_) || [] }, e.prototype.getProperties = function () { return this.values_ && O({}, this.values_) || {} }, e.prototype.hasProperties = function () { return !!this.values_ }, e.prototype.notify = function (t, e) { var r; r = it(t), this.dispatchEvent(new et(r, t, e)), r = h, this.dispatchEvent(new et(r, t, e)) }, e.prototype.set = function (t, e, r) { var n = this.values_ || (this.values_ = {}); if (r) n[t] = e; else { var i = n[t]; n[t] = e, i !== e && this.notify(t, i) } }, e.prototype.setProperties = function (t, e) { for (var r in t) this.set(r, t[r], e) }, e.prototype.applyProperties = function (t) { t.values_ && O(this.values_ || (this.values_ = {}), t.values_) }, e.prototype.unset = function (t, e) { if (this.values_ && t in this.values_) { var r = this.values_[t]; delete this.values_[t], I(this.values_) && (this.values_ = null), e || this.notify(t, r) } }, e }(Q), nt = {}; function it(t) { return nt.hasOwnProperty(t) ? nt[t] : nt[t] = "change:" + t } var ot = rt, at = "add", st = "remove", lt = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ut = "length", ct = function (t) { function e(e, r, n) { var i = t.call(this, e) || this; return i.element = r, i.index = n, i } return lt(e, t), e }(c), ht = function (t) { function e(e, r) { var n = t.call(this) || this, i = r || {}; if (n.unique_ = !!i.unique, n.array_ = e || [], n.unique_) for (var o = 0, a = n.array_.length; o < a; ++o) n.assertUnique_(n.array_[o], o); return n.updateLength_(), n } return lt(e, t), e.prototype.clear = function () { for (; this.getLength() > 0;) this.pop() }, e.prototype.extend = function (t) { for (var e = 0, r = t.length; e < r; ++e) this.push(t[e]); return this }, e.prototype.forEach = function (t) { for (var e = this.array_, r = 0, n = e.length; r < n; ++r) t(e[r], r, e) }, e.prototype.getArray = function () { return this.array_ }, e.prototype.item = function (t) { return this.array_[t] }, e.prototype.getLength = function () { return this.get(ut) }, e.prototype.insertAt = function (t, e) { this.unique_ && this.assertUnique_(e), this.array_.splice(t, 0, e), this.updateLength_(), this.dispatchEvent(new ct(at, e, t)) }, e.prototype.pop = function () { return this.removeAt(this.getLength() - 1) }, e.prototype.push = function (t) { this.unique_ && this.assertUnique_(t); var e = this.getLength(); return this.insertAt(e, t), this.getLength() }, e.prototype.remove = function (t) { for (var e = this.array_, r = 0, n = e.length; r < n; ++r) if (e[r] === t) return this.removeAt(r) }, e.prototype.removeAt = function (t) { var e = this.array_[t]; return this.array_.splice(t, 1), this.updateLength_(), this.dispatchEvent(new ct(st, e, t)), e }, e.prototype.setAt = function (t, e) { var r = this.getLength(); if (t < r) { this.unique_ && this.assertUnique_(e, t); var n = this.array_[t]; this.array_[t] = e, this.dispatchEvent(new ct(st, n, t)), this.dispatchEvent(new ct(at, e, t)) } else { for (var i = r; i < t; ++i) this.insertAt(i, void 0); this.insertAt(t, e) } }, e.prototype.updateLength_ = function () { this.set(ut, this.array_.length) }, e.prototype.assertUnique_ = function (t, e) { for (var r = 0, n = this.array_.length; r < n; ++r) if (this.array_[r] === t && r !== e) throw new l(58) }, e }(ot); function pt(t, e) { if (!t) throw new l(e) } var ft = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function dt(t) { return "function" == typeof t ? t : (Array.isArray(t) ? e = t : (pt("function" == typeof t.getZIndex, 41), e = [t]), function () { return e }); var e } var gt = function (t) { function e(e) { var r = t.call(this) || this; if (r.id_ = void 0, r.geometryName_ = "geometry", r.style_ = null, r.styleFunction_ = void 0, r.geometryChangeKey_ = null, r.addEventListener(it(r.geometryName_), r.handleGeometryChanged_), e) if ("function" == typeof e.getSimplifiedGeometry) { var n = e; r.setGeometry(n) } else { var i = e; r.setProperties(i) } return r } return ft(e, t), e.prototype.clone = function () { var t = new e(this.hasProperties() ? this.getProperties() : null); t.setGeometryName(this.getGeometryName()); var r = this.getGeometry(); r && t.setGeometry(r.clone()); var n = this.getStyle(); return n && t.setStyle(n), t }, e.prototype.getGeometry = function () { return this.get(this.geometryName_) }, e.prototype.getId = function () { return this.id_ }, e.prototype.getGeometryName = function () { return this.geometryName_ }, e.prototype.getStyle = function () { return this.style_ }, e.prototype.getStyleFunction = function () { return this.styleFunction_ }, e.prototype.handleGeometryChange_ = function () { this.changed() }, e.prototype.handleGeometryChanged_ = function () { this.geometryChangeKey_ && (H(this.geometryChangeKey_), this.geometryChangeKey_ = null); var t = this.getGeometry(); t && (this.geometryChangeKey_ = Z(t, F, this.handleGeometryChange_, this)), this.changed() }, e.prototype.setGeometry = function (t) { this.set(this.geometryName_, t) }, e.prototype.setStyle = function (t) { this.style_ = t, this.styleFunction_ = t ? dt(t) : void 0, this.changed() }, e.prototype.setId = function (t) { this.id_ = t, this.changed() }, e.prototype.setGeometryName = function (t) { this.removeEventListener(it(this.geometryName_), this.handleGeometryChanged_), this.geometryName_ = t, this.addEventListener(it(this.geometryName_), this.handleGeometryChanged_), this.handleGeometryChanged_() }, e }(ot), yt = "XY", mt = "XYZ", vt = "XYM", _t = "XYZM", bt = { POINT: "Point", LINE_STRING: "LineString", LINEAR_RING: "LinearRing", POLYGON: "Polygon", MULTI_POINT: "MultiPoint", MULTI_LINE_STRING: "MultiLineString", MULTI_POLYGON: "MultiPolygon", GEOMETRY_COLLECTION: "GeometryCollection", CIRCLE: "Circle" }, xt = {DEGREES: "degrees", FEET: "ft", METERS: "m", PIXELS: "pixels", TILE_PIXELS: "tile-pixels", USFEET: "us-ft"}, wt = {}; wt[xt.DEGREES] = 2 * Math.PI * 6370997 / 360, wt[xt.FEET] = .3048, wt[xt.METERS] = 1, wt[xt.USFEET] = 1200 / 3937; var St = xt, Et = new Array(6); function Tt() { return [1, 0, 0, 1, 0, 0] } function Ct(t) { return Pt(t, 1, 0, 0, 1, 0, 0) } function Ot(t, e) { var r = t[0], n = t[1], i = t[2], o = t[3], a = t[4], s = t[5], l = e[0], u = e[1], c = e[2], h = e[3], p = e[4], f = e[5]; return t[0] = r * l + i * u, t[1] = n * l + o * u, t[2] = r * c + i * h, t[3] = n * c + o * h, t[4] = r * p + i * f + a, t[5] = n * p + o * f + s, t } function Pt(t, e, r, n, i, o, a) { return t[0] = e, t[1] = r, t[2] = n, t[3] = i, t[4] = o, t[5] = a, t } function Rt(t, e) { return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], t } function It(t, e) { var r = e[0], n = e[1]; return e[0] = t[0] * r + t[2] * n + t[4], e[1] = t[1] * r + t[3] * n + t[5], e } function Lt(t, e) { var r = Math.cos(e), n = Math.sin(e); return Ot(t, Pt(Et, r, n, -n, r, 0, 0)) } function Mt(t, e, r) { return Ot(t, Pt(Et, e, 0, 0, r, 0, 0)) } function Ft(t, e, r) { return Pt(t, e, 0, 0, r, 0, 0) } function At(t, e, r) { return Ot(t, Pt(Et, 1, 0, 0, 1, e, r)) } function kt(t, e, r, n, i, o, a, s) { var l = Math.sin(o), u = Math.cos(o); return t[0] = n * u, t[1] = i * l, t[2] = -n * l, t[3] = i * u, t[4] = a * n * u - s * n * l + e, t[5] = a * i * l + s * i * u + r, t } function jt(t, e) { var r = Nt(e); pt(0 !== r, 32); var n = e[0], i = e[1], o = e[2], a = e[3], s = e[4], l = e[5]; return t[0] = a / r, t[1] = -i / r, t[2] = -o / r, t[3] = n / r, t[4] = (o * l - a * s) / r, t[5] = -(n * l - i * s) / r, t } function Nt(t) { return t[0] * t[3] - t[1] * t[2] } function Dt(t) { return "matrix(" + t.join(", ") + ")" } var Gt = "bottom-left", zt = "bottom-right", Ut = "top-left", Bt = "top-right", Vt = 0, Yt = 1, Wt = 2, qt = 4, Xt = 8, Zt = 16; function Kt(t) { for (var e = ne(), r = 0, n = t.length; r < n; ++r) pe(e, t[r]); return e } function Ht(t, e, r) { return r ? (r[0] = t[0] - e, r[1] = t[1] - e, r[2] = t[2] + e, r[3] = t[3] + e, r) : [t[0] - e, t[1] - e, t[2] + e, t[3] + e] } function $t(t, e) { return e ? (e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e) : t.slice() } function Jt(t, e, r) { var n, i; return (n = e < t[0] ? t[0] - e : t[2] < e ? e - t[2] : 0) * n + (i = r < t[1] ? t[1] - r : t[3] < r ? r - t[3] : 0) * i } function Qt(t, e) { return ee(t, e[0], e[1]) } function te(t, e) { return t[0] <= e[0] && e[2] <= t[2] && t[1] <= e[1] && e[3] <= t[3] } function ee(t, e, r) { return t[0] <= e && e <= t[2] && t[1] <= r && r <= t[3] } function re(t, e) { var r = t[0], n = t[1], i = t[2], o = t[3], a = e[0], s = e[1], l = Vt; return a < r ? l |= Zt : a > i && (l |= qt), s < n ? l |= Xt : s > o && (l |= Wt), l === Vt && (l = Yt), l } function ne() { return [1 / 0, 1 / 0, -1 / 0, -1 / 0] } function ie(t, e, r, n, i) { return i ? (i[0] = t, i[1] = e, i[2] = r, i[3] = n, i) : [t, e, r, n] } function oe(t) { return ie(1 / 0, 1 / 0, -1 / 0, -1 / 0, t) } function ae(t, e) { var r = t[0], n = t[1]; return ie(r, n, r, n, e) } function se(t, e) { return fe(oe(e), t) } function le(t, e, r, n, i) { return de(oe(i), t, e, r, n) } function ue(t, e) { return t[0] == e[0] && t[2] == e[2] && t[1] == e[1] && t[3] == e[3] } function ce(t, e, r) { return Math.abs(t[0] - e[0]) < r && Math.abs(t[2] - e[2]) < r && Math.abs(t[1] - e[1]) < r && Math.abs(t[3] - e[3]) < r } function he(t, e) { return e[0] < t[0] && (t[0] = e[0]), e[2] > t[2] && (t[2] = e[2]), e[1] < t[1] && (t[1] = e[1]), e[3] > t[3] && (t[3] = e[3]), t } function pe(t, e) { e[0] < t[0] && (t[0] = e[0]), e[0] > t[2] && (t[2] = e[0]), e[1] < t[1] && (t[1] = e[1]), e[1] > t[3] && (t[3] = e[1]) } function fe(t, e) { for (var r = 0, n = e.length; r < n; ++r) pe(t, e[r]); return t } function de(t, e, r, n, i) { for (; r < n; r += i) ye(t, e[r], e[r + 1]); return t } function ge(t, e) { for (var r = 0, n = e.length; r < n; ++r) fe(t, e[r]); return t } function ye(t, e, r) { t[0] = Math.min(t[0], e), t[1] = Math.min(t[1], r), t[2] = Math.max(t[2], e), t[3] = Math.max(t[3], r) } function me(t, e) { var r; return (r = e(_e(t))) || (r = e(be(t))) || (r = e(Oe(t))) ? r : (r = e(Ce(t))) || !1 } function ve(t) { var e = 0; return Ie(t) || (e = Pe(t) * Ee(t)), e } function _e(t) { return [t[0], t[1]] } function be(t) { return [t[2], t[1]] } function xe(t) { return [(t[0] + t[2]) / 2, (t[1] + t[3]) / 2] } function we(t, e) { var r; return e === Gt ? r = _e(t) : e === zt ? r = be(t) : e === Ut ? r = Ce(t) : e === Bt ? r = Oe(t) : pt(!1, 13), r } function Se(t, e, r, n, i) { var o = e * n[0] / 2, a = e * n[1] / 2, s = Math.cos(r), l = Math.sin(r), u = o * s, c = o * l, h = a * s, p = a * l, f = t[0], d = t[1], g = f - u + p, y = f - u - p, m = f + u - p, v = f + u + p, _ = d - c - h, b = d - c + h, x = d + c + h, w = d + c - h; return ie(Math.min(g, y, m, v), Math.min(_, b, x, w), Math.max(g, y, m, v), Math.max(_, b, x, w), i) } function Ee(t) { return t[3] - t[1] } function Te(t, e, r) { var n = r || [1 / 0, 1 / 0, -1 / 0, -1 / 0]; return Re(t, e) ? (t[0] > e[0] ? n[0] = t[0] : n[0] = e[0], t[1] > e[1] ? n[1] = t[1] : n[1] = e[1], t[2] < e[2] ? n[2] = t[2] : n[2] = e[2], t[3] < e[3] ? n[3] = t[3] : n[3] = e[3]) : oe(n), n } function Ce(t) { return [t[0], t[3]] } function Oe(t) { return [t[2], t[3]] } function Pe(t) { return t[2] - t[0] } function Re(t, e) { return t[0] <= e[2] && t[2] >= e[0] && t[1] <= e[3] && t[3] >= e[1] } function Ie(t) { return t[2] < t[0] || t[3] < t[1] } function Le(t, e) { return e ? (e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3], e) : t } function Me(t, e) { var r = (t[2] - t[0]) / 2 * (e - 1), n = (t[3] - t[1]) / 2 * (e - 1); t[0] -= r, t[2] += r, t[1] -= n, t[3] += n } function Fe(t, e, r) { var n = !1, i = re(t, e), o = re(t, r); if (i === Yt || o === Yt) n = !0; else { var a = t[0], s = t[1], l = t[2], u = t[3], c = e[0], h = e[1], p = r[0], f = r[1], d = (f - h) / (p - c), g = void 0, y = void 0; o & Wt && !(i & Wt) && (n = (g = p - (f - u) / d) >= a && g <= l), n || !(o & qt) || i & qt || (n = (y = f - (p - l) * d) >= s && y <= u), n || !(o & Xt) || i & Xt || (n = (g = p - (f - s) / d) >= a && g <= l), n || !(o & Zt) || i & Zt || (n = (y = f - (p - a) * d) >= s && y <= u) } return n } function Ae(t, e, r, n) { var i = []; if (n > 1) for (var o = t[2] - t[0], a = t[3] - t[1], s = 0; s < n; ++s) i.push(t[0] + o * s / n, t[1], t[2], t[1] + a * s / n, t[2] - o * s / n, t[3], t[0], t[3] - a * s / n); else i = [t[0], t[1], t[2], t[1], t[2], t[3], t[0], t[3]]; e(i, i, 2); for (var l = [], u = [], c = (s = 0, i.length); s < c; s += 2) l.push(i[s]), u.push(i[s + 1]); return function (t, e, r) { return ie(Math.min.apply(null, t), Math.min.apply(null, e), Math.max.apply(null, t), Math.max.apply(null, e), r) }(l, u, r) } function ke(t, e) { var r = e.getExtent(), n = xe(t); if (e.canWrapX() && (n[0] < r[0] || n[0] >= r[2])) { var i = Pe(r), o = Math.floor((n[0] - r[0]) / i) * i; t[0] -= o, t[2] -= o } return t } var je = function () { function t(t) { this.code_ = t.code, this.units_ = t.units, this.extent_ = void 0 !== t.extent ? t.extent : null, this.worldExtent_ = void 0 !== t.worldExtent ? t.worldExtent : null, this.axisOrientation_ = void 0 !== t.axisOrientation ? t.axisOrientation : "enu", this.global_ = void 0 !== t.global && t.global, this.canWrapX_ = !(!this.global_ || !this.extent_), this.getPointResolutionFunc_ = t.getPointResolution, this.defaultTileGrid_ = null, this.metersPerUnit_ = t.metersPerUnit } return t.prototype.canWrapX = function () { return this.canWrapX_ }, t.prototype.getCode = function () { return this.code_ }, t.prototype.getExtent = function () { return this.extent_ }, t.prototype.getUnits = function () { return this.units_ }, t.prototype.getMetersPerUnit = function () { return this.metersPerUnit_ || wt[this.units_] }, t.prototype.getWorldExtent = function () { return this.worldExtent_ }, t.prototype.getAxisOrientation = function () { return this.axisOrientation_ }, t.prototype.isGlobal = function () { return this.global_ }, t.prototype.setGlobal = function (t) { this.global_ = t, this.canWrapX_ = !(!t || !this.extent_) }, t.prototype.getDefaultTileGrid = function () { return this.defaultTileGrid_ }, t.prototype.setDefaultTileGrid = function (t) { this.defaultTileGrid_ = t }, t.prototype.setExtent = function (t) { this.extent_ = t, this.canWrapX_ = !(!this.global_ || !t) }, t.prototype.setWorldExtent = function (t) { this.worldExtent_ = t }, t.prototype.setGetPointResolution = function (t) { this.getPointResolutionFunc_ = t }, t.prototype.getPointResolutionFunc = function () { return this.getPointResolutionFunc_ }, t }(); function Ne(t, e, r) { return Math.min(Math.max(t, e), r) } var De = "cosh" in Math ? Math.cosh : function (t) { var e = Math.exp(t); return (e + 1 / e) / 2 }, Ge = "log2" in Math ? Math.log2 : function (t) { return Math.log(t) * Math.LOG2E }; function ze(t, e, r, n, i, o) { var a = i - r, s = o - n; if (0 !== a || 0 !== s) { var l = ((t - r) * a + (e - n) * s) / (a * a + s * s); l > 1 ? (r = i, n = o) : l > 0 && (r += a * l, n += s * l) } return Ue(t, e, r, n) } function Ue(t, e, r, n) { var i = r - t, o = n - e; return i * i + o * o } function Be(t) { for (var e = t.length, r = 0; r < e; r++) { for (var n = r, i = Math.abs(t[r][r]), o = r + 1; o < e; o++) { var a = Math.abs(t[o][r]); a > i && (i = a, n = o) } if (0 === i) return null; var s = t[n]; t[n] = t[r], t[r] = s; for (var l = r + 1; l < e; l++) for (var u = -t[l][r] / t[r][r], c = r; c < e + 1; c++) r == c ? t[l][c] = 0 : t[l][c] += u * t[r][c] } for (var h = new Array(e), p = e - 1; p >= 0; p--) { h[p] = t[p][e] / t[p][p]; for (var f = p - 1; f >= 0; f--) t[f][e] -= t[f][p] * h[p] } return h } function Ve(t) { return 180 * t / Math.PI } function Ye(t) { return t * Math.PI / 180 } function We(t, e) { var r = t % e; return r * e < 0 ? r + e : r } function qe(t, e, r) { return t + r * (e - t) } var Xe = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Ze = 6378137 * Math.PI, Ke = [-Ze, -Ze, Ze, Ze], He = [-180, -85, 180, 85], $e = 6378137 * Math.log(Math.tan(Math.PI / 2)), Je = function (t) { function e(e) { return t.call(this, { code: e, units: St.METERS, extent: Ke, global: !0, worldExtent: He, getPointResolution: function (t, e) { return t / De(e[1] / 6378137) } }) || this } return Xe(e, t), e }(je), Qe = [new Je("EPSG:3857"), new Je("EPSG:102100"), new Je("EPSG:102113"), new Je("EPSG:900913"), new Je("http://www.opengis.net/gml/srs/epsg.xml#3857")]; function tr(t, e, r) { var n = t.length, i = r > 1 ? r : 2, o = e; void 0 === o && (o = i > 2 ? t.slice() : new Array(n)); for (var a = 0; a < n; a += i) { o[a] = Ze * t[a] / 180; var s = 6378137 * Math.log(Math.tan(Math.PI * (+t[a + 1] + 90) / 360)); s > $e ? s = $e : s < -$e && (s = -$e), o[a + 1] = s } return o } function er(t, e, r) { var n = t.length, i = r > 1 ? r : 2, o = e; void 0 === o && (o = i > 2 ? t.slice() : new Array(n)); for (var a = 0; a < n; a += i) o[a] = 180 * t[a] / Ze, o[a + 1] = 360 * Math.atan(Math.exp(t[a + 1] / 6378137)) / Math.PI - 90; return o } var rr = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), nr = [-180, -90, 180, 90], ir = 6378137 * Math.PI / 180, or = function (t) { function e(e, r) { return t.call(this, { code: e, units: St.DEGREES, extent: nr, axisOrientation: r, global: !0, metersPerUnit: ir, worldExtent: nr }) || this } return rr(e, t), e }(je), ar = [new or("CRS:84"), new or("EPSG:4326", "neu"), new or("urn:ogc:def:crs:OGC:1.3:CRS84"), new or("urn:ogc:def:crs:OGC:2:84"), new or("http://www.opengis.net/gml/srs/epsg.xml#4326", "neu")], sr = {}; function lr() { sr = {} } function ur(t) { return sr[t] || sr[t.replace(/urn:(x-)?ogc:def:crs:EPSG:(.*:)?(\w+)$/, "EPSG:$3")] || null } function cr(t, e) { sr[t] = e } var hr = {}; function pr() { hr = {} } function fr(t, e, r) { var n = t.getCode(), i = e.getCode(); n in hr || (hr[n] = {}), hr[n][i] = r } function dr(t, e) { var r; return t in hr && e in hr[t] && (r = hr[t][e]), r } function gr(t, e, r) { var n = r || 6371008.8, i = Ye(t[1]), o = Ye(e[1]), a = (o - i) / 2, s = Ye(e[0] - t[0]) / 2, l = Math.sin(a) * Math.sin(a) + Math.sin(s) * Math.sin(s) * Math.cos(i) * Math.cos(o); return 2 * n * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l)) } function yr(t, e) { for (var r = 0, n = 0, i = t.length; n < i - 1; ++n) r += gr(t[n], t[n + 1], e); return r } function mr(t, e) { for (var r = 0, n = t.length, i = t[n - 1][0], o = t[n - 1][1], a = 0; a < n; a++) { var s = t[a][0], l = t[a][1]; r += Ye(s - i) * (2 + Math.sin(Ye(o)) + Math.sin(Ye(l))), i = s, o = l } return r * e * e / 2 } function vr(t, e, r, n) { var i = n || 6371008.8, o = Ye(t[1]), a = Ye(t[0]), s = e / i, l = Math.asin(Math.sin(o) * Math.cos(s) + Math.cos(o) * Math.sin(s) * Math.cos(r)); return [Ve(a + Math.atan2(Math.sin(r) * Math.sin(s) * Math.cos(o), Math.cos(s) - Math.sin(o) * Math.sin(l))), Ve(l)] } function _r(t, e, r) { var n = void 0 !== r ? t.toFixed(r) : "" + t, i = n.indexOf("."); return (i = -1 === i ? n.length : i) > e ? n : new Array(1 + e - i).join("0") + n } function br(t, e) { for (var r = ("" + t).split("."), n = ("" + e).split("."), i = 0; i < Math.max(r.length, n.length); i++) { var o = parseInt(r[i] || "0", 10), a = parseInt(n[i] || "0", 10); if (o > a) return 1; if (a > o) return -1 } return 0 } function xr(t, e) { return t[0] += +e[0], t[1] += +e[1], t } function wr(t, e) { var r = e.getRadius(), n = e.getCenter(), i = n[0], o = n[1], a = t[0] - i, s = t[1] - o; 0 === a && 0 === s && (a = 1); var l = Math.sqrt(a * a + s * s); return [i + r * a / l, o + r * s / l] } function Sr(t, e) { var r, n, i = t[0], o = t[1], a = e[0], s = e[1], l = a[0], u = a[1], c = s[0], h = s[1], p = c - l, f = h - u, d = 0 === p && 0 === f ? 0 : (p * (i - l) + f * (o - u)) / (p * p + f * f || 0); return d <= 0 ? (r = l, n = u) : d >= 1 ? (r = c, n = h) : (r = l + d * p, n = u + d * f), [r, n] } function Er(t, e, r) { var n = We(e + 180, 360) - 180, i = Math.abs(3600 * n), o = r || 0, a = Math.pow(10, o), s = Math.floor(i / 3600), l = Math.floor((i - 3600 * s) / 60), u = i - 3600 * s - 60 * l; return (u = Math.ceil(u * a) / a) >= 60 && (u = 0, l += 1), l >= 60 && (l = 0, s += 1), s + "° " + _r(l, 2) + "′ " + _r(u, 2, o) + "″" + (0 == n ? "" : " " + t.charAt(n < 0 ? 1 : 0)) } function Tr(t, e, r) { return t ? e.replace("{x}", t[0].toFixed(r)).replace("{y}", t[1].toFixed(r)) : "" } function Cr(t, e) { for (var r = !0, n = t.length - 1; n >= 0; --n) if (t[n] != e[n]) { r = !1; break } return r } function Or(t, e) { var r = Math.cos(e), n = Math.sin(e), i = t[0] * r - t[1] * n, o = t[1] * r + t[0] * n; return t[0] = i, t[1] = o, t } function Pr(t, e) { return t[0] *= e, t[1] *= e, t } function Rr(t, e) { var r = t[0] - e[0], n = t[1] - e[1]; return r * r + n * n } function Ir(t, e) { return Math.sqrt(Rr(t, e)) } function Lr(t, e) { return Rr(t, Sr(t, e)) } function Mr(t, e) { return Tr(t, "{x}, {y}", e) } function Fr(t, e) { if (e.canWrapX()) { var r = Pe(e.getExtent()), n = Ar(t, e, r); n && (t[0] -= n * r) } return t } function Ar(t, e, r) { var n = e.getExtent(), i = 0; if (e.canWrapX() && (t[0] < n[0] || t[0] > n[2])) { var o = r || Pe(n); i = Math.floor((t[0] - n[0]) / o) } return i } function kr(t, e, r) { var n; if (void 0 !== e) { for (var i = 0, o = t.length; i < o; ++i) e[i] = t[i]; n = e } else n = t.slice(); return n } function jr(t, e, r) { if (void 0 !== e && t !== e) { for (var n = 0, i = t.length; n < i; ++n) e[n] = t[n]; t = e } return t } function Nr(t) { cr(t.getCode(), t), fr(t, t, kr) } function Dr(t) { t.forEach(Nr) } function Gr(t) { return "string" == typeof t ? ur(t) : t || null } function zr(t, e, r, n) { var i, o = (t = Gr(t)).getPointResolutionFunc(); if (o) { if (i = o(e, r), n && n !== t.getUnits()) (s = t.getMetersPerUnit()) && (i = i * s / wt[n]) } else { var a = t.getUnits(); if (a == St.DEGREES && !n || n == St.DEGREES) i = e; else { var s, l = Zr(t, Gr("EPSG:4326")); if (l === jr && a !== St.DEGREES) i = e * t.getMetersPerUnit(); else { var u = [r[0] - e / 2, r[1], r[0] + e / 2, r[1], r[0], r[1] - e / 2, r[0], r[1] + e / 2]; i = (gr((u = l(u, u, 2)).slice(0, 2), u.slice(2, 4)) + gr(u.slice(4, 6), u.slice(6, 8))) / 2 } void 0 !== (s = n ? wt[n] : t.getMetersPerUnit()) && (i /= s) } } return i } function Ur(t) { Dr(t), t.forEach((function (e) { t.forEach((function (t) { e !== t && fr(e, t, kr) })) })) } function Br(t, e, r, n) { t.forEach((function (t) { e.forEach((function (e) { fr(t, e, r), fr(e, t, n) })) })) } function Vr(t, e) { return t ? "string" == typeof t ? Gr(t) : t : Gr(e) } function Yr(t) { return function (e, r, n) { for (var i = e.length, o = void 0 !== n ? n : 2, a = void 0 !== r ? r : new Array(i), s = 0; s < i; s += o) { var l = t([e[s], e[s + 1]]); a[s] = l[0], a[s + 1] = l[1]; for (var u = o - 1; u >= 2; --u) a[s + u] = e[s + u] } return a } } function Wr(t, e, r, n) { var i = Gr(t), o = Gr(e); fr(i, o, Yr(r)), fr(o, i, Yr(n)) } function qr(t, e) { return Hr(t, "EPSG:4326", void 0 !== e ? e : "EPSG:3857") } function Xr(t, e) { if (t === e) return !0; var r = t.getUnits() === e.getUnits(); return (t.getCode() === e.getCode() || Zr(t, e) === kr) && r } function Zr(t, e) { var r = dr(t.getCode(), e.getCode()); return r || (r = jr), r } function Kr(t, e) { return Zr(Gr(t), Gr(e)) } function Hr(t, e, r) { return Kr(e, r)(t, void 0, t.length) } function $r(t, e, r, n) { return Ae(t, Kr(e, r), void 0, n) } var Jr = null; function Qr(t) { Jr = Gr(t) } function tn() { return Jr } function en(t, e) { return Jr ? Hr(t, e, Jr) : t } function rn(t, e) { return Jr ? Hr(t, Jr, e) : t } function nn(t, e) { return Jr ? $r(t, e, Jr) : t } function on(t, e) { return Jr ? $r(t, Jr, e) : t } function an(t, e, r) { return function (n) { var i, o, a = n[0], s = n[1]; if (t.canWrapX()) { var l = t.getExtent(), u = Pe(l); (o = Ar(n, t, u)) && (a -= o * u), a = Ne(a, l[0], l[2]), s = Ne(s, l[1], l[3]), i = r([a, s]) } else i = r(n); return o && e.canWrapX() && (i[0] += o * Pe(e.getExtent())), i } } function sn() { Ur(Qe), Ur(ar), Br(ar, Qe, tr, er) } function ln(t, e, r, n, i, o) { for (var a = o || [], s = 0, l = e; l < r; l += n) { var u = t[l], c = t[l + 1]; a[s++] = i[0] * u + i[2] * c + i[4], a[s++] = i[1] * u + i[3] * c + i[5] } return o && a.length != s && (a.length = s), a } function un(t, e, r, n, i, o, a) { for (var s = a || [], l = Math.cos(i), u = Math.sin(i), c = o[0], h = o[1], p = 0, f = e; f < r; f += n) { var d = t[f] - c, g = t[f + 1] - h; s[p++] = c + d * l - g * u, s[p++] = h + d * u + g * l; for (var y = f + 2; y < f + n; ++y) s[p++] = t[y] } return a && s.length != p && (s.length = p), s } function cn(t, e, r, n, i, o, a, s) { for (var l = s || [], u = a[0], c = a[1], h = 0, p = e; p < r; p += n) { var f = t[p] - u, d = t[p + 1] - c; l[h++] = u + i * f, l[h++] = c + o * d; for (var g = p + 2; g < p + n; ++g) l[h++] = t[g] } return s && l.length != h && (l.length = h), l } function hn(t, e, r, n, i, o, a) { for (var s = a || [], l = 0, u = e; u < r; u += n) { s[l++] = t[u] + i, s[l++] = t[u + 1] + o; for (var c = u + 2; c < u + n; ++c) s[l++] = t[c] } return a && s.length != l && (s.length = l), s } sn(); var pn = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), fn = [1, 0, 0, 1, 0, 0], dn = function (t) { function e() { var e = t.call(this) || this; return e.extent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0], e.extentRevision_ = -1, e.simplifiedGeometryMaxMinSquaredTolerance = 0, e.simplifiedGeometryRevision = 0, e.simplifyTransformedInternal = C((function (t, e, r) { if (!r) return this.getSimplifiedGeometry(e); var n = this.clone(); return n.applyTransform(r), n.getSimplifiedGeometry(e) })), e } return pn(e, t), e.prototype.simplifyTransformed = function (t, e) { return this.simplifyTransformedInternal(this.getRevision(), t, e) }, e.prototype.clone = function () { return n() }, e.prototype.closestPointXY = function (t, e, r, i) { return n() }, e.prototype.containsXY = function (t, e) { var r = this.getClosestPoint([t, e]); return r[0] === t && r[1] === e }, e.prototype.getClosestPoint = function (t, e) { var r = e || [NaN, NaN]; return this.closestPointXY(t[0], t[1], r, 1 / 0), r }, e.prototype.intersectsCoordinate = function (t) { return this.containsXY(t[0], t[1]) }, e.prototype.computeExtent = function (t) { return n() }, e.prototype.getExtent = function (t) { if (this.extentRevision_ != this.getRevision()) { var e = this.computeExtent(this.extent_); (isNaN(e[0]) || isNaN(e[1])) && oe(e), this.extentRevision_ = this.getRevision() } return Le(this.extent_, t) }, e.prototype.rotate = function (t, e) { n() }, e.prototype.scale = function (t, e, r) { n() }, e.prototype.simplify = function (t) { return this.getSimplifiedGeometry(t * t) }, e.prototype.getSimplifiedGeometry = function (t) { return n() }, e.prototype.getType = function () { return n() }, e.prototype.applyTransform = function (t) { n() }, e.prototype.intersectsExtent = function (t) { return n() }, e.prototype.translate = function (t, e) { n() }, e.prototype.transform = function (t, e) { var r = Gr(t), n = r.getUnits() == St.TILE_PIXELS ? function (t, n, i) { var o = r.getExtent(), a = r.getWorldExtent(), s = Ee(a) / Ee(o); return kt(fn, a[0], a[3], s, -s, 0, 0, 0), ln(t, 0, t.length, i, fn, n), Kr(r, e)(t, n, i) } : Kr(r, e); return this.applyTransform(n), this }, e }(ot), gn = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function yn(t) { var e; return t == yt ? e = 2 : t == mt || t == vt ? e = 3 : t == _t && (e = 4), e } function mn(t, e, r) { var n = t.getFlatCoordinates(); if (n) { var i = t.getStride(); return ln(n, 0, n.length, i, e, r) } return null } var vn = function (t) { function e() { var e = t.call(this) || this; return e.layout = yt, e.stride = 2, e.flatCoordinates = null, e } return gn(e, t), e.prototype.computeExtent = function (t) { return le(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t) }, e.prototype.getCoordinates = function () { return n() }, e.prototype.getFirstCoordinate = function () { return this.flatCoordinates.slice(0, this.stride) }, e.prototype.getFlatCoordinates = function () { return this.flatCoordinates }, e.prototype.getLastCoordinate = function () { return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride) }, e.prototype.getLayout = function () { return this.layout }, e.prototype.getSimplifiedGeometry = function (t) { if (this.simplifiedGeometryRevision !== this.getRevision() && (this.simplifiedGeometryMaxMinSquaredTolerance = 0, this.simplifiedGeometryRevision = this.getRevision()), t < 0 || 0 !== this.simplifiedGeometryMaxMinSquaredTolerance && t <= this.simplifiedGeometryMaxMinSquaredTolerance) return this; var e = this.getSimplifiedGeometryInternal(t); return e.getFlatCoordinates().length < this.flatCoordinates.length ? e : (this.simplifiedGeometryMaxMinSquaredTolerance = t, this) }, e.prototype.getSimplifiedGeometryInternal = function (t) { return this }, e.prototype.getStride = function () { return this.stride }, e.prototype.setFlatCoordinates = function (t, e) { this.stride = yn(t), this.layout = t, this.flatCoordinates = e }, e.prototype.setCoordinates = function (t, e) { n() }, e.prototype.setLayout = function (t, e, r) { var n; if (t) n = yn(t); else { for (var i = 0; i < r; ++i) { if (0 === e.length) return this.layout = yt, void (this.stride = 2); e = e[0] } t = function (t) { var e; 2 == t ? e = yt : 3 == t ? e = mt : 4 == t && (e = _t); return e }(n = e.length) } this.layout = t, this.stride = n }, e.prototype.applyTransform = function (t) { this.flatCoordinates && (t(this.flatCoordinates, this.flatCoordinates, this.stride), this.changed()) }, e.prototype.rotate = function (t, e) { var r = this.getFlatCoordinates(); if (r) { var n = this.getStride(); un(r, 0, r.length, n, t, e, r), this.changed() } }, e.prototype.scale = function (t, e, r) { var n = e; void 0 === n && (n = t); var i = r; i || (i = xe(this.getExtent())); var o = this.getFlatCoordinates(); if (o) { var a = this.getStride(); cn(o, 0, o.length, a, t, n, i, o), this.changed() } }, e.prototype.translate = function (t, e) { var r = this.getFlatCoordinates(); if (r) { var n = this.getStride(); hn(r, 0, r.length, n, t, e, r), this.changed() } }, e }(dn); function _n(t, e, r, n, i, o, a) { var s, l = t[e], u = t[e + 1], c = t[r] - l, h = t[r + 1] - u; if (0 === c && 0 === h) s = e; else { var p = ((i - l) * c + (o - u) * h) / (c * c + h * h); if (p > 1) s = r; else { if (p > 0) { for (var f = 0; f < n; ++f) a[f] = qe(t[e + f], t[r + f], p); return void (a.length = n) } s = e } } for (f = 0; f < n; ++f) a[f] = t[s + f]; a.length = n } function bn(t, e, r, n, i) { var o = t[e], a = t[e + 1]; for (e += n; e < r; e += n) { var s = t[e], l = t[e + 1], u = Ue(o, a, s, l); u > i && (i = u), o = s, a = l } return i } function xn(t, e, r, n, i) { for (var o = 0, a = r.length; o < a; ++o) { var s = r[o]; i = bn(t, e, s, n, i), e = s } return i } function wn(t, e, r, n, i) { for (var o = 0, a = r.length; o < a; ++o) { var s = r[o]; i = xn(t, e, s, n, i), e = s[s.length - 1] } return i } function Sn(t, e, r, n, i, o, a, s, l, u, c) { if (e == r) return u; var h, p; if (0 === i) { if ((p = Ue(a, s, t[e], t[e + 1])) < u) { for (h = 0; h < n; ++h) l[h] = t[e + h]; return l.length = n, p } return u } for (var f = c || [NaN, NaN], d = e + n; d < r;) if (_n(t, d - n, d, n, a, s, f), (p = Ue(a, s, f[0], f[1])) < u) { for (u = p, h = 0; h < n; ++h) l[h] = f[h]; l.length = n, d += n } else d += n * Math.max((Math.sqrt(p) - Math.sqrt(u)) / i | 0, 1); if (o && (_n(t, r - n, e, n, a, s, f), (p = Ue(a, s, f[0], f[1])) < u)) { for (u = p, h = 0; h < n; ++h) l[h] = f[h]; l.length = n } return u } function En(t, e, r, n, i, o, a, s, l, u, c) { for (var h = c || [NaN, NaN], p = 0, f = r.length; p < f; ++p) { var d = r[p]; u = Sn(t, e, d, n, i, o, a, s, l, u, h), e = d } return u } function Tn(t, e, r, n, i, o, a, s, l, u, c) { for (var h = c || [NaN, NaN], p = 0, f = r.length; p < f; ++p) { var d = r[p]; u = En(t, e, d, n, i, o, a, s, l, u, h), e = d[d.length - 1] } return u } function Cn(t, e, r, n) { for (var i = 0, o = r.length; i < o; ++i) t[e++] = r[i]; return e } function On(t, e, r, n) { for (var i = 0, o = r.length; i < o; ++i) for (var a = r[i], s = 0; s < n; ++s) t[e++] = a[s]; return e } function Pn(t, e, r, n, i) { for (var o = i || [], a = 0, s = 0, l = r.length; s < l; ++s) { var u = On(t, e, r[s], n); o[a++] = u, e = u } return o.length = a, o } function Rn(t, e, r, n, i) { for (var o = i || [], a = 0, s = 0, l = r.length; s < l; ++s) { var u = Pn(t, e, r[s], n, o[a]); o[a++] = u, e = u[u.length - 1] } return o.length = a, o } function In(t, e, r, n, i, o, a) { var s = (r - e) / n; if (s < 3) { for (; e < r; e += n) o[a++] = t[e], o[a++] = t[e + 1]; return a } var l = new Array(s); l[0] = 1, l[s - 1] = 1; for (var u = [e, r - n], c = 0; u.length > 0;) { for (var h = u.pop(), p = u.pop(), f = 0, d = t[p], g = t[p + 1], y = t[h], m = t[h + 1], v = p + n; v < h; v += n) { var _ = ze(t[v], t[v + 1], d, g, y, m); _ > f && (c = v, f = _) } f > i && (l[(c - e) / n] = 1, p + n < c && u.push(p, c), c + n < h && u.push(c, h)) } for (v = 0; v < s; ++v) l[v] && (o[a++] = t[e + v * n], o[a++] = t[e + v * n + 1]); return a } function Ln(t, e, r, n, i, o, a, s) { for (var l = 0, u = r.length; l < u; ++l) { var c = r[l]; a = In(t, e, c, n, i, o, a), s.push(a), e = c } return a } function Mn(t, e, r, n, i, o, a) { if (r <= e + n) { for (; e < r; e += n) o[a++] = t[e], o[a++] = t[e + 1]; return a } var s = t[e], l = t[e + 1]; o[a++] = s, o[a++] = l; var u = s, c = l; for (e += n; e < r; e += n) Ue(s, l, u = t[e], c = t[e + 1]) > i && (o[a++] = u, o[a++] = c, s = u, l = c); return u == s && c == l || (o[a++] = u, o[a++] = c), a } function Fn(t, e) { return e * Math.round(t / e) } function An(t, e, r, n, i, o, a) { if (e == r) return a; var s, l, u = Fn(t[e], i), c = Fn(t[e + 1], i); e += n, o[a++] = u, o[a++] = c; do { if (s = Fn(t[e], i), l = Fn(t[e + 1], i), (e += n) == r) return o[a++] = s, o[a++] = l, a } while (s == u && l == c); for (; e < r;) { var h = Fn(t[e], i), p = Fn(t[e + 1], i); if (e += n, h != s || p != l) { var f = s - u, d = l - c, g = h - u, y = p - c; f * y == d * g && (f < 0 && g < f || f == g || f > 0 && g > f) && (d < 0 && y < d || d == y || d > 0 && y > d) ? (s = h, l = p) : (o[a++] = s, o[a++] = l, u = s, c = l, s = h, l = p) } } return o[a++] = s, o[a++] = l, a } function kn(t, e, r, n, i, o, a, s) { for (var l = 0, u = r.length; l < u; ++l) { var c = r[l]; a = An(t, e, c, n, i, o, a), s.push(a), e = c } return a } function jn(t, e, r, n, i, o, a, s) { for (var l = 0, u = r.length; l < u; ++l) { var c = r[l], h = []; a = kn(t, e, c, n, i, o, a, h), s.push(h), e = c[c.length - 1] } return a } function Nn(t, e, r, n, i) { for (var o = void 0 !== i ? i : [], a = 0, s = e; s < r; s += n) o[a++] = t.slice(s, s + n); return o.length = a, o } function Dn(t, e, r, n, i) { for (var o = void 0 !== i ? i : [], a = 0, s = 0, l = r.length; s < l; ++s) { var u = r[s]; o[a++] = Nn(t, e, u, n, o[a]), e = u } return o.length = a, o } function Gn(t, e, r, n, i) { for (var o = void 0 !== i ? i : [], a = 0, s = 0, l = r.length; s < l; ++s) { var u = r[s]; o[a++] = Dn(t, e, u, n, o[a]), e = u[u.length - 1] } return o.length = a, o } function zn(t, e, r, n) { for (var i = 0, o = t[r - n], a = t[r - n + 1]; e < r; e += n) { var s = t[e], l = t[e + 1]; i += a * s - o * l, o = s, a = l } return i / 2 } function Un(t, e, r, n) { for (var i = 0, o = 0, a = r.length; o < a; ++o) { var s = r[o]; i += zn(t, e, s, n), e = s } return i } function Bn(t, e, r, n) { for (var i = 0, o = 0, a = r.length; o < a; ++o) { var s = r[o]; i += Un(t, e, s, n), e = s[s.length - 1] } return i } var Vn = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Yn = function (t) { function e(e, r) { var n = t.call(this) || this; return n.maxDelta_ = -1, n.maxDeltaRevision_ = -1, void 0 === r || Array.isArray(e[0]) ? n.setCoordinates(e, r) : n.setFlatCoordinates(r, e), n } return Vn(e, t), e.prototype.clone = function () { return new e(this.flatCoordinates.slice(), this.layout) }, e.prototype.closestPointXY = function (t, e, r, n) { return n < Jt(this.getExtent(), t, e) ? n : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(bn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Sn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !0, t, e, r, n)) }, e.prototype.getArea = function () { return zn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }, e.prototype.getCoordinates = function () { return Nn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }, e.prototype.getSimplifiedGeometryInternal = function (t) { var r = []; return r.length = In(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, r, 0), new e(r, yt) }, e.prototype.getType = function () { return bt.LINEAR_RING }, e.prototype.intersectsExtent = function (t) { return !1 }, e.prototype.setCoordinates = function (t, e) { this.setLayout(e, t, 1), this.flatCoordinates || (this.flatCoordinates = []), this.flatCoordinates.length = On(this.flatCoordinates, 0, t, this.stride), this.changed() }, e }(vn), Wn = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), qn = function (t) { function e(e, r) { var n = t.call(this) || this; return n.setCoordinates(e, r), n } return Wn(e, t), e.prototype.clone = function () { var t = new e(this.flatCoordinates.slice(), this.layout); return t.applyProperties(this), t }, e.prototype.closestPointXY = function (t, e, r, n) { var i = this.flatCoordinates, o = Ue(t, e, i[0], i[1]); if (o < n) { for (var a = this.stride, s = 0; s < a; ++s) r[s] = i[s]; return r.length = a, o } return n }, e.prototype.getCoordinates = function () { return this.flatCoordinates ? this.flatCoordinates.slice() : [] }, e.prototype.computeExtent = function (t) { return ae(this.flatCoordinates, t) }, e.prototype.getType = function () { return bt.POINT }, e.prototype.intersectsExtent = function (t) { return ee(t, this.flatCoordinates[0], this.flatCoordinates[1]) }, e.prototype.setCoordinates = function (t, e) { this.setLayout(e, t, 0), this.flatCoordinates || (this.flatCoordinates = []), this.flatCoordinates.length = Cn(this.flatCoordinates, 0, t, this.stride), this.changed() }, e }(vn); function Xn(t, e, r, n, i) { return !me(i, (function (i) { return !Zn(t, e, r, n, i[0], i[1]) })) } function Zn(t, e, r, n, i, o) { for (var a = 0, s = t[r - n], l = t[r - n + 1]; e < r; e += n) { var u = t[e], c = t[e + 1]; l <= o ? c > o && (u - s) * (o - l) - (i - s) * (c - l) > 0 && a++ : c <= o && (u - s) * (o - l) - (i - s) * (c - l) < 0 && a--, s = u, l = c } return 0 !== a } function Kn(t, e, r, n, i, o) { if (0 === r.length) return !1; if (!Zn(t, e, r[0], n, i, o)) return !1; for (var a = 1, s = r.length; a < s; ++a) if (Zn(t, r[a - 1], r[a], n, i, o)) return !1; return !0 } function Hn(t, e, r, n, i, o) { if (0 === r.length) return !1; for (var a = 0, s = r.length; a < s; ++a) { var l = r[a]; if (Kn(t, e, l, n, i, o)) return !0; e = l[l.length - 1] } return !1 } function $n(t, e, r, n, i, o, a) { for (var s, l, u, c, h, p, f, g = i[o + 1], y = [], m = 0, v = r.length; m < v; ++m) { var _ = r[m]; for (c = t[_ - n], p = t[_ - n + 1], s = e; s < _; s += n) h = t[s], f = t[s + 1], (g <= p && f <= g || p <= g && g <= f) && (u = (g - p) / (f - p) * (h - c) + c, y.push(u)), c = h, p = f } var b = NaN, x = -1 / 0; for (y.sort(d), c = y[0], s = 1, l = y.length; s < l; ++s) { h = y[s]; var w = Math.abs(h - c); w > x && Kn(t, e, r, n, u = (c + h) / 2, g) && (b = u, x = w), c = h } return isNaN(b) && (b = i[o]), a ? (a.push(b, g, x), a) : [b, g, x] } function Jn(t, e, r, n, i) { for (var o = [], a = 0, s = r.length; a < s; ++a) { var l = r[a]; o = $n(t, e, l, n, i, 2 * a, o), e = l[l.length - 1] } return o } function Qn(t, e, r, n, i) { for (var o, a = [t[e], t[e + 1]], s = []; e + n < r; e += n) { if (s[0] = t[e + n], s[1] = t[e + n + 1], o = i(a, s)) return o; a[0] = s[0], a[1] = s[1] } return !1 } function ti(t, e, r, n, i) { var o = de([1 / 0, 1 / 0, -1 / 0, -1 / 0], t, e, r, n); return !!Re(i, o) && (!!te(i, o) || (o[0] >= i[0] && o[2] <= i[2] || (o[1] >= i[1] && o[3] <= i[3] || Qn(t, e, r, n, (function (t, e) { return Fe(i, t, e) }))))) } function ei(t, e, r, n, i) { for (var o = 0, a = r.length; o < a; ++o) { if (ti(t, e, r[o], n, i)) return !0; e = r[o] } return !1 } function ri(t, e, r, n, i) { return !!ti(t, e, r, n, i) || (!!Zn(t, e, r, n, i[0], i[1]) || (!!Zn(t, e, r, n, i[0], i[3]) || (!!Zn(t, e, r, n, i[2], i[1]) || !!Zn(t, e, r, n, i[2], i[3])))) } function ni(t, e, r, n, i) { if (!ri(t, e, r[0], n, i)) return !1; if (1 === r.length) return !0; for (var o = 1, a = r.length; o < a; ++o) if (Xn(t, r[o - 1], r[o], n, i) && !ti(t, r[o - 1], r[o], n, i)) return !1; return !0 } function ii(t, e, r, n, i) { for (var o = 0, a = r.length; o < a; ++o) { var s = r[o]; if (ni(t, e, s, n, i)) return !0; e = s[s.length - 1] } return !1 } function oi(t, e, r, n) { for (; e < r - n;) { for (var i = 0; i < n; ++i) { var o = t[e + i]; t[e + i] = t[r - n + i], t[r - n + i] = o } e += n, r -= n } } function ai(t, e, r, n) { for (var i = 0, o = t[r - n], a = t[r - n + 1]; e < r; e += n) { var s = t[e], l = t[e + 1]; i += (s - o) * (l + a), o = s, a = l } return 0 === i ? void 0 : i > 0 } function si(t, e, r, n, i) { for (var o = void 0 !== i && i, a = 0, s = r.length; a < s; ++a) { var l = r[a], u = ai(t, e, l, n); if (0 === a) { if (o && u || !o && !u) return !1 } else if (o && !u || !o && u) return !1; e = l } return !0 } function li(t, e, r, n, i) { for (var o = 0, a = r.length; o < a; ++o) { var s = r[o]; if (!si(t, e, s, n, i)) return !1; s.length && (e = s[s.length - 1]) } return !0 } function ui(t, e, r, n, i) { for (var o = void 0 !== i && i, a = 0, s = r.length; a < s; ++a) { var l = r[a], u = ai(t, e, l, n); (0 === a ? o && u || !o && !u : o && !u || !o && u) && oi(t, e, l, n), e = l } return e } function ci(t, e, r, n, i) { for (var o = 0, a = r.length; o < a; ++o) e = ui(t, e, r[o], n, i); return e } var hi = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), pi = function (t) { function e(e, r, n) { var i = t.call(this) || this; return i.ends_ = [], i.flatInteriorPointRevision_ = -1, i.flatInteriorPoint_ = null, i.maxDelta_ = -1, i.maxDeltaRevision_ = -1, i.orientedRevision_ = -1, i.orientedFlatCoordinates_ = null, void 0 !== r && n ? (i.setFlatCoordinates(r, e), i.ends_ = n) : i.setCoordinates(e, r), i } return hi(e, t), e.prototype.appendLinearRing = function (t) { this.flatCoordinates ? v(this.flatCoordinates, t.getFlatCoordinates()) : this.flatCoordinates = t.getFlatCoordinates().slice(), this.ends_.push(this.flatCoordinates.length), this.changed() }, e.prototype.clone = function () { var t = new e(this.flatCoordinates.slice(), this.layout, this.ends_.slice()); return t.applyProperties(this), t }, e.prototype.closestPointXY = function (t, e, r, n) { return n < Jt(this.getExtent(), t, e) ? n : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xn(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), En(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !0, t, e, r, n)) }, e.prototype.containsXY = function (t, e) { return Kn(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, t, e) }, e.prototype.getArea = function () { return Un(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride) }, e.prototype.getCoordinates = function (t) { var e; return void 0 !== t ? ui(e = this.getOrientedFlatCoordinates().slice(), 0, this.ends_, this.stride, t) : e = this.flatCoordinates, Dn(e, 0, this.ends_, this.stride) }, e.prototype.getEnds = function () { return this.ends_ }, e.prototype.getFlatInteriorPoint = function () { if (this.flatInteriorPointRevision_ != this.getRevision()) { var t = xe(this.getExtent()); this.flatInteriorPoint_ = $n(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, t, 0), this.flatInteriorPointRevision_ = this.getRevision() } return this.flatInteriorPoint_ }, e.prototype.getInteriorPoint = function () { return new qn(this.getFlatInteriorPoint(), vt) }, e.prototype.getLinearRingCount = function () { return this.ends_.length }, e.prototype.getLinearRing = function (t) { return t < 0 || this.ends_.length <= t ? null : new Yn(this.flatCoordinates.slice(0 === t ? 0 : this.ends_[t - 1], this.ends_[t]), this.layout) }, e.prototype.getLinearRings = function () { for (var t = this.layout, e = this.flatCoordinates, r = this.ends_, n = [], i = 0, o = 0, a = r.length; o < a; ++o) { var s = r[o], l = new Yn(e.slice(i, s), t); n.push(l), i = s } return n }, e.prototype.getOrientedFlatCoordinates = function () { if (this.orientedRevision_ != this.getRevision()) { var t = this.flatCoordinates; si(t, 0, this.ends_, this.stride) ? this.orientedFlatCoordinates_ = t : (this.orientedFlatCoordinates_ = t.slice(), this.orientedFlatCoordinates_.length = ui(this.orientedFlatCoordinates_, 0, this.ends_, this.stride)), this.orientedRevision_ = this.getRevision() } return this.orientedFlatCoordinates_ }, e.prototype.getSimplifiedGeometryInternal = function (t) { var r = [], n = []; return r.length = kn(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(t), r, 0, n), new e(r, yt, n) }, e.prototype.getType = function () { return bt.POLYGON }, e.prototype.intersectsExtent = function (t) { return ni(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, t) }, e.prototype.setCoordinates = function (t, e) { this.setLayout(e, t, 2), this.flatCoordinates || (this.flatCoordinates = []); var r = Pn(this.flatCoordinates, 0, t, this.stride, this.ends_); this.flatCoordinates.length = 0 === r.length ? 0 : r[r.length - 1], this.changed() }, e }(vn), fi = pi; function di(t, e, r, n) { for (var i = r || 32, o = [], a = 0; a < i; ++a) v(o, vr(t, e, 2 * Math.PI * a / i, n)); return o.push(o[0], o[1]), new pi(o, yt, [o.length]) } function gi(t) { var e = t[0], r = t[1], n = t[2], i = t[3], o = [e, r, e, i, n, i, n, r, e, r]; return new pi(o, yt, [o.length]) } function yi(t, e, r) { for (var n = e || 32, i = t.getStride(), o = t.getLayout(), a = t.getCenter(), s = i * (n + 1), l = new Array(s), u = 0; u < s; u += i) { l[u] = 0, l[u + 1] = 0; for (var c = 2; c < i; c++) l[u + c] = a[c] } var h = [l.length], p = new pi(l, o, h); return mi(p, a, t.getRadius(), r), p } function mi(t, e, r, n) { for (var i = t.getFlatCoordinates(), o = t.getStride(), a = i.length / o - 1, s = n || 0, l = 0; l <= a; ++l) { var u = l * o, c = s + 2 * We(l, a) * Math.PI / a; i[u] = e[0] + r * Math.cos(c), i[u + 1] = e[1] + r * Math.sin(c) } t.changed() } var vi = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), _i = "accuracy", bi = "accuracyGeometry", xi = "altitude", wi = "altitudeAccuracy", Si = "heading", Ei = "position", Ti = "projection", Ci = "speed", Oi = "tracking", Pi = "trackingOptions", Ri = function (t) { function e(e) { var r = t.call(this, A) || this; return r.code = e.code, r.message = e.message, r } return vi(e, t), e }(c), Ii = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.position_ = null, r.transform_ = jr, r.watchId_ = void 0, r.addEventListener(it(Ti), r.handleProjectionChanged_), r.addEventListener(it(Oi), r.handleTrackingChanged_), void 0 !== n.projection && r.setProjection(n.projection), void 0 !== n.trackingOptions && r.setTrackingOptions(n.trackingOptions), r.setTracking(void 0 !== n.tracking && n.tracking), r } return vi(e, t), e.prototype.disposeInternal = function () { this.setTracking(!1), t.prototype.disposeInternal.call(this) }, e.prototype.handleProjectionChanged_ = function () { var t = this.getProjection(); t && (this.transform_ = Zr(Gr("EPSG:4326"), t), this.position_ && this.set(Ei, this.transform_(this.position_))) }, e.prototype.handleTrackingChanged_ = function () { if ("geolocation" in navigator) { var t = this.getTracking(); t && void 0 === this.watchId_ ? this.watchId_ = navigator.geolocation.watchPosition(this.positionChange_.bind(this), this.positionError_.bind(this), this.getTrackingOptions()) : t || void 0 === this.watchId_ || (navigator.geolocation.clearWatch(this.watchId_), this.watchId_ = void 0) } }, e.prototype.positionChange_ = function (t) { var e = t.coords; this.set(_i, e.accuracy), this.set(xi, null === e.altitude ? void 0 : e.altitude), this.set(wi, null === e.altitudeAccuracy ? void 0 : e.altitudeAccuracy), this.set(Si, null === e.heading ? void 0 : Ye(e.heading)), this.position_ ? (this.position_[0] = e.longitude, this.position_[1] = e.latitude) : this.position_ = [e.longitude, e.latitude]; var r = this.transform_(this.position_); this.set(Ei, r), this.set(Ci, null === e.speed ? void 0 : e.speed); var n = di(this.position_, e.accuracy); n.applyTransform(this.transform_), this.set(bi, n), this.changed() }, e.prototype.positionError_ = function (t) { this.dispatchEvent(new Ri(t)) }, e.prototype.getAccuracy = function () { return this.get(_i) }, e.prototype.getAccuracyGeometry = function () { return this.get(bi) || null }, e.prototype.getAltitude = function () { return this.get(xi) }, e.prototype.getAltitudeAccuracy = function () { return this.get(wi) }, e.prototype.getHeading = function () { return this.get(Si) }, e.prototype.getPosition = function () { return this.get(Ei) }, e.prototype.getProjection = function () { return this.get(Ti) }, e.prototype.getSpeed = function () { return this.get(Ci) }, e.prototype.getTracking = function () { return this.get(Oi) }, e.prototype.getTrackingOptions = function () { return this.get(Pi) }, e.prototype.setProjection = function (t) { this.set(Ti, Gr(t)) }, e.prototype.setTracking = function (t) { this.set(Oi, t) }, e.prototype.setTrackingOptions = function (t) { this.set(Pi, t) }, e }(ot), Li = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Mi = function (t) { function e(e, r, n, i) { var o = t.call(this) || this; return o.extent = e, o.pixelRatio_ = n, o.resolution = r, o.state = i, o } return Li(e, t), e.prototype.changed = function () { this.dispatchEvent(F) }, e.prototype.getExtent = function () { return this.extent }, e.prototype.getImage = function () { return n() }, e.prototype.getPixelRatio = function () { return this.pixelRatio_ }, e.prototype.getResolution = function () { return this.resolution }, e.prototype.getState = function () { return this.state }, e.prototype.load = function () { n() }, e }(M), Fi = 0, Ai = 1, ki = 2, ji = 3, Ni = 4, Di = "undefined" != typeof navigator && void 0 !== navigator.userAgent ? navigator.userAgent.toLowerCase() : "", Gi = -1 !== Di.indexOf("firefox"), zi = -1 !== Di.indexOf("safari") && -1 == Di.indexOf("chrom"), Ui = -1 !== Di.indexOf("webkit") && -1 == Di.indexOf("edge"), Bi = -1 !== Di.indexOf("macintosh"), Vi = "undefined" != typeof devicePixelRatio ? devicePixelRatio : 1, Yi = "undefined" != typeof WorkerGlobalScope && "undefined" != typeof OffscreenCanvas && self instanceof WorkerGlobalScope, Wi = "undefined" != typeof Image && Image.prototype.decode, qi = function () { var t = !1; try { var e = Object.defineProperty({}, "passive", { get: function () { t = !0 } }); window.addEventListener("_", null, e), window.removeEventListener("_", null, e) } catch (t) { } return t }(), Xi = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Zi(t, e, r) { var n = t; if (n.src && Wi) { var i = n.decode(), o = !0; return i.then((function () { o && e() })).catch((function (t) { o && ("EncodingError" === t.name && "Invalid image type." === t.message ? e() : r()) })), function () { o = !1 } } var a = [K(n, Y, e), K(n, A, r)]; return function () { a.forEach(H) } } var Ki = function (t) { function e(e, r, n, i, o, a) { var s = t.call(this, e, r, n, Fi) || this; return s.src_ = i, s.image_ = new Image, null !== o && (s.image_.crossOrigin = o), s.unlisten_ = null, s.state = Fi, s.imageLoadFunction_ = a, s } return Xi(e, t), e.prototype.getImage = function () { return this.image_ }, e.prototype.handleImageError_ = function () { this.state = ji, this.unlistenImage_(), this.changed() }, e.prototype.handleImageLoad_ = function () { void 0 === this.resolution && (this.resolution = Ee(this.extent) / this.image_.height), this.state = ki, this.unlistenImage_(), this.changed() }, e.prototype.load = function () { this.state != Fi && this.state != ji || (this.state = Ai, this.changed(), this.imageLoadFunction_(this, this.src_), this.unlisten_ = Zi(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this))) }, e.prototype.setImage = function (t) { this.image_ = t }, e.prototype.unlistenImage_ = function () { this.unlisten_ && (this.unlisten_(), this.unlisten_ = null) }, e }(Mi), Hi = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), $i = function (t) { function e(e, r, n, i, o) { var a = this, s = void 0 !== o ? Fi : ki; return (a = t.call(this, e, r, n, s) || this).loader_ = void 0 !== o ? o : null, a.canvas_ = i, a.error_ = null, a } return Hi(e, t), e.prototype.getError = function () { return this.error_ }, e.prototype.handleLoad_ = function (t) { t ? (this.error_ = t, this.state = ji) : this.state = ki, this.changed() }, e.prototype.load = function () { this.state == Fi && (this.state = Ai, this.changed(), this.loader_(this.handleLoad_.bind(this))) }, e.prototype.getImage = function () { return this.canvas_ }, e }(Mi), Ji = 0, Qi = 1, to = 2, eo = 3, ro = 4; function no(t) { return Math.pow(t, 3) } function io(t) { return 1 - no(1 - t) } function oo(t) { return 3 * t * t - 2 * t * t * t } function ao(t) { return t } var so = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), lo = function (t) { function e(e, r, n) { var i = t.call(this) || this, o = n || {}; return i.tileCoord = e, i.state = r, i.interimTile = null, i.hifi = !0, i.key = "", i.transition_ = void 0 === o.transition ? 250 : o.transition, i.transitionStarts_ = {}, i } return so(e, t), e.prototype.changed = function () { this.dispatchEvent(F) }, e.prototype.release = function () { }, e.prototype.getKey = function () { return this.key + "/" + this.tileCoord }, e.prototype.getInterimTile = function () { if (!this.interimTile) return this; var t = this.interimTile; do { if (t.getState() == to) return this.transition_ = 0, t; t = t.interimTile } while (t); return this }, e.prototype.refreshInterimChain = function () { if (this.interimTile) { var t = this.interimTile, e = this; do { if (t.getState() == to) { t.interimTile = null; break } t.getState() == Qi ? e = t : t.getState() == Ji ? e.interimTile = t.interimTile : e = t, t = e.interimTile } while (t) } }, e.prototype.getTileCoord = function () { return this.tileCoord }, e.prototype.getState = function () { return this.state }, e.prototype.setState = function (t) { if (this.state !== eo && this.state > t) throw new Error("Tile load sequence violation"); this.state = t, this.changed() }, e.prototype.load = function () { n() }, e.prototype.getAlpha = function (t, e) { if (!this.transition_) return 1; var r = this.transitionStarts_[t]; if (r) { if (-1 === r) return 1 } else r = e, this.transitionStarts_[t] = r; var n = e - r + 1e3 / 60; return n >= this.transition_ ? 1 : no(n / this.transition_) }, e.prototype.inTransition = function (t) { return !!this.transition_ && -1 !== this.transitionStarts_[t] }, e.prototype.endTransition = function (t) { this.transition_ && (this.transitionStarts_[t] = -1) }, e }(M); function uo(t, e, r) { var n = r && r.length ? r.shift() : Yi ? new OffscreenCanvas(t || 300, e || 300) : document.createElement("canvas"); return t && (n.width = t), e && (n.height = e), n.getContext("2d") } function co(t) { var e = t.offsetWidth, r = getComputedStyle(t); return e += parseInt(r.marginLeft, 10) + parseInt(r.marginRight, 10) } function ho(t) { var e = t.offsetHeight, r = getComputedStyle(t); return e += parseInt(r.marginTop, 10) + parseInt(r.marginBottom, 10) } function po(t, e) { var r = e.parentNode; r && r.replaceChild(t, e) } function fo(t) { return t && t.parentNode ? t.parentNode.removeChild(t) : null } function go(t) { for (; t.lastChild;) t.removeChild(t.lastChild) } function yo(t, e) { for (var r = t.childNodes, n = 0; ; ++n) { var i = r[n], o = e[n]; if (!i && !o) break; i !== o && (i ? o ? t.insertBefore(o, i) : (t.removeChild(i), --n) : t.appendChild(o)) } } var mo = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); var vo = function (t) { function e(e, r, n, i, o, a) { var s = t.call(this, e, r, a) || this; return s.crossOrigin_ = i, s.src_ = n, s.key = n, s.image_ = new Image, null !== i && (s.image_.crossOrigin = i), s.unlisten_ = null, s.tileLoadFunction_ = o, s } return mo(e, t), e.prototype.getImage = function () { return this.image_ }, e.prototype.handleImageError_ = function () { var t; this.state = eo, this.unlistenImage_(), this.image_ = ((t = uo(1, 1)).fillStyle = "rgba(0,0,0,0)", t.fillRect(0, 0, 1, 1), t.canvas), this.changed() }, e.prototype.handleImageLoad_ = function () { var t = this.image_; t.naturalWidth && t.naturalHeight ? this.state = to : this.state = ro, this.unlistenImage_(), this.changed() }, e.prototype.load = function () { this.state == eo && (this.state = Ji, this.image_ = new Image, null !== this.crossOrigin_ && (this.image_.crossOrigin = this.crossOrigin_)), this.state == Ji && (this.state = Qi, this.changed(), this.tileLoadFunction_(this, this.src_), this.unlisten_ = Zi(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this))) }, e.prototype.unlistenImage_ = function () { this.unlisten_ && (this.unlisten_(), this.unlisten_ = null) }, e }(lo), _o = function () { function t(t, e, r) { this.decay_ = t, this.minVelocity_ = e, this.delay_ = r, this.points_ = [], this.angle_ = 0, this.initialVelocity_ = 0 } return t.prototype.begin = function () { this.points_.length = 0, this.angle_ = 0, this.initialVelocity_ = 0 }, t.prototype.update = function (t, e) { this.points_.push(t, e, Date.now()) }, t.prototype.end = function () { if (this.points_.length < 6) return !1; var t = Date.now() - this.delay_, e = this.points_.length - 3; if (this.points_[e + 2] < t) return !1; for (var r = e - 3; r > 0 && this.points_[r + 2] > t;) r -= 3; var n = this.points_[e + 2] - this.points_[r + 2]; if (n < 1e3 / 60) return !1; var i = this.points_[e] - this.points_[r], o = this.points_[e + 1] - this.points_[r + 1]; return this.angle_ = Math.atan2(o, i), this.initialVelocity_ = Math.sqrt(i * i + o * o) / n, this.initialVelocity_ > this.minVelocity_ }, t.prototype.getDistance = function () { return (this.minVelocity_ - this.initialVelocity_) / this.decay_ }, t.prototype.getAngle = function () { return this.angle_ }, t }(), bo = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i, xo = /^([a-z]*)$|^hsla?\(.*\)$/i; function wo(t) { return "string" == typeof t ? t : Ro(t) } function So(t) { var e = document.createElement("div"); if (e.style.color = t, "" !== e.style.color) { document.body.appendChild(e); var r = getComputedStyle(e).color; return document.body.removeChild(e), r } return "" } var Eo, To, Co = (Eo = {}, To = 0, function (t) { var e; if (Eo.hasOwnProperty(t)) e = Eo[t]; else { if (To >= 1024) { var r = 0; for (var n in Eo) 0 == (3 & r++) && (delete Eo[n], --To) } e = function (t) { var e, r, n, i, o; if (xo.exec(t) && (t = So(t)), bo.exec(t)) { var a = t.length - 1, s = void 0; s = a <= 4 ? 1 : 2; var l = 4 === a || 8 === a; e = parseInt(t.substr(1 + 0 * s, s), 16), r = parseInt(t.substr(1 + 1 * s, s), 16), n = parseInt(t.substr(1 + 2 * s, s), 16), i = l ? parseInt(t.substr(1 + 3 * s, s), 16) : 255, 1 == s && (e = (e << 4) + e, r = (r << 4) + r, n = (n << 4) + n, l && (i = (i << 4) + i)), o = [e, r, n, i / 255] } else 0 == t.indexOf("rgba(") ? Po(o = t.slice(5, -1).split(",").map(Number)) : 0 == t.indexOf("rgb(") ? ((o = t.slice(4, -1).split(",").map(Number)).push(1), Po(o)) : pt(!1, 14); return o }(t), Eo[t] = e, ++To } return e }); function Oo(t) { return Array.isArray(t) ? t : Co(t) } function Po(t) { return t[0] = Ne(t[0] + .5 | 0, 0, 255), t[1] = Ne(t[1] + .5 | 0, 0, 255), t[2] = Ne(t[2] + .5 | 0, 0, 255), t[3] = Ne(t[3], 0, 1), t } function Ro(t) { var e = t[0]; e != (0 | e) && (e = e + .5 | 0); var r = t[1]; r != (0 | r) && (r = r + .5 | 0); var n = t[2]; return n != (0 | n) && (n = n + .5 | 0), "rgba(" + e + "," + r + "," + n + "," + (void 0 === t[3] ? 1 : t[3]) + ")" } function Io(t) { return xo.test(t) && (t = So(t)), bo.test(t) || 0 === t.indexOf("rgba(") || 0 === t.indexOf("rgb(") } var Lo = function () { function t() { this.cache_ = {}, this.cacheSize_ = 0, this.maxCacheSize_ = 32 } return t.prototype.clear = function () { this.cache_ = {}, this.cacheSize_ = 0 }, t.prototype.canExpireCache = function () { return this.cacheSize_ > this.maxCacheSize_ }, t.prototype.expire = function () { if (this.canExpireCache()) { var t = 0; for (var e in this.cache_) { var r = this.cache_[e]; 0 != (3 & t++) || r.hasListener() || (delete this.cache_[e], --this.cacheSize_) } } }, t.prototype.get = function (t, e, r) { var n = Mo(t, e, r); return n in this.cache_ ? this.cache_[n] : null }, t.prototype.set = function (t, e, r, n) { var i = Mo(t, e, r); this.cache_[i] = n, ++this.cacheSize_ }, t.prototype.setSize = function (t) { this.maxCacheSize_ = t, this.expire() }, t }(); function Mo(t, e, r) { return e + ":" + t + ":" + (r ? wo(r) : "null") } var Fo = Lo, Ao = new Lo, ko = "opacity", jo = "visible", No = "extent", Do = "zIndex", Go = "maxResolution", zo = "minResolution", Uo = "maxZoom", Bo = "minZoom", Vo = "source", Yo = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Wo = function (t) { function e(e) { var r = t.call(this) || this, n = O({}, e); return n[ko] = void 0 !== e.opacity ? e.opacity : 1, pt("number" == typeof n[ko], 64), n[jo] = void 0 === e.visible || e.visible, n[Do] = e.zIndex, n[Go] = void 0 !== e.maxResolution ? e.maxResolution : 1 / 0, n[zo] = void 0 !== e.minResolution ? e.minResolution : 0, n[Bo] = void 0 !== e.minZoom ? e.minZoom : -1 / 0, n[Uo] = void 0 !== e.maxZoom ? e.maxZoom : 1 / 0, r.className_ = void 0 !== n.className ? e.className : "ol-layer", delete n.className, r.setProperties(n), r.state_ = null, r } return Yo(e, t), e.prototype.getClassName = function () { return this.className_ }, e.prototype.getLayerState = function (t) { var e = this.state_ || {layer: this, managed: void 0 === t || t}, r = this.getZIndex(); return e.opacity = Ne(Math.round(100 * this.getOpacity()) / 100, 0, 1), e.sourceState = this.getSourceState(), e.visible = this.getVisible(), e.extent = this.getExtent(), e.zIndex = void 0 !== r ? r : !1 === e.managed ? 1 / 0 : 0, e.maxResolution = this.getMaxResolution(), e.minResolution = Math.max(this.getMinResolution(), 0), e.minZoom = this.getMinZoom(), e.maxZoom = this.getMaxZoom(), this.state_ = e, e }, e.prototype.getLayersArray = function (t) { return n() }, e.prototype.getLayerStatesArray = function (t) { return n() }, e.prototype.getExtent = function () { return this.get(No) }, e.prototype.getMaxResolution = function () { return this.get(Go) }, e.prototype.getMinResolution = function () { return this.get(zo) }, e.prototype.getMinZoom = function () { return this.get(Bo) }, e.prototype.getMaxZoom = function () { return this.get(Uo) }, e.prototype.getOpacity = function () { return this.get(ko) }, e.prototype.getSourceState = function () { return n() }, e.prototype.getVisible = function () { return this.get(jo) }, e.prototype.getZIndex = function () { return this.get(Do) }, e.prototype.setExtent = function (t) { this.set(No, t) }, e.prototype.setMaxResolution = function (t) { this.set(Go, t) }, e.prototype.setMinResolution = function (t) { this.set(zo, t) }, e.prototype.setMaxZoom = function (t) { this.set(Uo, t) }, e.prototype.setMinZoom = function (t) { this.set(Bo, t) }, e.prototype.setOpacity = function (t) { pt("number" == typeof t, 64), this.set(ko, t) }, e.prototype.setVisible = function (t) { this.set(jo, t) }, e.prototype.setZIndex = function (t) { this.set(Do, t) }, e.prototype.disposeInternal = function () { this.state_ && (this.state_.layer = null, this.state_ = null), t.prototype.disposeInternal.call(this) }, e }(ot), qo = "prerender", Xo = "postrender", Zo = "precompose", Ko = "postcompose", Ho = "rendercomplete", $o = "undefined", Jo = "loading", Qo = "ready", ta = "error", ea = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function ra(t, e) { if (!t.visible) return !1; var r = e.resolution; if (r < t.minResolution || r >= t.maxResolution) return !1; var n = e.zoom; return n > t.minZoom && n <= t.maxZoom } var na = function (t) { function e(e) { var r = this, n = O({}, e); delete n.source, (r = t.call(this, n) || this).mapPrecomposeKey_ = null, r.mapRenderKey_ = null, r.sourceChangeKey_ = null, r.renderer_ = null, e.render && (r.render = e.render), e.map && r.setMap(e.map), r.addEventListener(it(Vo), r.handleSourcePropertyChange_); var i = e.source ? e.source : null; return r.setSource(i), r } return ea(e, t), e.prototype.getLayersArray = function (t) { var e = t || []; return e.push(this), e }, e.prototype.getLayerStatesArray = function (t) { var e = t || []; return e.push(this.getLayerState()), e }, e.prototype.getSource = function () { return this.get(Vo) || null }, e.prototype.getSourceState = function () { var t = this.getSource(); return t ? t.getState() : $o }, e.prototype.handleSourceChange_ = function () { this.changed() }, e.prototype.handleSourcePropertyChange_ = function () { this.sourceChangeKey_ && (H(this.sourceChangeKey_), this.sourceChangeKey_ = null); var t = this.getSource(); t && (this.sourceChangeKey_ = Z(t, F, this.handleSourceChange_, this)), this.changed() }, e.prototype.getFeatures = function (t) { return this.renderer_.getFeatures(t) }, e.prototype.render = function (t, e) { var r = this.getRenderer(); if (r.prepareFrame(t)) return r.renderFrame(t, e) }, e.prototype.setMap = function (t) { this.mapPrecomposeKey_ && (H(this.mapPrecomposeKey_), this.mapPrecomposeKey_ = null), t || this.changed(), this.mapRenderKey_ && (H(this.mapRenderKey_), this.mapRenderKey_ = null), t && (this.mapPrecomposeKey_ = Z(t, Zo, (function (t) { var e = t.frameState.layerStatesArray, r = this.getLayerState(!1); pt(!e.some((function (t) { return t.layer === r.layer })), 67), e.push(r) }), this), this.mapRenderKey_ = Z(this, F, t.render, t), this.changed()) }, e.prototype.setSource = function (t) { this.set(Vo, t) }, e.prototype.getRenderer = function () { return this.renderer_ || (this.renderer_ = this.createRenderer()), this.renderer_ }, e.prototype.hasRenderer = function () { return !!this.renderer_ }, e.prototype.createRenderer = function () { return null }, e.prototype.disposeInternal = function () { this.setSource(null), t.prototype.disposeInternal.call(this) }, e }(Wo), ia = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function oa(t, e) { Ao.expire() } var aa = function (t) { function e(e) { var r = t.call(this) || this; return r.map_ = e, r } return ia(e, t), e.prototype.dispatchRenderEvent = function (t, e) { n() }, e.prototype.calculateMatrices2D = function (t) { var e = t.viewState, r = t.coordinateToPixelTransform, n = t.pixelToCoordinateTransform; kt(r, t.size[0] / 2, t.size[1] / 2, 1 / e.resolution, -1 / e.resolution, -e.rotation, -e.center[0], -e.center[1]), jt(n, r) }, e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i, o, a, s) { var l, u = e.viewState; function c(t, e, r, n) { return i.call(o, e, t ? r : null, n) } var h = u.projection, p = Fr(t.slice(), h), f = [[0, 0]]; if (h.canWrapX() && n) { var d = Pe(h.getExtent()); f.push([-d, 0], [d, 0]) } for (var g = e.layerStatesArray, y = g.length, m = [], v = [], _ = 0; _ < f.length; _++) for (var b = y - 1; b >= 0; --b) { var x = g[b], w = x.layer; if (w.hasRenderer() && ra(x, u) && a.call(s, w)) { var S = w.getRenderer(), E = w.getSource(); if (S && E) { var T = E.getWrapX() ? p : t, C = c.bind(null, x.managed); v[0] = T[0] + f[_][0], v[1] = T[1] + f[_][1], l = S.forEachFeatureAtCoordinate(v, e, r, C, m) } if (l) return l } } if (0 !== m.length) { var O = 1 / m.length; return m.forEach((function (t, e) { return t.distanceSq += e * O })), m.sort((function (t, e) { return t.distanceSq - e.distanceSq })), m.some((function (t) { return l = t.callback(t.feature, t.layer, t.geometry) })), l } }, e.prototype.forEachLayerAtPixel = function (t, e, r, i, o) { return n() }, e.prototype.hasFeatureAtCoordinate = function (t, e, r, n, i, o) { return void 0 !== this.forEachFeatureAtCoordinate(t, e, r, n, S, this, i, o) }, e.prototype.getMap = function () { return this.map_ }, e.prototype.renderFrame = function (t) { n() }, e.prototype.scheduleExpireIconCache = function (t) { Ao.canExpireCache() && t.postRenderFunctions.push(oa) }, e }(p), sa = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), la = function (t) { function e(e, r, n, i) { var o = t.call(this, e) || this; return o.inversePixelTransform = r, o.frameState = n, o.context = i, o } return sa(e, t), e }(c), ua = new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)", "(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)", "(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)", "(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?", "(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))", "(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))", "?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""), "i"), ca = ["style", "variant", "weight", "size", "lineHeight", "family"], ha = function (t) { var e = t.match(ua); if (!e) return null; for (var r = { lineHeight: "normal", size: "1.2em", style: "normal", weight: "normal", variant: "normal" }, n = 0, i = ca.length; n < i; ++n) { var o = e[n + 1]; void 0 !== o && (r[ca[n]] = o) } return r.families = r.family.split(/,\s?/), r }, pa = [], fa = [0, 0, 0, 0], da = new ot, ga = new M; ga.setSize = function () { console.warn("labelCache is deprecated.") }; var ya, ma, va = null, _a = {}, ba = function () { var t, e, r = ["monospace", "serif"], n = r.length, i = "wmytzilWMYTZIL@#/&?$%10"; function o(t, o, a) { for (var s = !0, l = 0; l < n; ++l) { var u = r[l]; if (e = Sa(t + " " + o + " 32px " + u, i), a != u) { var c = Sa(t + " " + o + " 32px " + a + "," + u, i); s = s && c != e } } return !!s } function a() { for (var e = !0, r = da.getKeys(), n = 0, i = r.length; n < i; ++n) { var a = r[n]; da.get(a) < 100 && (o.apply(this, a.split("\n")) ? (P(_a), va = null, ya = void 0, da.set(a, 100)) : (da.set(a, da.get(a) + 1, !0), e = !1)) } e && (clearInterval(t), t = void 0) } return function (e) { var r = ha(e); if (r) for (var n = r.families, i = 0, s = n.length; i < s; ++i) { var l = n[i], u = r.style + "\n" + r.weight + "\n" + l; void 0 === da.get(u) && (da.set(u, 100, !0), o(r.style, r.weight, l) || (da.set(u, 0, !0), void 0 === t && (t = setInterval(a, 32)))) } } }(), xa = function (t) { var e = _a[t]; if (null == e) { if (Yi) { var r = ha(t), n = wa(t, "Žg"); e = (isNaN(Number(r.lineHeight)) ? 1.2 : Number(r.lineHeight)) * (n.actualBoundingBoxAscent + n.actualBoundingBoxDescent) } else ma || ((ma = document.createElement("div")).innerHTML = "M", ma.style.margin = "0 !important", ma.style.padding = "0 !important", ma.style.position = "absolute !important", ma.style.left = "-99999px !important"), ma.style.font = t, document.body.appendChild(ma), e = ma.offsetHeight, document.body.removeChild(ma); _a[t] = e } return e }; function wa(t, e) { return va || (va = uo(1, 1)), t != ya && (va.font = t, ya = va.font), va.measureText(e) } function Sa(t, e) { return wa(t, e).width } function Ea(t, e, r) { if (e in r) return r[e]; var n = Sa(t, e); return r[e] = n, n } function Ta(t, e, r) { for (var n = e.length, i = 0, o = 0; o < n; ++o) { var a = Sa(t, e[o]); i = Math.max(i, a), r.push(a) } return i } function Ca(t, e, r, n) { 0 !== e && (t.translate(r, n), t.rotate(e), t.translate(-r, -n)) } function Oa(t, e, r, n, i, o, a, s, l, u, c) { t.save(), 1 !== r && (t.globalAlpha *= r), e && t.setTransform.apply(t, e), n.contextInstructions ? (t.translate(l, u), t.scale(c[0], c[1]), function (t, e) { for (var r = t.contextInstructions, n = 0, i = r.length; n < i; n += 2) Array.isArray(r[n + 1]) ? e[r[n]].apply(e, r[n + 1]) : e[r[n]] = r[n + 1] }(n, t)) : c[0] < 0 || c[1] < 0 ? (t.translate(l, u), t.scale(c[0], c[1]), t.drawImage(n, i, o, a, s, 0, 0, a, s)) : t.drawImage(n, i, o, a, s, l, u, a * c[0], s * c[1]), t.restore() } var Pa = null; function Ra(t) { return Yi ? Dt(t) : (Pa || (Pa = uo(1, 1).canvas), Pa.style.transform = Dt(t), Pa.style.transform) } var Ia = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), La = function (t) { function e(e) { var r = t.call(this, e) || this; r.fontChangeListenerKey_ = Z(da, h, e.redrawText.bind(e)), r.element_ = document.createElement("div"); var n = r.element_.style; n.position = "absolute", n.width = "100%", n.height = "100%", n.zIndex = "0", r.element_.className = "ol-unselectable ol-layers"; var i = e.getViewport(); return i.insertBefore(r.element_, i.firstChild || null), r.children_ = [], r.renderedVisible_ = !0, r } return Ia(e, t), e.prototype.dispatchRenderEvent = function (t, e) { var r = this.getMap(); if (r.hasListener(t)) { var n = new la(t, void 0, e); r.dispatchEvent(n) } }, e.prototype.disposeInternal = function () { H(this.fontChangeListenerKey_), this.element_.parentNode.removeChild(this.element_), t.prototype.disposeInternal.call(this) }, e.prototype.renderFrame = function (t) { if (t) { this.calculateMatrices2D(t), this.dispatchRenderEvent(Zo, t); var e = t.layerStatesArray.sort((function (t, e) { return t.zIndex - e.zIndex })), r = t.viewState; this.children_.length = 0; for (var n = [], i = null, o = 0, a = e.length; o < a; ++o) { var s = e[o]; if (t.layerIndex = o, ra(s, r) && (s.sourceState == Qo || s.sourceState == $o)) { var l = s.layer, u = l.render(t, i); u && (u !== i && (this.children_.push(u), i = u), "getDeclutter" in l && n.push(l)) } } for (o = n.length - 1; o >= 0; --o) n[o].renderDeclutter(t); yo(this.element_, this.children_), this.dispatchRenderEvent(Ko, t), this.renderedVisible_ || (this.element_.style.display = "", this.renderedVisible_ = !0), this.scheduleExpireIconCache(t) } else this.renderedVisible_ && (this.element_.style.display = "none", this.renderedVisible_ = !1) }, e.prototype.forEachLayerAtPixel = function (t, e, r, n, i) { for (var o = e.viewState, a = e.layerStatesArray, s = a.length - 1; s >= 0; --s) { var l = a[s], u = l.layer; if (u.hasRenderer() && ra(l, o) && i(u)) { var c = u.getRenderer().getDataAtPixel(t, e, r); if (c) { var h = n(u, c); if (h) return h } } } }, e }(aa), Ma = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Fa = "layers", Aa = function (t) { function e(e) { var r = this, n = e || {}, i = O({}, n); delete i.layers; var o = n.layers; return (r = t.call(this, i) || this).layersListenerKeys_ = [], r.listenerKeys_ = {}, r.addEventListener(it(Fa), r.handleLayersChanged_), o ? Array.isArray(o) ? o = new ht(o.slice(), {unique: !0}) : pt("function" == typeof o.getArray, 43) : o = new ht(void 0, {unique: !0}), r.setLayers(o), r } return Ma(e, t), e.prototype.handleLayerChange_ = function () { this.changed() }, e.prototype.handleLayersChanged_ = function () { this.layersListenerKeys_.forEach(H), this.layersListenerKeys_.length = 0; var t = this.getLayers(); for (var e in this.layersListenerKeys_.push(Z(t, at, this.handleLayersAdd_, this), Z(t, st, this.handleLayersRemove_, this)), this.listenerKeys_) this.listenerKeys_[e].forEach(H); P(this.listenerKeys_); for (var r = t.getArray(), n = 0, i = r.length; n < i; n++) { var a = r[n]; this.listenerKeys_[o(a)] = [Z(a, h, this.handleLayerChange_, this), Z(a, F, this.handleLayerChange_, this)] } this.changed() }, e.prototype.handleLayersAdd_ = function (t) { var e = t.element; this.listenerKeys_[o(e)] = [Z(e, h, this.handleLayerChange_, this), Z(e, F, this.handleLayerChange_, this)], this.changed() }, e.prototype.handleLayersRemove_ = function (t) { var e = o(t.element); this.listenerKeys_[e].forEach(H), delete this.listenerKeys_[e], this.changed() }, e.prototype.getLayers = function () { return this.get(Fa) }, e.prototype.setLayers = function (t) { this.set(Fa, t) }, e.prototype.getLayersArray = function (t) { var e = void 0 !== t ? t : []; return this.getLayers().forEach((function (t) { t.getLayersArray(e) })), e }, e.prototype.getLayerStatesArray = function (t) { var e = void 0 !== t ? t : [], r = e.length; this.getLayers().forEach((function (t) { t.getLayerStatesArray(e) })); for (var n = this.getLayerState(), i = r, o = e.length; i < o; i++) { var a = e[i]; a.opacity *= n.opacity, a.visible = a.visible && n.visible, a.maxResolution = Math.min(a.maxResolution, n.maxResolution), a.minResolution = Math.max(a.minResolution, n.minResolution), a.minZoom = Math.max(a.minZoom, n.minZoom), a.maxZoom = Math.min(a.maxZoom, n.maxZoom), void 0 !== n.extent && (void 0 !== a.extent ? a.extent = Te(a.extent, n.extent) : a.extent = n.extent) } return e }, e.prototype.getSourceState = function () { return Qo }, e }(Wo), ka = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ja = function (t) { function e(e, r, n) { var i = t.call(this, e) || this; return i.map = r, i.frameState = void 0 !== n ? n : null, i } return ka(e, t), e }(c), Na = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Da = function (t) { function e(e, r, n, i, o) { var a = t.call(this, e, r, o) || this; return a.originalEvent = n, a.pixel_ = null, a.coordinate_ = null, a.dragging = void 0 !== i && i, a } return Na(e, t), Object.defineProperty(e.prototype, "pixel", { get: function () { return this.pixel_ || (this.pixel_ = this.map.getEventPixel(this.originalEvent)), this.pixel_ }, set: function (t) { this.pixel_ = t }, enumerable: !1, configurable: !0 }), Object.defineProperty(e.prototype, "coordinate", { get: function () { return this.coordinate_ || (this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel)), this.coordinate_ }, set: function (t) { this.coordinate_ = t }, enumerable: !1, configurable: !0 }), e.prototype.preventDefault = function () { t.prototype.preventDefault.call(this), this.originalEvent.preventDefault() }, e.prototype.stopPropagation = function () { t.prototype.stopPropagation.call(this), this.originalEvent.stopPropagation() }, e }(ja), Ga = { SINGLECLICK: "singleclick", CLICK: N, DBLCLICK: D, POINTERDRAG: "pointerdrag", POINTERMOVE: "pointermove", POINTERDOWN: "pointerdown", POINTERUP: "pointerup", POINTEROVER: "pointerover", POINTEROUT: "pointerout", POINTERENTER: "pointerenter", POINTERLEAVE: "pointerleave", POINTERCANCEL: "pointercancel" }, za = "pointermove", Ua = "pointerdown", Ba = "pointerup", Va = "pointerout", Ya = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Wa = function (t) { function e(e, r) { var n = t.call(this, e) || this; n.map_ = e, n.clickTimeoutId_, n.emulateClicks_ = !1, n.dragging_ = !1, n.dragListenerKeys_ = [], n.moveTolerance_ = r ? r * Vi : Vi, n.down_ = null; var i = n.map_.getViewport(); return n.activePointers_ = 0, n.trackedTouches_ = {}, n.element_ = i, n.pointerdownListenerKey_ = Z(i, Ua, n.handlePointerDown_, n), n.originalPointerMoveEvent_, n.relayedListenerKey_ = Z(i, za, n.relayEvent_, n), n.boundHandleTouchMove_ = n.handleTouchMove_.bind(n), n.element_.addEventListener(q, n.boundHandleTouchMove_, !!qi && {passive: !1}), n } return Ya(e, t), e.prototype.emulateClick_ = function (t) { var e = new Da(Ga.CLICK, this.map_, t); this.dispatchEvent(e), void 0 !== this.clickTimeoutId_ ? (clearTimeout(this.clickTimeoutId_), this.clickTimeoutId_ = void 0, e = new Da(Ga.DBLCLICK, this.map_, t), this.dispatchEvent(e)) : this.clickTimeoutId_ = setTimeout(function () { this.clickTimeoutId_ = void 0; var e = new Da(Ga.SINGLECLICK, this.map_, t); this.dispatchEvent(e) }.bind(this), 250) }, e.prototype.updateActivePointers_ = function (t) { var e = t; e.type == Ga.POINTERUP || e.type == Ga.POINTERCANCEL ? delete this.trackedTouches_[e.pointerId] : e.type == Ga.POINTERDOWN && (this.trackedTouches_[e.pointerId] = !0), this.activePointers_ = Object.keys(this.trackedTouches_).length }, e.prototype.handlePointerUp_ = function (t) { this.updateActivePointers_(t); var e = new Da(Ga.POINTERUP, this.map_, t); this.dispatchEvent(e), this.emulateClicks_ && !e.propagationStopped && !this.dragging_ && this.isMouseActionButton_(t) && this.emulateClick_(this.down_), 0 === this.activePointers_ && (this.dragListenerKeys_.forEach(H), this.dragListenerKeys_.length = 0, this.dragging_ = !1, this.down_ = null) }, e.prototype.isMouseActionButton_ = function (t) { return 0 === t.button }, e.prototype.handlePointerDown_ = function (t) { this.emulateClicks_ = 0 === this.activePointers_, this.updateActivePointers_(t); var e = new Da(Ga.POINTERDOWN, this.map_, t); if (this.dispatchEvent(e), this.down_ = t, 0 === this.dragListenerKeys_.length) { var r = this.map_.getOwnerDocument(); this.dragListenerKeys_.push(Z(r, Ga.POINTERMOVE, this.handlePointerMove_, this), Z(r, Ga.POINTERUP, this.handlePointerUp_, this), Z(this.element_, Ga.POINTERCANCEL, this.handlePointerUp_, this)), this.element_.getRootNode && this.element_.getRootNode() !== r && this.dragListenerKeys_.push(Z(this.element_.getRootNode(), Ga.POINTERUP, this.handlePointerUp_, this)) } }, e.prototype.handlePointerMove_ = function (t) { if (this.isMoving_(t)) { this.dragging_ = !0; var e = new Da(Ga.POINTERDRAG, this.map_, t, this.dragging_); this.dispatchEvent(e) } }, e.prototype.relayEvent_ = function (t) { this.originalPointerMoveEvent_ = t; var e = !(!this.down_ || !this.isMoving_(t)); this.dispatchEvent(new Da(t.type, this.map_, t, e)) }, e.prototype.handleTouchMove_ = function (t) { this.originalPointerMoveEvent_ && !this.originalPointerMoveEvent_.defaultPrevented || t.preventDefault() }, e.prototype.isMoving_ = function (t) { return this.dragging_ || Math.abs(t.clientX - this.down_.clientX) > this.moveTolerance_ || Math.abs(t.clientY - this.down_.clientY) > this.moveTolerance_ }, e.prototype.disposeInternal = function () { this.relayedListenerKey_ && (H(this.relayedListenerKey_), this.relayedListenerKey_ = null), this.element_.removeEventListener(q, this.boundHandleTouchMove_), this.pointerdownListenerKey_ && (H(this.pointerdownListenerKey_), this.pointerdownListenerKey_ = null), this.dragListenerKeys_.forEach(H), this.dragListenerKeys_.length = 0, this.element_ = null, t.prototype.disposeInternal.call(this) }, e }(M), qa = "postrender", Xa = "movestart", Za = "moveend", Ka = "layergroup", Ha = "size", $a = "target", Ja = "view", Qa = function () { function t(t, e) { this.priorityFunction_ = t, this.keyFunction_ = e, this.elements_ = [], this.priorities_ = [], this.queuedElements_ = {} } return t.prototype.clear = function () { this.elements_.length = 0, this.priorities_.length = 0, P(this.queuedElements_) }, t.prototype.dequeue = function () { var t = this.elements_, e = this.priorities_, r = t[0]; 1 == t.length ? (t.length = 0, e.length = 0) : (t[0] = t.pop(), e[0] = e.pop(), this.siftUp_(0)); var n = this.keyFunction_(r); return delete this.queuedElements_[n], r }, t.prototype.enqueue = function (t) { pt(!(this.keyFunction_(t) in this.queuedElements_), 31); var e = this.priorityFunction_(t); return e != 1 / 0 && (this.elements_.push(t), this.priorities_.push(e), this.queuedElements_[this.keyFunction_(t)] = !0, this.siftDown_(0, this.elements_.length - 1), !0) }, t.prototype.getCount = function () { return this.elements_.length }, t.prototype.getLeftChildIndex_ = function (t) { return 2 * t + 1 }, t.prototype.getRightChildIndex_ = function (t) { return 2 * t + 2 }, t.prototype.getParentIndex_ = function (t) { return t - 1 >> 1 }, t.prototype.heapify_ = function () { var t; for (t = (this.elements_.length >> 1) - 1; t >= 0; t--) this.siftUp_(t) }, t.prototype.isEmpty = function () { return 0 === this.elements_.length }, t.prototype.isKeyQueued = function (t) { return t in this.queuedElements_ }, t.prototype.isQueued = function (t) { return this.isKeyQueued(this.keyFunction_(t)) }, t.prototype.siftUp_ = function (t) { for (var e = this.elements_, r = this.priorities_, n = e.length, i = e[t], o = r[t], a = t; t < n >> 1;) { var s = this.getLeftChildIndex_(t), l = this.getRightChildIndex_(t), u = l < n && r[l] < r[s] ? l : s; e[t] = e[u], r[t] = r[u], t = u } e[t] = i, r[t] = o, this.siftDown_(a, t) }, t.prototype.siftDown_ = function (t, e) { for (var r = this.elements_, n = this.priorities_, i = r[e], o = n[e]; e > t;) { var a = this.getParentIndex_(e); if (!(n[a] > o)) break; r[e] = r[a], n[e] = n[a], e = a } r[e] = i, n[e] = o }, t.prototype.reprioritize = function () { var t, e, r, n = this.priorityFunction_, i = this.elements_, o = this.priorities_, a = 0, s = i.length; for (e = 0; e < s; ++e) (r = n(t = i[e])) == 1 / 0 ? delete this.queuedElements_[this.keyFunction_(t)] : (o[a] = r, i[a++] = t); i.length = a, o.length = a, this.heapify_() }, t }(), ts = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), es = function (t) { function e(e, r) { var n = t.call(this, (function (t) { return e.apply(null, t) }), (function (t) { return t[0].getKey() })) || this; return n.boundHandleTileChange_ = n.handleTileChange.bind(n), n.tileChangeCallback_ = r, n.tilesLoading_ = 0, n.tilesLoadingKeys_ = {}, n } return ts(e, t), e.prototype.enqueue = function (e) { var r = t.prototype.enqueue.call(this, e); r && e[0].addEventListener(F, this.boundHandleTileChange_); return r }, e.prototype.getTilesLoading = function () { return this.tilesLoading_ }, e.prototype.handleTileChange = function (t) { var e = t.target, r = e.getState(); if (e.hifi && r === to || r === eo || r === ro) { e.removeEventListener(F, this.boundHandleTileChange_); var n = e.getKey(); n in this.tilesLoadingKeys_ && (delete this.tilesLoadingKeys_[n], --this.tilesLoading_), this.tileChangeCallback_() } }, e.prototype.loadMoreTiles = function (t, e) { for (var r, n, i = 0; this.tilesLoading_ < t && i < e && this.getCount() > 0;) n = (r = this.dequeue()[0]).getKey(), r.getState() !== Ji || n in this.tilesLoadingKeys_ || (this.tilesLoadingKeys_[n] = !0, ++this.tilesLoading_, ++i, r.load()) }, e }(Qa); function rs(t, e, r, n, i) { if (!t || !(r in t.wantedTiles)) return 1 / 0; if (!t.wantedTiles[r][e.getKey()]) return 1 / 0; var o = t.viewState.center, a = n[0] - o[0], s = n[1] - o[1]; return 65536 * Math.log(i) + Math.sqrt(a * a + s * s) / i } var ns = 0, is = 1, os = "center", as = "resolution", ss = "rotation"; function ls(t, e, r) { return function (n, i, o, a, s) { if (n) { var l = e ? 0 : o[0] * i, u = e ? 0 : o[1] * i, c = s ? s[0] : 0, h = s ? s[1] : 0, p = t[0] + l / 2 + c, f = t[2] - l / 2 + c, d = t[1] + u / 2 + h, g = t[3] - u / 2 + h; p > f && (f = p = (f + p) / 2), d > g && (g = d = (g + d) / 2); var y = Ne(n[0], p, f), m = Ne(n[1], d, g), v = 30 * i; return a && r && (y += -v * Math.log(1 + Math.max(0, p - n[0]) / v) + v * Math.log(1 + Math.max(0, n[0] - f) / v), m += -v * Math.log(1 + Math.max(0, d - n[1]) / v) + v * Math.log(1 + Math.max(0, n[1] - g) / v)), [y, m] } } } function us(t) { return t } function cs(t, e, r, n) { var i = Pe(e) / r[0], o = Ee(e) / r[1]; return n ? Math.min(t, Math.max(i, o)) : Math.min(t, Math.min(i, o)) } function hs(t, e, r) { var n = Math.min(t, e); return n *= Math.log(1 + 50 * Math.max(0, t / e - 1)) / 50 + 1, r && (n = Math.max(n, r), n /= Math.log(1 + 50 * Math.max(0, r / t - 1)) / 50 + 1), Ne(n, r / 2, 2 * e) } function ps(t, e, r, n) { return function (i, o, a, s) { if (void 0 !== i) { var l = t[0], u = t[t.length - 1], c = r ? cs(l, r, a, n) : l; if (s) return void 0 === e || e ? hs(i, c, u) : Ne(i, u, c); var h = Math.min(c, i), p = Math.floor(y(t, h, o)); return t[p] > c && p < t.length - 1 ? t[p + 1] : t[p] } } } function fs(t, e, r, n, i, o) { return function (a, s, l, u) { if (void 0 !== a) { var c = i ? cs(e, i, l, o) : e, h = void 0 !== r ? r : 0; if (u) return void 0 === n || n ? hs(a, c, h) : Ne(a, h, c); var p = Math.ceil(Math.log(e / c) / Math.log(t) - 1e-9), f = -s * (.5 - 1e-9) + .5, d = Math.min(c, a), g = Math.floor(Math.log(e / d) / Math.log(t) + f), y = Math.max(p, g); return Ne(e / Math.pow(t, y), h, c) } } } function ds(t, e, r, n, i) { return function (o, a, s, l) { if (void 0 !== o) { var u = n ? cs(t, n, s, i) : t; return (void 0 === r || r) && l ? hs(o, u, e) : Ne(o, e, u) } } } function gs(t) { return void 0 !== t ? 0 : void 0 } function ys(t) { return void 0 !== t ? t : void 0 } function ms(t) { var e = 2 * Math.PI / t; return function (t, r) { return r ? t : void 0 !== t ? t = Math.floor(t / e + .5) * e : void 0 } } function vs(t) { var e = t || Ye(5); return function (t, r) { return r ? t : void 0 !== t ? Math.abs(t) <= e ? 0 : t : void 0 } } var _s = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function bs(t, e) { setTimeout((function () { t(e) }), 0) } function xs(t) { if (void 0 !== t.extent) { var e = void 0 === t.smoothExtentConstraint || t.smoothExtentConstraint; return ls(t.extent, t.constrainOnlyCenter, e) } var r = Vr(t.projection, "EPSG:3857"); if (!0 !== t.multiWorld && r.isGlobal()) { var n = r.getExtent().slice(); return n[0] = -1 / 0, n[2] = 1 / 0, ls(n, !1, !1) } return us } function ws(t) { var e, r, n, i = void 0 !== t.minZoom ? t.minZoom : 0, o = void 0 !== t.maxZoom ? t.maxZoom : 28, a = void 0 !== t.zoomFactor ? t.zoomFactor : 2, s = void 0 !== t.multiWorld && t.multiWorld, l = void 0 === t.smoothResolutionConstraint || t.smoothResolutionConstraint, u = void 0 !== t.showFullExtent && t.showFullExtent, c = Vr(t.projection, "EPSG:3857"), h = c.getExtent(), p = t.constrainOnlyCenter, f = t.extent; if (s || f || !c.isGlobal() || (p = !1, f = h), void 0 !== t.resolutions) { var d = t.resolutions; r = d[i], n = void 0 !== d[o] ? d[o] : d[d.length - 1], e = t.constrainResolution ? ps(d, l, !p && f, u) : ds(r, n, l, !p && f, u) } else { var g = (h ? Math.max(Pe(h), Ee(h)) : 360 * wt[St.DEGREES] / c.getMetersPerUnit()) / 256 / Math.pow(2, 0), y = g / Math.pow(2, 28); void 0 !== (r = t.maxResolution) ? i = 0 : r = g / Math.pow(a, i), void 0 === (n = t.minResolution) && (n = void 0 !== t.maxZoom ? void 0 !== t.maxResolution ? r / Math.pow(a, o) : g / Math.pow(a, o) : y), o = i + Math.floor(Math.log(r / n) / Math.log(a)), n = r / Math.pow(a, o - i), e = t.constrainResolution ? fs(a, r, n, l, !p && f, u) : ds(r, n, l, !p && f, u) } return {constraint: e, maxResolution: r, minResolution: n, minZoom: i, zoomFactor: a} } function Ss(t) { if (void 0 === t.enableRotation || t.enableRotation) { var e = t.constrainRotation; return void 0 === e || !0 === e ? vs() : !1 === e ? ys : "number" == typeof e ? ms(e) : ys } return gs } function Es(t) { return !(t.sourceCenter && t.targetCenter && !Cr(t.sourceCenter, t.targetCenter)) && (t.sourceResolution === t.targetResolution && t.sourceRotation === t.targetRotation) } function Ts(t, e, r, n, i) { var o = Math.cos(-i), a = Math.sin(-i), s = t[0] * o - t[1] * a, l = t[1] * o + t[0] * a; return [(s += (e[0] / 2 - r[0]) * n) * o - (l += (r[1] - e[1] / 2) * n) * (a = -a), l * o + s * a] } var Cs = function (t) { function e(e) { var r = t.call(this) || this, n = O({}, e); return r.hints_ = [0, 0], r.animations_ = [], r.updateAnimationKey_, r.projection_ = Vr(n.projection, "EPSG:3857"), r.viewportSize_ = [100, 100], r.targetCenter_ = null, r.targetResolution_, r.targetRotation_, r.cancelAnchor_ = void 0, n.center && (n.center = rn(n.center, r.projection_)), n.extent && (n.extent = on(n.extent, r.projection_)), r.applyOptions_(n), r } return _s(e, t), e.prototype.applyOptions_ = function (t) { var e = ws(t); this.maxResolution_ = e.maxResolution, this.minResolution_ = e.minResolution, this.zoomFactor_ = e.zoomFactor, this.resolutions_ = t.resolutions, this.padding = t.padding, this.minZoom_ = e.minZoom; var r = xs(t), n = e.constraint, i = Ss(t); this.constraints_ = { center: r, resolution: n, rotation: i }, this.setRotation(void 0 !== t.rotation ? t.rotation : 0), this.setCenterInternal(void 0 !== t.center ? t.center : null), void 0 !== t.resolution ? this.setResolution(t.resolution) : void 0 !== t.zoom && this.setZoom(t.zoom), this.setProperties({}), this.options_ = t }, e.prototype.getUpdatedOptions_ = function (t) { var e = O({}, this.options_); return void 0 !== e.resolution ? e.resolution = this.getResolution() : e.zoom = this.getZoom(), e.center = this.getCenterInternal(), e.rotation = this.getRotation(), O({}, e, t) }, e.prototype.animate = function (t) { this.isDef() && !this.getAnimating() && this.resolveConstraints(0); for (var e = new Array(arguments.length), r = 0; r < e.length; ++r) { var n = arguments[r]; n.center && ((n = O({}, n)).center = rn(n.center, this.getProjection())), n.anchor && ((n = O({}, n)).anchor = rn(n.anchor, this.getProjection())), e[r] = n } this.animateInternal.apply(this, e) }, e.prototype.animateInternal = function (t) { var e, r = arguments.length; if (r > 1 && "function" == typeof arguments[r - 1] && (e = arguments[r - 1], --r), !this.isDef()) { var n = arguments[r - 1]; return n.center && this.setCenterInternal(n.center), void 0 !== n.zoom && this.setZoom(n.zoom), void 0 !== n.rotation && this.setRotation(n.rotation), void (e && bs(e, !0)) } for (var i = Date.now(), o = this.targetCenter_.slice(), a = this.targetResolution_, s = this.targetRotation_, l = [], u = 0; u < r; ++u) { var c = arguments[u], h = { start: i, complete: !1, anchor: c.anchor, duration: void 0 !== c.duration ? c.duration : 1e3, easing: c.easing || oo, callback: e }; if (c.center && (h.sourceCenter = o, h.targetCenter = c.center.slice(), o = h.targetCenter), void 0 !== c.zoom ? (h.sourceResolution = a, h.targetResolution = this.getResolutionForZoom(c.zoom), a = h.targetResolution) : c.resolution && (h.sourceResolution = a, h.targetResolution = c.resolution, a = h.targetResolution), void 0 !== c.rotation) { h.sourceRotation = s; var p = We(c.rotation - s + Math.PI, 2 * Math.PI) - Math.PI; h.targetRotation = s + p, s = h.targetRotation } Es(h) ? h.complete = !0 : i += h.duration, l.push(h) } this.animations_.push(l), this.setHint(ns, 1), this.updateAnimations_() }, e.prototype.getAnimating = function () { return this.hints_[ns] > 0 }, e.prototype.getInteracting = function () { return this.hints_[is] > 0 }, e.prototype.cancelAnimations = function () { var t; this.setHint(ns, -this.hints_[ns]); for (var e = 0, r = this.animations_.length; e < r; ++e) { var n = this.animations_[e]; if (n[0].callback && bs(n[0].callback, !1), !t) for (var i = 0, o = n.length; i < o; ++i) { var a = n[i]; if (!a.complete) { t = a.anchor; break } } } this.animations_.length = 0, this.cancelAnchor_ = t }, e.prototype.updateAnimations_ = function () { if (void 0 !== this.updateAnimationKey_ && (cancelAnimationFrame(this.updateAnimationKey_), this.updateAnimationKey_ = void 0), this.getAnimating()) { for (var t = Date.now(), e = !1, r = this.animations_.length - 1; r >= 0; --r) { for (var n = this.animations_[r], i = !0, o = 0, a = n.length; o < a; ++o) { var s = n[o]; if (!s.complete) { var l = t - s.start, u = s.duration > 0 ? l / s.duration : 1; u >= 1 ? (s.complete = !0, u = 1) : i = !1; var c = s.easing(u); if (s.sourceCenter) { var h = s.sourceCenter[0], p = s.sourceCenter[1], f = h + c * (s.targetCenter[0] - h), d = p + c * (s.targetCenter[1] - p); this.targetCenter_ = [f, d] } if (s.sourceResolution && s.targetResolution) { var g = 1 === c ? s.targetResolution : s.sourceResolution + c * (s.targetResolution - s.sourceResolution); if (s.anchor) { var y = this.getViewportSize_(this.getRotation()), m = this.constraints_.resolution(g, 0, y, !0); this.targetCenter_ = this.calculateCenterZoom(m, s.anchor) } this.targetResolution_ = g, this.applyTargetState_(!0) } if (void 0 !== s.sourceRotation && void 0 !== s.targetRotation) { var v = 1 === c ? We(s.targetRotation + Math.PI, 2 * Math.PI) - Math.PI : s.sourceRotation + c * (s.targetRotation - s.sourceRotation); if (s.anchor) { var _ = this.constraints_.rotation(v, !0); this.targetCenter_ = this.calculateCenterRotate(_, s.anchor) } this.targetRotation_ = v } if (this.applyTargetState_(!0), e = !0, !s.complete) break } } if (i) { this.animations_[r] = null, this.setHint(ns, -1); var b = n[0].callback; b && bs(b, !0) } } this.animations_ = this.animations_.filter(Boolean), e && void 0 === this.updateAnimationKey_ && (this.updateAnimationKey_ = requestAnimationFrame(this.updateAnimations_.bind(this))) } }, e.prototype.calculateCenterRotate = function (t, e) { var r, n = this.getCenterInternal(); return void 0 !== n && (Or(r = [n[0] - e[0], n[1] - e[1]], t - this.getRotation()), xr(r, e)), r }, e.prototype.calculateCenterZoom = function (t, e) { var r, n = this.getCenterInternal(), i = this.getResolution(); void 0 !== n && void 0 !== i && (r = [e[0] - t * (e[0] - n[0]) / i, e[1] - t * (e[1] - n[1]) / i]); return r }, e.prototype.getViewportSize_ = function (t) { var e = this.viewportSize_; if (t) { var r = e[0], n = e[1]; return [Math.abs(r * Math.cos(t)) + Math.abs(n * Math.sin(t)), Math.abs(r * Math.sin(t)) + Math.abs(n * Math.cos(t))] } return e }, e.prototype.setViewportSize = function (t) { this.viewportSize_ = Array.isArray(t) ? t.slice() : [100, 100], this.getAnimating() || this.resolveConstraints(0) }, e.prototype.getCenter = function () { var t = this.getCenterInternal(); return t ? en(t, this.getProjection()) : t }, e.prototype.getCenterInternal = function () { return this.get(os) }, e.prototype.getConstraints = function () { return this.constraints_ }, e.prototype.getConstrainResolution = function () { return this.options_.constrainResolution }, e.prototype.getHints = function (t) { return void 0 !== t ? (t[0] = this.hints_[0], t[1] = this.hints_[1], t) : this.hints_.slice() }, e.prototype.calculateExtent = function (t) { return nn(this.calculateExtentInternal(t), this.getProjection()) }, e.prototype.calculateExtentInternal = function (t) { var e = t || this.getViewportSize_(), r = this.getCenterInternal(); pt(r, 1); var n = this.getResolution(); pt(void 0 !== n, 2); var i = this.getRotation(); return pt(void 0 !== i, 3), Se(r, n, i, e) }, e.prototype.getMaxResolution = function () { return this.maxResolution_ }, e.prototype.getMinResolution = function () { return this.minResolution_ }, e.prototype.getMaxZoom = function () { return this.getZoomForResolution(this.minResolution_) }, e.prototype.setMaxZoom = function (t) { this.applyOptions_(this.getUpdatedOptions_({maxZoom: t})) }, e.prototype.getMinZoom = function () { return this.getZoomForResolution(this.maxResolution_) }, e.prototype.setMinZoom = function (t) { this.applyOptions_(this.getUpdatedOptions_({minZoom: t})) }, e.prototype.setConstrainResolution = function (t) { this.applyOptions_(this.getUpdatedOptions_({constrainResolution: t})) }, e.prototype.getProjection = function () { return this.projection_ }, e.prototype.getResolution = function () { return this.get(as) }, e.prototype.getResolutions = function () { return this.resolutions_ }, e.prototype.getResolutionForExtent = function (t, e) { return this.getResolutionForExtentInternal(on(t, this.getProjection()), e) }, e.prototype.getResolutionForExtentInternal = function (t, e) { var r = e || this.getViewportSize_(), n = Pe(t) / r[0], i = Ee(t) / r[1]; return Math.max(n, i) }, e.prototype.getResolutionForValueFunction = function (t) { var e = t || 2, r = this.getConstrainedResolution(this.maxResolution_), n = this.minResolution_, i = Math.log(r / n) / Math.log(e); return function (t) { return r / Math.pow(e, t * i) } }, e.prototype.getRotation = function () { return this.get(ss) }, e.prototype.getValueForResolutionFunction = function (t) { var e = Math.log(t || 2), r = this.getConstrainedResolution(this.maxResolution_), n = this.minResolution_, i = Math.log(r / n) / e; return function (t) { return Math.log(r / t) / e / i } }, e.prototype.getViewportSizeMinusPadding_ = function (t) { var e = this.getViewportSize_(t), r = this.padding; return r && (e = [e[0] - r[1] - r[3], e[1] - r[0] - r[2]]), e }, e.prototype.getState = function () { var t = this.getProjection(), e = this.getResolution(), r = this.getRotation(), n = this.getCenterInternal(), i = this.padding; if (i) { var o = this.getViewportSizeMinusPadding_(); n = Ts(n, this.getViewportSize_(), [o[0] / 2 + i[3], o[1] / 2 + i[0]], e, r) } return { center: n.slice(0), projection: void 0 !== t ? t : null, resolution: e, rotation: r, zoom: this.getZoom() } }, e.prototype.getZoom = function () { var t, e = this.getResolution(); return void 0 !== e && (t = this.getZoomForResolution(e)), t }, e.prototype.getZoomForResolution = function (t) { var e, r, n = this.minZoom_ || 0; if (this.resolutions_) { var i = y(this.resolutions_, t, 1); n = i, e = this.resolutions_[i], r = i == this.resolutions_.length - 1 ? 2 : e / this.resolutions_[i + 1] } else e = this.maxResolution_, r = this.zoomFactor_; return n + Math.log(e / t) / Math.log(r) }, e.prototype.getResolutionForZoom = function (t) { if (this.resolutions_) { if (this.resolutions_.length <= 1) return 0; var e = Ne(Math.floor(t), 0, this.resolutions_.length - 2), r = this.resolutions_[e] / this.resolutions_[e + 1]; return this.resolutions_[e] / Math.pow(r, Ne(t - e, 0, 1)) } return this.maxResolution_ / Math.pow(this.zoomFactor_, t - this.minZoom_) }, e.prototype.fit = function (t, e) { var r; if (pt(Array.isArray(t) || "function" == typeof t.getSimplifiedGeometry, 24), Array.isArray(t)) pt(!Ie(t), 25), r = gi(n = on(t, this.getProjection())); else if (t.getType() === bt.CIRCLE) { var n; (r = gi(n = on(t.getExtent(), this.getProjection()))).rotate(this.getRotation(), xe(n)) } else { var i = tn(); r = i ? t.clone().transform(i, this.getProjection()) : t } this.fitInternal(r, e) }, e.prototype.fitInternal = function (t, e) { var r = e || {}, n = r.size; n || (n = this.getViewportSizeMinusPadding_()); var i, o = void 0 !== r.padding ? r.padding : [0, 0, 0, 0], a = void 0 !== r.nearest && r.nearest; i = void 0 !== r.minResolution ? r.minResolution : void 0 !== r.maxZoom ? this.getResolutionForZoom(r.maxZoom) : 0; for (var s = t.getFlatCoordinates(), l = this.getRotation(), u = Math.cos(-l), c = Math.sin(-l), h = 1 / 0, p = 1 / 0, f = -1 / 0, d = -1 / 0, g = t.getStride(), y = 0, m = s.length; y < m; y += g) { var v = s[y] * u - s[y + 1] * c, _ = s[y] * c + s[y + 1] * u; h = Math.min(h, v), p = Math.min(p, _), f = Math.max(f, v), d = Math.max(d, _) } var b = this.getResolutionForExtentInternal([h, p, f, d], [n[0] - o[1] - o[3], n[1] - o[0] - o[2]]); b = isNaN(b) ? i : Math.max(b, i), b = this.getConstrainedResolution(b, a ? 0 : 1), c = -c; var x = (h + f) / 2, w = (p + d) / 2, S = (x += (o[1] - o[3]) / 2 * b) * u - (w += (o[0] - o[2]) / 2 * b) * c, E = w * u + x * c, C = this.getConstrainedCenter([S, E], b), O = r.callback ? r.callback : T; void 0 !== r.duration ? this.animateInternal({ resolution: b, center: C, duration: r.duration, easing: r.easing }, O) : (this.targetResolution_ = b, this.targetCenter_ = C, this.applyTargetState_(!1, !0), bs(O, !0)) }, e.prototype.centerOn = function (t, e, r) { this.centerOnInternal(rn(t, this.getProjection()), e, r) }, e.prototype.centerOnInternal = function (t, e, r) { this.setCenterInternal(Ts(t, e, r, this.getResolution(), this.getRotation())) }, e.prototype.calculateCenterShift = function (t, e, r, n) { var i, o = this.padding; if (o && t) { var a = this.getViewportSizeMinusPadding_(-r), s = Ts(t, n, [a[0] / 2 + o[3], a[1] / 2 + o[0]], e, r); i = [t[0] - s[0], t[1] - s[1]] } return i }, e.prototype.isDef = function () { return !!this.getCenterInternal() && void 0 !== this.getResolution() }, e.prototype.adjustCenter = function (t) { var e = en(this.targetCenter_, this.getProjection()); this.setCenter([e[0] + t[0], e[1] + t[1]]) }, e.prototype.adjustCenterInternal = function (t) { var e = this.targetCenter_; this.setCenterInternal([e[0] + t[0], e[1] + t[1]]) }, e.prototype.adjustResolution = function (t, e) { var r = e && rn(e, this.getProjection()); this.adjustResolutionInternal(t, r) }, e.prototype.adjustResolutionInternal = function (t, e) { var r = this.getAnimating() || this.getInteracting(), n = this.getViewportSize_(this.getRotation()), i = this.constraints_.resolution(this.targetResolution_ * t, 0, n, r); e && (this.targetCenter_ = this.calculateCenterZoom(i, e)), this.targetResolution_ *= t, this.applyTargetState_() }, e.prototype.adjustZoom = function (t, e) { this.adjustResolution(Math.pow(this.zoomFactor_, -t), e) }, e.prototype.adjustRotation = function (t, e) { e && (e = rn(e, this.getProjection())), this.adjustRotationInternal(t, e) }, e.prototype.adjustRotationInternal = function (t, e) { var r = this.getAnimating() || this.getInteracting(), n = this.constraints_.rotation(this.targetRotation_ + t, r); e && (this.targetCenter_ = this.calculateCenterRotate(n, e)), this.targetRotation_ += t, this.applyTargetState_() }, e.prototype.setCenter = function (t) { this.setCenterInternal(rn(t, this.getProjection())) }, e.prototype.setCenterInternal = function (t) { this.targetCenter_ = t, this.applyTargetState_() }, e.prototype.setHint = function (t, e) { return this.hints_[t] += e, this.changed(), this.hints_[t] }, e.prototype.setResolution = function (t) { this.targetResolution_ = t, this.applyTargetState_() }, e.prototype.setRotation = function (t) { this.targetRotation_ = t, this.applyTargetState_() }, e.prototype.setZoom = function (t) { this.setResolution(this.getResolutionForZoom(t)) }, e.prototype.applyTargetState_ = function (t, e) { var r = this.getAnimating() || this.getInteracting() || e, n = this.constraints_.rotation(this.targetRotation_, r), i = this.getViewportSize_(n), o = this.constraints_.resolution(this.targetResolution_, 0, i, r), a = this.constraints_.center(this.targetCenter_, o, i, r, this.calculateCenterShift(this.targetCenter_, o, n, i)); this.get(ss) !== n && this.set(ss, n), this.get(as) !== o && this.set(as, o), this.get(os) && Cr(this.get(os), a) || this.set(os, a), this.getAnimating() && !t && this.cancelAnimations(), this.cancelAnchor_ = void 0 }, e.prototype.resolveConstraints = function (t, e, r) { var n = void 0 !== t ? t : 200, i = e || 0, o = this.constraints_.rotation(this.targetRotation_), a = this.getViewportSize_(o), s = this.constraints_.resolution(this.targetResolution_, i, a), l = this.constraints_.center(this.targetCenter_, s, a, !1, this.calculateCenterShift(this.targetCenter_, s, o, a)); if (0 === n && !this.cancelAnchor_) return this.targetResolution_ = s, this.targetRotation_ = o, this.targetCenter_ = l, void this.applyTargetState_(); var u = r || (0 === n ? this.cancelAnchor_ : void 0); this.cancelAnchor_ = void 0, this.getResolution() === s && this.getRotation() === o && this.getCenterInternal() && Cr(this.getCenterInternal(), l) || (this.getAnimating() && this.cancelAnimations(), this.animateInternal({ rotation: o, center: l, resolution: s, duration: n, easing: io, anchor: u })) }, e.prototype.beginInteraction = function () { this.resolveConstraints(0), this.setHint(is, 1) }, e.prototype.endInteraction = function (t, e, r) { var n = r && rn(r, this.getProjection()); this.endInteractionInternal(t, e, n) }, e.prototype.endInteractionInternal = function (t, e, r) { this.setHint(is, -1), this.resolveConstraints(t, e, r) }, e.prototype.getConstrainedCenter = function (t, e) { var r = this.getViewportSize_(this.getRotation()); return this.constraints_.center(t, e || this.getResolution(), r) }, e.prototype.getConstrainedZoom = function (t, e) { var r = this.getResolutionForZoom(t); return this.getZoomForResolution(this.getConstrainedResolution(r, e)) }, e.prototype.getConstrainedResolution = function (t, e) { var r = e || 0, n = this.getViewportSize_(this.getRotation()); return this.constraints_.resolution(t, r, n) }, e }(ot); function Os(t, e, r) { return void 0 === r && (r = [0, 0]), r[0] = t[0] + 2 * e, r[1] = t[1] + 2 * e, r } function Ps(t) { return t[0] > 0 && t[1] > 0 } function Rs(t, e, r) { return void 0 === r && (r = [0, 0]), r[0] = t[0] * e + .5 | 0, r[1] = t[1] * e + .5 | 0, r } function Is(t, e) { return Array.isArray(t) ? t : (void 0 === e ? e = [t, t] : (e[0] = t, e[1] = t), e) } var Ls = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); var Ms = function (t) { function e(e) { var r = t.call(this) || this, n = function (t) { var e = null; void 0 !== t.keyboardEventTarget && (e = "string" == typeof t.keyboardEventTarget ? document.getElementById(t.keyboardEventTarget) : t.keyboardEventTarget); var r, n, i, o = {}, a = t.layers && "function" == typeof t.layers.getLayers ? t.layers : new Aa({layers: t.layers}); o[Ka] = a, o[$a] = t.target, o[Ja] = void 0 !== t.view ? t.view : new Cs, void 0 !== t.controls && (Array.isArray(t.controls) ? r = new ht(t.controls.slice()) : (pt("function" == typeof t.controls.getArray, 47), r = t.controls)); void 0 !== t.interactions && (Array.isArray(t.interactions) ? n = new ht(t.interactions.slice()) : (pt("function" == typeof t.interactions.getArray, 48), n = t.interactions)); void 0 !== t.overlays ? Array.isArray(t.overlays) ? i = new ht(t.overlays.slice()) : (pt("function" == typeof t.overlays.getArray, 49), i = t.overlays) : i = new ht; return {controls: r, interactions: n, keyboardEventTarget: e, overlays: i, values: o} }(e); return r.boundHandleBrowserEvent_ = r.handleBrowserEvent.bind(r), r.maxTilesLoading_ = void 0 !== e.maxTilesLoading ? e.maxTilesLoading : 16, r.pixelRatio_ = void 0 !== e.pixelRatio ? e.pixelRatio : Vi, r.postRenderTimeoutHandle_, r.animationDelayKey_, r.animationDelay_ = function () { this.animationDelayKey_ = void 0, this.renderFrame_(Date.now()) }.bind(r), r.coordinateToPixelTransform_ = [1, 0, 0, 1, 0, 0], r.pixelToCoordinateTransform_ = [1, 0, 0, 1, 0, 0], r.frameIndex_ = 0, r.frameState_ = null, r.previousExtent_ = null, r.viewPropertyListenerKey_ = null, r.viewChangeListenerKey_ = null, r.layerGroupPropertyListenerKeys_ = null, r.viewport_ = document.createElement("div"), r.viewport_.className = "ol-viewport" + ("ontouchstart" in window ? " ol-touch" : ""), r.viewport_.style.position = "relative", r.viewport_.style.overflow = "hidden", r.viewport_.style.width = "100%", r.viewport_.style.height = "100%", r.overlayContainer_ = document.createElement("div"), r.overlayContainer_.style.position = "absolute", r.overlayContainer_.style.zIndex = "0", r.overlayContainer_.style.width = "100%", r.overlayContainer_.style.height = "100%", r.overlayContainer_.style.pointerEvents = "none", r.overlayContainer_.className = "ol-overlaycontainer", r.viewport_.appendChild(r.overlayContainer_), r.overlayContainerStopEvent_ = document.createElement("div"), r.overlayContainerStopEvent_.style.position = "absolute", r.overlayContainerStopEvent_.style.zIndex = "0", r.overlayContainerStopEvent_.style.width = "100%", r.overlayContainerStopEvent_.style.height = "100%", r.overlayContainerStopEvent_.style.pointerEvents = "none", r.overlayContainerStopEvent_.className = "ol-overlaycontainer-stopevent", r.viewport_.appendChild(r.overlayContainerStopEvent_), r.mapBrowserEventHandler_ = null, r.moveTolerance_ = e.moveTolerance, r.keyboardEventTarget_ = n.keyboardEventTarget, r.keyHandlerKeys_ = null, r.controls = n.controls || new ht, r.interactions = n.interactions || new ht, r.overlays_ = n.overlays, r.overlayIdIndex_ = {}, r.renderer_ = null, r.handleResize_, r.postRenderFunctions_ = [], r.tileQueue_ = new es(r.getTilePriority.bind(r), r.handleTileChange_.bind(r)), r.addEventListener(it(Ka), r.handleLayerGroupChanged_), r.addEventListener(it(Ja), r.handleViewChanged_), r.addEventListener(it(Ha), r.handleSizeChanged_), r.addEventListener(it($a), r.handleTargetChanged_), r.setProperties(n.values), r.controls.forEach(function (t) { t.setMap(this) }.bind(r)), r.controls.addEventListener(at, function (t) { t.element.setMap(this) }.bind(r)), r.controls.addEventListener(st, function (t) { t.element.setMap(null) }.bind(r)), r.interactions.forEach(function (t) { t.setMap(this) }.bind(r)), r.interactions.addEventListener(at, function (t) { t.element.setMap(this) }.bind(r)), r.interactions.addEventListener(st, function (t) { t.element.setMap(null) }.bind(r)), r.overlays_.forEach(r.addOverlayInternal_.bind(r)), r.overlays_.addEventListener(at, function (t) { this.addOverlayInternal_(t.element) }.bind(r)), r.overlays_.addEventListener(st, function (t) { var e = t.element.getId(); void 0 !== e && delete this.overlayIdIndex_[e.toString()], t.element.setMap(null) }.bind(r)), r } return Ls(e, t), e.prototype.createRenderer = function () { throw new Error("Use a map type that has a createRenderer method") }, e.prototype.addControl = function (t) { this.getControls().push(t) }, e.prototype.addInteraction = function (t) { this.getInteractions().push(t) }, e.prototype.addLayer = function (t) { this.getLayerGroup().getLayers().push(t) }, e.prototype.addOverlay = function (t) { this.getOverlays().push(t) }, e.prototype.addOverlayInternal_ = function (t) { var e = t.getId(); void 0 !== e && (this.overlayIdIndex_[e.toString()] = t), t.setMap(this) }, e.prototype.disposeInternal = function () { this.setTarget(null), t.prototype.disposeInternal.call(this) }, e.prototype.forEachFeatureAtPixel = function (t, e, r) { if (this.frameState_) { var n = this.getCoordinateFromPixelInternal(t), i = void 0 !== (r = void 0 !== r ? r : {}).hitTolerance ? r.hitTolerance : 0, o = void 0 !== r.layerFilter ? r.layerFilter : S, a = !1 !== r.checkWrapped; return this.renderer_.forEachFeatureAtCoordinate(n, this.frameState_, i, a, e, null, o, null) } }, e.prototype.getFeaturesAtPixel = function (t, e) { var r = []; return this.forEachFeatureAtPixel(t, (function (t) { r.push(t) }), e), r }, e.prototype.forEachLayerAtPixel = function (t, e, r) { if (this.frameState_) { var n = r || {}, i = void 0 !== n.hitTolerance ? n.hitTolerance : 0, o = n.layerFilter || S; return this.renderer_.forEachLayerAtPixel(t, this.frameState_, i, e, o) } }, e.prototype.hasFeatureAtPixel = function (t, e) { if (!this.frameState_) return !1; var r = this.getCoordinateFromPixelInternal(t), n = void 0 !== (e = void 0 !== e ? e : {}).layerFilter ? e.layerFilter : S, i = void 0 !== e.hitTolerance ? e.hitTolerance : 0, o = !1 !== e.checkWrapped; return this.renderer_.hasFeatureAtCoordinate(r, this.frameState_, i, o, n, null) }, e.prototype.getEventCoordinate = function (t) { return this.getCoordinateFromPixel(this.getEventPixel(t)) }, e.prototype.getEventCoordinateInternal = function (t) { return this.getCoordinateFromPixelInternal(this.getEventPixel(t)) }, e.prototype.getEventPixel = function (t) { var e = this.viewport_.getBoundingClientRect(), r = "changedTouches" in t ? t.changedTouches[0] : t; return [r.clientX - e.left, r.clientY - e.top] }, e.prototype.getTarget = function () { return this.get($a) }, e.prototype.getTargetElement = function () { var t = this.getTarget(); return void 0 !== t ? "string" == typeof t ? document.getElementById(t) : t : null }, e.prototype.getCoordinateFromPixel = function (t) { return en(this.getCoordinateFromPixelInternal(t), this.getView().getProjection()) }, e.prototype.getCoordinateFromPixelInternal = function (t) { var e = this.frameState_; return e ? It(e.pixelToCoordinateTransform, t.slice()) : null }, e.prototype.getControls = function () { return this.controls }, e.prototype.getOverlays = function () { return this.overlays_ }, e.prototype.getOverlayById = function (t) { var e = this.overlayIdIndex_[t.toString()]; return void 0 !== e ? e : null }, e.prototype.getInteractions = function () { return this.interactions }, e.prototype.getLayerGroup = function () { return this.get(Ka) }, e.prototype.getLayers = function () { return this.getLayerGroup().getLayers() }, e.prototype.getLoading = function () { for (var t = this.getLayerGroup().getLayerStatesArray(), e = 0, r = t.length; e < r; ++e) { var n = t[e].layer.getSource(); if (n && n.loading) return !0 } return !1 }, e.prototype.getPixelFromCoordinate = function (t) { var e = rn(t, this.getView().getProjection()); return this.getPixelFromCoordinateInternal(e) }, e.prototype.getPixelFromCoordinateInternal = function (t) { var e = this.frameState_; return e ? It(e.coordinateToPixelTransform, t.slice(0, 2)) : null }, e.prototype.getRenderer = function () { return this.renderer_ }, e.prototype.getSize = function () { return this.get(Ha) }, e.prototype.getView = function () { return this.get(Ja) }, e.prototype.getViewport = function () { return this.viewport_ }, e.prototype.getOverlayContainer = function () { return this.overlayContainer_ }, e.prototype.getOverlayContainerStopEvent = function () { return this.overlayContainerStopEvent_ }, e.prototype.getOwnerDocument = function () { return this.getTargetElement() ? this.getTargetElement().ownerDocument : document }, e.prototype.getTilePriority = function (t, e, r, n) { return rs(this.frameState_, t, e, r, n) }, e.prototype.handleBrowserEvent = function (t, e) { var r = e || t.type, n = new Da(r, this, t); this.handleMapBrowserEvent(n) }, e.prototype.handleMapBrowserEvent = function (t) { if (this.frameState_) { var e = t.originalEvent, r = e.type; if (r === Ua || r === X || r === B) { var n = this.getOwnerDocument(), i = this.viewport_.getRootNode ? this.viewport_.getRootNode() : n, o = "host" in i ? i.elementFromPoint(e.clientX, e.clientY) : e.target; if (this.overlayContainerStopEvent_.contains(o) || !(i === n ? n.documentElement : i).contains(o)) return } if (t.frameState = this.frameState_, !1 !== this.dispatchEvent(t)) for (var a = this.getInteractions().getArray().slice(), s = a.length - 1; s >= 0; s--) { var l = a[s]; if (l.getMap() === this && l.getActive() && this.getTargetElement()) if (!l.handleEvent(t) || t.propagationStopped) break } } }, e.prototype.handlePostRender = function () { var t = this.frameState_, e = this.tileQueue_; if (!e.isEmpty()) { var r = this.maxTilesLoading_, n = r; if (t) { var i = t.viewHints; if (i[ns] || i[is]) { var o = !Wi && Date.now() - t.time > 8; r = o ? 0 : 8, n = o ? 0 : 2 } } e.getTilesLoading() < r && (e.reprioritize(), e.loadMoreTiles(r, n)) } !t || !this.hasListener(Ho) || t.animate || this.tileQueue_.getTilesLoading() || this.getLoading() || this.renderer_.dispatchRenderEvent(Ho, t); for (var a = this.postRenderFunctions_, s = 0, l = a.length; s < l; ++s) a[s](this, t); a.length = 0 }, e.prototype.handleSizeChanged_ = function () { this.getView() && !this.getView().getAnimating() && this.getView().resolveConstraints(0), this.render() }, e.prototype.handleTargetChanged_ = function () { var t; if (this.getTarget() && (t = this.getTargetElement()), this.mapBrowserEventHandler_) { for (var e = 0, r = this.keyHandlerKeys_.length; e < r; ++e) H(this.keyHandlerKeys_[e]); this.keyHandlerKeys_ = null, this.viewport_.removeEventListener(j, this.boundHandleBrowserEvent_), this.viewport_.removeEventListener(X, this.boundHandleBrowserEvent_), void 0 !== this.handleResize_ && (removeEventListener(W, this.handleResize_, !1), this.handleResize_ = void 0), this.mapBrowserEventHandler_.dispose(), this.mapBrowserEventHandler_ = null, fo(this.viewport_) } if (t) { for (var n in t.appendChild(this.viewport_), this.renderer_ || (this.renderer_ = this.createRenderer()), this.mapBrowserEventHandler_ = new Wa(this, this.moveTolerance_), Ga) this.mapBrowserEventHandler_.addEventListener(Ga[n], this.handleMapBrowserEvent.bind(this)); this.viewport_.addEventListener(j, this.boundHandleBrowserEvent_, !1), this.viewport_.addEventListener(X, this.boundHandleBrowserEvent_, !!qi && {passive: !1}); var i = this.keyboardEventTarget_ ? this.keyboardEventTarget_ : t; this.keyHandlerKeys_ = [Z(i, B, this.handleBrowserEvent, this), Z(i, V, this.handleBrowserEvent, this)], this.handleResize_ || (this.handleResize_ = this.updateSize.bind(this), window.addEventListener(W, this.handleResize_, !1)) } else this.renderer_ && (clearTimeout(this.postRenderTimeoutHandle_), this.postRenderTimeoutHandle_ = void 0, this.postRenderFunctions_.length = 0, this.renderer_.dispose(), this.renderer_ = null), this.animationDelayKey_ && (cancelAnimationFrame(this.animationDelayKey_), this.animationDelayKey_ = void 0); this.updateSize() }, e.prototype.handleTileChange_ = function () { this.render() }, e.prototype.handleViewPropertyChanged_ = function () { this.render() }, e.prototype.handleViewChanged_ = function () { this.viewPropertyListenerKey_ && (H(this.viewPropertyListenerKey_), this.viewPropertyListenerKey_ = null), this.viewChangeListenerKey_ && (H(this.viewChangeListenerKey_), this.viewChangeListenerKey_ = null); var t = this.getView(); t && (this.updateViewportSize_(), this.viewPropertyListenerKey_ = Z(t, h, this.handleViewPropertyChanged_, this), this.viewChangeListenerKey_ = Z(t, F, this.handleViewPropertyChanged_, this), t.resolveConstraints(0)), this.render() }, e.prototype.handleLayerGroupChanged_ = function () { this.layerGroupPropertyListenerKeys_ && (this.layerGroupPropertyListenerKeys_.forEach(H), this.layerGroupPropertyListenerKeys_ = null); var t = this.getLayerGroup(); t && (this.layerGroupPropertyListenerKeys_ = [Z(t, h, this.render, this), Z(t, F, this.render, this)]), this.render() }, e.prototype.isRendered = function () { return !!this.frameState_ }, e.prototype.renderSync = function () { this.animationDelayKey_ && cancelAnimationFrame(this.animationDelayKey_), this.animationDelay_() }, e.prototype.redrawText = function () { for (var t = this.getLayerGroup().getLayerStatesArray(), e = 0, r = t.length; e < r; ++e) { var n = t[e].layer; n.hasRenderer() && n.getRenderer().handleFontsChanged() } }, e.prototype.render = function () { this.renderer_ && void 0 === this.animationDelayKey_ && (this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_)) }, e.prototype.removeControl = function (t) { return this.getControls().remove(t) }, e.prototype.removeInteraction = function (t) { return this.getInteractions().remove(t) }, e.prototype.removeLayer = function (t) { return this.getLayerGroup().getLayers().remove(t) }, e.prototype.removeOverlay = function (t) { return this.getOverlays().remove(t) }, e.prototype.renderFrame_ = function (t) { var e = this, r = this.getSize(), n = this.getView(), i = this.frameState_, o = null; if (void 0 !== r && Ps(r) && n && n.isDef()) { var a = n.getHints(this.frameState_ ? this.frameState_.viewHints : void 0), s = n.getState(); o = { animate: !1, coordinateToPixelTransform: this.coordinateToPixelTransform_, declutterTree: null, extent: Se(s.center, s.resolution, s.rotation, r), index: this.frameIndex_++, layerIndex: 0, layerStatesArray: this.getLayerGroup().getLayerStatesArray(), pixelRatio: this.pixelRatio_, pixelToCoordinateTransform: this.pixelToCoordinateTransform_, postRenderFunctions: [], size: r, tileQueue: this.tileQueue_, time: t, usedTiles: {}, viewState: s, viewHints: a, wantedTiles: {} } } if (this.frameState_ = o, this.renderer_.renderFrame(o), o) { if (o.animate && this.render(), Array.prototype.push.apply(this.postRenderFunctions_, o.postRenderFunctions), i) (!this.previousExtent_ || !Ie(this.previousExtent_) && !ue(o.extent, this.previousExtent_)) && (this.dispatchEvent(new ja(Xa, this, i)), this.previousExtent_ = oe(this.previousExtent_)); this.previousExtent_ && !o.viewHints[ns] && !o.viewHints[is] && !ue(o.extent, this.previousExtent_) && (this.dispatchEvent(new ja(Za, this, o)), $t(o.extent, this.previousExtent_)) } this.dispatchEvent(new ja(qa, this, o)), this.postRenderTimeoutHandle_ || (this.postRenderTimeoutHandle_ = setTimeout((function () { e.postRenderTimeoutHandle_ = void 0, e.handlePostRender() }), 0)) }, e.prototype.setLayerGroup = function (t) { this.set(Ka, t) }, e.prototype.setSize = function (t) { this.set(Ha, t) }, e.prototype.setTarget = function (t) { this.set($a, t) }, e.prototype.setView = function (t) { this.set(Ja, t) }, e.prototype.updateSize = function () { var t = this.getTargetElement(); if (t) { var e = getComputedStyle(t); this.setSize([t.offsetWidth - parseFloat(e.borderLeftWidth) - parseFloat(e.paddingLeft) - parseFloat(e.paddingRight) - parseFloat(e.borderRightWidth), t.offsetHeight - parseFloat(e.borderTopWidth) - parseFloat(e.paddingTop) - parseFloat(e.paddingBottom) - parseFloat(e.borderBottomWidth)]) } else this.setSize(void 0); this.updateViewportSize_() }, e.prototype.updateViewportSize_ = function () { var t = this.getView(); if (t) { var e = void 0, r = getComputedStyle(this.viewport_); r.width && r.height && (e = [parseInt(r.width, 10), parseInt(r.height, 10)]), t.setViewportSize(e) } }, e }(ot), Fs = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), As = function (t) { function e(e) { var r = t.call(this) || this, n = e.element; return !n || e.target || n.style.pointerEvents || (n.style.pointerEvents = "auto"), r.element = n || null, r.target_ = null, r.map_ = null, r.listenerKeys = [], e.render && (r.render = e.render), e.target && r.setTarget(e.target), r } return Fs(e, t), e.prototype.disposeInternal = function () { fo(this.element), t.prototype.disposeInternal.call(this) }, e.prototype.getMap = function () { return this.map_ }, e.prototype.setMap = function (t) { this.map_ && fo(this.element); for (var e = 0, r = this.listenerKeys.length; e < r; ++e) H(this.listenerKeys[e]); (this.listenerKeys.length = 0, this.map_ = t, this.map_) && ((this.target_ ? this.target_ : t.getOverlayContainerStopEvent()).appendChild(this.element), this.render !== T && this.listenerKeys.push(Z(t, qa, this.render, this)), t.render()) }, e.prototype.render = function (t) { }, e.prototype.setTarget = function (t) { this.target_ = "string" == typeof t ? document.getElementById(t) : t }, e }(ot), ks = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), js = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, { element: document.createElement("div"), render: n.render, target: n.target }) || this).ulElement_ = document.createElement("ul"), r.collapsed_ = void 0 === n.collapsed || n.collapsed, r.userCollapsed_ = r.collapsed_, r.overrideCollapsible_ = void 0 !== n.collapsible, r.collapsible_ = void 0 === n.collapsible || n.collapsible, r.collapsible_ || (r.collapsed_ = !1); var i = void 0 !== n.className ? n.className : "ol-attribution", o = void 0 !== n.tipLabel ? n.tipLabel : "Attributions", a = void 0 !== n.expandClassName ? n.expandClassName : i + "-expand", s = void 0 !== n.collapseLabel ? n.collapseLabel : "»", l = void 0 !== n.collapseClassName ? n.collapseClassName : i + "-collpase"; "string" == typeof s ? (r.collapseLabel_ = document.createElement("span"), r.collapseLabel_.textContent = s, r.collapseLabel_.className = l) : r.collapseLabel_ = s; var u = void 0 !== n.label ? n.label : "i"; "string" == typeof u ? (r.label_ = document.createElement("span"), r.label_.textContent = u, r.label_.className = a) : r.label_ = u; var c = r.collapsible_ && !r.collapsed_ ? r.collapseLabel_ : r.label_, h = document.createElement("button"); h.setAttribute("type", "button"), h.title = o, h.appendChild(c), h.addEventListener(N, r.handleClick_.bind(r), !1); var p = i + " ol-unselectable ol-control" + (r.collapsed_ && r.collapsible_ ? " ol-collapsed" : "") + (r.collapsible_ ? "" : " ol-uncollapsible"), f = r.element; return f.className = p, f.appendChild(r.ulElement_), f.appendChild(h), r.renderedAttributions_ = [], r.renderedVisible_ = !0, r } return ks(e, t), e.prototype.collectSourceAttributions_ = function (t) { for (var e = {}, r = [], n = !0, i = t.layerStatesArray, o = 0, a = i.length; o < a; ++o) { var s = i[o]; if (ra(s, t.viewState)) { var l = s.layer.getSource(); if (l) { var u = l.getAttributions(); if (u) { var c = u(t); if (c) if (n = n && !1 !== l.getAttributionsCollapsible(), Array.isArray(c)) for (var h = 0, p = c.length; h < p; ++h) c[h] in e || (r.push(c[h]), e[c[h]] = !0); else c in e || (r.push(c), e[c] = !0) } } } } return this.overrideCollapsible_ || this.setCollapsible(n), r }, e.prototype.updateElement_ = function (t) { if (t) { var e = this.collectSourceAttributions_(t), r = e.length > 0; if (this.renderedVisible_ != r && (this.element.style.display = r ? "" : "none", this.renderedVisible_ = r), !b(e, this.renderedAttributions_)) { go(this.ulElement_); for (var n = 0, i = e.length; n < i; ++n) { var o = document.createElement("li"); o.innerHTML = e[n], this.ulElement_.appendChild(o) } this.renderedAttributions_ = e } } else this.renderedVisible_ && (this.element.style.display = "none", this.renderedVisible_ = !1) }, e.prototype.handleClick_ = function (t) { t.preventDefault(), this.handleToggle_(), this.userCollapsed_ = this.collapsed_ }, e.prototype.handleToggle_ = function () { this.element.classList.toggle("ol-collapsed"), this.collapsed_ ? po(this.collapseLabel_, this.label_) : po(this.label_, this.collapseLabel_), this.collapsed_ = !this.collapsed_ }, e.prototype.getCollapsible = function () { return this.collapsible_ }, e.prototype.setCollapsible = function (t) { this.collapsible_ !== t && (this.collapsible_ = t, this.element.classList.toggle("ol-uncollapsible"), this.userCollapsed_ && this.handleToggle_()) }, e.prototype.setCollapsed = function (t) { this.userCollapsed_ = t, this.collapsible_ && this.collapsed_ !== t && this.handleToggle_() }, e.prototype.getCollapsed = function () { return this.collapsed_ }, e.prototype.render = function (t) { this.updateElement_(t.frameState) }, e }(As), Ns = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Ds = function (t) { function e(e) { var r = this, n = e || {}; r = t.call(this, {element: document.createElement("div"), render: n.render, target: n.target}) || this; var i = void 0 !== n.className ? n.className : "ol-rotate", o = void 0 !== n.label ? n.label : "⇧", a = void 0 !== n.compassClassName ? n.compassClassName : "ol-compass"; r.label_ = null, "string" == typeof o ? (r.label_ = document.createElement("span"), r.label_.className = a, r.label_.textContent = o) : (r.label_ = o, r.label_.classList.add(a)); var s = n.tipLabel ? n.tipLabel : "Reset rotation", l = document.createElement("button"); l.className = i + "-reset", l.setAttribute("type", "button"), l.title = s, l.appendChild(r.label_), l.addEventListener(N, r.handleClick_.bind(r), !1); var u = i + " ol-unselectable ol-control", c = r.element; return c.className = u, c.appendChild(l), r.callResetNorth_ = n.resetNorth ? n.resetNorth : void 0, r.duration_ = void 0 !== n.duration ? n.duration : 250, r.autoHide_ = void 0 === n.autoHide || n.autoHide, r.rotation_ = void 0, r.autoHide_ && r.element.classList.add("ol-hidden"), r } return Ns(e, t), e.prototype.handleClick_ = function (t) { t.preventDefault(), void 0 !== this.callResetNorth_ ? this.callResetNorth_() : this.resetNorth_() }, e.prototype.resetNorth_ = function () { var t = this.getMap().getView(); if (t) { var e = t.getRotation(); void 0 !== e && (this.duration_ > 0 && e % (2 * Math.PI) != 0 ? t.animate({ rotation: 0, duration: this.duration_, easing: io }) : t.setRotation(0)) } }, e.prototype.render = function (t) { var e = t.frameState; if (e) { var r = e.viewState.rotation; if (r != this.rotation_) { var n = "rotate(" + r + "rad)"; if (this.autoHide_) { var i = this.element.classList.contains("ol-hidden"); i || 0 !== r ? i && 0 !== r && this.element.classList.remove("ol-hidden") : this.element.classList.add("ol-hidden") } this.label_.style.transform = n } this.rotation_ = r } }, e }(As), Gs = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), zs = function (t) { function e(e) { var r = this, n = e || {}; r = t.call(this, {element: document.createElement("div"), target: n.target}) || this; var i = void 0 !== n.className ? n.className : "ol-zoom", o = void 0 !== n.delta ? n.delta : 1, a = void 0 !== n.zoomInClassName ? n.zoomInClassName : i + "-in", s = void 0 !== n.zoomOutClassName ? n.zoomOutClassName : i + "-out", l = void 0 !== n.zoomInLabel ? n.zoomInLabel : "+", u = void 0 !== n.zoomOutLabel ? n.zoomOutLabel : "−", c = void 0 !== n.zoomInTipLabel ? n.zoomInTipLabel : "Zoom in", h = void 0 !== n.zoomOutTipLabel ? n.zoomOutTipLabel : "Zoom out", p = document.createElement("button"); p.className = a, p.setAttribute("type", "button"), p.title = c, p.appendChild("string" == typeof l ? document.createTextNode(l) : l), p.addEventListener(N, r.handleClick_.bind(r, o), !1); var f = document.createElement("button"); f.className = s, f.setAttribute("type", "button"), f.title = h, f.appendChild("string" == typeof u ? document.createTextNode(u) : u), f.addEventListener(N, r.handleClick_.bind(r, -o), !1); var d = i + " ol-unselectable ol-control", g = r.element; return g.className = d, g.appendChild(p), g.appendChild(f), r.duration_ = void 0 !== n.duration ? n.duration : 250, r } return Gs(e, t), e.prototype.handleClick_ = function (t, e) { e.preventDefault(), this.zoomByDelta_(t) }, e.prototype.zoomByDelta_ = function (t) { var e = this.getMap().getView(); if (e) { var r = e.getZoom(); if (void 0 !== r) { var n = e.getConstrainedZoom(r + t); this.duration_ > 0 ? (e.getAnimating() && e.cancelAnimations(), e.animate({ zoom: n, duration: this.duration_, easing: io })) : e.setZoom(n) } } }, e }(As); function Us(t) { var e = t || {}, r = new ht; return (void 0 === e.zoom || e.zoom) && r.push(new zs(e.zoomOptions)), (void 0 === e.rotate || e.rotate) && r.push(new Ds(e.rotateOptions)), (void 0 === e.attribution || e.attribution) && r.push(new js(e.attributionOptions)), r } var Bs = "active", Vs = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Ys(t, e, r) { var n = t.getCenterInternal(); if (n) { var i = [n[0] + e[0], n[1] + e[1]]; t.animateInternal({duration: void 0 !== r ? r : 250, easing: ao, center: t.getConstrainedCenter(i)}) } } function Ws(t, e, r, n) { var i = t.getZoom(); if (void 0 !== i) { var o = t.getConstrainedZoom(i + e), a = t.getResolutionForZoom(o); t.getAnimating() && t.cancelAnimations(), t.animate({ resolution: a, anchor: r, duration: void 0 !== n ? n : 250, easing: io }) } } var qs = function (t) { function e(e) { var r = t.call(this) || this; return e && e.handleEvent && (r.handleEvent = e.handleEvent), r.map_ = null, r.setActive(!0), r } return Vs(e, t), e.prototype.getActive = function () { return this.get(Bs) }, e.prototype.getMap = function () { return this.map_ }, e.prototype.handleEvent = function (t) { return !0 }, e.prototype.setActive = function (t) { this.set(Bs, t) }, e.prototype.setMap = function (t) { this.map_ = t }, e }(ot), Xs = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Zs = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.delta_ = n.delta ? n.delta : 1, r.duration_ = void 0 !== n.duration ? n.duration : 250, r } return Xs(e, t), e.prototype.handleEvent = function (t) { var e = !1; if (t.type == Ga.DBLCLICK) { var r = t.originalEvent, n = t.map, i = t.coordinate, o = r.shiftKey ? -this.delta_ : this.delta_; Ws(n.getView(), o, i, this.duration_), r.preventDefault(), e = !0 } return !e }, e }(qs), Ks = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Hs(t) { for (var e = t.length, r = 0, n = 0, i = 0; i < e; i++) r += t[i].clientX, n += t[i].clientY; return [r / e, n / e] } var $s = function (t) { function e(e) { var r = this, n = e || {}; return r = t.call(this, n) || this, n.handleDownEvent && (r.handleDownEvent = n.handleDownEvent), n.handleDragEvent && (r.handleDragEvent = n.handleDragEvent), n.handleMoveEvent && (r.handleMoveEvent = n.handleMoveEvent), n.handleUpEvent && (r.handleUpEvent = n.handleUpEvent), n.stopDown && (r.stopDown = n.stopDown), r.handlingDownUpSequence = !1, r.trackedPointers_ = {}, r.targetPointers = [], r } return Ks(e, t), e.prototype.getPointerCount = function () { return this.targetPointers.length }, e.prototype.handleDownEvent = function (t) { return !1 }, e.prototype.handleDragEvent = function (t) { }, e.prototype.handleEvent = function (t) { if (!t.originalEvent) return !0; var e = !1; if (this.updateTrackedPointers_(t), this.handlingDownUpSequence) { if (t.type == Ga.POINTERDRAG) this.handleDragEvent(t), t.originalEvent.preventDefault(); else if (t.type == Ga.POINTERUP) { var r = this.handleUpEvent(t); this.handlingDownUpSequence = r && this.targetPointers.length > 0 } } else if (t.type == Ga.POINTERDOWN) { var n = this.handleDownEvent(t); this.handlingDownUpSequence = n, e = this.stopDown(n) } else t.type == Ga.POINTERMOVE && this.handleMoveEvent(t); return !e }, e.prototype.handleMoveEvent = function (t) { }, e.prototype.handleUpEvent = function (t) { return !1 }, e.prototype.stopDown = function (t) { return t }, e.prototype.updateTrackedPointers_ = function (t) { if (function (t) { var e = t.type; return e === Ga.POINTERDOWN || e === Ga.POINTERDRAG || e === Ga.POINTERUP }(t)) { var e = t.originalEvent, r = e.pointerId.toString(); t.type == Ga.POINTERUP ? delete this.trackedPointers_[r] : (t.type == Ga.POINTERDOWN || r in this.trackedPointers_) && (this.trackedPointers_[r] = e), this.targetPointers = R(this.trackedPointers_) } }, e }(qs); function Js(t) { var e = arguments; return function (t) { for (var r = !0, n = 0, i = e.length; n < i && (r = r && e[n](t)); ++n) ; return r } } var Qs = function (t) { var e = t.originalEvent; return e.altKey && !(e.metaKey || e.ctrlKey) && !e.shiftKey }, tl = function (t) { var e = t.originalEvent; return e.altKey && !(e.metaKey || e.ctrlKey) && e.shiftKey }, el = function (t) { return t.target.getTargetElement().contains(document.activeElement) }, rl = function (t) { return !t.map.getTargetElement().hasAttribute("tabindex") || el(t) }, nl = S, il = function (t) { var e = t.originalEvent; return 0 == e.button && !(Ui && Bi && e.ctrlKey) }, ol = E, al = function (t) { return t.type == Ga.SINGLECLICK }, sl = function (t) { var e = t.originalEvent; return !e.altKey && !(e.metaKey || e.ctrlKey) && !e.shiftKey }, ll = function (t) { var e = t.originalEvent; return !e.altKey && !(e.metaKey || e.ctrlKey) && e.shiftKey }, ul = function (t) { var e = t.originalEvent.target.tagName; return "INPUT" !== e && "SELECT" !== e && "TEXTAREA" !== e }, cl = function (t) { var e = t.originalEvent; return pt(void 0 !== e, 56), "mouse" == e.pointerType }, hl = function (t) { var e = t.originalEvent; return pt(void 0 !== e, 56), e.isPrimary && 0 === e.button }, pl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), fl = function (t) { function e(e) { var r = t.call(this, {stopDown: E}) || this, n = e || {}; r.kinetic_ = n.kinetic, r.lastCentroid = null, r.lastPointersCount_, r.panning_ = !1; var i = n.condition ? n.condition : Js(sl, hl); return r.condition_ = n.onFocusOnly ? Js(rl, i) : i, r.noKinetic_ = !1, r } return pl(e, t), e.prototype.handleDragEvent = function (t) { this.panning_ || (this.panning_ = !0, this.getMap().getView().beginInteraction()); var e = this.targetPointers, r = Hs(e); if (e.length == this.lastPointersCount_) { if (this.kinetic_ && this.kinetic_.update(r[0], r[1]), this.lastCentroid) { var n = [this.lastCentroid[0] - r[0], r[1] - this.lastCentroid[1]], i = t.map.getView(); Pr(n, i.getResolution()), Or(n, i.getRotation()), i.adjustCenterInternal(n) } } else this.kinetic_ && this.kinetic_.begin(); this.lastCentroid = r, this.lastPointersCount_ = e.length, t.originalEvent.preventDefault() }, e.prototype.handleUpEvent = function (t) { var e = t.map, r = e.getView(); if (0 === this.targetPointers.length) { if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) { var n = this.kinetic_.getDistance(), i = this.kinetic_.getAngle(), o = r.getCenterInternal(), a = e.getPixelFromCoordinateInternal(o), s = e.getCoordinateFromPixelInternal([a[0] - n * Math.cos(i), a[1] - n * Math.sin(i)]); r.animateInternal({center: r.getConstrainedCenter(s), duration: 500, easing: io}) } return this.panning_ && (this.panning_ = !1, r.endInteraction()), !1 } return this.kinetic_ && this.kinetic_.begin(), this.lastCentroid = null, !0 }, e.prototype.handleDownEvent = function (t) { if (this.targetPointers.length > 0 && this.condition_(t)) { var e = t.map.getView(); return this.lastCentroid = null, e.getAnimating() && e.cancelAnimations(), this.kinetic_ && this.kinetic_.begin(), this.noKinetic_ = this.targetPointers.length > 1, !0 } return !1 }, e }($s), dl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), gl = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, {stopDown: E}) || this).condition_ = n.condition ? n.condition : tl, r.lastAngle_ = void 0, r.duration_ = void 0 !== n.duration ? n.duration : 250, r } return dl(e, t), e.prototype.handleDragEvent = function (t) { if (cl(t)) { var e = t.map, r = e.getView(); if (r.getConstraints().rotation !== gs) { var n = e.getSize(), i = t.pixel, o = Math.atan2(n[1] / 2 - i[1], i[0] - n[0] / 2); if (void 0 !== this.lastAngle_) { var a = o - this.lastAngle_; r.adjustRotationInternal(-a) } this.lastAngle_ = o } } }, e.prototype.handleUpEvent = function (t) { return !cl(t) || (t.map.getView().endInteraction(this.duration_), !1) }, e.prototype.handleDownEvent = function (t) { return !!cl(t) && (!(!il(t) || !this.condition_(t)) && (t.map.getView().beginInteraction(), this.lastAngle_ = void 0, !0)) }, e }($s), yl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ml = function (t) { function e(e) { var r = t.call(this) || this; return r.geometry_ = null, r.element_ = document.createElement("div"), r.element_.style.position = "absolute", r.element_.style.pointerEvents = "auto", r.element_.className = "ol-box " + e, r.map_ = null, r.startPixel_ = null, r.endPixel_ = null, r } return yl(e, t), e.prototype.disposeInternal = function () { this.setMap(null) }, e.prototype.render_ = function () { var t = this.startPixel_, e = this.endPixel_, r = this.element_.style; r.left = Math.min(t[0], e[0]) + "px", r.top = Math.min(t[1], e[1]) + "px", r.width = Math.abs(e[0] - t[0]) + "px", r.height = Math.abs(e[1] - t[1]) + "px" }, e.prototype.setMap = function (t) { if (this.map_) { this.map_.getOverlayContainer().removeChild(this.element_); var e = this.element_.style; e.left = "inherit", e.top = "inherit", e.width = "inherit", e.height = "inherit" } this.map_ = t, this.map_ && this.map_.getOverlayContainer().appendChild(this.element_) }, e.prototype.setPixels = function (t, e) { this.startPixel_ = t, this.endPixel_ = e, this.createOrUpdateGeometry(), this.render_() }, e.prototype.createOrUpdateGeometry = function () { var t = this.startPixel_, e = this.endPixel_, r = [t, [t[0], e[1]], e, [e[0], t[1]]].map(this.map_.getCoordinateFromPixelInternal, this.map_); r[4] = r[0].slice(), this.geometry_ ? this.geometry_.setCoordinates([r]) : this.geometry_ = new fi([r]) }, e.prototype.getGeometry = function () { return this.geometry_ }, e }(p), vl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), _l = "boxstart", bl = "boxdrag", xl = "boxend", wl = "boxcancel", Sl = function (t) { function e(e, r, n) { var i = t.call(this, e) || this; return i.coordinate = r, i.mapBrowserEvent = n, i } return vl(e, t), e }(c), El = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.box_ = new ml(n.className || "ol-dragbox"), r.minArea_ = void 0 !== n.minArea ? n.minArea : 64, n.onBoxEnd && (r.onBoxEnd = n.onBoxEnd), r.startPixel_ = null, r.condition_ = n.condition ? n.condition : il, r.boxEndCondition_ = n.boxEndCondition ? n.boxEndCondition : r.defaultBoxEndCondition, r } return vl(e, t), e.prototype.defaultBoxEndCondition = function (t, e, r) { var n = r[0] - e[0], i = r[1] - e[1]; return n * n + i * i >= this.minArea_ }, e.prototype.getGeometry = function () { return this.box_.getGeometry() }, e.prototype.handleDragEvent = function (t) { this.box_.setPixels(this.startPixel_, t.pixel), this.dispatchEvent(new Sl(bl, t.coordinate, t)) }, e.prototype.handleUpEvent = function (t) { this.box_.setMap(null); var e = this.boxEndCondition_(t, this.startPixel_, t.pixel); return e && this.onBoxEnd(t), this.dispatchEvent(new Sl(e ? xl : wl, t.coordinate, t)), !1 }, e.prototype.handleDownEvent = function (t) { return !!this.condition_(t) && (this.startPixel_ = t.pixel, this.box_.setMap(t.map), this.box_.setPixels(this.startPixel_, this.startPixel_), this.dispatchEvent(new Sl(_l, t.coordinate, t)), !0) }, e.prototype.onBoxEnd = function (t) { }, e }($s), Tl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Cl = function (t) { function e(e) { var r = this, n = e || {}, i = n.condition ? n.condition : ll; return (r = t.call(this, { condition: i, className: n.className || "ol-dragzoom", minArea: n.minArea }) || this).duration_ = void 0 !== n.duration ? n.duration : 200, r.out_ = void 0 !== n.out && n.out, r } return Tl(e, t), e.prototype.onBoxEnd = function (t) { var e = this.getMap(), r = e.getView(), n = e.getSize(), i = this.getGeometry().getExtent(); if (this.out_) { var o = r.calculateExtentInternal(n), a = se([e.getPixelFromCoordinateInternal(_e(i)), e.getPixelFromCoordinateInternal(Oe(i))]); Me(o, 1 / r.getResolutionForExtentInternal(a, n)), i = o } var s = r.getConstrainedResolution(r.getResolutionForExtentInternal(i, n)), l = r.getConstrainedCenter(xe(i), s); r.animateInternal({resolution: s, center: l, duration: this.duration_, easing: io}) }, e }(El), Ol = 37, Pl = 38, Rl = 39, Il = 40, Ll = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Ml = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.defaultCondition_ = function (t) { return sl(t) && ul(t) }, r.condition_ = void 0 !== n.condition ? n.condition : r.defaultCondition_, r.duration_ = void 0 !== n.duration ? n.duration : 100, r.pixelDelta_ = void 0 !== n.pixelDelta ? n.pixelDelta : 128, r } return Ll(e, t), e.prototype.handleEvent = function (t) { var e = !1; if (t.type == B) { var r = t.originalEvent, n = r.keyCode; if (this.condition_(t) && (n == Il || n == Ol || n == Rl || n == Pl)) { var i = t.map.getView(), o = i.getResolution() * this.pixelDelta_, a = 0, s = 0; n == Il ? s = -o : n == Ol ? a = -o : n == Rl ? a = o : s = o; var l = [a, s]; Or(l, i.getRotation()), Ys(i, l, this.duration_), r.preventDefault(), e = !0 } } return !e }, e }(qs), Fl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Al = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.condition_ = n.condition ? n.condition : ul, r.delta_ = n.delta ? n.delta : 1, r.duration_ = void 0 !== n.duration ? n.duration : 100, r } return Fl(e, t), e.prototype.handleEvent = function (t) { var e = !1; if (t.type == B || t.type == V) { var r = t.originalEvent, n = r.charCode; if (this.condition_(t) && (n == "+".charCodeAt(0) || n == "-".charCodeAt(0))) { var i = t.map, o = n == "+".charCodeAt(0) ? this.delta_ : -this.delta_; Ws(i.getView(), o, void 0, this.duration_), r.preventDefault(), e = !0 } } return !e }, e }(qs), kl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), jl = "trackpad", Nl = "wheel", Dl = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, n) || this).totalDelta_ = 0, r.lastDelta_ = 0, r.maxDelta_ = void 0 !== n.maxDelta ? n.maxDelta : 1, r.duration_ = void 0 !== n.duration ? n.duration : 250, r.timeout_ = void 0 !== n.timeout ? n.timeout : 80, r.useAnchor_ = void 0 === n.useAnchor || n.useAnchor, r.constrainResolution_ = void 0 !== n.constrainResolution && n.constrainResolution; var i = n.condition ? n.condition : nl; return r.condition_ = n.onFocusOnly ? Js(rl, i) : i, r.lastAnchor_ = null, r.startTime_ = void 0, r.timeoutId_, r.mode_ = void 0, r.trackpadEventGap_ = 400, r.trackpadTimeoutId_, r.deltaPerZoom_ = 300, r } return kl(e, t), e.prototype.endInteraction_ = function () { this.trackpadTimeoutId_ = void 0, this.getMap().getView().endInteraction(void 0, this.lastDelta_ ? this.lastDelta_ > 0 ? 1 : -1 : 0, this.lastAnchor_) }, e.prototype.handleEvent = function (t) { if (!this.condition_(t)) return !0; if (t.type !== X) return !0; var e, r = t.map, n = t.originalEvent; if (n.preventDefault(), this.useAnchor_ && (this.lastAnchor_ = t.coordinate), t.type == X && (e = n.deltaY, Gi && n.deltaMode === WheelEvent.DOM_DELTA_PIXEL && (e /= Vi), n.deltaMode === WheelEvent.DOM_DELTA_LINE && (e *= 40)), 0 === e) return !1; this.lastDelta_ = e; var i = Date.now(); void 0 === this.startTime_ && (this.startTime_ = i), (!this.mode_ || i - this.startTime_ > this.trackpadEventGap_) && (this.mode_ = Math.abs(e) < 4 ? jl : Nl); var o = r.getView(); if (this.mode_ === jl && !o.getConstrainResolution() && !this.constrainResolution_) return this.trackpadTimeoutId_ ? clearTimeout(this.trackpadTimeoutId_) : (o.getAnimating() && o.cancelAnimations(), o.beginInteraction()), this.trackpadTimeoutId_ = setTimeout(this.endInteraction_.bind(this), this.timeout_), o.adjustZoom(-e / this.deltaPerZoom_, this.lastAnchor_), this.startTime_ = i, !1; this.totalDelta_ += e; var a = Math.max(this.timeout_ - (i - this.startTime_), 0); return clearTimeout(this.timeoutId_), this.timeoutId_ = setTimeout(this.handleWheelZoom_.bind(this, r), a), !1 }, e.prototype.handleWheelZoom_ = function (t) { var e = t.getView(); e.getAnimating() && e.cancelAnimations(); var r = -Ne(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_; (e.getConstrainResolution() || this.constrainResolution_) && (r = r ? r > 0 ? 1 : -1 : 0), Ws(e, r, this.lastAnchor_, this.duration_), this.mode_ = void 0, this.totalDelta_ = 0, this.lastAnchor_ = null, this.startTime_ = void 0, this.timeoutId_ = void 0 }, e.prototype.setMouseAnchor = function (t) { this.useAnchor_ = t, t || (this.lastAnchor_ = null) }, e }(qs), Gl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), zl = function (t) { function e(e) { var r = this, n = e || {}, i = n; return i.stopDown || (i.stopDown = E), (r = t.call(this, i) || this).anchor_ = null, r.lastAngle_ = void 0, r.rotating_ = !1, r.rotationDelta_ = 0, r.threshold_ = void 0 !== n.threshold ? n.threshold : .3, r.duration_ = void 0 !== n.duration ? n.duration : 250, r } return Gl(e, t), e.prototype.handleDragEvent = function (t) { var e = 0, r = this.targetPointers[0], n = this.targetPointers[1], i = Math.atan2(n.clientY - r.clientY, n.clientX - r.clientX); if (void 0 !== this.lastAngle_) { var o = i - this.lastAngle_; this.rotationDelta_ += o, !this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_ && (this.rotating_ = !0), e = o } this.lastAngle_ = i; var a = t.map, s = a.getView(); if (s.getConstraints().rotation !== gs) { var l = a.getViewport().getBoundingClientRect(), u = Hs(this.targetPointers); u[0] -= l.left, u[1] -= l.top, this.anchor_ = a.getCoordinateFromPixelInternal(u), this.rotating_ && (a.render(), s.adjustRotationInternal(e, this.anchor_)) } }, e.prototype.handleUpEvent = function (t) { return !(this.targetPointers.length < 2) || (t.map.getView().endInteraction(this.duration_), !1) }, e.prototype.handleDownEvent = function (t) { if (this.targetPointers.length >= 2) { var e = t.map; return this.anchor_ = null, this.lastAngle_ = void 0, this.rotating_ = !1, this.rotationDelta_ = 0, this.handlingDownUpSequence || e.getView().beginInteraction(), !0 } return !1 }, e }($s), Ul = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Bl = function (t) { function e(e) { var r = this, n = e || {}, i = n; return i.stopDown || (i.stopDown = E), (r = t.call(this, i) || this).anchor_ = null, r.duration_ = void 0 !== n.duration ? n.duration : 400, r.lastDistance_ = void 0, r.lastScaleDelta_ = 1, r } return Ul(e, t), e.prototype.handleDragEvent = function (t) { var e = 1, r = this.targetPointers[0], n = this.targetPointers[1], i = r.clientX - n.clientX, o = r.clientY - n.clientY, a = Math.sqrt(i * i + o * o); void 0 !== this.lastDistance_ && (e = this.lastDistance_ / a), this.lastDistance_ = a; var s = t.map, l = s.getView(); 1 != e && (this.lastScaleDelta_ = e); var u = s.getViewport().getBoundingClientRect(), c = Hs(this.targetPointers); c[0] -= u.left, c[1] -= u.top, this.anchor_ = s.getCoordinateFromPixelInternal(c), s.render(), l.adjustResolutionInternal(e, this.anchor_) }, e.prototype.handleUpEvent = function (t) { if (this.targetPointers.length < 2) { var e = t.map.getView(), r = this.lastScaleDelta_ > 1 ? 1 : -1; return e.endInteraction(this.duration_, r), !1 } return !0 }, e.prototype.handleDownEvent = function (t) { if (this.targetPointers.length >= 2) { var e = t.map; return this.anchor_ = null, this.lastDistance_ = void 0, this.lastScaleDelta_ = 1, this.handlingDownUpSequence || e.getView().beginInteraction(), !0 } return !1 }, e }($s); function Vl(t) { var e = t || {}, r = new ht, n = new _o(-.005, .05, 100); return (void 0 === e.altShiftDragRotate || e.altShiftDragRotate) && r.push(new gl), (void 0 === e.doubleClickZoom || e.doubleClickZoom) && r.push(new Zs({ delta: e.zoomDelta, duration: e.zoomDuration })), (void 0 === e.dragPan || e.dragPan) && r.push(new fl({ onFocusOnly: e.onFocusOnly, kinetic: n })), (void 0 === e.pinchRotate || e.pinchRotate) && r.push(new zl), (void 0 === e.pinchZoom || e.pinchZoom) && r.push(new Bl({duration: e.zoomDuration})), (void 0 === e.keyboard || e.keyboard) && (r.push(new Ml), r.push(new Al({ delta: e.zoomDelta, duration: e.zoomDuration }))), (void 0 === e.mouseWheelZoom || e.mouseWheelZoom) && r.push(new Dl({ onFocusOnly: e.onFocusOnly, duration: e.zoomDuration })), (void 0 === e.shiftDragZoom || e.shiftDragZoom) && r.push(new Cl({duration: e.zoomDuration})), r } var Yl = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Wl = function (t) { function e(e) { return (e = O({}, e)).controls || (e.controls = Us()), e.interactions || (e.interactions = Vl({onFocusOnly: !0})), t.call(this, e) || this } return Yl(e, t), e.prototype.createRenderer = function () { return new La(this) }, e }(Ms), ql = "bottom-left", Xl = "bottom-center", Zl = "bottom-right", Kl = "center-left", Hl = "center-center", $l = "center-right", Jl = "top-left", Ql = "top-center", tu = "top-right", eu = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ru = "element", nu = "map", iu = "offset", ou = "position", au = "positioning", su = function (t) { function e(e) { var r = t.call(this) || this; r.options = e, r.id = e.id, r.insertFirst = void 0 === e.insertFirst || e.insertFirst, r.stopEvent = void 0 === e.stopEvent || e.stopEvent, r.element = document.createElement("div"), r.element.className = void 0 !== e.className ? e.className : "ol-overlay-container ol-selectable", r.element.style.position = "absolute", r.element.style.pointerEvents = "auto"; var n = e.autoPan; return n && "object" != typeof n && (n = { animation: e.autoPanAnimation, margin: e.autoPanMargin }), r.autoPan = n || !1, r.rendered = { transform_: "", visible: !0 }, r.mapPostrenderListenerKey = null, r.addEventListener(it(ru), r.handleElementChanged), r.addEventListener(it(nu), r.handleMapChanged), r.addEventListener(it(iu), r.handleOffsetChanged), r.addEventListener(it(ou), r.handlePositionChanged), r.addEventListener(it(au), r.handlePositioningChanged), void 0 !== e.element && r.setElement(e.element), r.setOffset(void 0 !== e.offset ? e.offset : [0, 0]), r.setPositioning(void 0 !== e.positioning ? e.positioning : Jl), void 0 !== e.position && r.setPosition(e.position), r } return eu(e, t), e.prototype.getElement = function () { return this.get(ru) }, e.prototype.getId = function () { return this.id }, e.prototype.getMap = function () { return this.get(nu) }, e.prototype.getOffset = function () { return this.get(iu) }, e.prototype.getPosition = function () { return this.get(ou) }, e.prototype.getPositioning = function () { return this.get(au) }, e.prototype.handleElementChanged = function () { go(this.element); var t = this.getElement(); t && this.element.appendChild(t) }, e.prototype.handleMapChanged = function () { this.mapPostrenderListenerKey && (fo(this.element), H(this.mapPostrenderListenerKey), this.mapPostrenderListenerKey = null); var t = this.getMap(); if (t) { this.mapPostrenderListenerKey = Z(t, qa, this.render, this), this.updatePixelPosition(); var e = this.stopEvent ? t.getOverlayContainerStopEvent() : t.getOverlayContainer(); this.insertFirst ? e.insertBefore(this.element, e.childNodes[0] || null) : e.appendChild(this.element), this.performAutoPan() } }, e.prototype.render = function () { this.updatePixelPosition() }, e.prototype.handleOffsetChanged = function () { this.updatePixelPosition() }, e.prototype.handlePositionChanged = function () { this.updatePixelPosition(), this.performAutoPan() }, e.prototype.handlePositioningChanged = function () { this.updatePixelPosition() }, e.prototype.setElement = function (t) { this.set(ru, t) }, e.prototype.setMap = function (t) { this.set(nu, t) }, e.prototype.setOffset = function (t) { this.set(iu, t) }, e.prototype.setPosition = function (t) { this.set(ou, t) }, e.prototype.performAutoPan = function () { this.autoPan && this.panIntoView(this.autoPan) }, e.prototype.panIntoView = function (t) { var e = this.getMap(); if (e && e.getTargetElement() && this.get(ou)) { var r = this.getRect(e.getTargetElement(), e.getSize()), n = this.getElement(), i = this.getRect(n, [co(n), ho(n)]), o = t || {}, a = void 0 === o.margin ? 20 : o.margin; if (!te(r, i)) { var s = i[0] - r[0], l = r[2] - i[2], u = i[1] - r[1], c = r[3] - i[3], h = [0, 0]; if (s < 0 ? h[0] = s - a : l < 0 && (h[0] = Math.abs(l) + a), u < 0 ? h[1] = u - a : c < 0 && (h[1] = Math.abs(c) + a), 0 !== h[0] || 0 !== h[1]) { var p = e.getView().getCenterInternal(), f = e.getPixelFromCoordinateInternal(p); if (!f) return; var d = [f[0] + h[0], f[1] + h[1]], g = o.animation || {}; e.getView().animateInternal({ center: e.getCoordinateFromPixelInternal(d), duration: g.duration, easing: g.easing }) } } } }, e.prototype.getRect = function (t, e) { var r = t.getBoundingClientRect(), n = r.left + window.pageXOffset, i = r.top + window.pageYOffset; return [n, i, n + e[0], i + e[1]] }, e.prototype.setPositioning = function (t) { this.set(au, t) }, e.prototype.setVisible = function (t) { this.rendered.visible !== t && (this.element.style.display = t ? "" : "none", this.rendered.visible = t) }, e.prototype.updatePixelPosition = function () { var t = this.getMap(), e = this.getPosition(); if (t && t.isRendered() && e) { var r = t.getPixelFromCoordinate(e), n = t.getSize(); this.updateRenderedPosition(r, n) } else this.setVisible(!1) }, e.prototype.updateRenderedPosition = function (t, e) { var r = this.element.style, n = this.getOffset(), i = this.getPositioning(); this.setVisible(!0); var o = Math.round(t[0] + n[0]) + "px", a = Math.round(t[1] + n[1]) + "px", s = "0%", l = "0%"; i == Zl || i == $l || i == tu ? s = "-100%" : i != Xl && i != Hl && i != Ql || (s = "-50%"), i == ql || i == Xl || i == Zl ? l = "-100%" : i != Kl && i != Hl && i != $l || (l = "-50%"); var u = "translate(" + s + ", " + l + ") translate(" + o + ", " + a + ")"; this.rendered.transform_ != u && (this.rendered.transform_ = u, r.transform = u, r.msTransform = u) }, e.prototype.getOptions = function () { return this.options }, e }(ot), lu = function () { function t(t) { this.highWaterMark = void 0 !== t ? t : 2048, this.count_ = 0, this.entries_ = {}, this.oldest_ = null, this.newest_ = null } return t.prototype.canExpireCache = function () { return this.highWaterMark > 0 && this.getCount() > this.highWaterMark }, t.prototype.clear = function () { this.count_ = 0, this.entries_ = {}, this.oldest_ = null, this.newest_ = null }, t.prototype.containsKey = function (t) { return this.entries_.hasOwnProperty(t) }, t.prototype.forEach = function (t) { for (var e = this.oldest_; e;) t(e.value_, e.key_, this), e = e.newer }, t.prototype.get = function (t, e) { var r = this.entries_[t]; return pt(void 0 !== r, 15), r === this.newest_ || (r === this.oldest_ ? (this.oldest_ = this.oldest_.newer, this.oldest_.older = null) : (r.newer.older = r.older, r.older.newer = r.newer), r.newer = null, r.older = this.newest_, this.newest_.newer = r, this.newest_ = r), r.value_ }, t.prototype.remove = function (t) { var e = this.entries_[t]; return pt(void 0 !== e, 15), e === this.newest_ ? (this.newest_ = e.older, this.newest_ && (this.newest_.newer = null)) : e === this.oldest_ ? (this.oldest_ = e.newer, this.oldest_ && (this.oldest_.older = null)) : (e.newer.older = e.older, e.older.newer = e.newer), delete this.entries_[t], --this.count_, e.value_ }, t.prototype.getCount = function () { return this.count_ }, t.prototype.getKeys = function () { var t, e = new Array(this.count_), r = 0; for (t = this.newest_; t; t = t.older) e[r++] = t.key_; return e }, t.prototype.getValues = function () { var t, e = new Array(this.count_), r = 0; for (t = this.newest_; t; t = t.older) e[r++] = t.value_; return e }, t.prototype.peekLast = function () { return this.oldest_.value_ }, t.prototype.peekLastKey = function () { return this.oldest_.key_ }, t.prototype.peekFirstKey = function () { return this.newest_.key_ }, t.prototype.pop = function () { var t = this.oldest_; return delete this.entries_[t.key_], t.newer && (t.newer.older = null), this.oldest_ = t.newer, this.oldest_ || (this.newest_ = null), --this.count_, t.value_ }, t.prototype.replace = function (t, e) { this.get(t), this.entries_[t].value_ = e }, t.prototype.set = function (t, e) { pt(!(t in this.entries_), 16); var r = {key_: t, newer: null, older: this.newest_, value_: e}; this.newest_ ? this.newest_.newer = r : this.oldest_ = r, this.newest_ = r, this.entries_[t] = r, ++this.count_ }, t.prototype.setSize = function (t) { this.highWaterMark = t }, t }(); function uu(t, e, r, n) { return void 0 !== n ? (n[0] = t, n[1] = e, n[2] = r, n) : [t, e, r] } function cu(t, e, r) { return t + "/" + e + "/" + r } function hu(t) { return cu(t[0], t[1], t[2]) } function pu(t) { return t.split("/").map(Number) } function fu(t) { return (t[1] << t[0]) + t[2] } function du(t, e) { var r = t[0], n = t[1], i = t[2]; if (e.getMinZoom() > r || r > e.getMaxZoom()) return !1; var o = e.getFullTileRange(r); return !o || o.containsXY(n, i) } var gu = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), yu = function (t) { function e() { return null !== t && t.apply(this, arguments) || this } return gu(e, t), e.prototype.expireCache = function (t) { for (; this.canExpireCache();) { if (this.peekLast().getKey() in t) break; this.pop().release() } }, e.prototype.pruneExceptNewestZ = function () { if (0 !== this.getCount()) { var t = pu(this.peekFirstKey())[0]; this.forEach(function (e) { e.tileCoord[0] !== t && (this.remove(hu(e.tileCoord)), e.release()) }.bind(this)) } }, e }(lu), mu = function () { function t(t, e, r, n) { this.minX = t, this.maxX = e, this.minY = r, this.maxY = n } return t.prototype.contains = function (t) { return this.containsXY(t[1], t[2]) }, t.prototype.containsTileRange = function (t) { return this.minX <= t.minX && t.maxX <= this.maxX && this.minY <= t.minY && t.maxY <= this.maxY }, t.prototype.containsXY = function (t, e) { return this.minX <= t && t <= this.maxX && this.minY <= e && e <= this.maxY }, t.prototype.equals = function (t) { return this.minX == t.minX && this.minY == t.minY && this.maxX == t.maxX && this.maxY == t.maxY }, t.prototype.extend = function (t) { t.minX < this.minX && (this.minX = t.minX), t.maxX > this.maxX && (this.maxX = t.maxX), t.minY < this.minY && (this.minY = t.minY), t.maxY > this.maxY && (this.maxY = t.maxY) }, t.prototype.getHeight = function () { return this.maxY - this.minY + 1 }, t.prototype.getSize = function () { return [this.getWidth(), this.getHeight()] }, t.prototype.getWidth = function () { return this.maxX - this.minX + 1 }, t.prototype.intersects = function (t) { return this.minX <= t.maxX && this.maxX >= t.minX && this.minY <= t.maxY && this.maxY >= t.minY }, t }(); function vu(t, e, r, n, i) { return void 0 !== i ? (i.minX = t, i.maxX = e, i.minY = r, i.maxY = n, i) : new mu(t, e, r, n) } var _u = mu, bu = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), xu = [], wu = function (t) { function e(e, r, n, i) { var o = t.call(this, e, r, {transition: 0}) || this; return o.context_ = {}, o.executorGroups = {}, o.declutterExecutorGroups = {}, o.loadingSourceTiles = 0, o.errorSourceTileKeys = {}, o.hitDetectionImageData = {}, o.replayState_ = {}, o.sourceTiles = null, o.wantedResolution, o.getSourceTiles = i.bind(void 0, o), o.sourceZ = -1, o.hifi = !1, o.wrappedTileCoord = n, o } return bu(e, t), e.prototype.getContext = function (t) { var e = o(t); return e in this.context_ || (this.context_[e] = uo(1, 1, xu)), this.context_[e] }, e.prototype.hasContext = function (t) { return o(t) in this.context_ }, e.prototype.getImage = function (t) { return this.hasContext(t) ? this.getContext(t).canvas : null }, e.prototype.getReplayState = function (t) { var e = o(t); return e in this.replayState_ || (this.replayState_[e] = { dirty: !1, renderedRenderOrder: null, renderedResolution: NaN, renderedRevision: -1, renderedTileResolution: NaN, renderedTileRevision: -1, renderedZ: -1, renderedTileZ: -1 }), this.replayState_[e] }, e.prototype.load = function () { this.getSourceTiles() }, e.prototype.release = function () { for (var e in this.context_) xu.push(this.context_[e].canvas), delete this.context_[e]; t.prototype.release.call(this) }, e }(lo), Su = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Eu = function (t) { function e(e, r, n, i, o, a) { var s = t.call(this, e, r, a) || this; return s.extent = null, s.format_ = i, s.features_ = null, s.loader_, s.projection = null, s.resolution, s.tileLoadFunction_ = o, s.url_ = n, s.key = n, s } return Su(e, t), e.prototype.getFormat = function () { return this.format_ }, e.prototype.getFeatures = function () { return this.features_ }, e.prototype.load = function () { this.state == Ji && (this.setState(Qi), this.tileLoadFunction_(this, this.url_), this.loader_ && this.loader_(this.extent, this.resolution, this.projection)) }, e.prototype.onLoad = function (t, e) { this.setFeatures(t) }, e.prototype.onError = function () { this.setState(eo) }, e.prototype.setFeatures = function (t) { this.features_ = t, this.setState(to) }, e.prototype.setLoader = function (t) { this.loader_ = t }, e }(lo); function Tu(t) { return Array.isArray(t) ? Ro(t) : t } var Cu = "arraybuffer", Ou = "json", Pu = "text", Ru = "xml", Iu = !1; function Lu(t, e, r, n, i, o, a) { var s = new XMLHttpRequest; s.open("GET", "function" == typeof t ? t(r, n, i) : t, !0), e.getType() == Cu && (s.responseType = "arraybuffer"), s.withCredentials = Iu, s.onload = function (t) { if (!s.status || s.status >= 200 && s.status < 300) { var n = e.getType(), l = void 0; n == Ou || n == Pu ? l = s.responseText : n == Ru ? (l = s.responseXML) || (l = (new DOMParser).parseFromString(s.responseText, "application/xml")) : n == Cu && (l = s.response), l ? o(e.readFeatures(l, { extent: r, featureProjection: i }), e.readProjection(l)) : a() } else a() }, s.onerror = a, s.send() } function Mu(t, e) { return function (r, n, i, o, a) { var s = this; Lu(t, e, r, n, i, (function (t, e) { void 0 !== o && o(t), s.addFeatures(t) }), a || T) } } function Fu(t, e) { return [[-1 / 0, -1 / 0, 1 / 0, 1 / 0]] } function Au(t, e, r, n) { var i = document.createElement("script"), a = "olc_" + o(e); function s() { delete window[a], i.parentNode.removeChild(i) } i.async = !0, i.src = t + (-1 == t.indexOf("?") ? "?" : "&") + (n || "callback") + "=" + a; var l = setTimeout((function () { s(), r && r() }), 1e4); window[a] = function (t) { clearTimeout(l), s(), e(t) }, document.getElementsByTagName("head")[0].appendChild(i) } var ku = function () { function t() { } return t.prototype.drawCustom = function (t, e, r) { }, t.prototype.drawGeometry = function (t) { }, t.prototype.setStyle = function (t) { }, t.prototype.drawCircle = function (t, e) { }, t.prototype.drawFeature = function (t, e) { }, t.prototype.drawGeometryCollection = function (t, e) { }, t.prototype.drawLineString = function (t, e) { }, t.prototype.drawMultiLineString = function (t, e) { }, t.prototype.drawMultiPoint = function (t, e) { }, t.prototype.drawMultiPolygon = function (t, e) { }, t.prototype.drawPoint = function (t, e) { }, t.prototype.drawPolygon = function (t, e) { }, t.prototype.drawText = function (t, e) { }, t.prototype.setFillStrokeStyle = function (t, e) { }, t.prototype.setImageStyle = function (t, e) { }, t.prototype.setTextStyle = function (t, e) { }, t }(), ju = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Nu = function (t) { function e(e, r, n, i, o, a, s) { var l = t.call(this) || this; return l.context_ = e, l.pixelRatio_ = r, l.extent_ = n, l.transform_ = i, l.viewRotation_ = o, l.squaredTolerance_ = a, l.userTransform_ = s, l.contextFillState_ = null, l.contextStrokeState_ = null, l.contextTextState_ = null, l.fillState_ = null, l.strokeState_ = null, l.image_ = null, l.imageAnchorX_ = 0, l.imageAnchorY_ = 0, l.imageHeight_ = 0, l.imageOpacity_ = 0, l.imageOriginX_ = 0, l.imageOriginY_ = 0, l.imageRotateWithView_ = !1, l.imageRotation_ = 0, l.imageScale_ = [0, 0], l.imageWidth_ = 0, l.text_ = "", l.textOffsetX_ = 0, l.textOffsetY_ = 0, l.textRotateWithView_ = !1, l.textRotation_ = 0, l.textScale_ = [0, 0], l.textFillState_ = null, l.textStrokeState_ = null, l.textState_ = null, l.pixelCoordinates_ = [], l.tmpLocalTransform_ = [1, 0, 0, 1, 0, 0], l } return ju(e, t), e.prototype.drawImages_ = function (t, e, r, n) { if (this.image_) { var i = ln(t, e, r, 2, this.transform_, this.pixelCoordinates_), o = this.context_, a = this.tmpLocalTransform_, s = o.globalAlpha; 1 != this.imageOpacity_ && (o.globalAlpha = s * this.imageOpacity_); var l = this.imageRotation_; this.imageRotateWithView_ && (l += this.viewRotation_); for (var u = 0, c = i.length; u < c; u += 2) { var h = i[u] - this.imageAnchorX_, p = i[u + 1] - this.imageAnchorY_; if (0 !== l || 1 != this.imageScale_[0] || 1 != this.imageScale_[1]) { var f = h + this.imageAnchorX_, d = p + this.imageAnchorY_; kt(a, f, d, 1, 1, l, -f, -d), o.setTransform.apply(o, a), o.translate(f, d), o.scale(this.imageScale_[0], this.imageScale_[1]), o.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, -this.imageAnchorX_, -this.imageAnchorY_, this.imageWidth_, this.imageHeight_), o.setTransform(1, 0, 0, 1, 0, 0) } else o.drawImage(this.image_, this.imageOriginX_, this.imageOriginY_, this.imageWidth_, this.imageHeight_, h, p, this.imageWidth_, this.imageHeight_) } 1 != this.imageOpacity_ && (o.globalAlpha = s) } }, e.prototype.drawText_ = function (t, e, r, n) { if (this.textState_ && "" !== this.text_) { this.textFillState_ && this.setContextFillState_(this.textFillState_), this.textStrokeState_ && this.setContextStrokeState_(this.textStrokeState_), this.setContextTextState_(this.textState_); var i = ln(t, e, r, n, this.transform_, this.pixelCoordinates_), o = this.context_, a = this.textRotation_; for (this.textRotateWithView_ && (a += this.viewRotation_); e < r; e += n) { var s = i[e] + this.textOffsetX_, l = i[e + 1] + this.textOffsetY_; if (0 !== a || 1 != this.textScale_[0] || 1 != this.textScale_[1]) { var u = kt(this.tmpLocalTransform_, s, l, 1, 1, a, -s, -l); o.setTransform.apply(o, u), o.translate(s, l), o.scale(this.textScale_[0], this.textScale_[1]), this.textStrokeState_ && o.strokeText(this.text_, 0, 0), this.textFillState_ && o.fillText(this.text_, 0, 0), o.setTransform(1, 0, 0, 1, 0, 0) } else this.textStrokeState_ && o.strokeText(this.text_, s, l), this.textFillState_ && o.fillText(this.text_, s, l) } } }, e.prototype.moveToLineTo_ = function (t, e, r, n, i) { var o = this.context_, a = ln(t, e, r, n, this.transform_, this.pixelCoordinates_); o.moveTo(a[0], a[1]); var s = a.length; i && (s -= 2); for (var l = 2; l < s; l += 2) o.lineTo(a[l], a[l + 1]); return i && o.closePath(), r }, e.prototype.drawRings_ = function (t, e, r, n) { for (var i = 0, o = r.length; i < o; ++i) e = this.moveToLineTo_(t, e, r[i], n, !0); return e }, e.prototype.drawCircle = function (t) { if (Re(this.extent_, t.getExtent())) { if (this.fillState_ || this.strokeState_) { this.fillState_ && this.setContextFillState_(this.fillState_), this.strokeState_ && this.setContextStrokeState_(this.strokeState_); var e = mn(t, this.transform_, this.pixelCoordinates_), r = e[2] - e[0], n = e[3] - e[1], i = Math.sqrt(r * r + n * n), o = this.context_; o.beginPath(), o.arc(e[0], e[1], i, 0, 2 * Math.PI), this.fillState_ && o.fill(), this.strokeState_ && o.stroke() } "" !== this.text_ && this.drawText_(t.getCenter(), 0, 2, 2) } }, e.prototype.setStyle = function (t) { this.setFillStrokeStyle(t.getFill(), t.getStroke()), this.setImageStyle(t.getImage()), this.setTextStyle(t.getText()) }, e.prototype.setTransform = function (t) { this.transform_ = t }, e.prototype.drawGeometry = function (t) { switch (t.getType()) { case bt.POINT: this.drawPoint(t); break; case bt.LINE_STRING: this.drawLineString(t); break; case bt.POLYGON: this.drawPolygon(t); break; case bt.MULTI_POINT: this.drawMultiPoint(t); break; case bt.MULTI_LINE_STRING: this.drawMultiLineString(t); break; case bt.MULTI_POLYGON: this.drawMultiPolygon(t); break; case bt.GEOMETRY_COLLECTION: this.drawGeometryCollection(t); break; case bt.CIRCLE: this.drawCircle(t) } }, e.prototype.drawFeature = function (t, e) { var r = e.getGeometryFunction()(t); r && Re(this.extent_, r.getExtent()) && (this.setStyle(e), this.drawGeometry(r)) }, e.prototype.drawGeometryCollection = function (t) { for (var e = t.getGeometriesArray(), r = 0, n = e.length; r < n; ++r) this.drawGeometry(e[r]) }, e.prototype.drawPoint = function (t) { this.squaredTolerance_ && (t = t.simplifyTransformed(this.squaredTolerance_, this.userTransform_)); var e = t.getFlatCoordinates(), r = t.getStride(); this.image_ && this.drawImages_(e, 0, e.length, r), "" !== this.text_ && this.drawText_(e, 0, e.length, r) }, e.prototype.drawMultiPoint = function (t) { this.squaredTolerance_ && (t = t.simplifyTransformed(this.squaredTolerance_, this.userTransform_)); var e = t.getFlatCoordinates(), r = t.getStride(); this.image_ && this.drawImages_(e, 0, e.length, r), "" !== this.text_ && this.drawText_(e, 0, e.length, r) }, e.prototype.drawLineString = function (t) { if (this.squaredTolerance_ && (t = t.simplifyTransformed(this.squaredTolerance_, this.userTransform_)), Re(this.extent_, t.getExtent())) { if (this.strokeState_) { this.setContextStrokeState_(this.strokeState_); var e = this.context_, r = t.getFlatCoordinates(); e.beginPath(), this.moveToLineTo_(r, 0, r.length, t.getStride(), !1), e.stroke() } if ("" !== this.text_) { var n = t.getFlatMidpoint(); this.drawText_(n, 0, 2, 2) } } }, e.prototype.drawMultiLineString = function (t) { this.squaredTolerance_ && (t = t.simplifyTransformed(this.squaredTolerance_, this.userTransform_)); var e = t.getExtent(); if (Re(this.extent_, e)) { if (this.strokeState_) { this.setContextStrokeState_(this.strokeState_); var r = this.context_, n = t.getFlatCoordinates(), i = 0, o = t.getEnds(), a = t.getStride(); r.beginPath(); for (var s = 0, l = o.length; s < l; ++s) i = this.moveToLineTo_(n, i, o[s], a, !1); r.stroke() } if ("" !== this.text_) { var u = t.getFlatMidpoints(); this.drawText_(u, 0, u.length, 2) } } }, e.prototype.drawPolygon = function (t) { if (this.squaredTolerance_ && (t = t.simplifyTransformed(this.squaredTolerance_, this.userTransform_)), Re(this.extent_, t.getExtent())) { if (this.strokeState_ || this.fillState_) { this.fillState_ && this.setContextFillState_(this.fillState_), this.strokeState_ && this.setContextStrokeState_(this.strokeState_); var e = this.context_; e.beginPath(), this.drawRings_(t.getOrientedFlatCoordinates(), 0, t.getEnds(), t.getStride()), this.fillState_ && e.fill(), this.strokeState_ && e.stroke() } if ("" !== this.text_) { var r = t.getFlatInteriorPoint(); this.drawText_(r, 0, 2, 2) } } }, e.prototype.drawMultiPolygon = function (t) { if (this.squaredTolerance_ && (t = t.simplifyTransformed(this.squaredTolerance_, this.userTransform_)), Re(this.extent_, t.getExtent())) { if (this.strokeState_ || this.fillState_) { this.fillState_ && this.setContextFillState_(this.fillState_), this.strokeState_ && this.setContextStrokeState_(this.strokeState_); var e = this.context_, r = t.getOrientedFlatCoordinates(), n = 0, i = t.getEndss(), o = t.getStride(); e.beginPath(); for (var a = 0, s = i.length; a < s; ++a) { var l = i[a]; n = this.drawRings_(r, n, l, o) } this.fillState_ && e.fill(), this.strokeState_ && e.stroke() } if ("" !== this.text_) { var u = t.getFlatInteriorPoints(); this.drawText_(u, 0, u.length, 2) } } }, e.prototype.setContextFillState_ = function (t) { var e = this.context_, r = this.contextFillState_; r ? r.fillStyle != t.fillStyle && (r.fillStyle = t.fillStyle, e.fillStyle = t.fillStyle) : (e.fillStyle = t.fillStyle, this.contextFillState_ = {fillStyle: t.fillStyle}) }, e.prototype.setContextStrokeState_ = function (t) { var e = this.context_, r = this.contextStrokeState_; r ? (r.lineCap != t.lineCap && (r.lineCap = t.lineCap, e.lineCap = t.lineCap), e.setLineDash && (b(r.lineDash, t.lineDash) || e.setLineDash(r.lineDash = t.lineDash), r.lineDashOffset != t.lineDashOffset && (r.lineDashOffset = t.lineDashOffset, e.lineDashOffset = t.lineDashOffset)), r.lineJoin != t.lineJoin && (r.lineJoin = t.lineJoin, e.lineJoin = t.lineJoin), r.lineWidth != t.lineWidth && (r.lineWidth = t.lineWidth, e.lineWidth = t.lineWidth), r.miterLimit != t.miterLimit && (r.miterLimit = t.miterLimit, e.miterLimit = t.miterLimit), r.strokeStyle != t.strokeStyle && (r.strokeStyle = t.strokeStyle, e.strokeStyle = t.strokeStyle)) : (e.lineCap = t.lineCap, e.setLineDash && (e.setLineDash(t.lineDash), e.lineDashOffset = t.lineDashOffset), e.lineJoin = t.lineJoin, e.lineWidth = t.lineWidth, e.miterLimit = t.miterLimit, e.strokeStyle = t.strokeStyle, this.contextStrokeState_ = { lineCap: t.lineCap, lineDash: t.lineDash, lineDashOffset: t.lineDashOffset, lineJoin: t.lineJoin, lineWidth: t.lineWidth, miterLimit: t.miterLimit, strokeStyle: t.strokeStyle }) }, e.prototype.setContextTextState_ = function (t) { var e = this.context_, r = this.contextTextState_, n = t.textAlign ? t.textAlign : "center"; r ? (r.font != t.font && (r.font = t.font, e.font = t.font), r.textAlign != n && (r.textAlign = n, e.textAlign = n), r.textBaseline != t.textBaseline && (r.textBaseline = t.textBaseline, e.textBaseline = t.textBaseline)) : (e.font = t.font, e.textAlign = n, e.textBaseline = t.textBaseline, this.contextTextState_ = { font: t.font, textAlign: n, textBaseline: t.textBaseline }) }, e.prototype.setFillStrokeStyle = function (t, e) { if (t) { var r = t.getColor(); this.fillState_ = {fillStyle: Tu(r || "#000")} } else this.fillState_ = null; if (e) { var n = e.getColor(), i = e.getLineCap(), o = e.getLineDash(), a = e.getLineDashOffset(), s = e.getLineJoin(), l = e.getWidth(), u = e.getMiterLimit(); this.strokeState_ = { lineCap: void 0 !== i ? i : "round", lineDash: o || pa, lineDashOffset: a || 0, lineJoin: void 0 !== s ? s : "round", lineWidth: this.pixelRatio_ * (void 0 !== l ? l : 1), miterLimit: void 0 !== u ? u : 10, strokeStyle: Tu(n || "#000") } } else this.strokeState_ = null }, e.prototype.setImageStyle = function (t) { if (t) { var e = t.getSize(); if (e) { var r = t.getAnchor(), n = t.getImage(1), i = t.getOrigin(), o = t.getScaleArray(); this.imageAnchorX_ = r[0], this.imageAnchorY_ = r[1], this.imageHeight_ = e[1], this.image_ = n, this.imageOpacity_ = t.getOpacity(), this.imageOriginX_ = i[0], this.imageOriginY_ = i[1], this.imageRotateWithView_ = t.getRotateWithView(), this.imageRotation_ = t.getRotation(), this.imageScale_ = [this.pixelRatio_ * o[0], this.pixelRatio_ * o[1]], this.imageWidth_ = e[0] } else this.image_ = null } else this.image_ = null }, e.prototype.setTextStyle = function (t) { if (t) { var e = t.getFill(); if (e) { var r = e.getColor(); this.textFillState_ = {fillStyle: Tu(r || "#000")} } else this.textFillState_ = null; var n = t.getStroke(); if (n) { var i = n.getColor(), o = n.getLineCap(), a = n.getLineDash(), s = n.getLineDashOffset(), l = n.getLineJoin(), u = n.getWidth(), c = n.getMiterLimit(); this.textStrokeState_ = { lineCap: void 0 !== o ? o : "round", lineDash: a || pa, lineDashOffset: s || 0, lineJoin: void 0 !== l ? l : "round", lineWidth: void 0 !== u ? u : 1, miterLimit: void 0 !== c ? c : 10, strokeStyle: Tu(i || "#000") } } else this.textStrokeState_ = null; var h = t.getFont(), p = t.getOffsetX(), f = t.getOffsetY(), d = t.getRotateWithView(), g = t.getRotation(), y = t.getScaleArray(), m = t.getText(), v = t.getTextAlign(), _ = t.getTextBaseline(); this.textState_ = { font: void 0 !== h ? h : "10px sans-serif", textAlign: void 0 !== v ? v : "center", textBaseline: void 0 !== _ ? _ : "middle" }, this.text_ = void 0 !== m ? m : "", this.textOffsetX_ = void 0 !== p ? this.pixelRatio_ * p : 0, this.textOffsetY_ = void 0 !== f ? this.pixelRatio_ * f : 0, this.textRotateWithView_ = void 0 !== d && d, this.textRotation_ = void 0 !== g ? g : 0, this.textScale_ = [this.pixelRatio_ * y[0], this.pixelRatio_ * y[1]] } else this.text_ = "" }, e }(ku), Du = "Circle", Gu = "Default", zu = "Image", Uu = "LineString", Bu = "Polygon", Vu = "Text", Yu = { Point: function (t, e, r, n, i) { var o, a = r.getImage(), s = r.getText(); i && (t = i, o = a && s && s.getText() ? {} : void 0); if (a) { if (a.getImageState() != ki) return; var l = t.getBuilder(r.getZIndex(), zu); l.setImageStyle(a, o), l.drawPoint(e, n) } if (s && s.getText()) { var u = t.getBuilder(r.getZIndex(), Vu); u.setTextStyle(s, o), u.drawText(e, n) } }, LineString: function (t, e, r, n, i) { var o = r.getStroke(); if (o) { var a = t.getBuilder(r.getZIndex(), Uu); a.setFillStrokeStyle(null, o), a.drawLineString(e, n) } var s = r.getText(); if (s && s.getText()) { var l = (i || t).getBuilder(r.getZIndex(), Vu); l.setTextStyle(s), l.drawText(e, n) } }, Polygon: function (t, e, r, n, i) { var o = r.getFill(), a = r.getStroke(); if (o || a) { var s = t.getBuilder(r.getZIndex(), Bu); s.setFillStrokeStyle(o, a), s.drawPolygon(e, n) } var l = r.getText(); if (l && l.getText()) { var u = (i || t).getBuilder(r.getZIndex(), Vu); u.setTextStyle(l), u.drawText(e, n) } }, MultiPoint: function (t, e, r, n, i) { var o, a = r.getImage(), s = r.getText(); i && (t = i, o = a && s && s.getText() ? {} : void 0); if (a) { if (a.getImageState() != ki) return; var l = t.getBuilder(r.getZIndex(), zu); l.setImageStyle(a, o), l.drawMultiPoint(e, n) } if (s && s.getText()) { var u = (i || t).getBuilder(r.getZIndex(), Vu); u.setTextStyle(s, o), u.drawText(e, n) } }, MultiLineString: function (t, e, r, n, i) { var o = r.getStroke(); if (o) { var a = t.getBuilder(r.getZIndex(), Uu); a.setFillStrokeStyle(null, o), a.drawMultiLineString(e, n) } var s = r.getText(); if (s && s.getText()) { var l = (i || t).getBuilder(r.getZIndex(), Vu); l.setTextStyle(s), l.drawText(e, n) } }, MultiPolygon: function (t, e, r, n, i) { var o = r.getFill(), a = r.getStroke(); if (a || o) { var s = t.getBuilder(r.getZIndex(), Bu); s.setFillStrokeStyle(o, a), s.drawMultiPolygon(e, n) } var l = r.getText(); if (l && l.getText()) { var u = (i || t).getBuilder(r.getZIndex(), Vu); u.setTextStyle(l), u.drawText(e, n) } }, GeometryCollection: function (t, e, r, n, i) { var o, a, s = e.getGeometriesArray(); for (o = 0, a = s.length; o < a; ++o) { (0, Yu[s[o].getType()])(t, s[o], r, n, i) } }, Circle: function (t, e, r, n, i) { var o = r.getFill(), a = r.getStroke(); if (o || a) { var s = t.getBuilder(r.getZIndex(), Du); s.setFillStrokeStyle(o, a), s.drawCircle(e, n) } var l = r.getText(); if (l && l.getText()) { var u = (i || t).getBuilder(r.getZIndex(), Vu); u.setTextStyle(l), u.drawText(e, n) } } }; function Wu(t, e) { return parseInt(o(t), 10) - parseInt(o(e), 10) } function qu(t, e) { var r = Xu(t, e); return r * r } function Xu(t, e) { return .5 * t / e } function Zu(t, e, r, n, i, o, a) { var s = !1, l = r.getImage(); if (l) { var u = l.getImageState(); u == ki || u == ji ? l.unlistenImageChange(i) : (u == Fi && l.load(), u = l.getImageState(), l.listenImageChange(i), s = !0) } return function (t, e, r, n, i, o) { var a = r.getGeometryFunction()(e); if (!a) return; var s = a.simplifyTransformed(n, i); if (r.getRenderer()) !function t(e, r, n, i) { if (r.getType() == bt.GEOMETRY_COLLECTION) { for (var o = r.getGeometries(), a = 0, s = o.length; a < s; ++a) t(e, o[a], n, i); return } e.getBuilder(n.getZIndex(), Gu).drawCustom(r, i, n.getRenderer()) }(t, s, r, e); else { (0, Yu[s.getType()])(t, s, r, e, o) } }(t, e, r, n, o, a), s } function Ku(t) { var e, r = t.frameState, n = Ot(t.inversePixelTransform.slice(), r.coordinateToPixelTransform), i = qu(r.viewState.resolution, r.pixelRatio), o = tn(); return o && (e = Zr(o, r.viewState.projection)), new Nu(t.context, r.pixelRatio, r.extent, n, r.viewState.rotation, i, e) } var Hu, $u = {imageSmoothingEnabled: !1, msImageSmoothingEnabled: !1}; function Ju(t, e, r, n, i) { t.beginPath(), t.moveTo(0, 0), t.lineTo(e, r), t.lineTo(n, i), t.closePath(), t.save(), t.clip(), t.fillRect(0, 0, Math.max(e, n) + 1, Math.max(r, i)), t.restore() } function Qu(t, e) { return Math.abs(t[4 * e] - 210) > 2 || Math.abs(t[4 * e + 3] - 191.25) > 2 } function tc(t, e, r, n) { var i = Hr(r, e, t), o = zr(e, n, r), a = e.getMetersPerUnit(); void 0 !== a && (o *= a); var s = t.getMetersPerUnit(); void 0 !== s && (o /= s); var l = t.getExtent(); if (!l || Qt(l, i)) { var u = zr(t, o, i) / o; isFinite(u) && u > 0 && (o /= u) } return o } function ec(t, e, r, n) { var i = xe(r), o = tc(t, e, i, n); return (!isFinite(o) || o <= 0) && me(r, (function (r) { return o = tc(t, e, r, n), isFinite(o) && o > 0 })), o } function rc(t, e, r, n, i, o, a, s, l, u, c, h) { var p = uo(Math.round(r * t), Math.round(r * e)); if (O(p, h), 0 === l.length) return p.canvas; function f(t) { return Math.round(t * r) / r } p.scale(r, r), p.globalCompositeOperation = "lighter"; var d = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; l.forEach((function (t, e, r) { he(d, t.extent) })); var g = Pe(d), y = Ee(d), m = uo(Math.round(r * g / n), Math.round(r * y / n)); O(m, h); var v = r / n; l.forEach((function (t, e, r) { var n = t.extent[0] - d[0], i = -(t.extent[3] - d[3]), o = Pe(t.extent), a = Ee(t.extent); t.image.width > 0 && t.image.height > 0 && m.drawImage(t.image, u, u, t.image.width - 2 * u, t.image.height - 2 * u, n * v, i * v, o * v, a * v) })); var _ = Ce(a); return s.getTriangles().forEach((function (t, e, i) { var a = t.source, s = t.target, l = a[0][0], u = a[0][1], c = a[1][0], g = a[1][1], y = a[2][0], v = a[2][1], b = f((s[0][0] - _[0]) / o), x = f(-(s[0][1] - _[1]) / o), w = f((s[1][0] - _[0]) / o), S = f(-(s[1][1] - _[1]) / o), E = f((s[2][0] - _[0]) / o), T = f(-(s[2][1] - _[1]) / o), C = l, O = u; l = 0, u = 0; var P = Be([[c -= C, g -= O, 0, 0, w - b], [y -= C, v -= O, 0, 0, E - b], [0, 0, c, g, S - x], [0, 0, y, v, T - x]]); if (P) { if (p.save(), p.beginPath(), function () { if (void 0 === Hu) { var t = document.createElement("canvas").getContext("2d"); t.globalCompositeOperation = "lighter", t.fillStyle = "rgba(210, 0, 0, 0.75)", Ju(t, 4, 5, 4, 0), Ju(t, 4, 5, 0, 5); var e = t.getImageData(0, 0, 3, 3).data; Hu = Qu(e, 0) || Qu(e, 4) || Qu(e, 8) } return Hu }() || h === $u) { p.moveTo(w, S); for (var R = b - w, I = x - S, L = 0; L < 4; L++) p.lineTo(w + f((L + 1) * R / 4), S + f(L * I / 3)), 3 != L && p.lineTo(w + f((L + 1) * R / 4), S + f((L + 1) * I / 3)); p.lineTo(E, T) } else p.moveTo(w, S), p.lineTo(b, x), p.lineTo(E, T); p.clip(), p.transform(P[0], P[2], P[1], P[3], b, x), p.translate(d[0] - C, d[3] - O), p.scale(n / r, -n / r), p.drawImage(m.canvas, 0, 0), p.restore() } })), c && (p.save(), p.globalCompositeOperation = "source-over", p.strokeStyle = "black", p.lineWidth = 1, s.getTriangles().forEach((function (t, e, r) { var n = t.target, i = (n[0][0] - _[0]) / o, a = -(n[0][1] - _[1]) / o, s = (n[1][0] - _[0]) / o, l = -(n[1][1] - _[1]) / o, u = (n[2][0] - _[0]) / o, c = -(n[2][1] - _[1]) / o; p.beginPath(), p.moveTo(s, l), p.lineTo(i, a), p.lineTo(u, c), p.closePath(), p.stroke() })), p.restore()), p.canvas } var nc = [0, 0, 0], ic = function () { function t(t) { var e; if (this.minZoom = void 0 !== t.minZoom ? t.minZoom : 0, this.resolutions_ = t.resolutions, pt(w(this.resolutions_, (function (t, e) { return e - t }), !0), 17), !t.origins) for (var r = 0, n = this.resolutions_.length - 1; r < n; ++r) if (e) { if (this.resolutions_[r] / this.resolutions_[r + 1] !== e) { e = void 0; break } } else e = this.resolutions_[r] / this.resolutions_[r + 1]; this.zoomFactor_ = e, this.maxZoom = this.resolutions_.length - 1, this.origin_ = void 0 !== t.origin ? t.origin : null, this.origins_ = null, void 0 !== t.origins && (this.origins_ = t.origins, pt(this.origins_.length == this.resolutions_.length, 20)); var i = t.extent; void 0 === i || this.origin_ || this.origins_ || (this.origin_ = Ce(i)), pt(!this.origin_ && this.origins_ || this.origin_ && !this.origins_, 18), this.tileSizes_ = null, void 0 !== t.tileSizes && (this.tileSizes_ = t.tileSizes, pt(this.tileSizes_.length == this.resolutions_.length, 19)), this.tileSize_ = void 0 !== t.tileSize ? t.tileSize : this.tileSizes_ ? null : 256, pt(!this.tileSize_ && this.tileSizes_ || this.tileSize_ && !this.tileSizes_, 22), this.extent_ = void 0 !== i ? i : null, this.fullTileRanges_ = null, this.tmpSize_ = [0, 0], void 0 !== t.sizes ? this.fullTileRanges_ = t.sizes.map((function (t, e) { var r = new _u(Math.min(0, t[0]), Math.max(t[0] - 1, -1), Math.min(0, t[1]), Math.max(t[1] - 1, -1)); if (i) { var n = this.getTileRangeForExtentAndZ(i, e); r.minX = Math.max(n.minX, r.minX), r.maxX = Math.min(n.maxX, r.maxX), r.minY = Math.max(n.minY, r.minY), r.maxY = Math.min(n.maxY, r.maxY) } return r }), this) : i && this.calculateTileRanges_(i) } return t.prototype.forEachTileCoord = function (t, e, r) { for (var n = this.getTileRangeForExtentAndZ(t, e), i = n.minX, o = n.maxX; i <= o; ++i) for (var a = n.minY, s = n.maxY; a <= s; ++a) r([e, i, a]) }, t.prototype.forEachTileCoordParentTileRange = function (t, e, r, n) { var i, o, a = null, s = t[0] - 1; for (2 === this.zoomFactor_ ? (i = t[1], o = t[2]) : a = this.getTileCoordExtent(t, n); s >= this.minZoom;) { if (e(s, 2 === this.zoomFactor_ ? vu(i = Math.floor(i / 2), i, o = Math.floor(o / 2), o, r) : this.getTileRangeForExtentAndZ(a, s, r))) return !0; --s } return !1 }, t.prototype.getExtent = function () { return this.extent_ }, t.prototype.getMaxZoom = function () { return this.maxZoom }, t.prototype.getMinZoom = function () { return this.minZoom }, t.prototype.getOrigin = function (t) { return this.origin_ ? this.origin_ : this.origins_[t] }, t.prototype.getResolution = function (t) { return this.resolutions_[t] }, t.prototype.getResolutions = function () { return this.resolutions_ }, t.prototype.getTileCoordChildTileRange = function (t, e, r) { if (t[0] < this.maxZoom) { if (2 === this.zoomFactor_) { var n = 2 * t[1], i = 2 * t[2]; return vu(n, n + 1, i, i + 1, e) } var o = this.getTileCoordExtent(t, r); return this.getTileRangeForExtentAndZ(o, t[0] + 1, e) } return null }, t.prototype.getTileRangeExtent = function (t, e, r) { var n = this.getOrigin(t), i = this.getResolution(t), o = Is(this.getTileSize(t), this.tmpSize_), a = n[0] + e.minX * o[0] * i, s = n[0] + (e.maxX + 1) * o[0] * i; return ie(a, n[1] + e.minY * o[1] * i, s, n[1] + (e.maxY + 1) * o[1] * i, r) }, t.prototype.getTileRangeForExtentAndZ = function (t, e, r) { var n = nc; this.getTileCoordForXYAndZ_(t[0], t[3], e, !1, n); var i = n[1], o = n[2]; return this.getTileCoordForXYAndZ_(t[2], t[1], e, !0, n), vu(i, n[1], o, n[2], r) }, t.prototype.getTileCoordCenter = function (t) { var e = this.getOrigin(t[0]), r = this.getResolution(t[0]), n = Is(this.getTileSize(t[0]), this.tmpSize_); return [e[0] + (t[1] + .5) * n[0] * r, e[1] - (t[2] + .5) * n[1] * r] }, t.prototype.getTileCoordExtent = function (t, e) { var r = this.getOrigin(t[0]), n = this.getResolution(t[0]), i = Is(this.getTileSize(t[0]), this.tmpSize_), o = r[0] + t[1] * i[0] * n, a = r[1] - (t[2] + 1) * i[1] * n; return ie(o, a, o + i[0] * n, a + i[1] * n, e) }, t.prototype.getTileCoordForCoordAndResolution = function (t, e, r) { return this.getTileCoordForXYAndResolution_(t[0], t[1], e, !1, r) }, t.prototype.getTileCoordForXYAndResolution_ = function (t, e, r, n, i) { var o = this.getZForResolution(r), a = r / this.getResolution(o), s = this.getOrigin(o), l = Is(this.getTileSize(o), this.tmpSize_), u = n ? .5 : 0, c = n ? .5 : 0, h = Math.floor((t - s[0]) / r + u), p = Math.floor((s[1] - e) / r + c), f = a * h / l[0], d = a * p / l[1]; return n ? (f = Math.ceil(f) - 1, d = Math.ceil(d) - 1) : (f = Math.floor(f), d = Math.floor(d)), uu(o, f, d, i) }, t.prototype.getTileCoordForXYAndZ_ = function (t, e, r, n, i) { var o = this.getOrigin(r), a = this.getResolution(r), s = Is(this.getTileSize(r), this.tmpSize_), l = n ? .5 : 0, u = n ? .5 : 0, c = Math.floor((t - o[0]) / a + l), h = Math.floor((o[1] - e) / a + u), p = c / s[0], f = h / s[1]; return n ? (p = Math.ceil(p) - 1, f = Math.ceil(f) - 1) : (p = Math.floor(p), f = Math.floor(f)), uu(r, p, f, i) }, t.prototype.getTileCoordForCoordAndZ = function (t, e, r) { return this.getTileCoordForXYAndZ_(t[0], t[1], e, !1, r) }, t.prototype.getTileCoordResolution = function (t) { return this.resolutions_[t[0]] }, t.prototype.getTileSize = function (t) { return this.tileSize_ ? this.tileSize_ : this.tileSizes_[t] }, t.prototype.getFullTileRange = function (t) { return this.fullTileRanges_ ? this.fullTileRanges_[t] : this.extent_ ? this.getTileRangeForExtentAndZ(this.extent_, t) : null }, t.prototype.getZForResolution = function (t, e) { return Ne(y(this.resolutions_, t, e || 0), this.minZoom, this.maxZoom) }, t.prototype.calculateTileRanges_ = function (t) { for (var e = this.resolutions_.length, r = new Array(e), n = this.minZoom; n < e; ++n) r[n] = this.getTileRangeForExtentAndZ(t, n); this.fullTileRanges_ = r }, t }(); function oc(t) { var e = t.getDefaultTileGrid(); return e || (e = cc(t), t.setDefaultTileGrid(e)), e } function ac(t, e, r) { var n = e[0], i = t.getTileCoordCenter(e), o = hc(r); if (Qt(o, i)) return e; var a = Pe(o), s = Math.ceil((o[0] - i[0]) / a); return i[0] += a * s, t.getTileCoordForCoordAndZ(i, n) } function sc(t, e, r, n) { var i = void 0 !== n ? n : Ut, o = uc(t, e, r); return new ic({extent: t, origin: we(t, i), resolutions: o, tileSize: r}) } function lc(t) { var e = t || {}, r = e.extent || Gr("EPSG:3857").getExtent(), n = { extent: r, minZoom: e.minZoom, tileSize: e.tileSize, resolutions: uc(r, e.maxZoom, e.tileSize, e.maxResolution) }; return new ic(n) } function uc(t, e, r, n) { for (var i = void 0 !== e ? e : 42, o = Ee(t), a = Pe(t), s = Is(void 0 !== r ? r : 256), l = n > 0 ? n : Math.max(a / s[0], o / s[1]), u = i + 1, c = new Array(u), h = 0; h < u; ++h) c[h] = l / Math.pow(2, h); return c } function cc(t, e, r, n) { return sc(hc(t), e, r, n) } function hc(t) { var e = (t = Gr(t)).getExtent(); if (!e) { var r = 180 * wt[St.DEGREES] / t.getMetersPerUnit(); e = ie(-r, -r, r, r) } return e } function pc(t, e) { var r = /\{z\}/g, n = /\{x\}/g, i = /\{y\}/g, o = /\{-y\}/g; return function (a, s, l) { return a ? t.replace(r, a[0].toString()).replace(n, a[1].toString()).replace(i, a[2].toString()).replace(o, (function () { var t = a[0], r = e.getFullTileRange(t); return pt(r, 55), (r.getHeight() - a[2] - 1).toString() })) : void 0 } } function fc(t, e) { for (var r = t.length, n = new Array(r), i = 0; i < r; ++i) n[i] = pc(t[i], e); return dc(n) } function dc(t) { return 1 === t.length ? t[0] : function (e, r, n) { if (e) { var i = We(fu(e), t.length); return t[i](e, r, n) } } } function gc(t, e, r) { } function yc(t) { var e = [], r = /\{([a-z])-([a-z])\}/.exec(t); if (r) { var n = r[1].charCodeAt(0), i = r[2].charCodeAt(0), o = void 0; for (o = n; o <= i; ++o) e.push(t.replace(r[0], String.fromCharCode(o))); return e } if (r = /\{(\d+)-(\d+)\}/.exec(t)) { for (var a = parseInt(r[2], 10), s = parseInt(r[1], 10); s <= a; s++) e.push(t.replace(r[0], s.toString())); return e } return e.push(t), e } function mc(t, e) { var r = []; Object.keys(e).forEach((function (t) { null !== e[t] && void 0 !== e[t] && r.push(t + "=" + encodeURIComponent(e[t])) })); var n = r.join("&"); return (t = -1 === (t = t.replace(/[?&]$/, "")).indexOf("?") ? t + "?" : t + "&") + n } var vc, _c = ["experimental-webgl", "webgl", "webkit-3d", "moz-webgl"]; function bc(t, e) { for (var r = _c.length, n = 0; n < r; ++n) try { var i = t.getContext(_c[n], e); if (i) return i } catch (t) { } return null } function xc() { if (!vc) { var t = bc(document.createElement("canvas")); t && (vc = t.getSupportedExtensions()) } return vc } var wc = "http://www.w3.org/2001/XMLSchema-instance"; function Sc(t, e) { return Xc().createElementNS(t, e) } function Ec(t, e) { return Tc(t, e, []).join("") } function Tc(t, e, r) { if (t.nodeType == Node.CDATA_SECTION_NODE || t.nodeType == Node.TEXT_NODE) e ? r.push(String(t.nodeValue).replace(/(\r\n|\r|\n)/g, "")) : r.push(t.nodeValue); else { var n = void 0; for (n = t.firstChild; n; n = n.nextSibling) Tc(n, e, r) } return r } function Cc(t) { return "documentElement" in t } function Oc(t, e, r) { return t.getAttributeNS(e, r) || "" } function Pc(t) { return (new DOMParser).parseFromString(t, "application/xml") } function Rc(t, e) { return function (r, n) { var i = t.call(void 0 !== e ? e : this, r, n); void 0 !== i && v(n[n.length - 1], i) } } function Ic(t, e) { return function (r, n) { var i = t.call(void 0 !== e ? e : this, r, n); void 0 !== i && n[n.length - 1].push(i) } } function Lc(t, e) { return function (r, n) { var i = t.call(void 0 !== e ? e : this, r, n); void 0 !== i && (n[n.length - 1] = i) } } function Mc(t, e, r) { return function (n, i) { var o = t.call(void 0 !== r ? r : this, n, i); if (void 0 !== o) { var a = i[i.length - 1], s = void 0 !== e ? e : n.localName, l = void 0; s in a ? l = a[s] : (l = [], a[s] = l), l.push(o) } } } function Fc(t, e, r) { return function (n, i) { var o = t.call(void 0 !== r ? r : this, n, i); void 0 !== o && (i[i.length - 1][void 0 !== e ? e : n.localName] = o) } } function Ac(t, e) { return function (r, n, i) { t.call(void 0 !== e ? e : this, r, n, i), i[i.length - 1].node.appendChild(r) } } function kc(t, e) { var r, n; return function (e, i, o) { if (void 0 === r) { r = {}; var a = {}; a[e.localName] = t, r[e.namespaceURI] = a, n = jc(e.localName) } Bc(r, n, i, o) } } function jc(t, e) { var r = t; return function (t, n, i) { var o = n[n.length - 1].node, a = r; return void 0 === a && (a = i), Sc(void 0 !== e ? e : o.namespaceURI, a) } } var Nc = jc(); function Dc(t, e) { for (var r = e.length, n = new Array(r), i = 0; i < r; ++i) n[i] = t[e[i]]; return n } function Gc(t, e, r) { var n, i, o = void 0 !== r ? r : {}; for (n = 0, i = t.length; n < i; ++n) o[t[n]] = e; return o } function zc(t, e, r, n) { var i; for (i = e.firstElementChild; i; i = i.nextElementSibling) { var o = t[i.namespaceURI]; if (void 0 !== o) { var a = o[i.localName]; void 0 !== a && a.call(n, i, r) } } } function Uc(t, e, r, n, i) { return n.push(t), zc(e, r, n, i), n.pop() } function Bc(t, e, r, n, i, o) { for (var a, s, l = (void 0 !== i ? i : r).length, u = 0; u < l; ++u) void 0 !== (a = r[u]) && void 0 !== (s = e.call(void 0 !== o ? o : this, a, n, void 0 !== i ? i[u] : void 0)) && t[s.namespaceURI][s.localName].call(o, s, a, n) } function Vc(t, e, r, n, i, o, a) { return i.push(t), Bc(e, r, n, i, o, a), i.pop() } var Yc = void 0; function Wc() { return void 0 === Yc && "undefined" != typeof XMLSerializer && (Yc = new XMLSerializer), Yc } var qc = void 0; function Xc() { return void 0 === qc && "undefined" != typeof document && (qc = document.implementation.createDocument("", "", null)), qc } var Zc = new Blob(['var e=self;e.onmessage=function(s){console.log("version worker received message:",s.data),e.postMessage("version: ".concat("latest"))};'], {type: "application/javascript"}); URL.createObjectURL(Zc); var Kc = new Blob(['var e="function"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1,o=arguments.length;r= 0; o--) this.postProcessPasses_[o].init(t); e.bindTexture(e.TEXTURE_2D, null), e.clearColor(0, 0, 0, 0), e.clear(e.COLOR_BUFFER_BIT), e.enable(e.BLEND), e.blendFunc(e.ONE, e.ONE_MINUS_SRC_ALPHA), e.useProgram(this.currentProgram_), this.applyFrameState(t), this.applyUniforms(t) }, e.prototype.prepareDrawToRenderTarget = function (t, e, r) { var n = this.getGL(), i = e.getSize(); n.bindFramebuffer(n.FRAMEBUFFER, e.getFramebuffer()), n.viewport(0, 0, i[0], i[1]), n.bindTexture(n.TEXTURE_2D, e.getTexture()), n.clearColor(0, 0, 0, 0), n.clear(n.COLOR_BUFFER_BIT), n.enable(n.BLEND), n.blendFunc(n.ONE, r ? n.ZERO : n.ONE_MINUS_SRC_ALPHA), n.useProgram(this.currentProgram_), this.applyFrameState(t), this.applyUniforms(t) }, e.prototype.drawElements = function (t, e) { var r = this.getGL(), n = r.UNSIGNED_INT, i = e - t, o = 4 * t; r.drawElements(r.TRIANGLES, i, n, o) }, e.prototype.finalizeDraw = function (t) { for (var e = 0; e < this.postProcessPasses_.length; e++) this.postProcessPasses_[e].apply(t, this.postProcessPasses_[e + 1] || null) }, e.prototype.getCanvas = function () { return this.canvas_ }, e.prototype.getGL = function () { return this.gl_ }, e.prototype.applyFrameState = function (t) { var e = t.size, r = t.viewState.rotation, n = Ct(this.offsetScaleMatrix_); Mt(n, 2 / e[0], 2 / e[1]); var i = Ct(this.offsetRotateMatrix_); 0 !== r && Lt(i, -r), this.setUniformMatrixValue(sh, ih(this.tmpMat4_, n)), this.setUniformMatrixValue(lh, ih(this.tmpMat4_, i)), this.setUniformFloatValue(uh, .001 * (Date.now() - this.startTime_)), this.setUniformFloatValue(ch, t.viewState.zoom), this.setUniformFloatValue(hh, t.viewState.resolution) }, e.prototype.applyUniforms = function (t) { var e, r = this.getGL(), n = 0; this.uniforms_.forEach(function (i) { if ((e = "function" == typeof i.value ? i.value(t) : i.value) instanceof HTMLCanvasElement || e instanceof HTMLImageElement || e instanceof ImageData) i.texture || (i.prevValue = void 0, i.texture = r.createTexture()), r.activeTexture(r["TEXTURE" + n]), r.bindTexture(r.TEXTURE_2D, i.texture), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_MIN_FILTER, r.LINEAR), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_WRAP_S, r.CLAMP_TO_EDGE), r.texParameteri(r.TEXTURE_2D, r.TEXTURE_WRAP_T, r.CLAMP_TO_EDGE), (!(e instanceof HTMLImageElement) || e.complete) && i.prevValue !== e && (i.prevValue = e, r.texImage2D(r.TEXTURE_2D, 0, r.RGBA, r.RGBA, r.UNSIGNED_BYTE, e)), r.uniform1i(this.getUniformLocation(i.name), n++); else if (Array.isArray(e) && 6 === e.length) this.setUniformMatrixValue(i.name, ih(this.tmpMat4_, e)); else if (Array.isArray(e) && e.length <= 4) switch (e.length) { case 2: return void r.uniform2f(this.getUniformLocation(i.name), e[0], e[1]); case 3: return void r.uniform3f(this.getUniformLocation(i.name), e[0], e[1], e[2]); case 4: return void r.uniform4f(this.getUniformLocation(i.name), e[0], e[1], e[2], e[3]); default: return } else "number" == typeof e && r.uniform1f(this.getUniformLocation(i.name), e) }.bind(this)) }, e.prototype.useProgram = function (t) { return t != this.currentProgram_ && (this.getGL().useProgram(t), this.currentProgram_ = t, this.uniformLocations_ = {}, this.attribLocations_ = {}, !0) }, e.prototype.compileShader = function (t, e) { var r = this.getGL(), n = r.createShader(e); return r.shaderSource(n, t), r.compileShader(n), n }, e.prototype.getProgram = function (t, e) { var r = this.getGL(), n = this.compileShader(t, r.FRAGMENT_SHADER), i = this.compileShader(e, r.VERTEX_SHADER); this.shaderCompileErrors_ = null, r.getShaderInfoLog(n) && (this.shaderCompileErrors_ = "Fragment shader compilation failed:\n" + r.getShaderInfoLog(n)), r.getShaderInfoLog(i) && (this.shaderCompileErrors_ = (this.shaderCompileErrors_ || "") + "Vertex shader compilation failed:\n" + r.getShaderInfoLog(i)); var o = r.createProgram(); return r.attachShader(o, n), r.attachShader(o, i), r.linkProgram(o), o }, e.prototype.getShaderCompileErrors = function () { return this.shaderCompileErrors_ }, e.prototype.getUniformLocation = function (t) { return void 0 === this.uniformLocations_[t] && (this.uniformLocations_[t] = this.getGL().getUniformLocation(this.currentProgram_, t)), this.uniformLocations_[t] }, e.prototype.getAttributeLocation = function (t) { return void 0 === this.attribLocations_[t] && (this.attribLocations_[t] = this.getGL().getAttribLocation(this.currentProgram_, t)), this.attribLocations_[t] }, e.prototype.makeProjectionTransform = function (t, e) { var r = t.size, n = t.viewState.rotation, i = t.viewState.resolution, o = t.viewState.center; return Ct(e), kt(e, 0, 0, 2 / (i * r[0]), 2 / (i * r[1]), -n, -o[0], -o[1]), e }, e.prototype.setUniformFloatValue = function (t, e) { this.getGL().uniform1f(this.getUniformLocation(t), e) }, e.prototype.setUniformMatrixValue = function (t, e) { this.getGL().uniformMatrix4fv(this.getUniformLocation(t), !1, e) }, e.prototype.enableAttributeArray_ = function (t, e, r, n, i) { var o = this.getAttributeLocation(t); o < 0 || (this.getGL().enableVertexAttribArray(o), this.getGL().vertexAttribPointer(o, e, r, !1, n, i)) }, e.prototype.enableAttributes = function (t) { for (var e = fh(t), r = 0, n = 0; n < t.length; n++) { var i = t[n]; this.enableAttributeArray_(i.name, i.size, i.type || 5126, e, r), r += i.size * dh(i.type) } }, e.prototype.handleWebGLContextLost = function () { P(this.bufferCache_), this.currentProgram_ = null }, e.prototype.handleWebGLContextRestored = function () { }, e.prototype.createTexture = function (t, e, r) { var n = this.getGL(), i = r || n.createTexture(), o = n.RGBA, a = n.RGBA, s = n.UNSIGNED_BYTE; return n.bindTexture(n.TEXTURE_2D, i), e ? n.texImage2D(n.TEXTURE_2D, 0, o, a, s, e) : n.texImage2D(n.TEXTURE_2D, 0, o, t[0], t[1], 0, a, s, null), n.texParameteri(n.TEXTURE_2D, n.TEXTURE_MIN_FILTER, n.LINEAR), n.texParameteri(n.TEXTURE_2D, n.TEXTURE_WRAP_S, n.CLAMP_TO_EDGE), n.texParameteri(n.TEXTURE_2D, n.TEXTURE_WRAP_T, n.CLAMP_TO_EDGE), i }, e }(p), yh = new Uint8Array(4), mh = function () { function t(t, e) { this.helper_ = t; var r = t.getGL(); this.texture_ = r.createTexture(), this.framebuffer_ = r.createFramebuffer(), this.size_ = e || [1, 1], this.data_ = new Uint8Array(0), this.dataCacheDirty_ = !0, this.updateSize_() } return t.prototype.setSize = function (t) { b(t, this.size_) || (this.size_[0] = t[0], this.size_[1] = t[1], this.updateSize_()) }, t.prototype.getSize = function () { return this.size_ }, t.prototype.clearCachedData = function () { this.dataCacheDirty_ = !0 }, t.prototype.readAll = function () { if (this.dataCacheDirty_) { var t = this.size_, e = this.helper_.getGL(); e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer_), e.readPixels(0, 0, t[0], t[1], e.RGBA, e.UNSIGNED_BYTE, this.data_), this.dataCacheDirty_ = !1 } return this.data_ }, t.prototype.readPixel = function (t, e) { if (t < 0 || e < 0 || t > this.size_[0] || e >= this.size_[1]) return yh[0] = 0, yh[1] = 0, yh[2] = 0, yh[3] = 0, yh; this.readAll(); var r = Math.floor(t) + (this.size_[1] - Math.floor(e) - 1) * this.size_[0]; return yh[0] = this.data_[4 * r], yh[1] = this.data_[4 * r + 1], yh[2] = this.data_[4 * r + 2], yh[3] = this.data_[4 * r + 3], yh }, t.prototype.getTexture = function () { return this.texture_ }, t.prototype.getFramebuffer = function () { return this.framebuffer_ }, t.prototype.updateSize_ = function () { var t = this.size_, e = this.helper_.getGL(); this.texture_ = this.helper_.createTexture(t, null, this.texture_), e.bindFramebuffer(e.FRAMEBUFFER, this.framebuffer_), e.viewport(0, 0, t[0], t[1]), e.framebufferTexture2D(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0, e.TEXTURE_2D, this.texture_, 0), this.data_ = new Uint8Array(t[0] * t[1] * 4) }, t }(), vh = 1, _h = 2, bh = 4, xh = 8, wh = 16, Sh = 31, Eh = {}; function Th(t) { if ("number" == typeof t) return vh; if ("boolean" == typeof t) return xh; if ("string" == typeof t) return Io(t) ? bh | _h : _h; if (!Array.isArray(t)) throw new Error("Unhandled value type: " + JSON.stringify(t)); var e = t; if (e.every((function (t) { return "number" == typeof t }))) return 3 === e.length || 4 === e.length ? bh | wh : wh; if ("string" != typeof e[0]) throw new Error("Expected an expression operator but received: " + JSON.stringify(e)); var r = Eh[e[0]]; if (void 0 === r) throw new Error("Unrecognized expression operator: " + JSON.stringify(e)); return r.getReturnType(e.slice(1)) } function Ch(t) { return Math.log2(t) % 1 == 0 } function Oh(t) { var e = t.toString(); return -1 === e.indexOf(".") ? e + ".0" : e } function Ph(t) { if (t.length < 2 || t.length > 4) throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays."); return "vec" + t.length + "(" + t.map(Oh).join(", ") + ")" } function Rh(t) { var e = Oo(t).slice(); return e.length < 4 && e.push(1), Ph(e.map((function (t, e) { return e < 3 ? t / 255 : t }))) } function Ih(t, e) { return void 0 === t.stringLiteralsMap[e] && (t.stringLiteralsMap[e] = Object.keys(t.stringLiteralsMap).length), t.stringLiteralsMap[e] } function Lh(t, e) { return Oh(Ih(t, e)) } function Mh(t, e, r) { if (Array.isArray(e) && "string" == typeof e[0]) { var n = Eh[e[0]]; if (void 0 === n) throw new Error("Unrecognized expression operator: " + JSON.stringify(e)); return n.toGlsl(t, e.slice(1), r) } var i = Th(e); return (i & vh) > 0 ? Oh(e) : (i & xh) > 0 ? e.toString() : (i & _h) > 0 && (void 0 === r || r == _h) ? Lh(t, e.toString()) : (i & bh) > 0 && (void 0 === r || r == bh) ? Rh(e) : (i & wh) > 0 ? Ph(e) : void 0 } function Fh(t) { if (!(Th(t) & vh)) throw new Error("A numeric value was expected, got " + JSON.stringify(t) + " instead") } function Ah(t) { for (var e = 0; e < t.length; e++) Fh(t[e]) } function kh(t) { if (!(Th(t) & _h)) throw new Error("A string value was expected, got " + JSON.stringify(t) + " instead") } function jh(t) { if (!(Th(t) & xh)) throw new Error("A boolean value was expected, got " + JSON.stringify(t) + " instead") } function Nh(t, e) { if (t.length !== e) throw new Error("Exactly " + e + " arguments were expected, got " + t.length + " instead") } function Dh(t, e) { if (t.length < e) throw new Error("At least " + e + " arguments were expected, got " + t.length + " instead") } function Gh(t, e) { if (t.length > e) throw new Error("At most " + e + " arguments were expected, got " + t.length + " instead") } function zh(t) { if (t.length % 2 != 0) throw new Error("An even amount of arguments was expected, got " + t + " instead") } function Uh(t, e) { if (!Ch(e)) throw new Error("Could not infer only one type from the following expression: " + JSON.stringify(t)) } function Bh(t) { return { getReturnType: function (t) { return xh }, toGlsl: function (e, r) { Nh(r, 2); for (var n = Sh, i = 0; i < r.length; i++) n &= Th(r[i]); if (0 === n) throw new Error("All arguments should be of compatible type, got " + JSON.stringify(r) + " instead"); return "(" + Mh(e, r[0], n) + " " + t + " " + Mh(e, r[1], n) + ")" } } } function Vh(t) { return { getReturnType: function (t) { return xh }, toGlsl: function (e, r) { Dh(r, 2); for (var n = 0; n < r.length; n++) jh(r[n]); return "(" + r.map((function (t) { return Mh(e, t) })).join(" " + t + " ") + ")" } } } Eh.get = { getReturnType: function (t) { return Sh }, toGlsl: function (t, e) { Nh(e, 1), kh(e[0]); var r = e[0].toString(); return -1 === t.attributes.indexOf(r) && t.attributes.push(r), (t.inFragmentShader ? "v_" : "a_") + r } }, Eh.var = { getReturnType: function (t) { return Sh }, toGlsl: function (t, e) { Nh(e, 1), kh(e[0]); var r = e[0].toString(); return -1 === t.variables.indexOf(r) && t.variables.push(r), "u_" + r } }, Eh.time = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 0), "u_time" } }, Eh.zoom = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 0), "u_zoom" } }, Eh.resolution = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 0), "u_resolution" } }, Eh["*"] = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " * " + Mh(t, e[1]) + ")" } }, Eh["/"] = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " / " + Mh(t, e[1]) + ")" } }, Eh["+"] = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " + " + Mh(t, e[1]) + ")" } }, Eh["-"] = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " - " + Mh(t, e[1]) + ")" } }, Eh.clamp = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { Nh(e, 3), Ah(e); var r = Mh(t, e[1]), n = Mh(t, e[2]); return "clamp(" + Mh(t, e[0]) + ", " + r + ", " + n + ")" } }, Eh["%"] = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "mod(" + Mh(t, e[0]) + ", " + Mh(t, e[1]) + ")" } }, Eh["^"] = { getReturnType: function (t) { return vh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "pow(" + Mh(t, e[0]) + ", " + Mh(t, e[1]) + ")" } }, Eh[">"] = { getReturnType: function (t) { return xh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " > " + Mh(t, e[1]) + ")" } }, Eh[">="] = { getReturnType: function (t) { return xh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " >= " + Mh(t, e[1]) + ")" } }, Eh["<"] = { getReturnType: function (t) { return xh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " < " + Mh(t, e[1]) + ")" } }, Eh["<="] = { getReturnType: function (t) { return xh }, toGlsl: function (t, e) { return Nh(e, 2), Ah(e), "(" + Mh(t, e[0]) + " <= " + Mh(t, e[1]) + ")" } }, Eh["=="] = Bh("=="), Eh["!="] = Bh("!="), Eh["!"] = { getReturnType: function (t) { return xh }, toGlsl: function (t, e) { return Nh(e, 1), jh(e[0]), "(!" + Mh(t, e[0]) + ")" } }, Eh.all = Vh("&&"), Eh.any = Vh("||"), Eh.between = { getReturnType: function (t) { return xh }, toGlsl: function (t, e) { Nh(e, 3), Ah(e); var r = Mh(t, e[1]), n = Mh(t, e[2]), i = Mh(t, e[0]); return "(" + i + " >= " + r + " && " + i + " <= " + n + ")" } }, Eh.array = { getReturnType: function (t) { return wh }, toGlsl: function (t, e) { Dh(e, 2), Gh(e, 4), Ah(e); var r = e.map((function (e) { return Mh(t, e, vh) })); return "vec" + e.length + "(" + r.join(", ") + ")" } }, Eh.color = { getReturnType: function (t) { return bh }, toGlsl: function (t, e) { Dh(e, 3), Gh(e, 4), Ah(e); var r = e; 3 === e.length && r.push(1); var n = e.map((function (e, r) { return Mh(t, e, vh) + (r < 3 ? " / 255.0" : "") })); return "vec" + e.length + "(" + n.join(", ") + ")" } }, Eh.interpolate = { getReturnType: function (t) { for (var e = bh | vh, r = 3; r < t.length; r += 2) e &= Th(t[r]); return e }, toGlsl: function (t, e, r) { zh(e), Dh(e, 6); var n, i = e[0]; switch (i[0]) { case"linear": n = 1; break; case"exponential": n = i[1]; break; default: n = null } if (!n) throw new Error('Invalid interpolation type for "interpolate" operator, received: ' + JSON.stringify(i)); var o = void 0 !== r ? r : Sh, a = Eh.interpolate.getReturnType(e) & o; Uh(e, a); for (var s = Mh(t, e[1]), l = null, u = 2; u < e.length - 2; u += 2) { var c = Mh(t, e[u]), h = Mh(t, e[u + 1], a), p = Mh(t, e[u + 2]); l = "mix(" + (l || h) + ", " + Mh(t, e[u + 3], a) + ", pow(clamp((" + s + " - " + c + ") / (" + p + " - " + c + "), 0.0, 1.0), " + Oh(n) + "))" } return l } }, Eh.match = { getReturnType: function (t) { for (var e = Sh, r = 2; r < t.length; r += 2) e &= Th(t[r]); return e &= Th(t[t.length - 1]) }, toGlsl: function (t, e, r) { zh(e), Dh(e, 4); var n = void 0 !== r ? r : Sh, i = Eh.match.getReturnType(e) & n; Uh(e, i); for (var o = Mh(t, e[0]), a = Mh(t, e[e.length - 1], i), s = null, l = e.length - 3; l >= 1; l -= 2) { s = "(" + o + " == " + Mh(t, e[l]) + " ? " + Mh(t, e[l + 1], i) + " : " + (s || a) + ")" } return s } }, Eh.case = { getReturnType: function (t) { for (var e = Sh, r = 1; r < t.length; r += 2) e &= Th(t[r]); return e &= Th(t[t.length - 1]) }, toGlsl: function (t, e, r) { !function (t) { if (t.length % 2 == 0) throw new Error("An odd amount of arguments was expected, got " + t + " instead") }(e), Dh(e, 3); var n = void 0 !== r ? r : Sh, i = Eh.case.getReturnType(e) & n; Uh(e, i); for (var o = 0; o < e.length - 1; o += 2) jh(e[o]); var a = Mh(t, e[e.length - 1], i), s = null; for (o = e.length - 3; o >= 0; o -= 2) { s = "(" + Mh(t, e[o]) + " ? " + Mh(t, e[o + 1], i) + " : " + (s || a) + ")" } return s } }; var Yh = function () { function t() { this.uniforms = [], this.attributes = [], this.varyings = [], this.sizeExpression = "vec2(1.0)", this.rotationExpression = "0.0", this.offsetExpression = "vec2(0.0)", this.colorExpression = "vec4(1.0)", this.texCoordExpression = "vec4(0.0, 0.0, 1.0, 1.0)", this.discardExpression = "false", this.rotateWithView = !1 } return t.prototype.addUniform = function (t) { return this.uniforms.push(t), this }, t.prototype.addAttribute = function (t) { return this.attributes.push(t), this }, t.prototype.addVarying = function (t, e, r) { return this.varyings.push({name: t, type: e, expression: r}), this }, t.prototype.setSizeExpression = function (t) { return this.sizeExpression = t, this }, t.prototype.setRotationExpression = function (t) { return this.rotationExpression = t, this }, t.prototype.setSymbolOffsetExpression = function (t) { return this.offsetExpression = t, this }, t.prototype.setColorExpression = function (t) { return this.colorExpression = t, this }, t.prototype.setTextureCoordinateExpression = function (t) { return this.texCoordExpression = t, this }, t.prototype.setFragmentDiscardExpression = function (t) { return this.discardExpression = t, this }, t.prototype.setSymbolRotateWithView = function (t) { return this.rotateWithView = t, this }, t.prototype.getSizeExpression = function () { return this.sizeExpression }, t.prototype.getOffsetExpression = function () { return this.offsetExpression }, t.prototype.getColorExpression = function () { return this.colorExpression }, t.prototype.getTextureCoordinateExpression = function () { return this.texCoordExpression }, t.prototype.getFragmentDiscardExpression = function () { return this.discardExpression }, t.prototype.getSymbolVertexShader = function (t) { var e = this.rotateWithView ? "u_offsetScaleMatrix * u_offsetRotateMatrix" : "u_offsetScaleMatrix", r = this.attributes, n = this.varyings; return t && (r = r.concat("vec4 a_hitColor"), n = n.concat({ name: "v_hitColor", type: "vec4", expression: "a_hitColor" })), "precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n" + this.uniforms.map((function (t) { return "uniform " + t + ";" })).join("\n") + "\nattribute vec2 a_position;\nattribute float a_index;\n" + r.map((function (t) { return "attribute " + t + ";" })).join("\n") + "\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n" + n.map((function (t) { return "varying " + t.type + " " + t.name + ";" })).join("\n") + "\nvoid main(void) {\n mat4 offsetMatrix = " + e + ";\n vec2 halfSize = " + this.sizeExpression + " * 0.5;\n vec2 offset = " + this.offsetExpression + ";\n float angle = " + this.rotationExpression + ";\n float offsetX;\n float offsetY;\n if (a_index == 0.0) {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n } else if (a_index == 1.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else if (a_index == 2.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n }\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n vec4 texCoord = " + this.texCoordExpression + ";\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n v_quadCoord = vec2(u, v);\n" + n.map((function (t) { return " " + t.name + " = " + t.expression + ";" })).join("\n") + "\n}" }, t.prototype.getSymbolFragmentShader = function (t) { var e = t ? " if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;" : "", r = this.varyings; return t && (r = r.concat({ name: "v_hitColor", type: "vec4", expression: "a_hitColor" })), "precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n" + this.uniforms.map((function (t) { return "uniform " + t + ";" })).join("\n") + "\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n" + r.map((function (t) { return "varying " + t.type + " " + t.name + ";" })).join("\n") + "\nvoid main(void) {\n if (" + this.discardExpression + ") { discard; }\n gl_FragColor = " + this.colorExpression + ";\n gl_FragColor.rgb *= gl_FragColor.a;\n" + e + "\n}" }, t }(); function Wh(t) { var e = t.symbol, r = void 0 !== e.size ? e.size : 1, n = e.color || "white", i = e.textureCoord || [0, 0, 1, 1], o = e.offset || [0, 0], a = void 0 !== e.opacity ? e.opacity : 1, s = void 0 !== e.rotation ? e.rotation : 0, l = {inFragmentShader: !1, variables: [], attributes: [], stringLiteralsMap: {}}, u = Mh(l, r, wh | vh), c = Mh(l, o, wh), h = Mh(l, i, wh), p = Mh(l, s, vh), f = {inFragmentShader: !0, variables: l.variables, attributes: [], stringLiteralsMap: l.stringLiteralsMap}, d = Mh(f, n, bh), g = Mh(f, a, vh), y = "1.0", m = "vec2(" + Mh(f, r, wh | vh) + ").x"; switch (e.symbolType) { case"square": case"image": break; case"circle": y = "(1.0-smoothstep(1.-4./" + m + ",1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))"; break; case"triangle": var v = "(v_quadCoord*2.-1.)", _ = "(atan(" + v + ".x," + v + ".y))"; y = "(1.0-smoothstep(.5-3./" + m + ",.5,cos(floor(.5+" + _ + "/2.094395102)*2.094395102-" + _ + ")*length(" + v + ")))"; break; default: throw new Error("Unexpected symbol type: " + e.symbolType) } var b = (new Yh).setSizeExpression("vec2(" + u + ")").setRotationExpression(p).setSymbolOffsetExpression(c).setTextureCoordinateExpression(h).setSymbolRotateWithView(!!e.rotateWithView).setColorExpression("vec4(" + d + ".rgb, " + d + ".a * " + g + " * " + y + ")"); if (t.filter) { var x = Mh(f, t.filter, xh); b.setFragmentDiscardExpression("!" + x) } var w = {}; if (f.variables.forEach((function (e) { b.addUniform("float u_" + e), w["u_" + e] = function () { if (!t.variables || void 0 === t.variables[e]) throw new Error("The following variable is missing from the style: " + e); var r = t.variables[e]; return "string" == typeof r && (r = Ih(l, r)), void 0 !== r ? r : -9999999 } })), "image" === e.symbolType && e.src) { var S = new Image; S.src = e.src, b.addUniform("sampler2D u_texture").setColorExpression(b.getColorExpression() + " * texture2D(u_texture, v_texCoord)"), w.u_texture = S } return f.attributes.forEach((function (t) { -1 === l.attributes.indexOf(t) && l.attributes.push(t), b.addVarying("v_" + t, "float", "a_" + t) })), l.attributes.forEach((function (t) { b.addAttribute("float a_" + t) })), { builder: b, attributes: l.attributes.map((function (t) { return { name: t, callback: function (e, r) { var n = r[t]; return "string" == typeof n && (n = Ih(l, n)), void 0 !== n ? n : -9999999 } } })), uniforms: w } } var qh = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Xh = function (t) { function e(e) { var r = t.call(this, { extent: e.extent, origin: e.origin, origins: e.origins, resolutions: e.resolutions, tileSize: e.tileSize, tileSizes: e.tileSizes, sizes: e.sizes }) || this; return r.matrixIds_ = e.matrixIds, r } return qh(e, t), e.prototype.getMatrixId = function (t) { return this.matrixIds_[t] }, e.prototype.getMatrixIds = function () { return this.matrixIds_ }, e }(ic), Zh = Xh; function Kh(t, e, r) { var n = [], i = [], o = [], a = [], s = [], l = void 0 !== r ? r : [], u = Gr(t.SupportedCRS), c = u.getMetersPerUnit(), h = "ne" == u.getAxisOrientation().substr(0, 2); return t.TileMatrix.sort((function (t, e) { return e.ScaleDenominator - t.ScaleDenominator })), t.TileMatrix.forEach((function (e) { if (!(l.length > 0) || _(l, (function (r) { return e.Identifier == r.TileMatrix || -1 === e.Identifier.indexOf(":") && t.Identifier + ":" + e.Identifier === r.TileMatrix }))) { i.push(e.Identifier); var r = 28e-5 * e.ScaleDenominator / c, u = e.TileWidth, p = e.TileHeight; h ? o.push([e.TopLeftCorner[1], e.TopLeftCorner[0]]) : o.push(e.TopLeftCorner), n.push(r), a.push(u == p ? u : [u, p]), s.push([e.MatrixWidth, e.MatrixHeight]) } })), new Xh({extent: e, origins: o, resolutions: n, matrixIds: i, tileSizes: a, sizes: s}) } var Hh = function () { function t(t) { this.opacity_ = t.opacity, this.rotateWithView_ = t.rotateWithView, this.rotation_ = t.rotation, this.scale_ = t.scale, this.scaleArray_ = Is(t.scale), this.displacement_ = t.displacement } return t.prototype.clone = function () { var e = this.getScale(); return new t({ opacity: this.getOpacity(), scale: Array.isArray(e) ? e.slice() : e, rotation: this.getRotation(), rotateWithView: this.getRotateWithView(), displacement: this.getDisplacement().slice() }) }, t.prototype.getOpacity = function () { return this.opacity_ }, t.prototype.getRotateWithView = function () { return this.rotateWithView_ }, t.prototype.getRotation = function () { return this.rotation_ }, t.prototype.getScale = function () { return this.scale_ }, t.prototype.getScaleArray = function () { return this.scaleArray_ }, t.prototype.getDisplacement = function () { return this.displacement_ }, t.prototype.getAnchor = function () { return n() }, t.prototype.getImage = function (t) { return n() }, t.prototype.getHitDetectionImage = function () { return n() }, t.prototype.getPixelRatio = function (t) { return 1 }, t.prototype.getImageState = function () { return n() }, t.prototype.getImageSize = function () { return n() }, t.prototype.getHitDetectionImageSize = function () { return n() }, t.prototype.getOrigin = function () { return n() }, t.prototype.getSize = function () { return n() }, t.prototype.setOpacity = function (t) { this.opacity_ = t }, t.prototype.setRotateWithView = function (t) { this.rotateWithView_ = t }, t.prototype.setRotation = function (t) { this.rotation_ = t }, t.prototype.setScale = function (t) { this.scale_ = t, this.scaleArray_ = Is(t) }, t.prototype.listenImageChange = function (t) { n() }, t.prototype.load = function () { n() }, t.prototype.unlistenImageChange = function (t) { n() }, t }(), $h = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Jh = function (t) { function e(e) { var r = this, n = void 0 !== e.rotateWithView && e.rotateWithView; return (r = t.call(this, { opacity: 1, rotateWithView: n, rotation: void 0 !== e.rotation ? e.rotation : 0, scale: void 0 !== e.scale ? e.scale : 1, displacement: void 0 !== e.displacement ? e.displacement : [0, 0] }) || this).canvas_ = {}, r.hitDetectionCanvas_ = null, r.fill_ = void 0 !== e.fill ? e.fill : null, r.origin_ = [0, 0], r.points_ = e.points, r.radius_ = void 0 !== e.radius ? e.radius : e.radius1, r.radius2_ = e.radius2, r.angle_ = void 0 !== e.angle ? e.angle : 0, r.stroke_ = void 0 !== e.stroke ? e.stroke : null, r.anchor_ = null, r.size_ = null, r.imageSize_ = null, r.hitDetectionImageSize_ = null, r.render(), r } return $h(e, t), e.prototype.clone = function () { var t = this.getScale(), r = new e({ fill: this.getFill() ? this.getFill().clone() : void 0, points: this.getPoints(), radius: this.getRadius(), radius2: this.getRadius2(), angle: this.getAngle(), stroke: this.getStroke() ? this.getStroke().clone() : void 0, rotation: this.getRotation(), rotateWithView: this.getRotateWithView(), scale: Array.isArray(t) ? t.slice() : t, displacement: this.getDisplacement().slice() }); return r.setOpacity(this.getOpacity()), r }, e.prototype.getAnchor = function () { return this.anchor_ }, e.prototype.getAngle = function () { return this.angle_ }, e.prototype.getFill = function () { return this.fill_ }, e.prototype.getHitDetectionImage = function () { if (!this.hitDetectionCanvas_) { var t = this.createRenderOptions(); this.createHitDetectionCanvas_(t) } return this.hitDetectionCanvas_ }, e.prototype.getImage = function (t) { if (!this.canvas_[t || 1]) { var e = this.createRenderOptions(), r = uo(e.size * t || 1, e.size * t || 1); this.draw_(e, r, 0, 0, t || 1), this.canvas_[t || 1] = r.canvas } return this.canvas_[t || 1] }, e.prototype.getPixelRatio = function (t) { return t }, e.prototype.getImageSize = function () { return this.imageSize_ }, e.prototype.getHitDetectionImageSize = function () { return this.hitDetectionImageSize_ }, e.prototype.getImageState = function () { return ki }, e.prototype.getOrigin = function () { return this.origin_ }, e.prototype.getPoints = function () { return this.points_ }, e.prototype.getRadius = function () { return this.radius_ }, e.prototype.getRadius2 = function () { return this.radius2_ }, e.prototype.getSize = function () { return this.size_ }, e.prototype.getStroke = function () { return this.stroke_ }, e.prototype.listenImageChange = function (t) { }, e.prototype.load = function () { }, e.prototype.unlistenImageChange = function (t) { }, e.prototype.createRenderOptions = function () { var t, e = "round", r = "round", n = 0, i = null, o = 0, a = 0; return this.stroke_ && (null === (t = this.stroke_.getColor()) && (t = "#000"), t = Tu(t), void 0 === (a = this.stroke_.getWidth()) && (a = 1), i = this.stroke_.getLineDash(), o = this.stroke_.getLineDashOffset(), void 0 === (r = this.stroke_.getLineJoin()) && (r = "round"), void 0 === (e = this.stroke_.getLineCap()) && (e = "round"), void 0 === (n = this.stroke_.getMiterLimit()) && (n = 10)), { strokeStyle: t, strokeWidth: a, size: 2 * (this.radius_ + a) + 1, lineCap: e, lineDash: i, lineDashOffset: o, lineJoin: r, miterLimit: n } }, e.prototype.render = function () { var t = this.createRenderOptions(), e = uo(t.size, t.size); this.draw_(t, e, 0, 0, 1), this.canvas_ = {}, this.canvas_[1] = e.canvas; var r = e.canvas.width, n = r, i = this.getDisplacement(); this.hitDetectionImageSize_ = [t.size, t.size], this.createHitDetectionCanvas_(t), this.anchor_ = [r / 2 - i[0], r / 2 + i[1]], this.size_ = [r, r], this.imageSize_ = [n, n] }, e.prototype.draw_ = function (t, e, r, n, i) { var o, a, s; e.setTransform(i, 0, 0, i, 0, 0), e.translate(r, n), e.beginPath(); var l = this.points_; if (l === 1 / 0) e.arc(t.size / 2, t.size / 2, this.radius_, 0, 2 * Math.PI, !0); else { var u = void 0 !== this.radius2_ ? this.radius2_ : this.radius_; for (u !== this.radius_ && (l *= 2), o = 0; o <= l; o++) a = 2 * o * Math.PI / l - Math.PI / 2 + this.angle_, s = o % 2 == 0 ? this.radius_ : u, e.lineTo(t.size / 2 + s * Math.cos(a), t.size / 2 + s * Math.sin(a)) } if (this.fill_) { var c = this.fill_.getColor(); null === c && (c = "#000"), e.fillStyle = Tu(c), e.fill() } this.stroke_ && (e.strokeStyle = t.strokeStyle, e.lineWidth = t.strokeWidth, e.setLineDash && t.lineDash && (e.setLineDash(t.lineDash), e.lineDashOffset = t.lineDashOffset), e.lineCap = t.lineCap, e.lineJoin = t.lineJoin, e.miterLimit = t.miterLimit, e.stroke()), e.closePath() }, e.prototype.createHitDetectionCanvas_ = function (t) { if (this.hitDetectionCanvas_ = this.getImage(1), this.fill_) { var e = this.fill_.getColor(), r = 0; if ("string" == typeof e && (e = Oo(e)), null === e ? r = 1 : Array.isArray(e) && (r = 4 === e.length ? e[3] : 1), 0 === r) { var n = uo(t.size, t.size); this.hitDetectionCanvas_ = n.canvas, this.drawHitDetectionCanvas_(t, n, 0, 0) } } }, e.prototype.drawHitDetectionCanvas_ = function (t, e, r, n) { e.translate(r, n), e.beginPath(); var i = this.points_; if (i === 1 / 0) e.arc(t.size / 2, t.size / 2, this.radius_, 0, 2 * Math.PI, !0); else { var o = void 0 !== this.radius2_ ? this.radius2_ : this.radius_; o !== this.radius_ && (i *= 2); var a = void 0, s = void 0, l = void 0; for (a = 0; a <= i; a++) l = 2 * a * Math.PI / i - Math.PI / 2 + this.angle_, s = a % 2 == 0 ? this.radius_ : o, e.lineTo(t.size / 2 + s * Math.cos(l), t.size / 2 + s * Math.sin(l)) } e.fillStyle = "#000", e.fill(), this.stroke_ && (e.strokeStyle = t.strokeStyle, e.lineWidth = t.strokeWidth, t.lineDash && (e.setLineDash(t.lineDash), e.lineDashOffset = t.lineDashOffset), e.stroke()), e.closePath() }, e }(Hh), Qh = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), tp = function (t) { function e(e) { var r = e || {}; return t.call(this, { points: 1 / 0, fill: r.fill, radius: r.radius, stroke: r.stroke, scale: void 0 !== r.scale ? r.scale : 1, rotation: void 0 !== r.rotation ? r.rotation : 0, rotateWithView: void 0 !== r.rotateWithView && r.rotateWithView, displacement: void 0 !== r.displacement ? r.displacement : [0, 0] }) || this } return Qh(e, t), e.prototype.clone = function () { var t = this.getScale(), r = new e({ fill: this.getFill() ? this.getFill().clone() : void 0, stroke: this.getStroke() ? this.getStroke().clone() : void 0, radius: this.getRadius(), scale: Array.isArray(t) ? t.slice() : t, rotation: this.getRotation(), rotateWithView: this.getRotateWithView(), displacement: this.getDisplacement().slice() }); return r.setOpacity(this.getOpacity()), r }, e.prototype.setRadius = function (t) { this.radius_ = t, this.render() }, e }(Jh), ep = function () { function t(t) { var e = t || {}; this.color_ = void 0 !== e.color ? e.color : null } return t.prototype.clone = function () { var e = this.getColor(); return new t({color: Array.isArray(e) ? e.slice() : e || void 0}) }, t.prototype.getColor = function () { return this.color_ }, t.prototype.setColor = function (t) { this.color_ = t }, t }(), rp = "fraction", np = "pixels", ip = "bottom-left", op = "bottom-right", ap = "top-left", sp = "top-right", lp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), up = null, cp = function (t) { function e(e, r, n, i, o, a) { var s = t.call(this) || this; return s.hitDetectionImage_ = null, s.image_ = e || new Image, null !== i && (s.image_.crossOrigin = i), s.canvas_ = {}, s.color_ = a, s.unlisten_ = null, s.imageState_ = o, s.size_ = n, s.src_ = r, s.tainted_, s } return lp(e, t), e.prototype.isTainted_ = function () { if (void 0 === this.tainted_ && this.imageState_ === ki) { up || (up = uo(1, 1)), up.drawImage(this.image_, 0, 0); try { up.getImageData(0, 0, 1, 1), this.tainted_ = !1 } catch (t) { up = null, this.tainted_ = !0 } } return !0 === this.tainted_ }, e.prototype.dispatchChangeEvent_ = function () { this.dispatchEvent(F) }, e.prototype.handleImageError_ = function () { this.imageState_ = ji, this.unlistenImage_(), this.dispatchChangeEvent_() }, e.prototype.handleImageLoad_ = function () { this.imageState_ = ki, this.size_ ? (this.image_.width = this.size_[0], this.image_.height = this.size_[1]) : this.size_ = [this.image_.width, this.image_.height], this.unlistenImage_(), this.dispatchChangeEvent_() }, e.prototype.getImage = function (t) { return this.replaceColor_(t), this.canvas_[t] ? this.canvas_[t] : this.image_ }, e.prototype.getPixelRatio = function (t) { return this.replaceColor_(t), this.canvas_[t] ? t : 1 }, e.prototype.getImageState = function () { return this.imageState_ }, e.prototype.getHitDetectionImage = function () { if (!this.hitDetectionImage_) if (this.isTainted_()) { var t = this.size_[0], e = this.size_[1], r = uo(t, e); r.fillRect(0, 0, t, e), this.hitDetectionImage_ = r.canvas } else this.hitDetectionImage_ = this.image_; return this.hitDetectionImage_ }, e.prototype.getSize = function () { return this.size_ }, e.prototype.getSrc = function () { return this.src_ }, e.prototype.load = function () { if (this.imageState_ == Fi) { this.imageState_ = Ai; try { this.image_.src = this.src_ } catch (t) { this.handleImageError_() } this.unlisten_ = Zi(this.image_, this.handleImageLoad_.bind(this), this.handleImageError_.bind(this)) } }, e.prototype.replaceColor_ = function (t) { if (this.color_ && !this.canvas_[t]) { var e = document.createElement("canvas"); this.canvas_[t] = e, e.width = Math.ceil(this.image_.width * t), e.height = Math.ceil(this.image_.height * t); var r = e.getContext("2d"); if (r.scale(t, t), r.drawImage(this.image_, 0, 0), r.globalCompositeOperation = "multiply", "multiply" === r.globalCompositeOperation || this.isTainted_()) r.fillStyle = wo(this.color_), r.fillRect(0, 0, e.width, e.height), r.globalCompositeOperation = "destination-in", r.drawImage(this.image_, 0, 0); else { for (var n = r.getImageData(0, 0, e.width, e.height), i = n.data, o = this.color_[0] / 255, a = this.color_[1] / 255, s = this.color_[2] / 255, l = this.color_[3], u = 0, c = i.length; u < c; u += 4) i[u] *= o, i[u + 1] *= a, i[u + 2] *= s, i[u + 3] *= l; r.putImageData(n, 0, 0) } } }, e.prototype.unlistenImage_ = function () { this.unlisten_ && (this.unlisten_(), this.unlisten_ = null) }, e }(M); function hp(t, e, r, n, i, o) { var a = Ao.get(e, n, o); return a || (a = new cp(t, e, r, n, i, o), Ao.set(e, n, o, a)), a } var pp = cp, fp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), dp = function (t) { function e(e) { var r = this, n = e || {}, i = void 0 !== n.opacity ? n.opacity : 1, a = void 0 !== n.rotation ? n.rotation : 0, s = void 0 !== n.scale ? n.scale : 1, l = void 0 !== n.rotateWithView && n.rotateWithView; (r = t.call(this, { opacity: i, rotation: a, scale: s, displacement: void 0 !== n.displacement ? n.displacement : [0, 0], rotateWithView: l }) || this).anchor_ = void 0 !== n.anchor ? n.anchor : [.5, .5], r.normalizedAnchor_ = null, r.anchorOrigin_ = void 0 !== n.anchorOrigin ? n.anchorOrigin : ap, r.anchorXUnits_ = void 0 !== n.anchorXUnits ? n.anchorXUnits : rp, r.anchorYUnits_ = void 0 !== n.anchorYUnits ? n.anchorYUnits : rp, r.crossOrigin_ = void 0 !== n.crossOrigin ? n.crossOrigin : null; var u = void 0 !== n.img ? n.img : null, c = void 0 !== n.imgSize ? n.imgSize : null, h = n.src; pt(!(void 0 !== h && u), 4), pt(!u || u && c, 5), void 0 !== h && 0 !== h.length || !u || (h = u.src || o(u)), pt(void 0 !== h && h.length > 0, 6); var p = void 0 !== n.src ? Fi : ki; return r.color_ = void 0 !== n.color ? Oo(n.color) : null, r.iconImage_ = hp(u, h, c, r.crossOrigin_, p, r.color_), r.offset_ = void 0 !== n.offset ? n.offset : [0, 0], r.offsetOrigin_ = void 0 !== n.offsetOrigin ? n.offsetOrigin : ap, r.origin_ = null, r.size_ = void 0 !== n.size ? n.size : null, r } return fp(e, t), e.prototype.clone = function () { var t = this.getScale(); return new e({ anchor: this.anchor_.slice(), anchorOrigin: this.anchorOrigin_, anchorXUnits: this.anchorXUnits_, anchorYUnits: this.anchorYUnits_, crossOrigin: this.crossOrigin_, color: this.color_ && this.color_.slice ? this.color_.slice() : this.color_ || void 0, src: this.getSrc(), offset: this.offset_.slice(), offsetOrigin: this.offsetOrigin_, size: null !== this.size_ ? this.size_.slice() : void 0, opacity: this.getOpacity(), scale: Array.isArray(t) ? t.slice() : t, rotation: this.getRotation(), rotateWithView: this.getRotateWithView() }) }, e.prototype.getAnchor = function () { if (this.normalizedAnchor_) return this.normalizedAnchor_; var t = this.anchor_, e = this.getSize(); if (this.anchorXUnits_ == rp || this.anchorYUnits_ == rp) { if (!e) return null; t = this.anchor_.slice(), this.anchorXUnits_ == rp && (t[0] *= e[0]), this.anchorYUnits_ == rp && (t[1] *= e[1]) } if (this.anchorOrigin_ != ap) { if (!e) return null; t === this.anchor_ && (t = this.anchor_.slice()), this.anchorOrigin_ != sp && this.anchorOrigin_ != op || (t[0] = -t[0] + e[0]), this.anchorOrigin_ != ip && this.anchorOrigin_ != op || (t[1] = -t[1] + e[1]) } return this.normalizedAnchor_ = t, this.normalizedAnchor_ }, e.prototype.setAnchor = function (t) { this.anchor_ = t, this.normalizedAnchor_ = null }, e.prototype.getColor = function () { return this.color_ }, e.prototype.getImage = function (t) { return this.iconImage_.getImage(t) }, e.prototype.getPixelRatio = function (t) { return this.iconImage_.getPixelRatio(t) }, e.prototype.getImageSize = function () { return this.iconImage_.getSize() }, e.prototype.getHitDetectionImageSize = function () { return this.getImageSize() }, e.prototype.getImageState = function () { return this.iconImage_.getImageState() }, e.prototype.getHitDetectionImage = function () { return this.iconImage_.getHitDetectionImage() }, e.prototype.getOrigin = function () { if (this.origin_) return this.origin_; var t = this.offset_, e = this.getDisplacement(); if (this.offsetOrigin_ != ap) { var r = this.getSize(), n = this.iconImage_.getSize(); if (!r || !n) return null; t = t.slice(), this.offsetOrigin_ != sp && this.offsetOrigin_ != op || (t[0] = n[0] - r[0] - t[0]), this.offsetOrigin_ != ip && this.offsetOrigin_ != op || (t[1] = n[1] - r[1] - t[1]) } return t[0] += e[0], t[1] += e[1], this.origin_ = t, this.origin_ }, e.prototype.getSrc = function () { return this.iconImage_.getSrc() }, e.prototype.getSize = function () { return this.size_ ? this.size_ : this.iconImage_.getSize() }, e.prototype.listenImageChange = function (t) { this.iconImage_.addEventListener(F, t) }, e.prototype.load = function () { this.iconImage_.load() }, e.prototype.unlistenImageChange = function (t) { this.iconImage_.removeEventListener(F, t) }, e }(Hh), gp = function () { function t(t) { var e = t || {}; this.color_ = void 0 !== e.color ? e.color : null, this.lineCap_ = e.lineCap, this.lineDash_ = void 0 !== e.lineDash ? e.lineDash : null, this.lineDashOffset_ = e.lineDashOffset, this.lineJoin_ = e.lineJoin, this.miterLimit_ = e.miterLimit, this.width_ = e.width } return t.prototype.clone = function () { var e = this.getColor(); return new t({ color: Array.isArray(e) ? e.slice() : e || void 0, lineCap: this.getLineCap(), lineDash: this.getLineDash() ? this.getLineDash().slice() : void 0, lineDashOffset: this.getLineDashOffset(), lineJoin: this.getLineJoin(), miterLimit: this.getMiterLimit(), width: this.getWidth() }) }, t.prototype.getColor = function () { return this.color_ }, t.prototype.getLineCap = function () { return this.lineCap_ }, t.prototype.getLineDash = function () { return this.lineDash_ }, t.prototype.getLineDashOffset = function () { return this.lineDashOffset_ }, t.prototype.getLineJoin = function () { return this.lineJoin_ }, t.prototype.getMiterLimit = function () { return this.miterLimit_ }, t.prototype.getWidth = function () { return this.width_ }, t.prototype.setColor = function (t) { this.color_ = t }, t.prototype.setLineCap = function (t) { this.lineCap_ = t }, t.prototype.setLineDash = function (t) { this.lineDash_ = t }, t.prototype.setLineDashOffset = function (t) { this.lineDashOffset_ = t }, t.prototype.setLineJoin = function (t) { this.lineJoin_ = t }, t.prototype.setMiterLimit = function (t) { this.miterLimit_ = t }, t.prototype.setWidth = function (t) { this.width_ = t }, t }(), yp = function () { function t(t) { var e = t || {}; this.geometry_ = null, this.geometryFunction_ = xp, void 0 !== e.geometry && this.setGeometry(e.geometry), this.fill_ = void 0 !== e.fill ? e.fill : null, this.image_ = void 0 !== e.image ? e.image : null, this.renderer_ = void 0 !== e.renderer ? e.renderer : null, this.stroke_ = void 0 !== e.stroke ? e.stroke : null, this.text_ = void 0 !== e.text ? e.text : null, this.zIndex_ = e.zIndex } return t.prototype.clone = function () { var e = this.getGeometry(); return e && "object" == typeof e && (e = e.clone()), new t({ geometry: e, fill: this.getFill() ? this.getFill().clone() : void 0, image: this.getImage() ? this.getImage().clone() : void 0, stroke: this.getStroke() ? this.getStroke().clone() : void 0, text: this.getText() ? this.getText().clone() : void 0, zIndex: this.getZIndex() }) }, t.prototype.getRenderer = function () { return this.renderer_ }, t.prototype.setRenderer = function (t) { this.renderer_ = t }, t.prototype.getGeometry = function () { return this.geometry_ }, t.prototype.getGeometryFunction = function () { return this.geometryFunction_ }, t.prototype.getFill = function () { return this.fill_ }, t.prototype.setFill = function (t) { this.fill_ = t }, t.prototype.getImage = function () { return this.image_ }, t.prototype.setImage = function (t) { this.image_ = t }, t.prototype.getStroke = function () { return this.stroke_ }, t.prototype.setStroke = function (t) { this.stroke_ = t }, t.prototype.getText = function () { return this.text_ }, t.prototype.setText = function (t) { this.text_ = t }, t.prototype.getZIndex = function () { return this.zIndex_ }, t.prototype.setGeometry = function (t) { "function" == typeof t ? this.geometryFunction_ = t : "string" == typeof t ? this.geometryFunction_ = function (e) { return e.get(t) } : t ? void 0 !== t && (this.geometryFunction_ = function () { return t }) : this.geometryFunction_ = xp, this.geometry_ = t }, t.prototype.setZIndex = function (t) { this.zIndex_ = t }, t }(); function mp(t) { var e; if ("function" == typeof t) e = t; else { var r; if (Array.isArray(t)) r = t; else pt("function" == typeof t.getZIndex, 41), r = [t]; e = function () { return r } } return e } var vp = null; function _p(t, e) { if (!vp) { var r = new ep({color: "rgba(255,255,255,0.4)"}), n = new gp({color: "#3399CC", width: 1.25}); vp = [new yp({image: new tp({fill: r, stroke: n, radius: 5}), fill: r, stroke: n})] } return vp } function bp() { var t = {}, e = [255, 255, 255, 1], r = [0, 153, 255, 1]; return t[bt.POLYGON] = [new yp({fill: new ep({color: [255, 255, 255, .5]})})], t[bt.MULTI_POLYGON] = t[bt.POLYGON], t[bt.LINE_STRING] = [new yp({ stroke: new gp({ color: e, width: 5 }) }), new yp({ stroke: new gp({ color: r, width: 3 }) })], t[bt.MULTI_LINE_STRING] = t[bt.LINE_STRING], t[bt.CIRCLE] = t[bt.POLYGON].concat(t[bt.LINE_STRING]), t[bt.POINT] = [new yp({ image: new tp({ radius: 6, fill: new ep({color: r}), stroke: new gp({color: e, width: 1.5}) }), zIndex: 1 / 0 })], t[bt.MULTI_POINT] = t[bt.POINT], t[bt.GEOMETRY_COLLECTION] = t[bt.POLYGON].concat(t[bt.LINE_STRING], t[bt.POINT]), t } function xp(t) { return t.getGeometry() } var wp = yp, Sp = "point", Ep = "line", Tp = function () { function t(t) { var e = t || {}; this.font_ = e.font, this.rotation_ = e.rotation, this.rotateWithView_ = e.rotateWithView, this.scale_ = e.scale, this.scaleArray_ = Is(void 0 !== e.scale ? e.scale : 1), this.text_ = e.text, this.textAlign_ = e.textAlign, this.textBaseline_ = e.textBaseline, this.fill_ = void 0 !== e.fill ? e.fill : new ep({color: "#333"}), this.maxAngle_ = void 0 !== e.maxAngle ? e.maxAngle : Math.PI / 4, this.placement_ = void 0 !== e.placement ? e.placement : Sp, this.overflow_ = !!e.overflow, this.stroke_ = void 0 !== e.stroke ? e.stroke : null, this.offsetX_ = void 0 !== e.offsetX ? e.offsetX : 0, this.offsetY_ = void 0 !== e.offsetY ? e.offsetY : 0, this.backgroundFill_ = e.backgroundFill ? e.backgroundFill : null, this.backgroundStroke_ = e.backgroundStroke ? e.backgroundStroke : null, this.padding_ = void 0 === e.padding ? null : e.padding } return t.prototype.clone = function () { var e = this.getScale(); return new t({ font: this.getFont(), placement: this.getPlacement(), maxAngle: this.getMaxAngle(), overflow: this.getOverflow(), rotation: this.getRotation(), rotateWithView: this.getRotateWithView(), scale: Array.isArray(e) ? e.slice() : e, text: this.getText(), textAlign: this.getTextAlign(), textBaseline: this.getTextBaseline(), fill: this.getFill() ? this.getFill().clone() : void 0, stroke: this.getStroke() ? this.getStroke().clone() : void 0, offsetX: this.getOffsetX(), offsetY: this.getOffsetY(), backgroundFill: this.getBackgroundFill() ? this.getBackgroundFill().clone() : void 0, backgroundStroke: this.getBackgroundStroke() ? this.getBackgroundStroke().clone() : void 0, padding: this.getPadding() }) }, t.prototype.getOverflow = function () { return this.overflow_ }, t.prototype.getFont = function () { return this.font_ }, t.prototype.getMaxAngle = function () { return this.maxAngle_ }, t.prototype.getPlacement = function () { return this.placement_ }, t.prototype.getOffsetX = function () { return this.offsetX_ }, t.prototype.getOffsetY = function () { return this.offsetY_ }, t.prototype.getFill = function () { return this.fill_ }, t.prototype.getRotateWithView = function () { return this.rotateWithView_ }, t.prototype.getRotation = function () { return this.rotation_ }, t.prototype.getScale = function () { return this.scale_ }, t.prototype.getScaleArray = function () { return this.scaleArray_ }, t.prototype.getStroke = function () { return this.stroke_ }, t.prototype.getText = function () { return this.text_ }, t.prototype.getTextAlign = function () { return this.textAlign_ }, t.prototype.getTextBaseline = function () { return this.textBaseline_ }, t.prototype.getBackgroundFill = function () { return this.backgroundFill_ }, t.prototype.getBackgroundStroke = function () { return this.backgroundStroke_ }, t.prototype.getPadding = function () { return this.padding_ }, t.prototype.setOverflow = function (t) { this.overflow_ = t }, t.prototype.setFont = function (t) { this.font_ = t }, t.prototype.setMaxAngle = function (t) { this.maxAngle_ = t }, t.prototype.setOffsetX = function (t) { this.offsetX_ = t }, t.prototype.setOffsetY = function (t) { this.offsetY_ = t }, t.prototype.setPlacement = function (t) { this.placement_ = t }, t.prototype.setRotateWithView = function (t) { this.rotateWithView_ = t }, t.prototype.setFill = function (t) { this.fill_ = t }, t.prototype.setRotation = function (t) { this.rotation_ = t }, t.prototype.setScale = function (t) { this.scale_ = t, this.scaleArray_ = Is(void 0 !== t ? t : 1) }, t.prototype.setStroke = function (t) { this.stroke_ = t }, t.prototype.setText = function (t) { this.text_ = t }, t.prototype.setTextAlign = function (t) { this.textAlign_ = t }, t.prototype.setTextBaseline = function (t) { this.textBaseline_ = t }, t.prototype.setBackgroundFill = function (t) { this.backgroundFill_ = t }, t.prototype.setBackgroundStroke = function (t) { this.backgroundStroke_ = t }, t.prototype.setPadding = function (t) { this.padding_ = t }, t }(), Cp = function () { function t(t) { this.first_, this.last_, this.head_, this.circular_ = void 0 === t || t, this.length_ = 0 } return t.prototype.insertItem = function (t) { var e = {prev: void 0, next: void 0, data: t}, r = this.head_; if (r) { var n = r.next; e.prev = r, e.next = n, r.next = e, n && (n.prev = e), r === this.last_ && (this.last_ = e) } else this.first_ = e, this.last_ = e, this.circular_ && (e.next = e, e.prev = e); this.head_ = e, this.length_++ }, t.prototype.removeItem = function () { var t = this.head_; if (t) { var e = t.next, r = t.prev; e && (e.prev = r), r && (r.next = e), this.head_ = e || r, this.first_ === this.last_ ? (this.head_ = void 0, this.first_ = void 0, this.last_ = void 0) : this.first_ === t ? this.first_ = this.head_ : this.last_ === t && (this.last_ = r ? this.head_.prev : this.head_), this.length_-- } }, t.prototype.firstItem = function () { if (this.head_ = this.first_, this.head_) return this.head_.data }, t.prototype.lastItem = function () { if (this.head_ = this.last_, this.head_) return this.head_.data }, t.prototype.nextItem = function () { if (this.head_ && this.head_.next) return this.head_ = this.head_.next, this.head_.data }, t.prototype.getNextItem = function () { if (this.head_ && this.head_.next) return this.head_.next.data }, t.prototype.prevItem = function () { if (this.head_ && this.head_.prev) return this.head_ = this.head_.prev, this.head_.data }, t.prototype.getPrevItem = function () { if (this.head_ && this.head_.prev) return this.head_.prev.data }, t.prototype.getCurrItem = function () { if (this.head_) return this.head_.data }, t.prototype.setFirstItem = function () { this.circular_ && this.head_ && (this.first_ = this.head_, this.last_ = this.head_.prev) }, t.prototype.concat = function (t) { if (t.head_) { if (this.head_) { var e = this.head_.next; this.head_.next = t.first_, t.first_.prev = this.head_, e.prev = t.last_, t.last_.next = e, this.length_ += t.length_ } else this.head_ = t.head_, this.first_ = t.first_, this.last_ = t.last_, this.length_ = t.length_; t.head_ = void 0, t.first_ = void 0, t.last_ = void 0, t.length_ = 0 } }, t.prototype.getLength = function () { return this.length_ }, t }(), Op = r(1), Pp = r.n(Op), Rp = function () { function t(t) { this.rbush_ = new Pp.a(t), this.items_ = {} } return t.prototype.insert = function (t, e) { var r = {minX: t[0], minY: t[1], maxX: t[2], maxY: t[3], value: e}; this.rbush_.insert(r), this.items_[o(e)] = r }, t.prototype.load = function (t, e) { for (var r = new Array(e.length), n = 0, i = e.length; n < i; n++) { var a = t[n], s = e[n], l = {minX: a[0], minY: a[1], maxX: a[2], maxY: a[3], value: s}; r[n] = l, this.items_[o(s)] = l } this.rbush_.load(r) }, t.prototype.remove = function (t) { var e = o(t), r = this.items_[e]; return delete this.items_[e], null !== this.rbush_.remove(r) }, t.prototype.update = function (t, e) { var r = this.items_[o(e)]; ue([r.minX, r.minY, r.maxX, r.maxY], t) || (this.remove(e), this.insert(t, e)) }, t.prototype.getAll = function () { return this.rbush_.all().map((function (t) { return t.value })) }, t.prototype.getInExtent = function (t) { var e = {minX: t[0], minY: t[1], maxX: t[2], maxY: t[3]}; return this.rbush_.search(e).map((function (t) { return t.value })) }, t.prototype.forEach = function (t) { return this.forEach_(this.getAll(), t) }, t.prototype.forEachInExtent = function (t, e) { return this.forEach_(this.getInExtent(t), e) }, t.prototype.forEach_ = function (t, e) { for (var r, n = 0, i = t.length; n < i; n++) if (r = e(t[n])) return r; return r }, t.prototype.isEmpty = function () { return I(this.items_) }, t.prototype.clear = function () { this.rbush_.clear(), this.items_ = {} }, t.prototype.getExtent = function (t) { var e = this.rbush_.toJSON(); return ie(e.minX, e.minY, e.maxX, e.maxY, t) }, t.prototype.concat = function (t) { for (var e in this.rbush_.load(t.rbush_.all()), t.items_) this.items_[e] = t.items_[e] }, t }(), Ip = function () { function t(t, e, r, n, i, o) { this.sourceProj_ = t, this.targetProj_ = e; var a = {}, s = Kr(this.targetProj_, this.sourceProj_); this.transformInv_ = function (t) { var e = t[0] + "/" + t[1]; return a[e] || (a[e] = s(t)), a[e] }, this.maxSourceExtent_ = n, this.errorThresholdSquared_ = i * i, this.triangles_ = [], this.wrapsXInSource_ = !1, this.canWrapXInSource_ = this.sourceProj_.canWrapX() && !!n && !!this.sourceProj_.getExtent() && Pe(n) == Pe(this.sourceProj_.getExtent()), this.sourceWorldWidth_ = this.sourceProj_.getExtent() ? Pe(this.sourceProj_.getExtent()) : null, this.targetWorldWidth_ = this.targetProj_.getExtent() ? Pe(this.targetProj_.getExtent()) : null; var l = Ce(r), u = Oe(r), c = be(r), h = _e(r), p = this.transformInv_(l), f = this.transformInv_(u), d = this.transformInv_(c), g = this.transformInv_(h), y = 10 + (o ? Math.max(0, Math.ceil(Ge(ve(r) / (o * o * 256 * 256)))) : 0); if (this.addQuad_(l, u, c, h, p, f, d, g, y), this.wrapsXInSource_) { var m = 1 / 0; this.triangles_.forEach((function (t, e, r) { m = Math.min(m, t.source[0][0], t.source[1][0], t.source[2][0]) })), this.triangles_.forEach(function (t) { if (Math.max(t.source[0][0], t.source[1][0], t.source[2][0]) - m > this.sourceWorldWidth_ / 2) { var e = [[t.source[0][0], t.source[0][1]], [t.source[1][0], t.source[1][1]], [t.source[2][0], t.source[2][1]]]; e[0][0] - m > this.sourceWorldWidth_ / 2 && (e[0][0] -= this.sourceWorldWidth_), e[1][0] - m > this.sourceWorldWidth_ / 2 && (e[1][0] -= this.sourceWorldWidth_), e[2][0] - m > this.sourceWorldWidth_ / 2 && (e[2][0] -= this.sourceWorldWidth_); var r = Math.min(e[0][0], e[1][0], e[2][0]); Math.max(e[0][0], e[1][0], e[2][0]) - r < this.sourceWorldWidth_ / 2 && (t.source = e) } }.bind(this)) } a = {} } return t.prototype.addTriangle_ = function (t, e, r, n, i, o) { this.triangles_.push({source: [n, i, o], target: [t, e, r]}) }, t.prototype.addQuad_ = function (t, e, r, n, i, o, a, s, l) { var u = Kt([i, o, a, s]), c = this.sourceWorldWidth_ ? Pe(u) / this.sourceWorldWidth_ : null, h = this.sourceWorldWidth_, p = this.sourceProj_.canWrapX() && c > .5 && c < 1, f = !1; if (l > 0) { if (this.targetProj_.isGlobal() && this.targetWorldWidth_) f = Pe(Kt([t, e, r, n])) / this.targetWorldWidth_ > .25 || f; !p && this.sourceProj_.isGlobal() && c && (f = c > .25 || f) } if (!(!f && this.maxSourceExtent_ && isFinite(u[0]) && isFinite(u[1]) && isFinite(u[2]) && isFinite(u[3])) || Re(u, this.maxSourceExtent_)) { var d = 0; if (!(f || isFinite(i[0]) && isFinite(i[1]) && isFinite(o[0]) && isFinite(o[1]) && isFinite(a[0]) && isFinite(a[1]) && isFinite(s[0]) && isFinite(s[1]))) if (l > 0) f = !0; else if (1 != (d = (isFinite(i[0]) && isFinite(i[1]) ? 0 : 8) + (isFinite(o[0]) && isFinite(o[1]) ? 0 : 4) + (isFinite(a[0]) && isFinite(a[1]) ? 0 : 2) + (isFinite(s[0]) && isFinite(s[1]) ? 0 : 1)) && 2 != d && 4 != d && 8 != d) return; if (l > 0) { if (!f) { var g = [(t[0] + r[0]) / 2, (t[1] + r[1]) / 2], y = this.transformInv_(g), m = void 0; if (p) m = (We(i[0], h) + We(a[0], h)) / 2 - We(y[0], h); else m = (i[0] + a[0]) / 2 - y[0]; var v = (i[1] + a[1]) / 2 - y[1]; f = m * m + v * v > this.errorThresholdSquared_ } if (f) { if (Math.abs(t[0] - r[0]) <= Math.abs(t[1] - r[1])) { var _ = [(e[0] + r[0]) / 2, (e[1] + r[1]) / 2], b = this.transformInv_(_), x = [(n[0] + t[0]) / 2, (n[1] + t[1]) / 2], w = this.transformInv_(x); this.addQuad_(t, e, _, x, i, o, b, w, l - 1), this.addQuad_(x, _, r, n, w, b, a, s, l - 1) } else { var S = [(t[0] + e[0]) / 2, (t[1] + e[1]) / 2], E = this.transformInv_(S), T = [(r[0] + n[0]) / 2, (r[1] + n[1]) / 2], C = this.transformInv_(T); this.addQuad_(t, S, T, n, i, E, C, s, l - 1), this.addQuad_(S, e, r, T, E, o, a, C, l - 1) } return } } if (p) { if (!this.canWrapXInSource_) return; this.wrapsXInSource_ = !0 } 0 == (11 & d) && this.addTriangle_(t, r, n, i, a, s), 0 == (14 & d) && this.addTriangle_(t, r, e, i, a, o), d && (0 == (13 & d) && this.addTriangle_(e, n, t, o, s, i), 0 == (7 & d) && this.addTriangle_(e, n, r, o, s, a)) } }, t.prototype.calculateSourceExtent = function () { var t = [1 / 0, 1 / 0, -1 / 0, -1 / 0]; return this.triangles_.forEach((function (e, r, n) { var i = e.source; pe(t, i[0]), pe(t, i[1]), pe(t, i[2]) })), t }, t.prototype.getTriangles = function () { return this.triangles_ }, t }(), Lp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Mp = function (t) { function e(e, r, n, i, o, a, s, l, u, c, h, p) { var f = t.call(this, o, Ji) || this; f.renderEdges_ = void 0 !== h && h, f.contextOptions_ = p, f.pixelRatio_ = s, f.gutter_ = l, f.canvas_ = null, f.sourceTileGrid_ = r, f.targetTileGrid_ = i, f.wrappedTileCoord_ = a || o, f.sourceTiles_ = [], f.sourcesListenerKeys_ = null, f.sourceZ_ = 0; var d = i.getTileCoordExtent(f.wrappedTileCoord_), g = f.targetTileGrid_.getExtent(), y = f.sourceTileGrid_.getExtent(), m = g ? Te(d, g) : d; if (0 === ve(m)) return f.state = ro, f; var v = e.getExtent(); v && (y = y ? Te(y, v) : v); var _ = i.getResolution(f.wrappedTileCoord_[0]), b = ec(e, n, m, _); if (!isFinite(b) || b <= 0) return f.state = ro, f; var x = void 0 !== c ? c : .5; if (f.triangulation_ = new Ip(e, n, m, y, b * x, _), 0 === f.triangulation_.getTriangles().length) return f.state = ro, f; f.sourceZ_ = r.getZForResolution(b); var w = f.triangulation_.calculateSourceExtent(); if (y && (e.canWrapX() ? (w[1] = Ne(w[1], y[1], y[3]), w[3] = Ne(w[3], y[1], y[3])) : w = Te(w, y)), ve(w)) { for (var S = r.getTileRangeForExtentAndZ(w, f.sourceZ_), E = S.minX; E <= S.maxX; E++) for (var T = S.minY; T <= S.maxY; T++) { var C = u(f.sourceZ_, E, T, s); C && f.sourceTiles_.push(C) } 0 === f.sourceTiles_.length && (f.state = ro) } else f.state = ro; return f } return Lp(e, t), e.prototype.getImage = function () { return this.canvas_ }, e.prototype.reproject_ = function () { var t = []; if (this.sourceTiles_.forEach(function (e, r, n) { e && e.getState() == to && t.push({ extent: this.sourceTileGrid_.getTileCoordExtent(e.tileCoord), image: e.getImage() }) }.bind(this)), this.sourceTiles_.length = 0, 0 === t.length) this.state = eo; else { var e = this.wrappedTileCoord_[0], r = this.targetTileGrid_.getTileSize(e), n = "number" == typeof r ? r : r[0], i = "number" == typeof r ? r : r[1], o = this.targetTileGrid_.getResolution(e), a = this.sourceTileGrid_.getResolution(this.sourceZ_), s = this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_); this.canvas_ = rc(n, i, this.pixelRatio_, a, this.sourceTileGrid_.getExtent(), o, s, this.triangulation_, t, this.gutter_, this.renderEdges_, this.contextOptions_), this.state = to } this.changed() }, e.prototype.load = function () { if (this.state == Ji) { this.state = Qi, this.changed(); var t = 0; this.sourcesListenerKeys_ = [], this.sourceTiles_.forEach(function (e, r, n) { var i = e.getState(); if (i == Ji || i == Qi) { t++; var o = Z(e, F, (function (r) { var n = e.getState(); n != to && n != eo && n != ro || (H(o), 0 === --t && (this.unlistenSources_(), this.reproject_())) }), this); this.sourcesListenerKeys_.push(o) } }.bind(this)), this.sourceTiles_.forEach((function (t, e, r) { t.getState() == Ji && t.load() })), 0 === t && setTimeout(this.reproject_.bind(this), 0) } }, e.prototype.unlistenSources_ = function () { this.sourcesListenerKeys_.forEach(H), this.sourcesListenerKeys_ = null }, e }(lo), Fp = "tileloadstart", Ap = "tileloadend", kp = "tileloaderror", jp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Np(t) { return t ? Array.isArray(t) ? function (e) { return t } : "function" == typeof t ? t : function (e) { return [t] } : null } var Dp = function (t) { function e(e) { var r = t.call(this) || this; return r.projection_ = Gr(e.projection), r.attributions_ = Np(e.attributions), r.attributionsCollapsible_ = void 0 === e.attributionsCollapsible || e.attributionsCollapsible, r.loading = !1, r.state_ = void 0 !== e.state ? e.state : Qo, r.wrapX_ = void 0 !== e.wrapX && e.wrapX, r } return jp(e, t), e.prototype.getAttributions = function () { return this.attributions_ }, e.prototype.getAttributionsCollapsible = function () { return this.attributionsCollapsible_ }, e.prototype.getProjection = function () { return this.projection_ }, e.prototype.getResolutions = function () { return n() }, e.prototype.getState = function () { return this.state_ }, e.prototype.getWrapX = function () { return this.wrapX_ }, e.prototype.getContextOptions = function () { }, e.prototype.refresh = function () { this.changed() }, e.prototype.setAttributions = function (t) { this.attributions_ = Np(t), this.changed() }, e.prototype.setState = function (t) { this.state_ = t, this.changed() }, e }(ot), Gp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), zp = function (t) { function e(e) { var r = t.call(this, { attributions: e.attributions, attributionsCollapsible: e.attributionsCollapsible, projection: e.projection, state: e.state, wrapX: e.wrapX }) || this; r.opaque_ = void 0 !== e.opaque && e.opaque, r.tilePixelRatio_ = void 0 !== e.tilePixelRatio ? e.tilePixelRatio : 1, r.tileGrid = void 0 !== e.tileGrid ? e.tileGrid : null; var n = e.tileGrid; return n && Is(n.getTileSize(n.getMinZoom()), [256, 256]), r.tileCache = new yu(e.cacheSize || 0), r.tmpSize = [0, 0], r.key_ = e.key || "", r.tileOptions = {transition: e.transition}, r.zDirection = e.zDirection ? e.zDirection : 0, r } return Gp(e, t), e.prototype.canExpireCache = function () { return this.tileCache.canExpireCache() }, e.prototype.expireCache = function (t, e) { var r = this.getTileCacheForProjection(t); r && r.expireCache(e) }, e.prototype.forEachLoadedTile = function (t, e, r, n) { var i = this.getTileCacheForProjection(t); if (!i) return !1; for (var o, a, s, l = !0, u = r.minX; u <= r.maxX; ++u) for (var c = r.minY; c <= r.maxY; ++c) a = cu(e, u, c), s = !1, i.containsKey(a) && (s = (o = i.get(a)).getState() === to) && (s = !1 !== n(o)), s || (l = !1); return l }, e.prototype.getGutterForProjection = function (t) { return 0 }, e.prototype.getKey = function () { return this.key_ }, e.prototype.setKey = function (t) { this.key_ !== t && (this.key_ = t, this.changed()) }, e.prototype.getOpaque = function (t) { return this.opaque_ }, e.prototype.getResolutions = function () { return this.tileGrid.getResolutions() }, e.prototype.getTile = function (t, e, r, i, o) { return n() }, e.prototype.getTileGrid = function () { return this.tileGrid }, e.prototype.getTileGridForProjection = function (t) { return this.tileGrid ? this.tileGrid : oc(t) }, e.prototype.getTileCacheForProjection = function (t) { return pt(Xr(this.getProjection(), t), 68), this.tileCache }, e.prototype.getTilePixelRatio = function (t) { return this.tilePixelRatio_ }, e.prototype.getTilePixelSize = function (t, e, r) { var n = this.getTileGridForProjection(r), i = this.getTilePixelRatio(e), o = Is(n.getTileSize(t), this.tmpSize); return 1 == i ? o : Rs(o, i, this.tmpSize) }, e.prototype.getTileCoordForTileUrlFunction = function (t, e) { var r = void 0 !== e ? e : this.getProjection(), n = this.getTileGridForProjection(r); return this.getWrapX() && r.isGlobal() && (t = ac(n, t, r)), du(t, n) ? t : null }, e.prototype.clear = function () { this.tileCache.clear() }, e.prototype.refresh = function () { this.clear(), t.prototype.refresh.call(this) }, e.prototype.updateCacheSize = function (t, e) { var r = this.getTileCacheForProjection(e); t > r.highWaterMark && (r.highWaterMark = t) }, e.prototype.useTile = function (t, e, r, n) { }, e }(Dp), Up = function (t) { function e(e, r) { var n = t.call(this, e) || this; return n.tile = r, n } return Gp(e, t), e }(c), Bp = zp, Vp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Yp = function (t) { function e(r) { var n = t.call(this, { attributions: r.attributions, cacheSize: r.cacheSize, opaque: r.opaque, projection: r.projection, state: r.state, tileGrid: r.tileGrid, tilePixelRatio: r.tilePixelRatio, wrapX: r.wrapX, transition: r.transition, key: r.key, attributionsCollapsible: r.attributionsCollapsible, zDirection: r.zDirection }) || this; return n.generateTileUrlFunction_ = n.tileUrlFunction === e.prototype.tileUrlFunction, n.tileLoadFunction = r.tileLoadFunction, r.tileUrlFunction && (n.tileUrlFunction = r.tileUrlFunction), n.urls = null, r.urls ? n.setUrls(r.urls) : r.url && n.setUrl(r.url), n.tileLoadingKeys_ = {}, n } return Vp(e, t), e.prototype.getTileLoadFunction = function () { return this.tileLoadFunction }, e.prototype.getTileUrlFunction = function () { return Object.getPrototypeOf(this).tileUrlFunction === this.tileUrlFunction ? this.tileUrlFunction.bind(this) : this.tileUrlFunction }, e.prototype.getUrls = function () { return this.urls }, e.prototype.handleTileChange = function (t) { var e, r = t.target, n = o(r), i = r.getState(); i == Qi ? (this.tileLoadingKeys_[n] = !0, e = Fp) : n in this.tileLoadingKeys_ && (delete this.tileLoadingKeys_[n], e = i == eo ? kp : i == to ? Ap : void 0), null != e && this.dispatchEvent(new Up(e, r)) }, e.prototype.setTileLoadFunction = function (t) { this.tileCache.clear(), this.tileLoadFunction = t, this.changed() }, e.prototype.setTileUrlFunction = function (t, e) { this.tileUrlFunction = t, this.tileCache.pruneExceptNewestZ(), void 0 !== e ? this.setKey(e) : this.changed() }, e.prototype.setUrl = function (t) { var e = yc(t); this.urls = e, this.setUrls(e) }, e.prototype.setUrls = function (t) { this.urls = t; var e = t.join("\n"); this.generateTileUrlFunction_ ? this.setTileUrlFunction(fc(t, this.tileGrid), e) : this.setKey(e) }, e.prototype.tileUrlFunction = function (t, e, r) { }, e.prototype.useTile = function (t, e, r) { var n = cu(t, e, r); this.tileCache.containsKey(n) && this.tileCache.get(n) }, e }(Bp), Wp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function qp(t, e) { t.getImage().src = e } var Xp = function (t) { function e(e) { var r = t.call(this, { attributions: e.attributions, cacheSize: e.cacheSize, opaque: e.opaque, projection: e.projection, state: e.state, tileGrid: e.tileGrid, tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : qp, tilePixelRatio: e.tilePixelRatio, tileUrlFunction: e.tileUrlFunction, url: e.url, urls: e.urls, wrapX: e.wrapX, transition: e.transition, key: e.key, attributionsCollapsible: e.attributionsCollapsible, zDirection: e.zDirection }) || this; return r.crossOrigin = void 0 !== e.crossOrigin ? e.crossOrigin : null, r.tileClass = void 0 !== e.tileClass ? e.tileClass : vo, r.tileCacheForProjection = {}, r.tileGridForProjection = {}, r.reprojectionErrorThreshold_ = e.reprojectionErrorThreshold, r.contextOptions_ = !1 === e.imageSmoothing ? $u : void 0, r.renderReprojectionEdges_ = !1, r } return Wp(e, t), e.prototype.canExpireCache = function () { if (this.tileCache.canExpireCache()) return !0; for (var t in this.tileCacheForProjection) if (this.tileCacheForProjection[t].canExpireCache()) return !0; return !1 }, e.prototype.expireCache = function (t, e) { var r = this.getTileCacheForProjection(t); for (var n in this.tileCache.expireCache(this.tileCache == r ? e : {}), this.tileCacheForProjection) { var i = this.tileCacheForProjection[n]; i.expireCache(i == r ? e : {}) } }, e.prototype.getContextOptions = function () { return this.contextOptions_ }, e.prototype.getGutterForProjection = function (t) { return this.getProjection() && t && !Xr(this.getProjection(), t) ? 0 : this.getGutter() }, e.prototype.getGutter = function () { return 0 }, e.prototype.getKey = function () { return t.prototype.getKey.call(this) + (this.contextOptions_ ? "\n" + JSON.stringify(this.contextOptions_) : "") }, e.prototype.getOpaque = function (e) { return !(this.getProjection() && e && !Xr(this.getProjection(), e)) && t.prototype.getOpaque.call(this, e) }, e.prototype.getTileGridForProjection = function (t) { var e = this.getProjection(); if (!this.tileGrid || e && !Xr(e, t)) { var r = o(t); return r in this.tileGridForProjection || (this.tileGridForProjection[r] = oc(t)), this.tileGridForProjection[r] } return this.tileGrid }, e.prototype.getTileCacheForProjection = function (t) { var e = this.getProjection(); if (!e || Xr(e, t)) return this.tileCache; var r = o(t); return r in this.tileCacheForProjection || (this.tileCacheForProjection[r] = new yu(this.tileCache.highWaterMark)), this.tileCacheForProjection[r] }, e.prototype.createTile_ = function (t, e, r, n, i, o) { var a = [t, e, r], s = this.getTileCoordForTileUrlFunction(a, i), l = s ? this.tileUrlFunction(s, n, i) : void 0, u = new this.tileClass(a, void 0 !== l ? Ji : ro, void 0 !== l ? l : "", this.crossOrigin, this.tileLoadFunction, this.tileOptions); return u.key = o, u.addEventListener(F, this.handleTileChange.bind(this)), u }, e.prototype.getTile = function (t, e, r, n, i) { var o = this.getProjection(); if (o && i && !Xr(o, i)) { var a = this.getTileCacheForProjection(i), s = [t, e, r], l = void 0, u = hu(s); a.containsKey(u) && (l = a.get(u)); var c = this.getKey(); if (l && l.key == c) return l; var h = this.getTileGridForProjection(o), p = this.getTileGridForProjection(i), f = this.getTileCoordForTileUrlFunction(s, i), d = new Mp(o, h, i, p, s, f, this.getTilePixelRatio(n), this.getGutter(), function (t, e, r, n) { return this.getTileInternal(t, e, r, n, o) }.bind(this), this.reprojectionErrorThreshold_, this.renderReprojectionEdges_, this.contextOptions_); return d.key = c, l ? (d.interimTile = l, d.refreshInterimChain(), a.replace(u, d)) : a.set(u, d), d } return this.getTileInternal(t, e, r, n, o || i) }, e.prototype.getTileInternal = function (t, e, r, n, i) { var o = null, a = cu(t, e, r), s = this.getKey(); if (this.tileCache.containsKey(a)) { if ((o = this.tileCache.get(a)).key != s) { var l = o; o = this.createTile_(t, e, r, n, i, s), l.getState() == Ji ? o.interimTile = l.interimTile : o.interimTile = l, o.refreshInterimChain(), this.tileCache.replace(a, o) } } else o = this.createTile_(t, e, r, n, i, s), this.tileCache.set(a, o); return o }, e.prototype.setRenderReprojectionEdges = function (t) { if (this.renderReprojectionEdges_ != t) { for (var e in this.renderReprojectionEdges_ = t, this.tileCacheForProjection) this.tileCacheForProjection[e].clear(); this.changed() } }, e.prototype.setTileGridForProjection = function (t, e) { var r = Gr(t); if (r) { var n = o(r); n in this.tileGridForProjection || (this.tileGridForProjection[n] = e) } }, e }(Yp), Zp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Kp(t) { var e, r, n = t[0], i = new Array(n), o = 1 << n - 1; for (e = 0; e < n; ++e) r = 48, t[1] & o && (r += 1), t[2] & o && (r += 2), i[e] = String.fromCharCode(r), o >>= 1; return i.join("") } var Hp = function (t) { function e(e) { var r = this, n = void 0 !== e.hidpi && e.hidpi; return (r = t.call(this, { cacheSize: e.cacheSize, crossOrigin: "anonymous", imageSmoothing: e.imageSmoothing, opaque: !0, projection: Gr("EPSG:3857"), reprojectionErrorThreshold: e.reprojectionErrorThreshold, state: Jo, tileLoadFunction: e.tileLoadFunction, tilePixelRatio: n ? 2 : 1, wrapX: void 0 === e.wrapX || e.wrapX, transition: e.transition }) || this).hidpi_ = n, r.culture_ = void 0 !== e.culture ? e.culture : "en-us", r.maxZoom_ = void 0 !== e.maxZoom ? e.maxZoom : -1, r.apiKey_ = e.key, r.imagerySet_ = e.imagerySet, Au("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/" + r.imagerySet_ + "?uriScheme=https&include=ImageryProviders&key=" + r.apiKey_ + "&c=" + r.culture_, r.handleImageryMetadataResponse.bind(r), void 0, "jsonp"), r } return Zp(e, t), e.prototype.getApiKey = function () { return this.apiKey_ }, e.prototype.getImagerySet = function () { return this.imagerySet_ }, e.prototype.handleImageryMetadataResponse = function (t) { if (200 == t.statusCode && "OK" == t.statusDescription && "ValidCredentials" == t.authenticationResultCode && 1 == t.resourceSets.length && 1 == t.resourceSets[0].resources.length) { var e = t.resourceSets[0].resources[0], r = -1 == this.maxZoom_ ? e.zoomMax : this.maxZoom_, n = hc(this.getProjection()), i = this.hidpi_ ? 2 : 1, o = e.imageWidth == e.imageHeight ? e.imageWidth / i : [e.imageWidth / i, e.imageHeight / i], a = lc({extent: n, minZoom: e.zoomMin, maxZoom: r, tileSize: o}); this.tileGrid = a; var s = this.culture_, l = this.hidpi_; if (this.tileUrlFunction = dc(e.imageUrlSubdomains.map((function (t) { var r = [0, 0, 0], n = e.imageUrl.replace("{subdomain}", t).replace("{culture}", s); return function (t, e, i) { if (t) { uu(t[0], t[1], t[2], r); var o = n; return l && (o += "&dpi=d1&device=mobile"), o.replace("{quadkey}", Kp(r)) } } }))), e.imageryProviders) { var u = Zr(Gr("EPSG:4326"), this.getProjection()); this.setAttributions(function (t) { var r = [], n = t.viewState, i = this.getTileGrid(), o = i.getZForResolution(n.resolution, this.zDirection), a = i.getTileCoordForCoordAndZ(n.center, o)[0]; return e.imageryProviders.map((function (e) { for (var n = !1, i = e.coverageAreas, o = 0, s = i.length; o < s; ++o) { var l = i[o]; if (a >= l.zoomMin && a <= l.zoomMax) { var c = l.bbox; if (Re(Ae([c[1], c[0], c[3], c[2]], u), t.extent)) { n = !0; break } } } n && r.push(e.attribution) })), r.push('Terms of Use'), r }.bind(this)) } this.setState(Qo) } else this.setState(ta) }, e }(Xp), $p = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Jp = function (t) { function e(e) { var r = e || {}, n = void 0 !== r.projection ? r.projection : "EPSG:3857", i = void 0 !== r.tileGrid ? r.tileGrid : lc({ extent: hc(n), maxResolution: r.maxResolution, maxZoom: r.maxZoom, minZoom: r.minZoom, tileSize: r.tileSize }); return t.call(this, { attributions: r.attributions, cacheSize: r.cacheSize, crossOrigin: r.crossOrigin, imageSmoothing: r.imageSmoothing, opaque: r.opaque, projection: n, reprojectionErrorThreshold: r.reprojectionErrorThreshold, tileGrid: i, tileLoadFunction: r.tileLoadFunction, tilePixelRatio: r.tilePixelRatio, tileUrlFunction: r.tileUrlFunction, url: r.url, urls: r.urls, wrapX: void 0 === r.wrapX || r.wrapX, transition: r.transition, attributionsCollapsible: r.attributionsCollapsible, zDirection: r.zDirection }) || this } return $p(e, t), e }(Xp), Qp = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), tf = function (t) { function e(e) { var r = t.call(this, { attributions: e.attributions, cacheSize: e.cacheSize, crossOrigin: e.crossOrigin, maxZoom: void 0 !== e.maxZoom ? e.maxZoom : 18, minZoom: e.minZoom, projection: e.projection, transition: e.transition, wrapX: e.wrapX }) || this; return r.account_ = e.account, r.mapId_ = e.map || "", r.config_ = e.config || {}, r.templateCache_ = {}, r.initializeMap_(), r } return Qp(e, t), e.prototype.getConfig = function () { return this.config_ }, e.prototype.updateConfig = function (t) { O(this.config_, t), this.initializeMap_() }, e.prototype.setConfig = function (t) { this.config_ = t || {}, this.initializeMap_() }, e.prototype.initializeMap_ = function () { var t = JSON.stringify(this.config_); if (this.templateCache_[t]) this.applyTemplate_(this.templateCache_[t]); else { var e = "https://" + this.account_ + ".carto.com/api/v1/map"; this.mapId_ && (e += "/named/" + this.mapId_); var r = new XMLHttpRequest; r.addEventListener("load", this.handleInitResponse_.bind(this, t)), r.addEventListener("error", this.handleInitError_.bind(this)), r.open("POST", e), r.setRequestHeader("Content-type", "application/json"), r.send(JSON.stringify(this.config_)) } }, e.prototype.handleInitResponse_ = function (t, e) { var r = e.target; if (!r.status || r.status >= 200 && r.status < 300) { var n = void 0; try { n = JSON.parse(r.responseText) } catch (t) { return void this.setState(ta) } this.applyTemplate_(n), this.templateCache_[t] = n, this.setState(Qo) } else this.setState(ta) }, e.prototype.handleInitError_ = function (t) { this.setState(ta) }, e.prototype.applyTemplate_ = function (t) { var e = "https://" + t.cdn_url.https + "/" + this.account_ + "/api/v1/map/" + t.layergroupid + "/{z}/{x}/{y}.png"; this.setUrl(e) }, e }(Jp), ef = "addfeature", rf = "changefeature", nf = "clear", of = "removefeature", af = "featuresloadstart", sf = "featuresloadend", lf = "featuresloaderror", uf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), cf = function (t) { function e(e, r, n) { var i = t.call(this, e) || this; return i.feature = r, i.features = n, i } return uf(e, t), e }(c), hf = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, { attributions: n.attributions, projection: void 0, state: Qo, wrapX: void 0 === n.wrapX || n.wrapX }) || this).loader_ = T, r.format_ = n.format, r.overlaps_ = void 0 === n.overlaps || n.overlaps, r.url_ = n.url, void 0 !== n.loader ? r.loader_ = n.loader : void 0 !== r.url_ && (pt(r.format_, 7), r.loader_ = Mu(r.url_, r.format_)), r.strategy_ = void 0 !== n.strategy ? n.strategy : Fu; var i, o, a = void 0 === n.useSpatialIndex || n.useSpatialIndex; return r.featuresRtree_ = a ? new Rp : null, r.loadedExtentsRtree_ = new Rp, r.nullGeometryFeatures_ = {}, r.idIndex_ = {}, r.uidIndex_ = {}, r.featureChangeKeys_ = {}, r.featuresCollection_ = null, Array.isArray(n.features) ? o = n.features : n.features && (o = (i = n.features).getArray()), a || void 0 !== i || (i = new ht(o)), void 0 !== o && r.addFeaturesInternal(o), void 0 !== i && r.bindFeaturesCollection_(i), r } return uf(e, t), e.prototype.addFeature = function (t) { this.addFeatureInternal(t), this.changed() }, e.prototype.addFeatureInternal = function (t) { var e = o(t); if (this.addToIndex_(e, t)) { this.setupChangeEvents_(e, t); var r = t.getGeometry(); if (r) { var n = r.getExtent(); this.featuresRtree_ && this.featuresRtree_.insert(n, t) } else this.nullGeometryFeatures_[e] = t; this.dispatchEvent(new cf(ef, t)) } else this.featuresCollection_ && this.featuresCollection_.remove(t) }, e.prototype.setupChangeEvents_ = function (t, e) { this.featureChangeKeys_[t] = [Z(e, F, this.handleFeatureChange_, this), Z(e, h, this.handleFeatureChange_, this)] }, e.prototype.addToIndex_ = function (t, e) { var r = !0, n = e.getId(); return void 0 !== n && (n.toString() in this.idIndex_ ? r = !1 : this.idIndex_[n.toString()] = e), r && (pt(!(t in this.uidIndex_), 30), this.uidIndex_[t] = e), r }, e.prototype.addFeatures = function (t) { this.addFeaturesInternal(t), this.changed() }, e.prototype.addFeaturesInternal = function (t) { for (var e = [], r = [], n = [], i = 0, a = t.length; i < a; i++) { var s = o(u = t[i]); this.addToIndex_(s, u) && r.push(u) } i = 0; for (var l = r.length; i < l; i++) { var u; s = o(u = r[i]); this.setupChangeEvents_(s, u); var c = u.getGeometry(); if (c) { var h = c.getExtent(); e.push(h), n.push(u) } else this.nullGeometryFeatures_[s] = u } this.featuresRtree_ && this.featuresRtree_.load(e, n); i = 0; for (var p = r.length; i < p; i++) this.dispatchEvent(new cf(ef, r[i])) }, e.prototype.bindFeaturesCollection_ = function (t) { var e = !1; this.addEventListener(ef, (function (r) { e || (e = !0, t.push(r.feature), e = !1) })), this.addEventListener(of, (function (r) { e || (e = !0, t.remove(r.feature), e = !1) })), t.addEventListener(at, function (t) { e || (e = !0, this.addFeature(t.element), e = !1) }.bind(this)), t.addEventListener(st, function (t) { e || (e = !0, this.removeFeature(t.element), e = !1) }.bind(this)), this.featuresCollection_ = t }, e.prototype.clear = function (t) { if (t) { for (var e in this.featureChangeKeys_) { this.featureChangeKeys_[e].forEach(H) } this.featuresCollection_ || (this.featureChangeKeys_ = {}, this.idIndex_ = {}, this.uidIndex_ = {}) } else if (this.featuresRtree_) for (var r in this.featuresRtree_.forEach(this.removeFeatureInternal.bind(this)), this.nullGeometryFeatures_) this.removeFeatureInternal(this.nullGeometryFeatures_[r]); this.featuresCollection_ && this.featuresCollection_.clear(), this.featuresRtree_ && this.featuresRtree_.clear(), this.nullGeometryFeatures_ = {}; var n = new cf(nf); this.dispatchEvent(n), this.changed() }, e.prototype.forEachFeature = function (t) { if (this.featuresRtree_) return this.featuresRtree_.forEach(t); this.featuresCollection_ && this.featuresCollection_.forEach(t) }, e.prototype.forEachFeatureAtCoordinateDirect = function (t, e) { var r = [t[0], t[1], t[0], t[1]]; return this.forEachFeatureInExtent(r, (function (r) { return r.getGeometry().intersectsCoordinate(t) ? e(r) : void 0 })) }, e.prototype.forEachFeatureInExtent = function (t, e) { if (this.featuresRtree_) return this.featuresRtree_.forEachInExtent(t, e); this.featuresCollection_ && this.featuresCollection_.forEach(e) }, e.prototype.forEachFeatureIntersectingExtent = function (t, e) { return this.forEachFeatureInExtent(t, (function (r) { if (r.getGeometry().intersectsExtent(t)) { var n = e(r); if (n) return n } })) }, e.prototype.getFeaturesCollection = function () { return this.featuresCollection_ }, e.prototype.getFeatures = function () { var t; return this.featuresCollection_ ? t = this.featuresCollection_.getArray() : this.featuresRtree_ && (t = this.featuresRtree_.getAll(), I(this.nullGeometryFeatures_) || v(t, R(this.nullGeometryFeatures_))), t }, e.prototype.getFeaturesAtCoordinate = function (t) { var e = []; return this.forEachFeatureAtCoordinateDirect(t, (function (t) { e.push(t) })), e }, e.prototype.getFeaturesInExtent = function (t) { return this.featuresRtree_ ? this.featuresRtree_.getInExtent(t) : this.featuresCollection_ ? this.featuresCollection_.getArray() : [] }, e.prototype.getClosestFeatureToCoordinate = function (t, e) { var r = t[0], n = t[1], i = null, o = [NaN, NaN], a = 1 / 0, s = [-1 / 0, -1 / 0, 1 / 0, 1 / 0], l = e || S; return this.featuresRtree_.forEachInExtent(s, (function (t) { if (l(t)) { var e = t.getGeometry(), u = a; if ((a = e.closestPointXY(r, n, o, a)) < u) { i = t; var c = Math.sqrt(a); s[0] = r - c, s[1] = n - c, s[2] = r + c, s[3] = n + c } } })), i }, e.prototype.getExtent = function (t) { return this.featuresRtree_.getExtent(t) }, e.prototype.getFeatureById = function (t) { var e = this.idIndex_[t.toString()]; return void 0 !== e ? e : null }, e.prototype.getFeatureByUid = function (t) { var e = this.uidIndex_[t]; return void 0 !== e ? e : null }, e.prototype.getFormat = function () { return this.format_ }, e.prototype.getOverlaps = function () { return this.overlaps_ }, e.prototype.getUrl = function () { return this.url_ }, e.prototype.handleFeatureChange_ = function (t) { var e = t.target, r = o(e), n = e.getGeometry(); if (n) { var i = n.getExtent(); r in this.nullGeometryFeatures_ ? (delete this.nullGeometryFeatures_[r], this.featuresRtree_ && this.featuresRtree_.insert(i, e)) : this.featuresRtree_ && this.featuresRtree_.update(i, e) } else r in this.nullGeometryFeatures_ || (this.featuresRtree_ && this.featuresRtree_.remove(e), this.nullGeometryFeatures_[r] = e); var a = e.getId(); if (void 0 !== a) { var s = a.toString(); this.idIndex_[s] !== e && (this.removeFromIdIndex_(e), this.idIndex_[s] = e) } else this.removeFromIdIndex_(e), this.uidIndex_[r] = e; this.changed(), this.dispatchEvent(new cf(rf, e)) }, e.prototype.hasFeature = function (t) { var e = t.getId(); return void 0 !== e ? e in this.idIndex_ : o(t) in this.uidIndex_ }, e.prototype.isEmpty = function () { return this.featuresRtree_.isEmpty() && I(this.nullGeometryFeatures_) }, e.prototype.loadFeatures = function (t, e, r) { var n = this.loadedExtentsRtree_, i = this.strategy_(t, e); this.loading = !1; for (var o = function (t, o) { var s = i[t]; n.forEachInExtent(s, (function (t) { return te(t.extent, s) })) || (a.dispatchEvent(new cf(af)), a.loader_.call(a, s, e, r, function (t) { this.dispatchEvent(new cf(sf, void 0, t)) }.bind(a), function () { this.dispatchEvent(new cf(lf)) }.bind(a)), n.insert(s, {extent: s.slice()}), a.loading = a.loader_ !== T) }, a = this, s = 0, l = i.length; s < l; ++s) o(s) }, e.prototype.refresh = function () { this.clear(!0), this.loadedExtentsRtree_.clear(), t.prototype.refresh.call(this) }, e.prototype.removeLoadedExtent = function (t) { var e, r = this.loadedExtentsRtree_; r.forEachInExtent(t, (function (r) { if (ue(r.extent, t)) return e = r, !0 })), e && r.remove(e) }, e.prototype.removeFeature = function (t) { var e = o(t); e in this.nullGeometryFeatures_ ? delete this.nullGeometryFeatures_[e] : this.featuresRtree_ && this.featuresRtree_.remove(t), this.removeFeatureInternal(t), this.changed() }, e.prototype.removeFeatureInternal = function (t) { var e = o(t); this.featureChangeKeys_[e].forEach(H), delete this.featureChangeKeys_[e]; var r = t.getId(); void 0 !== r && delete this.idIndex_[r.toString()], delete this.uidIndex_[e], this.dispatchEvent(new cf(of, t)) }, e.prototype.removeFromIdIndex_ = function (t) { var e = !1; for (var r in this.idIndex_) if (this.idIndex_[r] === t) { delete this.idIndex_[r], e = !0; break } return e }, e.prototype.setLoader = function (t) { this.loader_ = t }, e.prototype.setUrl = function (t) { pt(this.format_, 7), this.setLoader(Mu(t, this.format_)) }, e }(Dp), pf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ff = function (t) { function e(e) { var r = t.call(this, {attributions: e.attributions, wrapX: e.wrapX}) || this; return r.resolution = void 0, r.distance = void 0 !== e.distance ? e.distance : 20, r.features = [], r.geometryFunction = e.geometryFunction || function (t) { var e = t.getGeometry(); return pt(e.getType() == bt.POINT, 10), e }, r.boundRefresh_ = r.refresh.bind(r), r.setSource(e.source || null), r } return pf(e, t), e.prototype.clear = function (e) { this.features.length = 0, t.prototype.clear.call(this, e) }, e.prototype.getDistance = function () { return this.distance }, e.prototype.getSource = function () { return this.source }, e.prototype.loadFeatures = function (t, e, r) { this.source.loadFeatures(t, e, r), e !== this.resolution && (this.clear(), this.resolution = e, this.cluster(), this.addFeatures(this.features)) }, e.prototype.setDistance = function (t) { this.distance = t, this.refresh() }, e.prototype.setSource = function (t) { this.source && this.source.removeEventListener(F, this.boundRefresh_), this.source = t, t && t.addEventListener(F, this.boundRefresh_), this.refresh() }, e.prototype.refresh = function () { this.clear(), this.cluster(), this.addFeatures(this.features) }, e.prototype.cluster = function () { if (void 0 !== this.resolution && this.source) for (var t = [1 / 0, 1 / 0, -1 / 0, -1 / 0], e = this.distance * this.resolution, r = this.source.getFeatures(), n = {}, i = 0, a = r.length; i < a; i++) { var s = r[i]; if (!(o(s) in n)) { var l = this.geometryFunction(s); if (l) { ae(l.getCoordinates(), t), Ht(t, e, t); var u = this.source.getFeaturesInExtent(t); u = u.filter((function (t) { var e = o(t); return !(e in n) && (n[e] = !0, !0) })), this.features.push(this.createCluster(u)) } } } }, e.prototype.createCluster = function (t) { for (var e = [0, 0], r = t.length - 1; r >= 0; --r) { var n = this.geometryFunction(t[r]); n ? xr(e, n.getCoordinates()) : t.splice(r, 1) } Pr(e, 1 / t.length); var i = new gt(new qn(e)); return i.set("features", t), i }, e }(hf), df = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), gf = "default", yf = "truncated", mf = function (t) { function e(e, r, n, i, o, a, s) { var l = t.call(this, r, n, i, o, a, s) || this; return l.zoomifyImage_ = null, l.tileSize_ = e, l } return df(e, t), e.prototype.getImage = function () { if (this.zoomifyImage_) return this.zoomifyImage_; var e = t.prototype.getImage.call(this); if (this.state == to) { var r = this.tileSize_; if (e.width == r[0] && e.height == r[1]) return this.zoomifyImage_ = e, e; var n = uo(r[0], r[1]); return n.drawImage(e, 0, 0), this.zoomifyImage_ = n.canvas, n.canvas } return e }, e }(vo), vf = function (t) { function e(e) { var r = this, n = e, i = n.size, o = void 0 !== n.tierSizeCalculation ? n.tierSizeCalculation : gf, a = n.tilePixelRatio || 1, s = i[0], l = i[1], u = [], c = n.tileSize || 256, h = c * a; switch (o) { case gf: for (; s > h || l > h;) u.push([Math.ceil(s / h), Math.ceil(l / h)]), h += h; break; case yf: for (var p = s, f = l; p > h || f > h;) u.push([Math.ceil(p / h), Math.ceil(f / h)]), p >>= 1, f >>= 1; break; default: pt(!1, 53) } u.push([1, 1]), u.reverse(); for (var d = [a], g = [0], y = 1, m = u.length; y < m; y++) d.push(a << y), g.push(u[y - 1][0] * u[y - 1][1] + g[y - 1]); d.reverse(); var v = new ic({tileSize: c, extent: n.extent || [0, -l, s, 0], resolutions: d}), _ = n.url; _ && -1 == _.indexOf("{TileGroup}") && -1 == _.indexOf("{tileIndex}") && (_ += "{TileGroup}/{z}-{x}-{y}.jpg"); var b = yc(_), x = c * a; var w = dc(b.map((function (t) { return function (e, r, n) { if (e) { var i = e[0], o = e[1], a = e[2], s = o + a * u[i][0], l = {z: i, x: o, y: a, tileIndex: s, TileGroup: "TileGroup" + ((s + g[i]) / x | 0)}; return t.replace(/\{(\w+?)\}/g, (function (t, e) { return l[e] })) } } }))), S = mf.bind(null, Is(c * a)); (r = t.call(this, { attributions: n.attributions, cacheSize: n.cacheSize, crossOrigin: n.crossOrigin, imageSmoothing: n.imageSmoothing, projection: n.projection, tilePixelRatio: a, reprojectionErrorThreshold: n.reprojectionErrorThreshold, tileClass: S, tileGrid: v, tileUrlFunction: w, transition: n.transition }) || this).zDirection = n.zDirection; var E = w(v.getTileCoordForCoordAndResolution(xe(v.getExtent()), d[d.length - 1]), 1, null), T = new Image; return T.addEventListener("error", function () { x = c, this.changed() }.bind(r)), T.src = E, r } return df(e, t), e }(Xp), _f = function () { for (var t = 0, e = 0, r = arguments.length; e < r; e++) t += arguments[e].length; var n = Array(t), i = 0; for (e = 0; e < r; e++) for (var o = arguments[e], a = 0, s = o.length; a < s; a++, i++) n[i] = o[a]; return n }, bf = "version1", xf = "version2", wf = "version3", Sf = {}; Sf[bf] = { level0: {supports: [], formats: [], qualities: ["native"]}, level1: {supports: ["regionByPx", "sizeByW", "sizeByH", "sizeByPct"], formats: ["jpg"], qualities: ["native"]}, level2: { supports: ["regionByPx", "regionByPct", "sizeByW", "sizeByH", "sizeByPct", "sizeByConfinedWh", "sizeByWh"], formats: ["jpg", "png"], qualities: ["native", "color", "grey", "bitonal"] } }, Sf[xf] = { level0: {supports: [], formats: ["jpg"], qualities: ["default"]}, level1: {supports: ["regionByPx", "sizeByW", "sizeByH", "sizeByPct"], formats: ["jpg"], qualities: ["default"]}, level2: { supports: ["regionByPx", "regionByPct", "sizeByW", "sizeByH", "sizeByPct", "sizeByConfinedWh", "sizeByDistortedWh", "sizeByWh"], formats: ["jpg", "png"], qualities: ["default", "bitonal"] } }, Sf[wf] = { level0: {supports: [], formats: ["jpg"], qualities: ["default"]}, level1: { supports: ["regionByPx", "regionSquare", "sizeByW", "sizeByH", "sizeByWh"], formats: ["jpg"], qualities: ["default"] }, level2: { supports: ["regionByPx", "regionSquare", "regionByPct", "sizeByW", "sizeByH", "sizeByPct", "sizeByConfinedWh", "sizeByWh"], formats: ["jpg", "png"], qualities: ["default"] } }, Sf.none = {none: {supports: [], formats: [], qualities: []}}; var Ef = /^https?:\/\/library\.stanford\.edu\/iiif\/image-api\/(?:1\.1\/)?compliance\.html#level[0-2]$/, Tf = /^https?:\/\/iiif\.io\/api\/image\/2\/level[0-2](?:\.json)?$/, Cf = /(^https?:\/\/iiif\.io\/api\/image\/3\/level[0-2](?:\.json)?$)|(^level[0-2]$)/; var Of = {}; Of[bf] = function (t) { var e = t.getComplianceLevelSupportedFeatures(); return void 0 === e && (e = Sf[bf].level0), { url: void 0 === t.imageInfo["@id"] ? void 0 : t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g, ""), supports: e.supports, formats: _f(e.formats, [void 0 === t.imageInfo.formats ? [] : t.imageInfo.formats]), qualities: _f(e.qualities, [void 0 === t.imageInfo.qualities ? [] : t.imageInfo.qualities]), resolutions: t.imageInfo.scale_factors, tileSize: void 0 !== t.imageInfo.tile_width ? void 0 !== t.imageInfo.tile_height ? [t.imageInfo.tile_width, t.imageInfo.tile_height] : [t.imageInfo.tile_width, t.imageInfo.tile_width] : null != t.imageInfo.tile_height ? [t.imageInfo.tile_height, t.imageInfo.tile_height] : void 0 } }, Of[xf] = function (t) { var e = t.getComplianceLevelSupportedFeatures(), r = Array.isArray(t.imageInfo.profile) && t.imageInfo.profile.length > 1, n = r && t.imageInfo.profile[1].supports ? t.imageInfo.profile[1].supports : [], i = r && t.imageInfo.profile[1].formats ? t.imageInfo.profile[1].formats : [], o = r && t.imageInfo.profile[1].qualities ? t.imageInfo.profile[1].qualities : []; return { url: t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g, ""), sizes: void 0 === t.imageInfo.sizes ? void 0 : t.imageInfo.sizes.map((function (t) { return [t.width, t.height] })), tileSize: void 0 === t.imageInfo.tiles ? void 0 : [t.imageInfo.tiles.map((function (t) { return t.width }))[0], t.imageInfo.tiles.map((function (t) { return void 0 === t.height ? t.width : t.height }))[0]], resolutions: void 0 === t.imageInfo.tiles ? void 0 : t.imageInfo.tiles.map((function (t) { return t.scaleFactors }))[0], supports: _f(e.supports, n), formats: _f(e.formats, i), qualities: _f(e.qualities, o) } }, Of[wf] = function (t) { var e = t.getComplianceLevelSupportedFeatures(), r = void 0 === t.imageInfo.extraFormats ? e.formats : _f(e.formats, t.imageInfo.extraFormats), n = void 0 !== t.imageInfo.preferredFormats && Array.isArray(t.imageInfo.preferredFormats) && t.imageInfo.preferredFormats.length > 0 ? t.imageInfo.preferredFormats.filter((function (t) { return ["jpg", "png", "gif"].includes(t) })).reduce((function (t, e) { return void 0 === t && r.includes(e) ? e : t }), void 0) : void 0; return { url: t.imageInfo.id, sizes: void 0 === t.imageInfo.sizes ? void 0 : t.imageInfo.sizes.map((function (t) { return [t.width, t.height] })), tileSize: void 0 === t.imageInfo.tiles ? void 0 : [t.imageInfo.tiles.map((function (t) { return t.width }))[0], t.imageInfo.tiles.map((function (t) { return t.height }))[0]], resolutions: void 0 === t.imageInfo.tiles ? void 0 : t.imageInfo.tiles.map((function (t) { return t.scaleFactors }))[0], supports: void 0 === t.imageInfo.extraFeatures ? e.supports : _f(e.supports, t.imageInfo.extraFeatures), formats: r, qualities: void 0 === t.imageInfo.extraQualities ? e.qualities : _f(e.qualities, t.imageInfo.extraQualities), preferredFormat: n } }; var Pf = function () { function t(t) { this.setImageInfo(t) } return t.prototype.setImageInfo = function (t) { this.imageInfo = "string" == typeof t ? JSON.parse(t) : t }, t.prototype.getImageApiVersion = function () { if (void 0 !== this.imageInfo) { var t = this.imageInfo["@context"] || "ol-no-context"; "string" == typeof t && (t = [t]); for (var e = 0; e < t.length; e++) switch (t[e]) { case"http://library.stanford.edu/iiif/image-api/1.1/context.json": case"http://iiif.io/api/image/1/context.json": return bf; case"http://iiif.io/api/image/2/context.json": return xf; case"http://iiif.io/api/image/3/context.json": return wf; case"ol-no-context": if (this.getComplianceLevelEntryFromProfile(bf) && this.imageInfo.identifier) return bf } pt(!1, 61) } }, t.prototype.getComplianceLevelEntryFromProfile = function (t) { if (void 0 !== this.imageInfo && void 0 !== this.imageInfo.profile) switch (void 0 === t && (t = this.getImageApiVersion()), t) { case bf: if (Ef.test(this.imageInfo.profile)) return this.imageInfo.profile; break; case wf: if (Cf.test(this.imageInfo.profile)) return this.imageInfo.profile; break; case xf: if ("string" == typeof this.imageInfo.profile && Tf.test(this.imageInfo.profile)) return this.imageInfo.profile; if (Array.isArray(this.imageInfo.profile) && this.imageInfo.profile.length > 0 && "string" == typeof this.imageInfo.profile[0] && Tf.test(this.imageInfo.profile[0])) return this.imageInfo.profile[0] } }, t.prototype.getComplianceLevelFromProfile = function (t) { var e = this.getComplianceLevelEntryFromProfile(t); if (void 0 !== e) { var r = e.match(/level[0-2](?:\.json)?$/g); return Array.isArray(r) ? r[0].replace(".json", "") : void 0 } }, t.prototype.getComplianceLevelSupportedFeatures = function () { if (void 0 !== this.imageInfo) { var t = this.getImageApiVersion(), e = this.getComplianceLevelFromProfile(t); return void 0 === e ? Sf.none.none : Sf[t][e] } }, t.prototype.getTileSourceOptions = function (t) { var e = t || {}, r = this.getImageApiVersion(); if (void 0 !== r) { var n = void 0 === r ? void 0 : Of[r](this); if (void 0 !== n) return { url: n.url, version: r, size: [this.imageInfo.width, this.imageInfo.height], sizes: n.sizes, format: void 0 !== e.format && n.formats.includes(e.format) ? e.format : void 0 !== n.preferredFormat ? n.preferredFormat : "jpg", supports: n.supports, quality: e.quality && n.qualities.includes(e.quality) ? e.quality : n.qualities.includes("native") ? "native" : "default", resolutions: Array.isArray(n.resolutions) ? n.resolutions.sort((function (t, e) { return e - t })) : void 0, tileSize: n.tileSize } } }, t }(), Rf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function If(t) { return t.toLocaleString("en", {maximumFractionDigits: 10}) } var Lf = function (t) { function e(e) { var r = this, n = e || {}, i = n.url || ""; i += i.lastIndexOf("/") === i.length - 1 || "" === i ? "" : "/"; var o = n.version || xf, a = n.sizes || [], s = n.size; pt(null != s && Array.isArray(s) && 2 == s.length && !isNaN(s[0]) && s[0] > 0 && !isNaN(s[1]) && s[1] > 0, 60); var l, u, c, h = s[0], p = s[1], f = n.tileSize, d = n.tilePixelRatio || 1, g = n.format || "jpg", y = n.quality || (n.version == bf ? "native" : "default"), m = n.resolutions || [], v = n.supports || [], _ = n.extent || [0, -p, h, 0], b = null != a && Array.isArray(a) && a.length > 0, x = void 0 !== f && ("number" == typeof f && Number.isInteger(f) && f > 0 || Array.isArray(f) && f.length > 0), w = null != v && Array.isArray(v) && (v.includes("regionByPx") || v.includes("regionByPct")) && (v.includes("sizeByWh") || v.includes("sizeByH") || v.includes("sizeByW") || v.includes("sizeByPct")); if (m.sort((function (t, e) { return e - t })), x || w) if (null != f && ("number" == typeof f && Number.isInteger(f) && f > 0 ? (l = f, u = f) : Array.isArray(f) && f.length > 0 && ((1 == f.length || null == f[1] && Number.isInteger(f[0])) && (l = f[0], u = f[0]), 2 == f.length && (Number.isInteger(f[0]) && Number.isInteger(f[1]) ? (l = f[0], u = f[1]) : null == f[0] && Number.isInteger(f[1]) && (l = f[1], u = f[1])))), void 0 !== l && void 0 !== u || (l = 256, u = 256), 0 == m.length) for (var S = c = Math.max(Math.ceil(Math.log(h / l) / Math.LN2), Math.ceil(Math.log(p / u) / Math.LN2)); S >= 0; S--) m.push(Math.pow(2, S)); else { var E = Math.max.apply(Math, m); c = Math.round(Math.log(E) / Math.LN2) } else if (l = h, u = p, m = [], b) { a.sort((function (t, e) { return t[0] - e[0] })), c = -1; var T = []; for (S = 0; S < a.length; S++) { var C = h / a[S][0]; m.length > 0 && m[m.length - 1] == C ? T.push(S) : (m.push(C), c++) } if (T.length > 0) for (S = 0; S < T.length; S++) a.splice(T[S] - S, 1) } else m.push(1), a.push([h, p]), c = 0; var O = new ic({tileSize: [l, u], extent: _, origin: Ce(_), resolutions: m}), P = mf.bind(null, Is(f || 256).map((function (t) { return t * d }))); return (r = t.call(this, { attributions: n.attributions, attributionsCollapsible: n.attributionsCollapsible, cacheSize: n.cacheSize, crossOrigin: n.crossOrigin, imageSmoothing: n.imageSmoothing, projection: n.projection, reprojectionErrorThreshold: n.reprojectionErrorThreshold, state: n.state, tileClass: P, tileGrid: O, tilePixelRatio: n.tilePixelRatio, tileUrlFunction: function (t, e, r) { var n, s, f = t[0]; if (!(f > c)) { var d = t[1], _ = t[2], S = m[f]; if (!(void 0 === d || void 0 === _ || void 0 === S || d < 0 || Math.ceil(h / S / l) <= d || _ < 0 || Math.ceil(p / S / u) <= _)) { if (w || x) { var E = d * l * S, T = _ * u * S, C = l * S, O = u * S, P = l, R = u; if (E + C > h && (C = h - E), T + O > p && (O = p - T), E + l * S > h && (P = Math.floor((h - E + S - 1) / S)), T + u * S > p && (R = Math.floor((p - T + S - 1) / S)), 0 == E && C == h && 0 == T && O == p) n = "full"; else if (!w || v.includes("regionByPx")) n = E + "," + T + "," + C + "," + O; else if (v.includes("regionByPct")) { n = "pct:" + If(E / h * 100) + "," + If(T / p * 100) + "," + If(C / h * 100) + "," + If(O / p * 100) } o != wf || w && !v.includes("sizeByWh") ? !w || v.includes("sizeByW") ? s = P + "," : v.includes("sizeByH") ? s = "," + R : v.includes("sizeByWh") ? s = P + "," + R : v.includes("sizeByPct") && (s = "pct:" + If(100 / S)) : s = P + "," + R } else if (n = "full", b) { var I = a[f][0], L = a[f][1]; s = o == wf ? I == h && L == p ? "max" : I + "," + L : I == h ? "full" : I + "," } else s = o == wf ? "max" : "full"; return i + n + "/" + s + "/0/" + y + "." + g } } }, transition: n.transition }) || this).zDirection = n.zDirection, r } return Rf(e, t), e }(Xp), Mf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Ff = function (t) { function e(e, r, n, i, o, a, s) { var l = this, u = e.getExtent(), c = r.getExtent(), h = c ? Te(n, c) : n, p = tc(e, r, xe(h), i), f = new Ip(e, r, h, u, .5 * p, i), d = a(f.calculateSourceExtent(), p, o), g = d ? Fi : Ni, y = d ? d.getPixelRatio() : 1; return (l = t.call(this, n, i, y, g) || this).targetProj_ = r, l.maxSourceExtent_ = u, l.triangulation_ = f, l.targetResolution_ = i, l.targetExtent_ = n, l.sourceImage_ = d, l.sourcePixelRatio_ = y, l.contextOptions_ = s, l.canvas_ = null, l.sourceListenerKey_ = null, l } return Mf(e, t), e.prototype.disposeInternal = function () { this.state == Ai && this.unlistenSource_(), t.prototype.disposeInternal.call(this) }, e.prototype.getImage = function () { return this.canvas_ }, e.prototype.getProjection = function () { return this.targetProj_ }, e.prototype.reproject_ = function () { var t = this.sourceImage_.getState(); if (t == ki) { var e = Pe(this.targetExtent_) / this.targetResolution_, r = Ee(this.targetExtent_) / this.targetResolution_; this.canvas_ = rc(e, r, this.sourcePixelRatio_, this.sourceImage_.getResolution(), this.maxSourceExtent_, this.targetResolution_, this.targetExtent_, this.triangulation_, [{ extent: this.sourceImage_.getExtent(), image: this.sourceImage_.getImage() }], 0, void 0, this.contextOptions_) } this.state = t, this.changed() }, e.prototype.load = function () { if (this.state == Fi) { this.state = Ai, this.changed(); var t = this.sourceImage_.getState(); t == ki || t == ji ? this.reproject_() : (this.sourceListenerKey_ = Z(this.sourceImage_, F, (function (t) { var e = this.sourceImage_.getState(); e != ki && e != ji || (this.unlistenSource_(), this.reproject_()) }), this), this.sourceImage_.load()) } }, e.prototype.unlistenSource_ = function () { H(this.sourceListenerKey_), this.sourceListenerKey_ = null }, e }(Mi), Af = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), kf = "imageloadstart", jf = "imageloadend", Nf = "imageloaderror", Df = function (t) { function e(e, r) { var n = t.call(this, e) || this; return n.image = r, n } return Af(e, t), e }(c); function Gf(t, e) { t.getImage().src = e } var zf = function (t) { function e(e) { var r = t.call(this, {attributions: e.attributions, projection: e.projection, state: e.state}) || this; return r.resolutions_ = void 0 !== e.resolutions ? e.resolutions : null, r.reprojectedImage_ = null, r.reprojectedRevision_ = 0, r.contextOptions_ = !1 === e.imageSmoothing ? $u : void 0, r } return Af(e, t), e.prototype.getResolutions = function () { return this.resolutions_ }, e.prototype.getContextOptions = function () { return this.contextOptions_ }, e.prototype.findNearestResolution = function (t) { if (this.resolutions_) { var e = y(this.resolutions_, t, 0); t = this.resolutions_[e] } return t }, e.prototype.getImage = function (t, e, r, n) { var i = this.getProjection(); if (i && n && !Xr(i, n)) { if (this.reprojectedImage_) { if (this.reprojectedRevision_ == this.getRevision() && Xr(this.reprojectedImage_.getProjection(), n) && this.reprojectedImage_.getResolution() == e && ue(this.reprojectedImage_.getExtent(), t)) return this.reprojectedImage_; this.reprojectedImage_.dispose(), this.reprojectedImage_ = null } return this.reprojectedImage_ = new Ff(i, n, t, e, r, function (t, e, r) { return this.getImageInternal(t, e, r, i) }.bind(this), this.contextOptions_), this.reprojectedRevision_ = this.getRevision(), this.reprojectedImage_ } return i && (n = i), this.getImageInternal(t, e, r, n) }, e.prototype.getImageInternal = function (t, e, r, i) { return n() }, e.prototype.handleImageChange = function (t) { var e = t.target; switch (e.getState()) { case Ai: this.loading = !0, this.dispatchEvent(new Df(kf, e)); break; case ki: this.loading = !1, this.dispatchEvent(new Df(jf, e)); break; case ji: this.loading = !1, this.dispatchEvent(new Df(Nf, e)) } }, e }(Dp), Uf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Bf = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, { attributions: n.attributions, imageSmoothing: n.imageSmoothing, projection: n.projection, resolutions: n.resolutions }) || this).crossOrigin_ = void 0 !== n.crossOrigin ? n.crossOrigin : null, r.hidpi_ = void 0 === n.hidpi || n.hidpi, r.url_ = n.url, r.imageLoadFunction_ = void 0 !== n.imageLoadFunction ? n.imageLoadFunction : Gf, r.params_ = n.params || {}, r.image_ = null, r.imageSize_ = [0, 0], r.renderedRevision_ = 0, r.ratio_ = void 0 !== n.ratio ? n.ratio : 1.5, r } return Uf(e, t), e.prototype.getParams = function () { return this.params_ }, e.prototype.getImageInternal = function (t, e, r, n) { if (void 0 === this.url_) return null; e = this.findNearestResolution(e), r = this.hidpi_ ? r : 1; var i = this.image_; if (i && this.renderedRevision_ == this.getRevision() && i.getResolution() == e && i.getPixelRatio() == r && te(i.getExtent(), t)) return i; var o = {F: "image", FORMAT: "PNG32", TRANSPARENT: !0}; O(o, this.params_); var a = ((t = t.slice())[0] + t[2]) / 2, s = (t[1] + t[3]) / 2; if (1 != this.ratio_) { var l = this.ratio_ * Pe(t) / 2, u = this.ratio_ * Ee(t) / 2; t[0] = a - l, t[1] = s - u, t[2] = a + l, t[3] = s + u } var c = e / r, h = Math.ceil(Pe(t) / c), p = Math.ceil(Ee(t) / c); t[0] = a - c * h / 2, t[2] = a + c * h / 2, t[1] = s - c * p / 2, t[3] = s + c * p / 2, this.imageSize_[0] = h, this.imageSize_[1] = p; var f = this.getRequestUrl_(t, this.imageSize_, r, n, o); return this.image_ = new Ki(t, e, r, f, this.crossOrigin_, this.imageLoadFunction_), this.renderedRevision_ = this.getRevision(), this.image_.addEventListener(F, this.handleImageChange.bind(this)), this.image_ }, e.prototype.getImageLoadFunction = function () { return this.imageLoadFunction_ }, e.prototype.getRequestUrl_ = function (t, e, r, n, i) { var o = n.getCode().split(":").pop(); i.SIZE = e[0] + "," + e[1], i.BBOX = t.join(","), i.BBOXSR = o, i.IMAGESR = o, i.DPI = Math.round(90 * r); var a = this.url_, s = a.replace(/MapServer\/?$/, "MapServer/export").replace(/ImageServer\/?$/, "ImageServer/exportImage"); return s == a && pt(!1, 50), mc(s, i) }, e.prototype.getUrl = function () { return this.url_ }, e.prototype.setImageLoadFunction = function (t) { this.image_ = null, this.imageLoadFunction_ = t, this.changed() }, e.prototype.setUrl = function (t) { t != this.url_ && (this.url_ = t, this.image_ = null, this.changed()) }, e.prototype.updateParams = function (t) { O(this.params_, t), this.image_ = null, this.changed() }, e }(zf), Vf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Yf = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, { attributions: n.attributions, imageSmoothing: n.imageSmoothing, projection: n.projection, resolutions: n.resolutions, state: n.state }) || this).canvasFunction_ = n.canvasFunction, r.canvas_ = null, r.renderedRevision_ = 0, r.ratio_ = void 0 !== n.ratio ? n.ratio : 1.5, r } return Vf(e, t), e.prototype.getImageInternal = function (t, e, r, n) { e = this.findNearestResolution(e); var i = this.canvas_; if (i && this.renderedRevision_ == this.getRevision() && i.getResolution() == e && i.getPixelRatio() == r && te(i.getExtent(), t)) return i; Me(t = t.slice(), this.ratio_); var o = [Pe(t) / e * r, Ee(t) / e * r], a = this.canvasFunction_.call(this, t, e, r, o, n); return a && (i = new $i(t, e, r, a)), this.canvas_ = i, this.renderedRevision_ = this.getRevision(), i }, e }(zf), Wf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); var qf = function (t) { function e(e) { var r = t.call(this, { imageSmoothing: e.imageSmoothing, projection: e.projection, resolutions: e.resolutions }) || this; return r.crossOrigin_ = void 0 !== e.crossOrigin ? e.crossOrigin : null, r.displayDpi_ = void 0 !== e.displayDpi ? e.displayDpi : 96, r.params_ = e.params || {}, r.url_ = e.url, r.imageLoadFunction_ = void 0 !== e.imageLoadFunction ? e.imageLoadFunction : Gf, r.hidpi_ = void 0 === e.hidpi || e.hidpi, r.metersPerUnit_ = void 0 !== e.metersPerUnit ? e.metersPerUnit : 1, r.ratio_ = void 0 !== e.ratio ? e.ratio : 1, r.useOverlay_ = void 0 !== e.useOverlay && e.useOverlay, r.image_ = null, r.renderedRevision_ = 0, r } return Wf(e, t), e.prototype.getParams = function () { return this.params_ }, e.prototype.getImageInternal = function (t, e, r, n) { e = this.findNearestResolution(e), r = this.hidpi_ ? r : 1; var i = this.image_; if (i && this.renderedRevision_ == this.getRevision() && i.getResolution() == e && i.getPixelRatio() == r && te(i.getExtent(), t)) return i; 1 != this.ratio_ && Me(t = t.slice(), this.ratio_); var o = [Pe(t) / e * r, Ee(t) / e * r]; if (void 0 !== this.url_) { var a = this.getUrl(this.url_, this.params_, t, o, n); (i = new Ki(t, e, r, a, this.crossOrigin_, this.imageLoadFunction_)).addEventListener(F, this.handleImageChange.bind(this)) } else i = null; return this.image_ = i, this.renderedRevision_ = this.getRevision(), i }, e.prototype.getImageLoadFunction = function () { return this.imageLoadFunction_ }, e.prototype.updateParams = function (t) { O(this.params_, t), this.changed() }, e.prototype.getUrl = function (t, e, r, n, i) { var o = function (t, e, r, n) { var i = Pe(t), o = Ee(t), a = e[0], s = e[1], l = .0254 / n; return s * i > a * o ? i * r / (a * l) : o * r / (s * l) }(r, n, this.metersPerUnit_, this.displayDpi_), a = xe(r), s = { OPERATION: this.useOverlay_ ? "GETDYNAMICMAPOVERLAYIMAGE" : "GETMAPIMAGE", VERSION: "2.0.0", LOCALE: "en", CLIENTAGENT: "ol/source/ImageMapGuide source", CLIP: "1", SETDISPLAYDPI: this.displayDpi_, SETDISPLAYWIDTH: Math.round(n[0]), SETDISPLAYHEIGHT: Math.round(n[1]), SETVIEWSCALE: o, SETVIEWCENTERX: a[0], SETVIEWCENTERY: a[1] }; return O(s, e), mc(t, s) }, e.prototype.setImageLoadFunction = function (t) { this.image_ = null, this.imageLoadFunction_ = t, this.changed() }, e }(zf), Xf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Zf = function (t) { function e(e) { var r = this, n = void 0 !== e.crossOrigin ? e.crossOrigin : null, i = void 0 !== e.imageLoadFunction ? e.imageLoadFunction : Gf; return (r = t.call(this, { attributions: e.attributions, imageSmoothing: e.imageSmoothing, projection: Gr(e.projection) }) || this).url_ = e.url, r.imageExtent_ = e.imageExtent, r.image_ = new Ki(r.imageExtent_, void 0, 1, r.url_, n, i), r.imageSize_ = e.imageSize ? e.imageSize : null, r.image_.addEventListener(F, r.handleImageChange.bind(r)), r } return Xf(e, t), e.prototype.getImageExtent = function () { return this.imageExtent_ }, e.prototype.getImageInternal = function (t, e, r, n) { return Re(t, this.image_.getExtent()) ? this.image_ : null }, e.prototype.getUrl = function () { return this.url_ }, e.prototype.handleImageChange = function (e) { if (this.image_.getState() == ki) { var r = this.image_.getExtent(), n = this.image_.getImage(), i = void 0, o = void 0; this.imageSize_ ? (i = this.imageSize_[0], o = this.imageSize_[1]) : (i = n.width, o = n.height); var a = Ee(r) / o, s = Math.ceil(Pe(r) / a); if (s != i) { var l = uo(s, o); O(l, this.getContextOptions()); var u = l.canvas; l.drawImage(n, 0, 0, i, o, 0, 0, u.width, u.height), this.image_.setImage(u) } } t.prototype.handleImageChange.call(this, e) }, e }(zf), Kf = "carmentaserver", Hf = "geoserver", $f = "mapserver", Jf = "qgis", Qf = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), td = [101, 101], ed = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, { attributions: n.attributions, imageSmoothing: n.imageSmoothing, projection: n.projection, resolutions: n.resolutions }) || this).crossOrigin_ = void 0 !== n.crossOrigin ? n.crossOrigin : null, r.url_ = n.url, r.imageLoadFunction_ = void 0 !== n.imageLoadFunction ? n.imageLoadFunction : Gf, r.params_ = n.params || {}, r.v13_ = !0, r.updateV13_(), r.serverType_ = n.serverType, r.hidpi_ = void 0 === n.hidpi || n.hidpi, r.image_ = null, r.imageSize_ = [0, 0], r.renderedRevision_ = 0, r.ratio_ = void 0 !== n.ratio ? n.ratio : 1.5, r } return Qf(e, t), e.prototype.getFeatureInfoUrl = function (t, e, r, n) { if (void 0 !== this.url_) { var i = Gr(r), o = this.getProjection(); o && o !== i && (e = tc(o, i, t, e), t = Hr(t, i, o)); var a = Se(t, e, 0, td), s = { SERVICE: "WMS", VERSION: "1.3.0", REQUEST: "GetFeatureInfo", FORMAT: "image/png", TRANSPARENT: !0, QUERY_LAYERS: this.params_.LAYERS }; O(s, this.params_, n); var l = Math.floor((t[0] - a[0]) / e), u = Math.floor((a[3] - t[1]) / e); return s[this.v13_ ? "I" : "X"] = l, s[this.v13_ ? "J" : "Y"] = u, this.getRequestUrl_(a, td, 1, o || i, s) } }, e.prototype.getLegendUrl = function (t, e) { if (void 0 !== this.url_) { var r = {SERVICE: "WMS", VERSION: "1.3.0", REQUEST: "GetLegendGraphic", FORMAT: "image/png"}; if (void 0 === e || void 0 === e.LAYER) { var n = this.params_.LAYERS; if (!(!Array.isArray(n) || 1 === n.length)) return; r.LAYER = n } if (void 0 !== t) { var i = this.getProjection() ? this.getProjection().getMetersPerUnit() : 1; r.SCALE = t * i / 28e-5 } return O(r, e), mc(this.url_, r) } }, e.prototype.getParams = function () { return this.params_ }, e.prototype.getImageInternal = function (t, e, r, n) { if (void 0 === this.url_) return null; e = this.findNearestResolution(e), 1 == r || this.hidpi_ && void 0 !== this.serverType_ || (r = 1); var i = e / r, o = xe(t), a = Se(o, i, 0, [Math.ceil(Pe(t) / i), Math.ceil(Ee(t) / i)]), s = Se(o, i, 0, [Math.ceil(this.ratio_ * Pe(t) / i), Math.ceil(this.ratio_ * Ee(t) / i)]), l = this.image_; if (l && this.renderedRevision_ == this.getRevision() && l.getResolution() == e && l.getPixelRatio() == r && te(l.getExtent(), a)) return l; var u = {SERVICE: "WMS", VERSION: "1.3.0", REQUEST: "GetMap", FORMAT: "image/png", TRANSPARENT: !0}; O(u, this.params_), this.imageSize_[0] = Math.round(Pe(s) / i), this.imageSize_[1] = Math.round(Ee(s) / i); var c = this.getRequestUrl_(s, this.imageSize_, r, n, u); return this.image_ = new Ki(s, e, r, c, this.crossOrigin_, this.imageLoadFunction_), this.renderedRevision_ = this.getRevision(), this.image_.addEventListener(F, this.handleImageChange.bind(this)), this.image_ }, e.prototype.getImageLoadFunction = function () { return this.imageLoadFunction_ }, e.prototype.getRequestUrl_ = function (t, e, r, n, i) { if (pt(void 0 !== this.url_, 9), i[this.v13_ ? "CRS" : "SRS"] = n.getCode(), "STYLES" in this.params_ || (i.STYLES = ""), 1 != r) switch (this.serverType_) { case Hf: var o = 90 * r + .5 | 0; "FORMAT_OPTIONS" in i ? i.FORMAT_OPTIONS += ";dpi:" + o : i.FORMAT_OPTIONS = "dpi:" + o; break; case $f: i.MAP_RESOLUTION = 90 * r; break; case Kf: case Jf: i.DPI = 90 * r; break; default: pt(!1, 8) } i.WIDTH = e[0], i.HEIGHT = e[1]; var a, s = n.getAxisOrientation(); return a = this.v13_ && "ne" == s.substr(0, 2) ? [t[1], t[0], t[3], t[2]] : t, i.BBOX = a.join(","), mc(this.url_, i) }, e.prototype.getUrl = function () { return this.url_ }, e.prototype.setImageLoadFunction = function (t) { this.image_ = null, this.imageLoadFunction_ = t, this.changed() }, e.prototype.setUrl = function (t) { t != this.url_ && (this.url_ = t, this.image_ = null, this.changed()) }, e.prototype.updateParams = function (t) { O(this.params_, t), this.updateV13_(), this.image_ = null, this.changed() }, e.prototype.updateV13_ = function () { var t = this.params_.VERSION || "1.3.0"; this.v13_ = br(t, "1.3") >= 0 }, e }(zf), rd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), nd = '© OpenStreetMap contributors.', id = function (t) { function e(e) { var r, n = e || {}; r = void 0 !== n.attributions ? n.attributions : [nd]; var i = void 0 !== n.crossOrigin ? n.crossOrigin : "anonymous", o = void 0 !== n.url ? n.url : "https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png"; return t.call(this, { attributions: r, attributionsCollapsible: !1, cacheSize: n.cacheSize, crossOrigin: i, imageSmoothing: n.imageSmoothing, maxZoom: void 0 !== n.maxZoom ? n.maxZoom : 19, opaque: void 0 === n.opaque || n.opaque, reprojectionErrorThreshold: n.reprojectionErrorThreshold, tileLoadFunction: n.tileLoadFunction, transition: n.transition, url: o, wrapX: n.wrapX }) || this } return rd(e, t), e }(Jp), od = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ad = function (t) { function e(e) { var r = e || {}; return t.call(this, r) || this } return od(e, t), e }(na), sd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ld = function (t) { function e(e) { var r = t.call(this) || this; return r.boundHandleImageChange_ = r.handleImageChange_.bind(r), r.layer_ = e, r.declutterExecutorGroup = null, r } return sd(e, t), e.prototype.getFeatures = function (t) { return n() }, e.prototype.prepareFrame = function (t) { return n() }, e.prototype.renderFrame = function (t, e) { return n() }, e.prototype.loadedTileCallback = function (t, e, r) { t[e] || (t[e] = {}), t[e][r.tileCoord.toString()] = r }, e.prototype.createLoadedTileFinder = function (t, e, r) { return function (n, i) { var o = this.loadedTileCallback.bind(this, r, n); return t.forEachLoadedTile(e, n, i, o) }.bind(this) }, e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i) { }, e.prototype.getDataAtPixel = function (t, e, r) { return n() }, e.prototype.getLayer = function () { return this.layer_ }, e.prototype.handleFontsChanged = function () { }, e.prototype.handleImageChange_ = function (t) { t.target.getState() === ki && this.renderIfReadyAndVisible() }, e.prototype.loadImage = function (t) { var e = t.getState(); return e != ki && e != ji && t.addEventListener(F, this.boundHandleImageChange_), e == Fi && (t.load(), e = t.getState()), e == ki }, e.prototype.renderIfReadyAndVisible = function () { var t = this.getLayer(); t.getVisible() && t.getSourceState() == Qo && t.changed() }, e }(Q), ud = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), cd = function (t) { function e(e) { var r = t.call(this, e) || this; return r.container = null, r.renderedResolution, r.tempTransform = [1, 0, 0, 1, 0, 0], r.pixelTransform = [1, 0, 0, 1, 0, 0], r.inversePixelTransform = [1, 0, 0, 1, 0, 0], r.context = null, r.containerReused = !1, r } return ud(e, t), e.prototype.useContainer = function (t, e, r) { var n, i, o = this.getLayer().getClassName(); t && "" === t.style.opacity && t.className === o && ((s = t.firstElementChild) instanceof HTMLCanvasElement && (i = s.getContext("2d"))); if (!i || 0 !== i.canvas.width && i.canvas.style.transform !== e ? this.containerReused && (this.container = null, this.context = null, this.containerReused = !1) : (this.container = t, this.context = i, this.containerReused = !0), !this.container) { (n = document.createElement("div")).className = o; var a = n.style; a.position = "absolute", a.width = "100%", a.height = "100%"; var s = (i = uo()).canvas; n.appendChild(s), (a = s.style).position = "absolute", a.left = "0", a.transformOrigin = "top left", this.container = n, this.context = i } }, e.prototype.clip = function (t, e, r) { var n = e.pixelRatio, i = e.size[0] * n / 2, o = e.size[1] * n / 2, a = e.viewState.rotation, s = Ce(r), l = Oe(r), u = be(r), c = _e(r); It(e.coordinateToPixelTransform, s), It(e.coordinateToPixelTransform, l), It(e.coordinateToPixelTransform, u), It(e.coordinateToPixelTransform, c), t.save(), Ca(t, -a, i, o), t.beginPath(), t.moveTo(s[0] * n, s[1] * n), t.lineTo(l[0] * n, l[1] * n), t.lineTo(u[0] * n, u[1] * n), t.lineTo(c[0] * n, c[1] * n), t.clip(), Ca(t, a, i, o) }, e.prototype.clipUnrotated = function (t, e, r) { var n = Ce(r), i = Oe(r), o = be(r), a = _e(r); It(e.coordinateToPixelTransform, n), It(e.coordinateToPixelTransform, i), It(e.coordinateToPixelTransform, o), It(e.coordinateToPixelTransform, a); var s = this.inversePixelTransform; It(s, n), It(s, i), It(s, o), It(s, a), t.save(), t.beginPath(), t.moveTo(Math.round(n[0]), Math.round(n[1])), t.lineTo(Math.round(i[0]), Math.round(i[1])), t.lineTo(Math.round(o[0]), Math.round(o[1])), t.lineTo(Math.round(a[0]), Math.round(a[1])), t.clip() }, e.prototype.dispatchRenderEvent_ = function (t, e, r) { var n = this.getLayer(); if (n.hasListener(t)) { var i = new la(t, this.inversePixelTransform, r, e); n.dispatchEvent(i) } }, e.prototype.preRender = function (t, e) { this.dispatchRenderEvent_(qo, t, e) }, e.prototype.postRender = function (t, e) { this.dispatchRenderEvent_(Xo, t, e) }, e.prototype.getRenderTransform = function (t, e, r, n, i, o, a) { var s = i / 2, l = o / 2, u = n / e, c = -u, h = -t[0] + a, p = -t[1]; return kt(this.tempTransform, s, l, u, c, -r, h, p) }, e.prototype.getDataAtPixel = function (t, e, r) { var n, i = It(this.inversePixelTransform, t.slice()), o = this.context, a = this.getLayer().getExtent(); if (a && !Qt(a, It(e.pixelToCoordinateTransform, t.slice()))) return null; try { var s = Math.round(i[0]), l = Math.round(i[1]), u = document.createElement("canvas"), c = u.getContext("2d"); u.width = 1, u.height = 1, c.clearRect(0, 0, 1, 1), c.drawImage(o.canvas, s, l, 1, 1, 0, 0, 1, 1), n = c.getImageData(0, 0, 1, 1).data } catch (t) { return "SecurityError" === t.name ? new Uint8Array : n } return 0 === n[3] ? null : n }, e }(ld), hd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), pd = function (t) { function e(e) { var r = t.call(this, e) || this; return r.image_ = null, r } return hd(e, t), e.prototype.getImage = function () { return this.image_ ? this.image_.getImage() : null }, e.prototype.prepareFrame = function (t) { var e = t.layerStatesArray[t.layerIndex], r = t.pixelRatio, n = t.viewState, i = n.resolution, o = this.getLayer().getSource(), a = t.viewHints, s = t.extent; if (void 0 !== e.extent && (s = Te(s, on(e.extent, n.projection))), !a[ns] && !a[is] && !Ie(s)) if (o) { var l = n.projection, u = o.getImage(s, i, r, l); u && this.loadImage(u) && (this.image_ = u) } else this.image_ = null; return !!this.image_ }, e.prototype.renderFrame = function (t, e) { var r = this.image_, n = r.getExtent(), i = r.getResolution(), o = r.getPixelRatio(), a = t.layerStatesArray[t.layerIndex], s = t.pixelRatio, l = t.viewState, u = l.center, c = l.resolution, h = t.size, p = s * i / (c * o), f = Math.round(h[0] * s), d = Math.round(h[1] * s), g = l.rotation; if (g) { var y = Math.round(Math.sqrt(f * f + d * d)); f = y, d = y } kt(this.pixelTransform, t.size[0] / 2, t.size[1] / 2, 1 / s, 1 / s, g, -f / 2, -d / 2), jt(this.inversePixelTransform, this.pixelTransform); var m = Ra(this.pixelTransform); this.useContainer(e, m, a.opacity); var v = this.context, _ = v.canvas; _.width != f || _.height != d ? (_.width = f, _.height = d) : this.containerReused || v.clearRect(0, 0, f, d); var b = !1; if (a.extent) { var x = on(a.extent, l.projection); (b = !te(x, t.extent) && Re(x, t.extent)) && this.clipUnrotated(v, t, x) } var w = r.getImage(), S = kt(this.tempTransform, f / 2, d / 2, p, p, 0, o * (n[0] - u[0]) / i, o * (u[1] - n[3]) / i); this.renderedResolution = i * s / o; var E = S[4], T = S[5], C = w.width * S[0], P = w.height * S[3]; if (O(v, this.getLayer().getSource().getContextOptions()), this.preRender(v, t), C >= .5 && P >= .5) { var R = a.opacity, I = void 0; 1 !== R && (I = this.context.globalAlpha, this.context.globalAlpha = R), this.context.drawImage(w, 0, 0, +w.width, +w.height, Math.round(E), Math.round(T), Math.round(C), Math.round(P)), 1 !== R && (this.context.globalAlpha = I) } return this.postRender(v, t), b && v.restore(), m !== _.style.transform && (_.style.transform = m), this.container }, e }(cd), fd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), dd = function (t) { function e(e) { return t.call(this, e) || this } return fd(e, t), e.prototype.createRenderer = function () { return new pd(this) }, e }(ad), gd = "preload", yd = "useInterimTilesOnError", md = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), vd = function (t) { function e(e) { var r = this, n = e || {}, i = O({}, n); return delete i.preload, delete i.useInterimTilesOnError, (r = t.call(this, i) || this).setPreload(void 0 !== n.preload ? n.preload : 0), r.setUseInterimTilesOnError(void 0 === n.useInterimTilesOnError || n.useInterimTilesOnError), r } return md(e, t), e.prototype.getPreload = function () { return this.get(gd) }, e.prototype.setPreload = function (t) { this.set(gd, t) }, e.prototype.getUseInterimTilesOnError = function () { return this.get(yd) }, e.prototype.setUseInterimTilesOnError = function (t) { this.set(yd, t) }, e }(na), _d = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), bd = function (t) { function e(e) { var r = t.call(this, e) || this; return r.extentChanged = !0, r.renderedExtent_ = null, r.renderedPixelRatio, r.renderedProjection = null, r.renderedRevision, r.renderedTiles = [], r.newTiles_ = !1, r.tmpExtent = [1 / 0, 1 / 0, -1 / 0, -1 / 0], r.tmpTileRange_ = new _u(0, 0, 0, 0), r } return _d(e, t), e.prototype.isDrawableTile = function (t) { var e = this.getLayer(), r = t.getState(), n = e.getUseInterimTilesOnError(); return r == to || r == ro || r == eo && !n }, e.prototype.getTile = function (t, e, r, n) { var i = n.pixelRatio, o = n.viewState.projection, a = this.getLayer(), s = a.getSource().getTile(t, e, r, i, o); return s.getState() == eo && (a.getUseInterimTilesOnError() ? a.getPreload() > 0 && (this.newTiles_ = !0) : s.setState(to)), this.isDrawableTile(s) || (s = s.getInterimTile()), s }, e.prototype.loadedTileCallback = function (e, r, n) { return !!this.isDrawableTile(n) && t.prototype.loadedTileCallback.call(this, e, r, n) }, e.prototype.prepareFrame = function (t) { return !!this.getLayer().getSource() }, e.prototype.renderFrame = function (t, e) { var r = t.layerStatesArray[t.layerIndex], n = t.viewState, i = n.projection, a = n.resolution, s = n.center, l = n.rotation, u = t.pixelRatio, c = this.getLayer(), h = c.getSource(), p = h.getRevision(), f = h.getTileGridForProjection(i), g = f.getZForResolution(a, h.zDirection), y = f.getResolution(g), m = t.extent, v = r.extent && on(r.extent, i); v && (m = Te(m, on(r.extent, i))); var _ = h.getTilePixelRatio(u), b = Math.round(t.size[0] * _), x = Math.round(t.size[1] * _); if (l) { var w = Math.round(Math.sqrt(b * b + x * x)); b = w, x = w } var S = y * b / 2 / _, E = y * x / 2 / _, T = [s[0] - S, s[1] - E, s[0] + S, s[1] + E], C = f.getTileRangeForExtentAndZ(m, g), P = {}; P[g] = {}; var R = this.createLoadedTileFinder(h, i, P), I = this.tmpExtent, L = this.tmpTileRange_; this.newTiles_ = !1; for (var M = C.minX; M <= C.maxX; ++M) for (var F = C.minY; F <= C.maxY; ++F) { var A = this.getTile(g, M, F, t); if (this.isDrawableTile(A)) { var k = o(this); if (A.getState() == to) { P[g][A.tileCoord.toString()] = A; var j = A.inTransition(k); this.newTiles_ || !j && -1 !== this.renderedTiles.indexOf(A) || (this.newTiles_ = !0) } if (1 === A.getAlpha(k, t.time)) continue } var N = f.getTileCoordChildTileRange(A.tileCoord, L, I), D = !1; N && (D = R(g + 1, N)), D || f.forEachTileCoordParentTileRange(A.tileCoord, R, L, I) } var G = y / a; kt(this.pixelTransform, t.size[0] / 2, t.size[1] / 2, 1 / _, 1 / _, l, -b / 2, -x / 2); var z = Ra(this.pixelTransform); this.useContainer(e, z, r.opacity); var U = this.context, B = U.canvas; jt(this.inversePixelTransform, this.pixelTransform), kt(this.tempTransform, b / 2, x / 2, G, G, 0, -b / 2, -x / 2), B.width != b || B.height != x ? (B.width = b, B.height = x) : this.containerReused || U.clearRect(0, 0, b, x), v && this.clipUnrotated(U, t, v), O(U, h.getContextOptions()), this.preRender(U, t), this.renderedTiles.length = 0; var V, Y, W, q = Object.keys(P).map(Number); q.sort(d), 1 !== r.opacity || this.containerReused && !h.getOpaque(t.viewState.projection) ? (V = [], Y = []) : q = q.reverse(); for (var X = q.length - 1; X >= 0; --X) { var Z = q[X], K = h.getTilePixelSize(Z, u, i), H = f.getResolution(Z) / y, $ = K[0] * H * G, J = K[1] * H * G, Q = f.getTileCoordForCoordAndZ(Ce(T), Z), tt = f.getTileCoordExtent(Q), et = It(this.tempTransform, [_ * (tt[0] - T[0]) / y, _ * (T[3] - tt[3]) / y]), rt = _ * h.getGutterForProjection(i), nt = P[Z]; for (var it in nt) { var ot = (A = nt[it]).tileCoord, at = et[0] - (Q[1] - ot[1]) * $, st = Math.round(at + $), lt = et[1] - (Q[2] - ot[2]) * J, ut = Math.round(lt + J), ct = st - (M = Math.round(at)), ht = ut - (F = Math.round(lt)), pt = g === Z; if (!(j = pt && 1 !== A.getAlpha(o(this), t.time))) if (V) { U.save(), W = [M, F, M + ct, F, M + ct, F + ht, M, F + ht]; for (var ft = 0, dt = V.length; ft < dt; ++ft) if (g !== Z && Z < Y[ft]) { var gt = V[ft]; U.beginPath(), U.moveTo(W[0], W[1]), U.lineTo(W[2], W[3]), U.lineTo(W[4], W[5]), U.lineTo(W[6], W[7]), U.moveTo(gt[6], gt[7]), U.lineTo(gt[4], gt[5]), U.lineTo(gt[2], gt[3]), U.lineTo(gt[0], gt[1]), U.clip() } V.push(W), Y.push(Z) } else U.clearRect(M, F, ct, ht); this.drawTileImage(A, t, M, F, ct, ht, rt, pt, r.opacity), V && !j && U.restore(), this.renderedTiles.push(A), this.updateUsedTiles(t.usedTiles, h, A) } } return this.renderedRevision = p, this.renderedResolution = y, this.extentChanged = !this.renderedExtent_ || !ue(this.renderedExtent_, T), this.renderedExtent_ = T, this.renderedPixelRatio = u, this.renderedProjection = i, this.manageTilePyramid(t, h, f, u, i, m, g, c.getPreload()), this.scheduleExpireCache(t, h), this.postRender(U, t), r.extent && U.restore(), z !== B.style.transform && (B.style.transform = z), this.container }, e.prototype.drawTileImage = function (t, e, r, n, i, a, s, l, u) { var c = this.getTileImage(t); if (c) { var h = o(this), p = l ? t.getAlpha(h, e.time) : 1, f = u * p, d = f !== this.context.globalAlpha; d && (this.context.save(), this.context.globalAlpha = f), this.context.drawImage(c, s, s, c.width - 2 * s, c.height - 2 * s, r, n, i, a), d && this.context.restore(), 1 !== p ? e.animate = !0 : l && t.endTransition(h) } }, e.prototype.getImage = function () { var t = this.context; return t ? t.canvas : null }, e.prototype.getTileImage = function (t) { return t.getImage() }, e.prototype.scheduleExpireCache = function (t, e) { if (e.canExpireCache()) { var r = function (t, e, r) { var n = o(t); n in r.usedTiles && t.expireCache(r.viewState.projection, r.usedTiles[n]) }.bind(null, e); t.postRenderFunctions.push(r) } }, e.prototype.updateUsedTiles = function (t, e, r) { var n = o(e); n in t || (t[n] = {}), t[n][r.getKey()] = !0 }, e.prototype.manageTilePyramid = function (t, e, r, n, i, a, s, l, u) { var c = o(e); c in t.wantedTiles || (t.wantedTiles[c] = {}); var h, p, f, d, g, y, m = t.wantedTiles[c], v = t.tileQueue, _ = 0; for (y = r.getMinZoom(); y <= s; ++y) for (p = r.getTileRangeForExtentAndZ(a, y, p), f = r.getResolution(y), d = p.minX; d <= p.maxX; ++d) for (g = p.minY; g <= p.maxY; ++g) s - y <= l ? (++_, (h = e.getTile(y, d, g, n, i)).getState() == Ji && (m[h.getKey()] = !0, v.isKeyQueued(h.getKey()) || v.enqueue([h, c, r.getTileCoordCenter(h.tileCoord), f])), void 0 !== u && u(h)) : e.useTile(y, d, g, i); e.updateCacheSize(_, i) }, e }(cd); bd.prototype.getLayer; var xd = bd, wd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Sd = function (t) { function e(e) { return t.call(this, e) || this } return wd(e, t), e.prototype.createRenderer = function () { return new xd(this) }, e }(vd), Ed = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Td = !0; try { new ImageData(10, 10) } catch (t) { Td = !1 } var Cd = document.createElement("canvas").getContext("2d"); function Od(t, e, r) { if (Td) return new ImageData(t, e, r); var n = Cd.createImageData(e, r); return n.data.set(t), n } function Pd(t) { var e = !0; try { new ImageData(10, 10) } catch (t) { e = !1 } function r(t, r, n) { return e ? new ImageData(t, r, n) : {data: t, width: r, height: n} } return function (e) { var n, i, o = e.buffers, a = e.meta, s = e.imageOps, l = e.width, u = e.height, c = o.length, h = o[0].byteLength; if (s) { var p = new Array(c); for (i = 0; i < c; ++i) p[i] = r(new Uint8ClampedArray(o[i]), l, u); n = t(p, a).data } else { n = new Uint8ClampedArray(h); var f = new Array(c), d = new Array(c); for (i = 0; i < c; ++i) f[i] = new Uint8ClampedArray(o[i]), d[i] = [0, 0, 0, 0]; for (var g = 0; g < h; g += 4) { for (var y = 0; y < c; ++y) { var m = f[y]; d[y][0] = m[g], d[y][1] = m[g + 1], d[y][2] = m[g + 2], d[y][3] = m[g + 3] } var v = t(d, a); n[g] = v[0], n[g + 1] = v[1], n[g + 2] = v[2], n[g + 3] = v[3] } } return n.buffer } } function Rd(t, e) { var r = Object.keys(t.lib || {}).map((function (e) { return "var " + e + " = " + t.lib[e].toString() + ";" })).concat(["var __minion__ = (" + Pd.toString() + ")(", t.operation.toString(), ");", 'self.addEventListener("message", function(event) {', " var buffer = __minion__(event.data);", " self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);", "});"]), n = new Blob(r, {type: "text/javascript"}), i = URL.createObjectURL(n), o = new Worker(i); return o.addEventListener("message", e), o } var Id = function (t) { function e(e) { var r, n = t.call(this) || this; n._imageOps = !!e.imageOps; var i = []; if (r = 0 === e.threads ? 0 : n._imageOps ? 1 : e.threads || 1) for (var o = 0; o < r; ++o) i[o] = Rd(e, n._onWorkerMessage.bind(n, o)); else i[0] = function (t, e) { var r = Pd(t.operation), n = !1; return { postMessage: function (t) { setTimeout((function () { n || e({data: {buffer: r(t), meta: t.meta}}) }), 0) }, terminate: function () { n = !0 } } }(e, n._onWorkerMessage.bind(n, 0)); return n._workers = i, n._queue = [], n._maxQueueLength = e.queue || 1 / 0, n._running = 0, n._dataLookup = {}, n._job = null, n } return Ed(e, t), e.prototype.process = function (t, e, r) { this._enqueue({inputs: t, meta: e, callback: r}), this._dispatch() }, e.prototype._enqueue = function (t) { for (this._queue.push(t); this._queue.length > this._maxQueueLength;) this._queue.shift().callback(null, null) }, e.prototype._dispatch = function () { if (0 === this._running && this._queue.length > 0) { var t = this._queue.shift(); this._job = t; var e = t.inputs[0].width, r = t.inputs[0].height, n = t.inputs.map((function (t) { return t.data.buffer })), i = this._workers.length; if (this._running = i, 1 === i) this._workers[0].postMessage({ buffers: n, meta: t.meta, imageOps: this._imageOps, width: e, height: r }, n); else for (var o = t.inputs[0].data.length, a = 4 * Math.ceil(o / 4 / i), s = 0; s < i; ++s) { for (var l = s * a, u = [], c = 0, h = n.length; c < h; ++c) u.push(n[c].slice(l, l + a)); this._workers[s].postMessage({buffers: u, meta: t.meta, imageOps: this._imageOps, width: e, height: r}, u) } } }, e.prototype._onWorkerMessage = function (t, e) { this.disposed || (this._dataLookup[t] = e.data, --this._running, 0 === this._running && this._resolveJob()) }, e.prototype._resolveJob = function () { var t, e, r = this._job, n = this._workers.length; if (1 === n) t = new Uint8ClampedArray(this._dataLookup[0].buffer), e = this._dataLookup[0].meta; else { var i = r.inputs[0].data.length; t = new Uint8ClampedArray(i), e = new Array(i); for (var o = 4 * Math.ceil(i / 4 / n), a = 0; a < n; ++a) { var s = this._dataLookup[a].buffer, l = a * o; t.set(new Uint8ClampedArray(s), l), e[a] = this._dataLookup[a].meta } } this._job = null, this._dataLookup = {}, r.callback(null, Od(t, r.inputs[0].width, r.inputs[0].height), e), this._dispatch() }, e.prototype.disposeInternal = function () { for (var t = 0; t < this._workers.length; ++t) this._workers[t].terminate(); this._workers.length = 0 }, e }(p), Ld = "beforeoperations", Md = "afteroperations", Fd = "pixel", Ad = "image", kd = function (t) { function e(e, r, n) { var i = t.call(this, e) || this; return i.extent = r.extent, i.resolution = r.viewState.resolution / r.pixelRatio, i.data = n, i } return Ed(e, t), e }(c), jd = function (t) { function e(e) { var r = t.call(this, {projection: null}) || this; r.processor_ = null, r.operationType_ = void 0 !== e.operationType ? e.operationType : Fd, r.threads_ = void 0 !== e.threads ? e.threads : 1, r.layers_ = function (t) { for (var e = t.length, r = new Array(e), n = 0; n < e; ++n) r[n] = Gd(t[n]); return r }(e.sources); for (var n, i = r.changed.bind(r), o = 0, a = r.layers_.length; o < a; ++o) r.layers_[o].addEventListener(F, i); return r.tileQueue_ = new es((function () { return 1 }), r.changed.bind(r)), r.requestedFrameState_, r.renderedImageCanvas_ = null, r.renderedRevision_, r.frameState_ = { animate: !1, coordinateToPixelTransform: [1, 0, 0, 1, 0, 0], declutterTree: null, extent: null, index: 0, layerIndex: 0, layerStatesArray: (n = r.layers_, n.map((function (t) { return t.getLayerState() }))), pixelRatio: 1, pixelToCoordinateTransform: [1, 0, 0, 1, 0, 0], postRenderFunctions: [], size: [0, 0], tileQueue: r.tileQueue_, time: Date.now(), usedTiles: {}, viewState: {rotation: 0}, viewHints: [], wantedTiles: {} }, r.setAttributions((function (t) { for (var r = [], n = 0, i = e.sources.length; n < i; ++n) { var o = e.sources[n], a = (o instanceof Dp ? o : o.getSource()).getAttributions(); if ("function" == typeof a) { var s = a(t); r.push.apply(r, s) } } return 0 !== r.length ? r : null })), void 0 !== e.operation && r.setOperation(e.operation, e.lib), r } return Ed(e, t), e.prototype.setOperation = function (t, e) { this.processor_ && this.processor_.dispose(), this.processor_ = new Id({ operation: t, imageOps: this.operationType_ === Ad, queue: 1, lib: e, threads: this.threads_ }), this.changed() }, e.prototype.updateFrameState_ = function (t, e, r) { var n = O({}, this.frameState_); n.viewState = O({}, n.viewState); var i = xe(t); n.extent = t.slice(), n.size[0] = Math.round(Pe(t) / e), n.size[1] = Math.round(Ee(t) / e), n.time = 1 / 0; var o = n.viewState; return o.center = i, o.projection = r, o.resolution = e, n }, e.prototype.allSourcesReady_ = function () { for (var t = !0, e = 0, r = this.layers_.length; e < r; ++e) if (this.layers_[e].getSource().getState() !== Qo) { t = !1; break } return t }, e.prototype.getImage = function (t, e, r, n) { if (!this.allSourcesReady_()) return null; var i = this.updateFrameState_(t, e, n); if (this.requestedFrameState_ = i, this.renderedImageCanvas_) { var o = this.renderedImageCanvas_.getResolution(), a = this.renderedImageCanvas_.getExtent(); e === o && ue(t, a) || (this.renderedImageCanvas_ = null) } return this.renderedImageCanvas_ && this.getRevision() === this.renderedRevision_ || this.processSources_(), i.tileQueue.loadMoreTiles(16, 16), i.animate && requestAnimationFrame(this.changed.bind(this)), this.renderedImageCanvas_ }, e.prototype.processSources_ = function () { for (var t = this.requestedFrameState_, e = this.layers_.length, r = new Array(e), n = 0; n < e; ++n) { t.layerIndex = n; var i = Dd(this.layers_[n], t); if (!i) return; r[n] = i } var o = {}; this.dispatchEvent(new kd(Ld, t, o)), this.processor_.process(r, o, this.onWorkerComplete_.bind(this, t)) }, e.prototype.onWorkerComplete_ = function (t, e, r, n) { if (!e && r) { var i = t.extent, o = t.viewState.resolution; if (o === this.requestedFrameState_.viewState.resolution && ue(i, this.requestedFrameState_.extent)) { var a; if (this.renderedImageCanvas_) a = this.renderedImageCanvas_.getImage().getContext("2d"); else a = uo(Math.round(Pe(i) / o), Math.round(Ee(i) / o)), this.renderedImageCanvas_ = new $i(i, o, 1, a.canvas); a.putImageData(r, 0, 0), this.changed(), this.renderedRevision_ = this.getRevision(), this.dispatchEvent(new kd(Md, t, n)) } } }, e.prototype.getImageInternal = function () { return null }, e.prototype.disposeInternal = function () { this.processor_ && this.processor_.dispose(), t.prototype.disposeInternal.call(this) }, e }(zf); jd.prototype.dispose; var Nd = null; function Dd(t, e) { var r = t.getRenderer(); if (!r) throw new Error("Unsupported layer type: " + t); if (!r.prepareFrame(e)) return null; var n = e.size[0], i = e.size[1]; if (0 === n || 0 === i) return null; var o, a = r.renderFrame(e, null); if (a && (o = a.firstElementChild), !(o instanceof HTMLCanvasElement)) throw new Error("Unsupported rendered element: " + o); if (o.width === n && o.height === i) return o.getContext("2d").getImageData(0, 0, n, i); if (Nd) { var s = Nd.canvas; s.width !== n || s.height !== i ? Nd = uo(n, i) : Nd.clearRect(0, 0, n, i) } else Nd = uo(n, i); return Nd.drawImage(o, 0, 0, n, i), Nd.getImageData(0, 0, n, i) } function Gd(t) { var e; return t instanceof Dp ? t instanceof Bp ? e = new Sd({source: t}) : t instanceof zf && (e = new dd({source: t})) : e = t, e } var zd = jd, Ud = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Bd = ['Map tiles by Stamen Design, under CC BY 3.0.', nd], Vd = { terrain: {extension: "jpg", opaque: !0}, "terrain-background": {extension: "jpg", opaque: !0}, "terrain-labels": {extension: "png", opaque: !1}, "terrain-lines": {extension: "png", opaque: !1}, "toner-background": {extension: "png", opaque: !0}, toner: {extension: "png", opaque: !0}, "toner-hybrid": {extension: "png", opaque: !1}, "toner-labels": {extension: "png", opaque: !1}, "toner-lines": {extension: "png", opaque: !1}, "toner-lite": {extension: "png", opaque: !0}, watercolor: {extension: "jpg", opaque: !0} }, Yd = { terrain: {minZoom: 0, maxZoom: 18}, toner: {minZoom: 0, maxZoom: 20}, watercolor: {minZoom: 0, maxZoom: 18} }, Wd = function (t) { function e(e) { var r = e.layer.indexOf("-"), n = -1 == r ? e.layer : e.layer.slice(0, r), i = Yd[n], o = Vd[e.layer], a = void 0 !== e.url ? e.url : "https://stamen-tiles-{a-d}.a.ssl.fastly.net/" + e.layer + "/{z}/{x}/{y}." + o.extension; return t.call(this, { attributions: Bd, cacheSize: e.cacheSize, crossOrigin: "anonymous", imageSmoothing: e.imageSmoothing, maxZoom: null != e.maxZoom ? e.maxZoom : i.maxZoom, minZoom: null != e.minZoom ? e.minZoom : i.minZoom, opaque: o.opaque, reprojectionErrorThreshold: e.reprojectionErrorThreshold, tileLoadFunction: e.tileLoadFunction, transition: e.transition, url: a, wrapX: e.wrapX }) || this } return Ud(e, t), e }(Jp), qd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Xd = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, { attributions: n.attributions, cacheSize: n.cacheSize, crossOrigin: n.crossOrigin, imageSmoothing: n.imageSmoothing, projection: n.projection, reprojectionErrorThreshold: n.reprojectionErrorThreshold, tileGrid: n.tileGrid, tileLoadFunction: n.tileLoadFunction, url: n.url, urls: n.urls, wrapX: void 0 === n.wrapX || n.wrapX, transition: n.transition }) || this).params_ = n.params || {}, r.hidpi_ = void 0 === n.hidpi || n.hidpi, r.tmpExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0], r.setKey(r.getKeyForParams_()), r } return qd(e, t), e.prototype.getKeyForParams_ = function () { var t = 0, e = []; for (var r in this.params_) e[t++] = r + "-" + this.params_[r]; return e.join("/") }, e.prototype.getParams = function () { return this.params_ }, e.prototype.getRequestUrl_ = function (t, e, r, n, i, o) { var a = this.urls; if (a) { var s, l = i.getCode().split(":").pop(); if (o.SIZE = e[0] + "," + e[1], o.BBOX = r.join(","), o.BBOXSR = l, o.IMAGESR = l, o.DPI = Math.round(o.DPI ? o.DPI * n : 90 * n), 1 == a.length) s = a[0]; else s = a[We(fu(t), a.length)]; return mc(s.replace(/MapServer\/?$/, "MapServer/export").replace(/ImageServer\/?$/, "ImageServer/exportImage"), o) } }, e.prototype.getTilePixelRatio = function (t) { return this.hidpi_ ? t : 1 }, e.prototype.updateParams = function (t) { O(this.params_, t), this.setKey(this.getKeyForParams_()) }, e.prototype.tileUrlFunction = function (t, e, r) { var n = this.getTileGrid(); if (n || (n = this.getTileGridForProjection(r)), !(n.getResolutions().length <= t[0])) { 1 == e || this.hidpi_ || (e = 1); var i = n.getTileCoordExtent(t, this.tmpExtent_), o = Is(n.getTileSize(t[0]), this.tmpSize); 1 != e && (o = Rs(o, e, this.tmpSize)); var a = {F: "image", FORMAT: "PNG32", TRANSPARENT: !0}; return O(a, this.params_), this.getRequestUrl_(t, o, i, e, r, a) } }, e }(Xp), Zd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Kd = function (t) { function e(e, r, n) { var i = t.call(this, e, to) || this; return i.tileSize_ = r, i.text_ = n, i.canvas_ = null, i } return Zd(e, t), e.prototype.getImage = function () { if (this.canvas_) return this.canvas_; var t = this.tileSize_, e = uo(t[0], t[1]); return e.strokeStyle = "grey", e.strokeRect(.5, .5, t[0] + .5, t[1] + .5), e.fillStyle = "grey", e.strokeStyle = "white", e.textAlign = "center", e.textBaseline = "middle", e.font = "24px sans-serif", e.lineWidth = 4, e.strokeText(this.text_, t[0] / 2, t[1] / 2, t[0]), e.fillText(this.text_, t[0] / 2, t[1] / 2, t[0]), this.canvas_ = e.canvas, e.canvas }, e.prototype.load = function () { }, e }(lo), Hd = function (t) { function e(e) { var r = e || {}; return t.call(this, { opaque: !1, projection: r.projection, tileGrid: r.tileGrid, wrapX: void 0 === r.wrapX || r.wrapX, zDirection: r.zDirection }) || this } return Zd(e, t), e.prototype.getTile = function (t, e, r) { var n = cu(t, e, r); if (this.tileCache.containsKey(n)) return this.tileCache.get(n); var i = Is(this.tileGrid.getTileSize(t)), o = [t, e, r], a = this.getTileCoordForTileUrlFunction(o), s = void 0; s = a ? "z:" + a[0] + " x:" + a[1] + " y:" + a[2] : "none"; var l = new Kd(o, i, s); return this.tileCache.set(n, l), l }, e }(Jp), $d = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Jd = function (t) { function e(e) { var r = t.call(this, { attributions: e.attributions, cacheSize: e.cacheSize, crossOrigin: e.crossOrigin, imageSmoothing: e.imageSmoothing, projection: Gr("EPSG:3857"), reprojectionErrorThreshold: e.reprojectionErrorThreshold, state: Jo, tileLoadFunction: e.tileLoadFunction, wrapX: void 0 === e.wrapX || e.wrapX, transition: e.transition }) || this; if (r.tileJSON_ = null, r.tileSize_ = e.tileSize, e.url) if (e.jsonp) Au(e.url, r.handleTileJSONResponse.bind(r), r.handleTileJSONError.bind(r)); else { var n = new XMLHttpRequest; n.addEventListener("load", r.onXHRLoad_.bind(r)), n.addEventListener("error", r.onXHRError_.bind(r)), n.open("GET", e.url), n.send() } else e.tileJSON ? r.handleTileJSONResponse(e.tileJSON) : pt(!1, 51); return r } return $d(e, t), e.prototype.onXHRLoad_ = function (t) { var e = t.target; if (!e.status || e.status >= 200 && e.status < 300) { var r = void 0; try { r = JSON.parse(e.responseText) } catch (t) { return void this.handleTileJSONError() } this.handleTileJSONResponse(r) } else this.handleTileJSONError() }, e.prototype.onXHRError_ = function (t) { this.handleTileJSONError() }, e.prototype.getTileJSON = function () { return this.tileJSON_ }, e.prototype.handleTileJSONResponse = function (t) { var e, r = Gr("EPSG:4326"), n = this.getProjection(); if (void 0 !== t.bounds) { var i = Zr(r, n); e = Ae(t.bounds, i) } var o = t.minzoom || 0, a = t.maxzoom || 22, s = lc({extent: hc(n), maxZoom: a, minZoom: o, tileSize: this.tileSize_}); if (this.tileGrid = s, this.tileUrlFunction = fc(t.tiles, s), void 0 !== t.attribution && !this.getAttributions()) { var l = void 0 !== e ? e : r.getExtent(); this.setAttributions((function (e) { return Re(l, e.extent) ? [t.attribution] : null })) } this.tileJSON_ = t, this.setState(Qo) }, e.prototype.handleTileJSONError = function () { this.setState(ta) }, e }(Xp), Qd = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), tg = function (t) { function e(e) { var r = this, n = e || {}, i = n.params || {}, o = !("TRANSPARENT" in i) || i.TRANSPARENT; return (r = t.call(this, { attributions: n.attributions, cacheSize: n.cacheSize, crossOrigin: n.crossOrigin, imageSmoothing: n.imageSmoothing, opaque: !o, projection: n.projection, reprojectionErrorThreshold: n.reprojectionErrorThreshold, tileClass: n.tileClass, tileGrid: n.tileGrid, tileLoadFunction: n.tileLoadFunction, url: n.url, urls: n.urls, wrapX: void 0 === n.wrapX || n.wrapX, transition: n.transition }) || this).gutter_ = void 0 !== n.gutter ? n.gutter : 0, r.params_ = i, r.v13_ = !0, r.serverType_ = n.serverType, r.hidpi_ = void 0 === n.hidpi || n.hidpi, r.tmpExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0], r.updateV13_(), r.setKey(r.getKeyForParams_()), r } return Qd(e, t), e.prototype.getFeatureInfoUrl = function (t, e, r, n) { var i = Gr(r), o = this.getProjection(), a = this.getTileGrid(); a || (a = this.getTileGridForProjection(i)); var s = a.getZForResolution(e, this.zDirection), l = a.getTileCoordForCoordAndZ(t, s); if (!(a.getResolutions().length <= l[0])) { var u = a.getResolution(l[0]), c = a.getTileCoordExtent(l, this.tmpExtent_), h = Is(a.getTileSize(l[0]), this.tmpSize), p = this.gutter_; 0 !== p && (h = Os(h, p, this.tmpSize), c = Ht(c, u * p, c)), o && o !== i && (u = tc(o, i, t, u), c = $r(c, i, o), t = Hr(t, i, o)); var f = { SERVICE: "WMS", VERSION: "1.3.0", REQUEST: "GetFeatureInfo", FORMAT: "image/png", TRANSPARENT: !0, QUERY_LAYERS: this.params_.LAYERS }; O(f, this.params_, n); var d = Math.floor((t[0] - c[0]) / u), g = Math.floor((c[3] - t[1]) / u); return f[this.v13_ ? "I" : "X"] = d, f[this.v13_ ? "J" : "Y"] = g, this.getRequestUrl_(l, h, c, 1, o || i, f) } }, e.prototype.getLegendUrl = function (t, e) { if (void 0 !== this.urls[0]) { var r = {SERVICE: "WMS", VERSION: "1.3.0", REQUEST: "GetLegendGraphic", FORMAT: "image/png"}; if (void 0 === e || void 0 === e.LAYER) { var n = this.params_.LAYERS; if (!(!Array.isArray(n) || 1 === n.length)) return; r.LAYER = n } if (void 0 !== t) { var i = this.getProjection() ? this.getProjection().getMetersPerUnit() : 1; r.SCALE = t * i / 28e-5 } return O(r, e), mc(this.urls[0], r) } }, e.prototype.getGutter = function () { return this.gutter_ }, e.prototype.getParams = function () { return this.params_ }, e.prototype.getRequestUrl_ = function (t, e, r, n, i, o) { var a = this.urls; if (a) { if (o.WIDTH = e[0], o.HEIGHT = e[1], o[this.v13_ ? "CRS" : "SRS"] = i.getCode(), "STYLES" in this.params_ || (o.STYLES = ""), 1 != n) switch (this.serverType_) { case Hf: var s = 90 * n + .5 | 0; "FORMAT_OPTIONS" in o ? o.FORMAT_OPTIONS += ";dpi:" + s : o.FORMAT_OPTIONS = "dpi:" + s; break; case $f: o.MAP_RESOLUTION = 90 * n; break; case Kf: case Jf: o.DPI = 90 * n; break; default: pt(!1, 52) } var l, u = i.getAxisOrientation(), c = r; if (this.v13_ && "ne" == u.substr(0, 2)) { var h = void 0; h = r[0], c[0] = r[1], c[1] = h, h = r[2], c[2] = r[3], c[3] = h } if (o.BBOX = c.join(","), 1 == a.length) l = a[0]; else l = a[We(fu(t), a.length)]; return mc(l, o) } }, e.prototype.getTilePixelRatio = function (t) { return this.hidpi_ && void 0 !== this.serverType_ ? t : 1 }, e.prototype.getKeyForParams_ = function () { var t = 0, e = []; for (var r in this.params_) e[t++] = r + "-" + this.params_[r]; return e.join("/") }, e.prototype.updateParams = function (t) { O(this.params_, t), this.updateV13_(), this.setKey(this.getKeyForParams_()) }, e.prototype.updateV13_ = function () { var t = this.params_.VERSION || "1.3.0"; this.v13_ = br(t, "1.3") >= 0 }, e.prototype.tileUrlFunction = function (t, e, r) { var n = this.getTileGrid(); if (n || (n = this.getTileGridForProjection(r)), !(n.getResolutions().length <= t[0])) { 1 == e || this.hidpi_ && void 0 !== this.serverType_ || (e = 1); var i = n.getResolution(t[0]), o = n.getTileCoordExtent(t, this.tmpExtent_), a = Is(n.getTileSize(t[0]), this.tmpSize), s = this.gutter_; 0 !== s && (a = Os(a, s, this.tmpSize), o = Ht(o, i * s, o)), 1 != e && (a = Rs(a, e, this.tmpSize)); var l = {SERVICE: "WMS", VERSION: "1.3.0", REQUEST: "GetMap", FORMAT: "image/png", TRANSPARENT: !0}; return O(l, this.params_), this.getRequestUrl_(t, a, o, e, r, l) } }, e }(Xp), eg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), rg = function (t) { function e(e, r, n, i, o, a) { var s = t.call(this, e, r) || this; return s.src_ = n, s.extent_ = i, s.preemptive_ = o, s.grid_ = null, s.keys_ = null, s.data_ = null, s.jsonp_ = a, s } return eg(e, t), e.prototype.getImage = function () { return null }, e.prototype.getData = function (t) { if (!this.grid_ || !this.keys_) return null; var e = (t[0] - this.extent_[0]) / (this.extent_[2] - this.extent_[0]), r = (t[1] - this.extent_[1]) / (this.extent_[3] - this.extent_[1]), n = this.grid_[Math.floor((1 - r) * this.grid_.length)]; if ("string" != typeof n) return null; var i = n.charCodeAt(Math.floor(e * n.length)); i >= 93 && i--, i >= 35 && i--; var o = null; if ((i -= 32) in this.keys_) { var a = this.keys_[i]; o = this.data_ && a in this.data_ ? this.data_[a] : a } return o }, e.prototype.forDataAtCoordinate = function (t, e, r) { this.state == ro && !0 === r ? (this.state = Ji, K(this, F, (function (r) { e(this.getData(t)) }), this), this.loadInternal_()) : !0 === r ? setTimeout(function () { e(this.getData(t)) }.bind(this), 0) : e(this.getData(t)) }, e.prototype.getKey = function () { return this.src_ }, e.prototype.handleError_ = function () { this.state = eo, this.changed() }, e.prototype.handleLoad_ = function (t) { this.grid_ = t.grid, this.keys_ = t.keys, this.data_ = t.data, this.state = to, this.changed() }, e.prototype.loadInternal_ = function () { if (this.state == Ji) if (this.state = Qi, this.jsonp_) Au(this.src_, this.handleLoad_.bind(this), this.handleError_.bind(this)); else { var t = new XMLHttpRequest; t.addEventListener("load", this.onXHRLoad_.bind(this)), t.addEventListener("error", this.onXHRError_.bind(this)), t.open("GET", this.src_), t.send() } }, e.prototype.onXHRLoad_ = function (t) { var e = t.target; if (!e.status || e.status >= 200 && e.status < 300) { var r = void 0; try { r = JSON.parse(e.responseText) } catch (t) { return void this.handleError_() } this.handleLoad_(r) } else this.handleError_() }, e.prototype.onXHRError_ = function (t) { this.handleError_() }, e.prototype.load = function () { this.preemptive_ ? this.loadInternal_() : this.setState(ro) }, e }(lo), ng = function (t) { function e(e) { var r = t.call(this, {projection: Gr("EPSG:3857"), state: Jo}) || this; if (r.preemptive_ = void 0 === e.preemptive || e.preemptive, r.tileUrlFunction_ = gc, r.template_ = void 0, r.jsonp_ = e.jsonp || !1, e.url) if (r.jsonp_) Au(e.url, r.handleTileJSONResponse.bind(r), r.handleTileJSONError.bind(r)); else { var n = new XMLHttpRequest; n.addEventListener("load", r.onXHRLoad_.bind(r)), n.addEventListener("error", r.onXHRError_.bind(r)), n.open("GET", e.url), n.send() } else e.tileJSON ? r.handleTileJSONResponse(e.tileJSON) : pt(!1, 51); return r } return eg(e, t), e.prototype.onXHRLoad_ = function (t) { var e = t.target; if (!e.status || e.status >= 200 && e.status < 300) { var r = void 0; try { r = JSON.parse(e.responseText) } catch (t) { return void this.handleTileJSONError() } this.handleTileJSONResponse(r) } else this.handleTileJSONError() }, e.prototype.onXHRError_ = function (t) { this.handleTileJSONError() }, e.prototype.getTemplate = function () { return this.template_ }, e.prototype.forDataAtCoordinateAndResolution = function (t, e, r, n) { if (this.tileGrid) { var i = this.tileGrid.getZForResolution(e, this.zDirection), o = this.tileGrid.getTileCoordForCoordAndZ(t, i); this.getTile(o[0], o[1], o[2], 1, this.getProjection()).forDataAtCoordinate(t, r, n) } else !0 === n ? setTimeout((function () { r(null) }), 0) : r(null) }, e.prototype.handleTileJSONError = function () { this.setState(ta) }, e.prototype.handleTileJSONResponse = function (t) { var e, r = Gr("EPSG:4326"), n = this.getProjection(); if (void 0 !== t.bounds) { var i = Zr(r, n); e = Ae(t.bounds, i) } var o = t.minzoom || 0, a = t.maxzoom || 22, s = lc({extent: hc(n), maxZoom: a, minZoom: o}); this.tileGrid = s, this.template_ = t.template; var l = t.grids; if (l) { if (this.tileUrlFunction_ = fc(l, s), void 0 !== t.attribution) { var u = void 0 !== e ? e : r.getExtent(); this.setAttributions((function (e) { return Re(u, e.extent) ? [t.attribution] : null })) } this.setState(Qo) } else this.setState(ta) }, e.prototype.getTile = function (t, e, r, n, i) { var o = cu(t, e, r); if (this.tileCache.containsKey(o)) return this.tileCache.get(o); var a = [t, e, r], s = this.getTileCoordForTileUrlFunction(a, i), l = this.tileUrlFunction_(s, n, i), u = new rg(a, void 0 !== l ? Ji : ro, void 0 !== l ? l : "", this.tileGrid.getTileCoordExtent(a), this.preemptive_, this.jsonp_); return this.tileCache.set(o, u), u }, e.prototype.useTile = function (t, e, r) { var n = cu(t, e, r); this.tileCache.containsKey(n) && this.tileCache.get(n) }, e }(Bp), ig = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), og = function (t) { function e(e) { var r = this, n = e.projection || "EPSG:3857", i = e.extent || hc(n), o = e.tileGrid || lc({ extent: i, maxResolution: e.maxResolution, maxZoom: void 0 !== e.maxZoom ? e.maxZoom : 22, minZoom: e.minZoom, tileSize: e.tileSize || 512 }); return (r = t.call(this, { attributions: e.attributions, attributionsCollapsible: e.attributionsCollapsible, cacheSize: e.cacheSize, opaque: !1, projection: n, state: e.state, tileGrid: o, tileLoadFunction: e.tileLoadFunction ? e.tileLoadFunction : ag, tileUrlFunction: e.tileUrlFunction, url: e.url, urls: e.urls, wrapX: void 0 === e.wrapX || e.wrapX, transition: e.transition, zDirection: void 0 === e.zDirection ? 1 : e.zDirection }) || this).format_ = e.format ? e.format : null, r.loadingTiles_ = {}, r.sourceTileCache = new yu(r.tileCache.highWaterMark), r.overlaps_ = null == e.overlaps || e.overlaps, r.tileClass = e.tileClass ? e.tileClass : Eu, r.tileGrids_ = {}, r } return ig(e, t), e.prototype.getFeaturesInExtent = function (t) { var e = [], r = this.tileCache; if (0 === r.getCount()) return e; var n = pu(r.peekFirstKey())[0], i = this.tileGrid; return r.forEach((function (r) { if (r.tileCoord[0] === n && r.getState() === to) for (var o = r.getSourceTiles(), a = 0, s = o.length; a < s; ++a) { var l = o[a], u = l.tileCoord; if (Re(t, i.getTileCoordExtent(u))) { var c = l.getFeatures(); if (c) for (var h = 0, p = c.length; h < p; ++h) { var f = c[h], d = f.getGeometry(); Re(t, d.getExtent()) && e.push(f) } } } })), e }, e.prototype.getOverlaps = function () { return this.overlaps_ }, e.prototype.clear = function () { this.tileCache.clear(), this.sourceTileCache.clear() }, e.prototype.expireCache = function (e, r) { t.prototype.expireCache.call(this, e, r), this.sourceTileCache.expireCache({}) }, e.prototype.getSourceTiles = function (t, e, r) { var n = r.wrappedTileCoord, i = this.getTileGridForProjection(e), o = i.getTileCoordExtent(n), a = n[0], s = i.getResolution(a); Ht(o, -s, o); var l = this.tileGrid, u = l.getExtent(); u && Te(o, u, o); var c, h, p, f = l.getZForResolution(s, 1), d = l.getMinZoom(), g = r.sourceTiles; if (g && g.length > 0 && g[0].tileCoord[0] === f) c = g, h = !0, p = f; else { c = [], p = f + 1; do { --p, h = !0, l.forEachTileCoord(o, p, function (n) { var i, o = this.tileUrlFunction(n, t, e); if (void 0 !== o) if (this.sourceTileCache.containsKey(o)) { var a = (i = this.sourceTileCache.get(o)).getState(); if (a === to || a === eo || a === ro) return void c.push(i) } else p === f && ((i = new this.tileClass(n, Ji, o, this.format_, this.tileLoadFunction)).extent = l.getTileCoordExtent(n), i.projection = e, i.resolution = l.getResolution(n[0]), this.sourceTileCache.set(o, i), i.addEventListener(F, this.handleTileChange.bind(this)), i.load()); h = h && i && i.getState() === to, i && i.getState() !== ro && r.getState() === Ji && (r.loadingSourceTiles++, i.addEventListener(F, (function t() { var e = i.getState(), n = i.getKey(); if (e === to || e === eo) { e === to ? (i.removeEventListener(F, t), r.loadingSourceTiles--, delete r.errorSourceTileKeys[n]) : e === eo && (r.errorSourceTileKeys[n] = !0); var o = Object.keys(r.errorSourceTileKeys).length; r.loadingSourceTiles - o == 0 && (r.hifi = 0 === o, r.sourceZ = f, r.setState(to)) } }))) }.bind(this)), h || (c.length = 0) } while (!h && p > d) } return r.getState() === Ji && r.setState(Qi), h && (r.hifi = f === p, r.sourceZ = p, r.getState() < to ? r.setState(to) : g && b(c, g) || (r.sourceTiles = c)), c }, e.prototype.getTile = function (t, e, r, n, i) { var o, a = cu(t, e, r), s = this.getKey(); if (this.tileCache.containsKey(a) && (o = this.tileCache.get(a)).key === s) return o; var l = [t, e, r], u = this.getTileCoordForTileUrlFunction(l, i), c = this.getTileGrid().getExtent(), h = this.getTileGridForProjection(i); if (u && c) { var p = h.getTileCoordExtent(u); Ht(p, -h.getResolution(t), p), Re(c, p) || (u = null) } var f = !0; if (null !== u) { var d = this.tileGrid, g = h.getResolution(t), y = d.getZForResolution(g, 1), m = h.getTileCoordExtent(u); Ht(m, -g, m), d.forEachTileCoord(m, y, function (t) { f = f && !this.tileUrlFunction(t, n, i) }.bind(this)) } var v = new wu(l, f ? ro : Ji, u, this.getSourceTiles.bind(this, n, i)); return v.key = s, o ? (v.interimTile = o, v.refreshInterimChain(), this.tileCache.replace(a, v)) : this.tileCache.set(a, v), v }, e.prototype.getTileGridForProjection = function (t) { var e = t.getCode(), r = this.tileGrids_[e]; if (!r) { var n = this.tileGrid; r = cc(t, void 0, n ? n.getTileSize(n.getMinZoom()) : void 0), this.tileGrids_[e] = r } return r }, e.prototype.getTilePixelRatio = function (t) { return t }, e.prototype.getTilePixelSize = function (t, e, r) { var n = Is(this.getTileGridForProjection(r).getTileSize(t), this.tmpSize); return [Math.round(n[0] * e), Math.round(n[1] * e)] }, e.prototype.updateCacheSize = function (e, r) { t.prototype.updateCacheSize.call(this, 2 * e, r) }, e }(Yp); function ag(t, e) { t.setLoader((function (r, n, i) { Lu(e, t.getFormat(), r, n, i, t.onLoad.bind(t), t.onError.bind(t)) })) } var sg = "KVP", lg = "REST", ug = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), cg = function (t) { function e(e) { var r = this, n = void 0 !== e.requestEncoding ? e.requestEncoding : sg, i = e.tileGrid, o = e.urls; return void 0 === o && void 0 !== e.url && (o = yc(e.url)), (r = t.call(this, { attributions: e.attributions, cacheSize: e.cacheSize, crossOrigin: e.crossOrigin, imageSmoothing: e.imageSmoothing, projection: e.projection, reprojectionErrorThreshold: e.reprojectionErrorThreshold, tileClass: e.tileClass, tileGrid: i, tileLoadFunction: e.tileLoadFunction, tilePixelRatio: e.tilePixelRatio, urls: o, wrapX: void 0 !== e.wrapX && e.wrapX, transition: e.transition }) || this).version_ = void 0 !== e.version ? e.version : "1.0.0", r.format_ = void 0 !== e.format ? e.format : "image/jpeg", r.dimensions_ = void 0 !== e.dimensions ? e.dimensions : {}, r.layer_ = e.layer, r.matrixSet_ = e.matrixSet, r.style_ = e.style, r.requestEncoding_ = n, r.setKey(r.getKeyForDimensions_()), o && o.length > 0 && (r.tileUrlFunction = dc(o.map(r.createFromWMTSTemplate.bind(r)))), r } return ug(e, t), e.prototype.setUrls = function (t) { this.urls = t; var e = t.join("\n"); this.setTileUrlFunction(dc(t.map(this.createFromWMTSTemplate.bind(this))), e) }, e.prototype.getDimensions = function () { return this.dimensions_ }, e.prototype.getFormat = function () { return this.format_ }, e.prototype.getLayer = function () { return this.layer_ }, e.prototype.getMatrixSet = function () { return this.matrixSet_ }, e.prototype.getRequestEncoding = function () { return this.requestEncoding_ }, e.prototype.getStyle = function () { return this.style_ }, e.prototype.getVersion = function () { return this.version_ }, e.prototype.getKeyForDimensions_ = function () { var t = 0, e = []; for (var r in this.dimensions_) e[t++] = r + "-" + this.dimensions_[r]; return e.join("/") }, e.prototype.updateDimensions = function (t) { O(this.dimensions_, t), this.setKey(this.getKeyForDimensions_()) }, e.prototype.createFromWMTSTemplate = function (t) { var e = this.requestEncoding_, r = {layer: this.layer_, style: this.style_, tilematrixset: this.matrixSet_}; e == sg && O(r, { Service: "WMTS", Request: "GetTile", Version: this.version_, Format: this.format_ }), t = e == sg ? mc(t, r) : t.replace(/\{(\w+?)\}/g, (function (t, e) { return e.toLowerCase() in r ? r[e.toLowerCase()] : t })); var n = this.tileGrid, i = this.dimensions_; return function (r, o, a) { if (r) { var s = {TileMatrix: n.getMatrixId(r[0]), TileCol: r[1], TileRow: r[2]}; O(s, i); var l = t; return l = e == sg ? mc(l, s) : l.replace(/\{(\w+?)\}/g, (function (t, e) { return s[e] })) } } }, e }(Xp); var hg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), pg = "GENERATE_BUFFERS", fg = function (t) { function e(e, r) { var n = t.call(this, e) || this, i = r || {}; return n.helper = new gh({ postProcesses: i.postProcesses, uniforms: i.uniforms }), void 0 !== i.className && (n.helper.getCanvas().className = i.className), n } return hg(e, t), e.prototype.disposeInternal = function () { this.helper.dispose(), t.prototype.disposeInternal.call(this) }, e.prototype.getShaderCompileErrors = function () { return this.helper.getShaderCompileErrors() }, e.prototype.dispatchRenderEvent_ = function (t, e) { var r = this.getLayer(); if (r.hasListener(t)) { var n = new la(t, null, e, null); r.dispatchEvent(n) } }, e.prototype.preRender = function (t) { this.dispatchRenderEvent_(qo, t) }, e.prototype.postRender = function (t) { this.dispatchRenderEvent_(Xo, t) }, e }(ld), dg = [], gg = {vertexPosition: 0, indexPosition: 0}; function yg(t, e, r, n, i) { t[e + 0] = r, t[e + 1] = n, t[e + 2] = i } function mg(t, e) { var r = e || []; return r[0] = Math.floor(t / 256 / 256 / 256) / 255, r[1] = Math.floor(t / 256 / 256) % 256 / 255, r[2] = Math.floor(t / 256) % 256 / 255, r[3] = t % 256 / 255, r } function vg(t) { var e = 0; return e += Math.round(256 * t[0] * 256 * 256 * 255), e += Math.round(256 * t[1] * 256 * 255), e += Math.round(256 * t[2] * 255), e += Math.round(255 * t[3]) } var _g = fg, bg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), xg = "renderOrder", wg = function (t) { function e(e) { var r = this, n = e || {}, i = O({}, n); return delete i.style, delete i.renderBuffer, delete i.updateWhileAnimating, delete i.updateWhileInteracting, (r = t.call(this, i) || this).declutter_ = void 0 !== n.declutter && n.declutter, r.renderBuffer_ = void 0 !== n.renderBuffer ? n.renderBuffer : 100, r.style_ = null, r.styleFunction_ = void 0, r.setStyle(n.style), r.updateWhileAnimating_ = void 0 !== n.updateWhileAnimating && n.updateWhileAnimating, r.updateWhileInteracting_ = void 0 !== n.updateWhileInteracting && n.updateWhileInteracting, r } return bg(e, t), e.prototype.getDeclutter = function () { return this.declutter_ }, e.prototype.getFeatures = function (e) { return t.prototype.getFeatures.call(this, e) }, e.prototype.getRenderBuffer = function () { return this.renderBuffer_ }, e.prototype.getRenderOrder = function () { return this.get(xg) }, e.prototype.getStyle = function () { return this.style_ }, e.prototype.getStyleFunction = function () { return this.styleFunction_ }, e.prototype.getUpdateWhileAnimating = function () { return this.updateWhileAnimating_ }, e.prototype.getUpdateWhileInteracting = function () { return this.updateWhileInteracting_ }, e.prototype.renderDeclutter = function (t) { t.declutterTree || (t.declutterTree = new Pp.a(9)), this.getRenderer().renderDeclutter(t) }, e.prototype.setRenderOrder = function (t) { this.set(xg, t) }, e.prototype.setStyle = function (t) { this.style_ = void 0 !== t ? t : _p, this.styleFunction_ = null === t ? void 0 : mp(this.style_), this.changed() }, e }(na), Sg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Eg = function (t) { function e(e, r) { var n = this, i = r.uniforms || {}, a = [1, 0, 0, 1, 0, 0]; i[ah] = a, (n = t.call(this, e, { className: r.className, uniforms: i, postProcesses: r.postProcesses }) || this).sourceRevision_ = -1, n.verticesBuffer_ = new Qc(34962, 35048), n.hitVerticesBuffer_ = new Qc(34962, 35048), n.indicesBuffer_ = new Qc(34963, 35048), n.program_ = n.helper.getProgram(r.fragmentShader, r.vertexShader), n.hitDetectionEnabled_ = !(!r.hitFragmentShader || !r.hitVertexShader), n.hitProgram_ = n.hitDetectionEnabled_ && n.helper.getProgram(r.hitFragmentShader, r.hitVertexShader); var s = r.attributes ? r.attributes.map((function (t) { return {name: "a_" + t.name, size: 1, type: ph.FLOAT} })) : []; n.attributes = [{name: "a_position", size: 2, type: ph.FLOAT}, { name: "a_index", size: 1, type: ph.FLOAT }].concat(s), n.hitDetectionAttributes = [{name: "a_position", size: 2, type: ph.FLOAT}, { name: "a_index", size: 1, type: ph.FLOAT }, {name: "a_hitColor", size: 4, type: ph.FLOAT}, { name: "a_featureUid", size: 1, type: ph.FLOAT }].concat(s), n.customAttributes = r.attributes ? r.attributes : [], n.previousExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0], n.currentTransform_ = a, n.renderTransform_ = [1, 0, 0, 1, 0, 0], n.invertRenderTransform_ = [1, 0, 0, 1, 0, 0], n.renderInstructions_ = new Float32Array(0), n.hitRenderInstructions_ = new Float32Array(0), n.hitRenderTarget_ = n.hitDetectionEnabled_ && new mh(n.helper), n.worker_ = new Worker(Hc), n.worker_.addEventListener("message", function (t) { var e = t.data; if (e.type === pg) { var r = e.projectionTransform; e.hitDetection ? (this.hitVerticesBuffer_.fromArrayBuffer(e.vertexBuffer), this.helper.flushBufferData(this.hitVerticesBuffer_)) : (this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer), this.helper.flushBufferData(this.verticesBuffer_)), this.indicesBuffer_.fromArrayBuffer(e.indexBuffer), this.helper.flushBufferData(this.indicesBuffer_), this.renderTransform_ = r, jt(this.invertRenderTransform_, this.renderTransform_), e.hitDetection ? this.hitRenderInstructions_ = new Float32Array(t.data.renderInstructions) : this.renderInstructions_ = new Float32Array(t.data.renderInstructions), this.getLayer().changed() } }.bind(n)), n.featureCache_ = {}, n.featureCount_ = 0; var l = n.getLayer().getSource(); return n.sourceListenKeys_ = [Z(l, ef, n.handleSourceFeatureAdded_, n), Z(l, rf, n.handleSourceFeatureChanged_, n), Z(l, of, n.handleSourceFeatureDelete_, n), Z(l, nf, n.handleSourceFeatureClear_, n)], l.forEachFeature(function (t) { this.featureCache_[o(t)] = { feature: t, properties: t.getProperties(), geometry: t.getGeometry() }, this.featureCount_++ }.bind(n)), n } return Sg(e, t), e.prototype.handleSourceFeatureAdded_ = function (t) { var e = t.feature; this.featureCache_[o(e)] = { feature: e, properties: e.getProperties(), geometry: e.getGeometry() }, this.featureCount_++ }, e.prototype.handleSourceFeatureChanged_ = function (t) { var e = t.feature; this.featureCache_[o(e)] = {feature: e, properties: e.getProperties(), geometry: e.getGeometry()} }, e.prototype.handleSourceFeatureDelete_ = function (t) { var e = t.feature; delete this.featureCache_[o(e)], this.featureCount_-- }, e.prototype.handleSourceFeatureClear_ = function () { this.featureCache_ = {}, this.featureCount_ = 0 }, e.prototype.renderFrame = function (t) { this.preRender(t); var e = this.indicesBuffer_.getSize(); this.helper.drawElements(0, e), this.helper.finalizeDraw(t); var r = this.helper.getCanvas(), n = t.layerStatesArray[t.layerIndex].opacity; return n !== parseFloat(r.style.opacity) && (r.style.opacity = String(n)), this.hitDetectionEnabled_ && (this.renderHitDetection(t), this.hitRenderTarget_.clearCachedData()), this.postRender(t), r }, e.prototype.prepareFrame = function (t) { var e = this.getLayer(), r = e.getSource(), n = t.viewState, i = !t.viewHints[ns] && !t.viewHints[is], o = !ue(this.previousExtent_, t.extent), a = this.sourceRevision_ < r.getRevision(); if (a && (this.sourceRevision_ = r.getRevision()), i && (o || a)) { var s = n.projection, l = n.resolution, u = e instanceof wg ? e.getRenderBuffer() : 0, c = Ht(t.extent, u * l); r.loadFeatures(c, l, s), this.rebuildBuffers_(t), this.previousExtent_ = t.extent.slice() } return this.helper.makeProjectionTransform(t, this.currentTransform_), Ot(this.currentTransform_, this.invertRenderTransform_), this.helper.useProgram(this.program_), this.helper.prepareDraw(t), this.helper.bindBuffer(this.verticesBuffer_), this.helper.bindBuffer(this.indicesBuffer_), this.helper.enableAttributes(this.attributes), !0 }, e.prototype.rebuildBuffers_ = function (t) { var e = [1, 0, 0, 1, 0, 0]; this.helper.makeProjectionTransform(t, e); var r, n, i = (2 + this.customAttributes.length) * this.featureCount_; if (this.renderInstructions_ && this.renderInstructions_.length === i || (this.renderInstructions_ = new Float32Array(i)), this.hitDetectionEnabled_) { var o = (7 + this.customAttributes.length) * this.featureCount_; this.hitRenderInstructions_ && this.hitRenderInstructions_.length === o || (this.hitRenderInstructions_ = new Float32Array(o)) } var a, s = [], l = [], u = 0, c = 0; for (var h in this.featureCache_) if ((n = (r = this.featureCache_[h]).geometry) && n.getType() === bt.POINT) { s[0] = n.getFlatCoordinates()[0], s[1] = n.getFlatCoordinates()[1], It(e, s), a = mg(c + 6, l), this.renderInstructions_[u++] = s[0], this.renderInstructions_[u++] = s[1], this.hitDetectionEnabled_ && (this.hitRenderInstructions_[c++] = s[0], this.hitRenderInstructions_[c++] = s[1], this.hitRenderInstructions_[c++] = a[0], this.hitRenderInstructions_[c++] = a[1], this.hitRenderInstructions_[c++] = a[2], this.hitRenderInstructions_[c++] = a[3], this.hitRenderInstructions_[c++] = Number(h)); for (var p = void 0, f = 0; f < this.customAttributes.length; f++) p = this.customAttributes[f].callback(r.feature, r.properties), this.renderInstructions_[u++] = p, this.hitDetectionEnabled_ && (this.hitRenderInstructions_[c++] = p) } var d = { type: pg, renderInstructions: this.renderInstructions_.buffer, customAttributesCount: this.customAttributes.length }; if (d.projectionTransform = e, this.worker_.postMessage(d, [this.renderInstructions_.buffer]), this.renderInstructions_ = null, this.hitDetectionEnabled_) { var g = { type: pg, renderInstructions: this.hitRenderInstructions_.buffer, customAttributesCount: 5 + this.customAttributes.length }; g.projectionTransform = e, g.hitDetection = !0, this.worker_.postMessage(g, [this.hitRenderInstructions_.buffer]), this.hitRenderInstructions_ = null } }, e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i) { if (pt(this.hitDetectionEnabled_, 66), this.hitRenderInstructions_) { var o = It(e.coordinateToPixelTransform, t.slice()), a = this.hitRenderTarget_.readPixel(o[0] / 2, o[1] / 2), s = vg([a[0] / 255, a[1] / 255, a[2] / 255, a[3] / 255]), l = this.hitRenderInstructions_[s], u = Math.floor(l).toString(), c = this.getLayer().getSource().getFeatureByUid(u); return c ? n(c, this.getLayer(), null) : void 0 } }, e.prototype.renderHitDetection = function (t) { if (this.hitVerticesBuffer_.getSize()) { this.hitRenderTarget_.setSize([Math.floor(t.size[0] / 2), Math.floor(t.size[1] / 2)]), this.helper.useProgram(this.hitProgram_), this.helper.prepareDrawToRenderTarget(t, this.hitRenderTarget_, !0), this.helper.bindBuffer(this.hitVerticesBuffer_), this.helper.bindBuffer(this.indicesBuffer_), this.helper.enableAttributes(this.hitDetectionAttributes); var e = this.indicesBuffer_.getSize(); this.helper.drawElements(0, e) } }, e.prototype.disposeInternal = function () { this.worker_.terminate(), this.layer_ = null, this.sourceListenKeys_.forEach((function (t) { H(t) })), this.sourceListenKeys_ = null, t.prototype.disposeInternal.call(this) }, e }(_g), Tg = { BEGIN_GEOMETRY: 0, BEGIN_PATH: 1, CIRCLE: 2, CLOSE_PATH: 3, CUSTOM: 4, DRAW_CHARS: 5, DRAW_IMAGE: 6, END_GEOMETRY: 7, FILL: 8, MOVE_TO_LINE_TO: 9, SET_FILL_STYLE: 10, SET_STROKE_STYLE: 11, STROKE: 12 }, Cg = [Tg.FILL], Og = [Tg.STROKE], Pg = [Tg.BEGIN_PATH], Rg = [Tg.CLOSE_PATH], Ig = Tg, Lg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Mg = function (t) { function e(e, r, n, i) { var o = t.call(this) || this; return o.tolerance = e, o.maxExtent = r, o.pixelRatio = i, o.maxLineWidth = 0, o.resolution = n, o.beginGeometryInstruction1_ = null, o.beginGeometryInstruction2_ = null, o.bufferedMaxExtent_ = null, o.instructions = [], o.coordinates = [], o.tmpCoordinate_ = [], o.hitDetectionInstructions = [], o.state = {}, o } return Lg(e, t), e.prototype.applyPixelRatio = function (t) { var e = this.pixelRatio; return 1 == e ? t : t.map((function (t) { return t * e })) }, e.prototype.appendFlatPointCoordinates = function (t, e) { for (var r = this.getBufferedMaxExtent(), n = this.tmpCoordinate_, i = this.coordinates, o = i.length, a = 0, s = t.length; a < s; a += e) n[0] = t[a], n[1] = t[a + 1], Qt(r, n) && (i[o++] = n[0], i[o++] = n[1]); return o }, e.prototype.appendFlatLineCoordinates = function (t, e, r, n, i, o) { var a = this.coordinates, s = a.length, l = this.getBufferedMaxExtent(); o && (e += n); var u, c, h, p = t[e], f = t[e + 1], d = this.tmpCoordinate_, g = !0; for (u = e + n; u < r; u += n) d[0] = t[u], d[1] = t[u + 1], (h = re(l, d)) !== c ? (g && (a[s++] = p, a[s++] = f, g = !1), a[s++] = d[0], a[s++] = d[1]) : h === Yt ? (a[s++] = d[0], a[s++] = d[1], g = !1) : g = !0, p = d[0], f = d[1], c = h; return (i && g || u === e + n) && (a[s++] = p, a[s++] = f), s }, e.prototype.drawCustomCoordinates_ = function (t, e, r, n, i) { for (var o = 0, a = r.length; o < a; ++o) { var s = r[o], l = this.appendFlatLineCoordinates(t, e, s, n, !1, !1); i.push(l), e = s } return e }, e.prototype.drawCustom = function (t, e, r) { this.beginGeometry(t, e); var n, i, o, a, s, l = t.getType(), u = t.getStride(), c = this.coordinates.length; if (l == bt.MULTI_POLYGON) { n = t.getOrientedFlatCoordinates(), a = []; var h = t.getEndss(); s = 0; for (var p = 0, f = h.length; p < f; ++p) { var d = []; s = this.drawCustomCoordinates_(n, s, h[p], u, d), a.push(d) } this.instructions.push([Ig.CUSTOM, c, a, t, r, Gn]) } else l == bt.POLYGON || l == bt.MULTI_LINE_STRING ? (o = [], n = l == bt.POLYGON ? t.getOrientedFlatCoordinates() : t.getFlatCoordinates(), s = this.drawCustomCoordinates_(n, 0, t.getEnds(), u, o), this.instructions.push([Ig.CUSTOM, c, o, t, r, Dn])) : l == bt.LINE_STRING || l == bt.CIRCLE ? (n = t.getFlatCoordinates(), i = this.appendFlatLineCoordinates(n, 0, n.length, u, !1, !1), this.instructions.push([Ig.CUSTOM, c, i, t, r, Nn])) : l == bt.MULTI_POINT ? (n = t.getFlatCoordinates(), (i = this.appendFlatPointCoordinates(n, u)) > c && this.instructions.push([Ig.CUSTOM, c, i, t, r, Nn])) : l == bt.POINT && (n = t.getFlatCoordinates(), this.coordinates.push(n[0], n[1]), i = this.coordinates.length, this.instructions.push([Ig.CUSTOM, c, i, t, r])); this.endGeometry(e) }, e.prototype.beginGeometry = function (t, e) { this.beginGeometryInstruction1_ = [Ig.BEGIN_GEOMETRY, e, 0, t], this.instructions.push(this.beginGeometryInstruction1_), this.beginGeometryInstruction2_ = [Ig.BEGIN_GEOMETRY, e, 0, t], this.hitDetectionInstructions.push(this.beginGeometryInstruction2_) }, e.prototype.finish = function () { return { instructions: this.instructions, hitDetectionInstructions: this.hitDetectionInstructions, coordinates: this.coordinates } }, e.prototype.reverseHitDetectionInstructions = function () { var t, e = this.hitDetectionInstructions; e.reverse(); var r, n, i = e.length, o = -1; for (t = 0; t < i; ++t) (n = (r = e[t])[0]) == Ig.END_GEOMETRY ? o = t : n == Ig.BEGIN_GEOMETRY && (r[2] = t, m(this.hitDetectionInstructions, o, t), o = -1) }, e.prototype.setFillStrokeStyle = function (t, e) { var r = this.state; if (t) { var n = t.getColor(); r.fillStyle = Tu(n || "#000") } else r.fillStyle = void 0; if (e) { var i = e.getColor(); r.strokeStyle = Tu(i || "#000"); var o = e.getLineCap(); r.lineCap = void 0 !== o ? o : "round"; var a = e.getLineDash(); r.lineDash = a ? a.slice() : pa; var s = e.getLineDashOffset(); r.lineDashOffset = s || 0; var l = e.getLineJoin(); r.lineJoin = void 0 !== l ? l : "round"; var u = e.getWidth(); r.lineWidth = void 0 !== u ? u : 1; var c = e.getMiterLimit(); r.miterLimit = void 0 !== c ? c : 10, r.lineWidth > this.maxLineWidth && (this.maxLineWidth = r.lineWidth, this.bufferedMaxExtent_ = null) } else r.strokeStyle = void 0, r.lineCap = void 0, r.lineDash = null, r.lineDashOffset = void 0, r.lineJoin = void 0, r.lineWidth = void 0, r.miterLimit = void 0 }, e.prototype.createFill = function (t) { var e = t.fillStyle, r = [Ig.SET_FILL_STYLE, e]; return "string" != typeof e && r.push(!0), r }, e.prototype.applyStroke = function (t) { this.instructions.push(this.createStroke(t)) }, e.prototype.createStroke = function (t) { return [Ig.SET_STROKE_STYLE, t.strokeStyle, t.lineWidth * this.pixelRatio, t.lineCap, t.lineJoin, t.miterLimit, this.applyPixelRatio(t.lineDash), t.lineDashOffset * this.pixelRatio] }, e.prototype.updateFillStyle = function (t, e) { var r = t.fillStyle; "string" == typeof r && t.currentFillStyle == r || (void 0 !== r && this.instructions.push(e.call(this, t)), t.currentFillStyle = r) }, e.prototype.updateStrokeStyle = function (t, e) { var r = t.strokeStyle, n = t.lineCap, i = t.lineDash, o = t.lineDashOffset, a = t.lineJoin, s = t.lineWidth, l = t.miterLimit; (t.currentStrokeStyle != r || t.currentLineCap != n || i != t.currentLineDash && !b(t.currentLineDash, i) || t.currentLineDashOffset != o || t.currentLineJoin != a || t.currentLineWidth != s || t.currentMiterLimit != l) && (void 0 !== r && e.call(this, t), t.currentStrokeStyle = r, t.currentLineCap = n, t.currentLineDash = i, t.currentLineDashOffset = o, t.currentLineJoin = a, t.currentLineWidth = s, t.currentMiterLimit = l) }, e.prototype.endGeometry = function (t) { this.beginGeometryInstruction1_[2] = this.instructions.length, this.beginGeometryInstruction1_ = null, this.beginGeometryInstruction2_[2] = this.hitDetectionInstructions.length, this.beginGeometryInstruction2_ = null; var e = [Ig.END_GEOMETRY, t]; this.instructions.push(e), this.hitDetectionInstructions.push(e) }, e.prototype.getBufferedMaxExtent = function () { if (!this.bufferedMaxExtent_ && (this.bufferedMaxExtent_ = $t(this.maxExtent), this.maxLineWidth > 0)) { var t = this.resolution * (this.maxLineWidth + 1) / 2; Ht(this.bufferedMaxExtent_, t, this.bufferedMaxExtent_) } return this.bufferedMaxExtent_ }, e }(ku), Fg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Ag = function (t) { function e(e, r, n, i) { var o = t.call(this, e, r, n, i) || this; return o.hitDetectionImage_ = null, o.image_ = null, o.imagePixelRatio_ = void 0, o.anchorX_ = void 0, o.anchorY_ = void 0, o.height_ = void 0, o.opacity_ = void 0, o.originX_ = void 0, o.originY_ = void 0, o.rotateWithView_ = void 0, o.rotation_ = void 0, o.scale_ = void 0, o.width_ = void 0, o.declutterImageWithText_ = void 0, o } return Fg(e, t), e.prototype.drawPoint = function (t, e) { if (this.image_) { this.beginGeometry(t, e); var r = t.getFlatCoordinates(), n = t.getStride(), i = this.coordinates.length, o = this.appendFlatPointCoordinates(r, n); this.instructions.push([Ig.DRAW_IMAGE, i, o, this.image_, this.anchorX_ * this.imagePixelRatio_, this.anchorY_ * this.imagePixelRatio_, Math.ceil(this.height_ * this.imagePixelRatio_), this.opacity_, this.originX_, this.originY_, this.rotateWithView_, this.rotation_, [this.scale_[0] * this.pixelRatio / this.imagePixelRatio_, this.scale_[1] * this.pixelRatio / this.imagePixelRatio_], Math.ceil(this.width_ * this.imagePixelRatio_), this.declutterImageWithText_]), this.hitDetectionInstructions.push([Ig.DRAW_IMAGE, i, o, this.hitDetectionImage_, this.anchorX_, this.anchorY_, this.height_, this.opacity_, this.originX_, this.originY_, this.rotateWithView_, this.rotation_, this.scale_, this.width_, this.declutterImageWithText_]), this.endGeometry(e) } }, e.prototype.drawMultiPoint = function (t, e) { if (this.image_) { this.beginGeometry(t, e); var r = t.getFlatCoordinates(), n = t.getStride(), i = this.coordinates.length, o = this.appendFlatPointCoordinates(r, n); this.instructions.push([Ig.DRAW_IMAGE, i, o, this.image_, this.anchorX_ * this.imagePixelRatio_, this.anchorY_ * this.imagePixelRatio_, Math.ceil(this.height_ * this.imagePixelRatio_), this.opacity_, this.originX_, this.originY_, this.rotateWithView_, this.rotation_, [this.scale_[0] * this.pixelRatio / this.imagePixelRatio_, this.scale_[1] * this.pixelRatio / this.imagePixelRatio_], Math.ceil(this.width_ * this.imagePixelRatio_), this.declutterImageWithText_]), this.hitDetectionInstructions.push([Ig.DRAW_IMAGE, i, o, this.hitDetectionImage_, this.anchorX_, this.anchorY_, this.height_, this.opacity_, this.originX_, this.originY_, this.rotateWithView_, this.rotation_, this.scale_, this.width_, this.declutterImageWithText_]), this.endGeometry(e) } }, e.prototype.finish = function () { return this.reverseHitDetectionInstructions(), this.anchorX_ = void 0, this.anchorY_ = void 0, this.hitDetectionImage_ = null, this.image_ = null, this.imagePixelRatio_ = void 0, this.height_ = void 0, this.scale_ = void 0, this.opacity_ = void 0, this.originX_ = void 0, this.originY_ = void 0, this.rotateWithView_ = void 0, this.rotation_ = void 0, this.width_ = void 0, t.prototype.finish.call(this) }, e.prototype.setImageStyle = function (t, e) { var r = t.getAnchor(), n = t.getSize(), i = t.getHitDetectionImage(), o = t.getImage(this.pixelRatio), a = t.getOrigin(); this.imagePixelRatio_ = t.getPixelRatio(this.pixelRatio), this.anchorX_ = r[0], this.anchorY_ = r[1], this.hitDetectionImage_ = i, this.image_ = o, this.height_ = n[1], this.opacity_ = t.getOpacity(), this.originX_ = a[0], this.originY_ = a[1], this.rotateWithView_ = t.getRotateWithView(), this.rotation_ = t.getRotation(), this.scale_ = t.getScaleArray(), this.width_ = n[0], this.declutterImageWithText_ = e }, e }(Mg), kg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), jg = function (t) { function e(e, r, n, i) { return t.call(this, e, r, n, i) || this } return kg(e, t), e.prototype.drawFlatCoordinates_ = function (t, e, r, n) { var i = this.coordinates.length, o = this.appendFlatLineCoordinates(t, e, r, n, !1, !1), a = [Ig.MOVE_TO_LINE_TO, i, o]; return this.instructions.push(a), this.hitDetectionInstructions.push(a), r }, e.prototype.drawLineString = function (t, e) { var r = this.state, n = r.strokeStyle, i = r.lineWidth; if (void 0 !== n && void 0 !== i) { this.updateStrokeStyle(r, this.applyStroke), this.beginGeometry(t, e), this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE, r.strokeStyle, r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, r.lineDash, r.lineDashOffset], Pg); var o = t.getFlatCoordinates(), a = t.getStride(); this.drawFlatCoordinates_(o, 0, o.length, a), this.hitDetectionInstructions.push(Og), this.endGeometry(e) } }, e.prototype.drawMultiLineString = function (t, e) { var r = this.state, n = r.strokeStyle, i = r.lineWidth; if (void 0 !== n && void 0 !== i) { this.updateStrokeStyle(r, this.applyStroke), this.beginGeometry(t, e), this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE, r.strokeStyle, r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, r.lineDash, r.lineDashOffset], Pg); for (var o = t.getEnds(), a = t.getFlatCoordinates(), s = t.getStride(), l = 0, u = 0, c = o.length; u < c; ++u) l = this.drawFlatCoordinates_(a, l, o[u], s); this.hitDetectionInstructions.push(Og), this.endGeometry(e) } }, e.prototype.finish = function () { var e = this.state; return null != e.lastStroke && e.lastStroke != this.coordinates.length && this.instructions.push(Og), this.reverseHitDetectionInstructions(), this.state = null, t.prototype.finish.call(this) }, e.prototype.applyStroke = function (e) { null != e.lastStroke && e.lastStroke != this.coordinates.length && (this.instructions.push(Og), e.lastStroke = this.coordinates.length), e.lastStroke = 0, t.prototype.applyStroke.call(this, e), this.instructions.push(Pg) }, e }(Mg), Ng = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Dg = function (t) { function e(e, r, n, i) { return t.call(this, e, r, n, i) || this } return Ng(e, t), e.prototype.drawFlatCoordinatess_ = function (t, e, r, n) { var i = this.state, o = void 0 !== i.fillStyle, a = void 0 !== i.strokeStyle, s = r.length; this.instructions.push(Pg), this.hitDetectionInstructions.push(Pg); for (var l = 0; l < s; ++l) { var u = r[l], c = this.coordinates.length, h = this.appendFlatLineCoordinates(t, e, u, n, !0, !a), p = [Ig.MOVE_TO_LINE_TO, c, h]; this.instructions.push(p), this.hitDetectionInstructions.push(p), a && (this.instructions.push(Rg), this.hitDetectionInstructions.push(Rg)), e = u } return o && (this.instructions.push(Cg), this.hitDetectionInstructions.push(Cg)), a && (this.instructions.push(Og), this.hitDetectionInstructions.push(Og)), e }, e.prototype.drawCircle = function (t, e) { var r = this.state, n = r.fillStyle, i = r.strokeStyle; if (void 0 !== n || void 0 !== i) { this.setFillStrokeStyles_(), this.beginGeometry(t, e), void 0 !== r.fillStyle && this.hitDetectionInstructions.push([Ig.SET_FILL_STYLE, "#000"]), void 0 !== r.strokeStyle && this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE, r.strokeStyle, r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, r.lineDash, r.lineDashOffset]); var o = t.getFlatCoordinates(), a = t.getStride(), s = this.coordinates.length; this.appendFlatLineCoordinates(o, 0, o.length, a, !1, !1); var l = [Ig.CIRCLE, s]; this.instructions.push(Pg, l), this.hitDetectionInstructions.push(Pg, l), void 0 !== r.fillStyle && (this.instructions.push(Cg), this.hitDetectionInstructions.push(Cg)), void 0 !== r.strokeStyle && (this.instructions.push(Og), this.hitDetectionInstructions.push(Og)), this.endGeometry(e) } }, e.prototype.drawPolygon = function (t, e) { var r = this.state, n = r.fillStyle, i = r.strokeStyle; if (void 0 !== n || void 0 !== i) { this.setFillStrokeStyles_(), this.beginGeometry(t, e), void 0 !== r.fillStyle && this.hitDetectionInstructions.push([Ig.SET_FILL_STYLE, "#000"]), void 0 !== r.strokeStyle && this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE, r.strokeStyle, r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, r.lineDash, r.lineDashOffset]); var o = t.getEnds(), a = t.getOrientedFlatCoordinates(), s = t.getStride(); this.drawFlatCoordinatess_(a, 0, o, s), this.endGeometry(e) } }, e.prototype.drawMultiPolygon = function (t, e) { var r = this.state, n = r.fillStyle, i = r.strokeStyle; if (void 0 !== n || void 0 !== i) { this.setFillStrokeStyles_(), this.beginGeometry(t, e), void 0 !== r.fillStyle && this.hitDetectionInstructions.push([Ig.SET_FILL_STYLE, "#000"]), void 0 !== r.strokeStyle && this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE, r.strokeStyle, r.lineWidth, r.lineCap, r.lineJoin, r.miterLimit, r.lineDash, r.lineDashOffset]); for (var o = t.getEndss(), a = t.getOrientedFlatCoordinates(), s = t.getStride(), l = 0, u = 0, c = o.length; u < c; ++u) l = this.drawFlatCoordinatess_(a, l, o[u], s); this.endGeometry(e) } }, e.prototype.finish = function () { this.reverseHitDetectionInstructions(), this.state = null; var e = this.tolerance; if (0 !== e) for (var r = this.coordinates, n = 0, i = r.length; n < i; ++n) r[n] = Fn(r[n], e); return t.prototype.finish.call(this) }, e.prototype.setFillStrokeStyles_ = function () { var t = this.state; void 0 !== t.fillStyle && this.updateFillStyle(t, this.createFill), void 0 !== t.strokeStyle && this.updateStrokeStyle(t, this.applyStroke) }, e }(Mg); function Gg(t, e, r, n, i) { var o, a, s, l, u, c, h, p, f, d = r, g = r, y = 0, m = 0, v = r; for (o = r; o < n; o += i) { var _ = e[o], b = e[o + 1]; void 0 !== l && (p = _ - l, f = b - u, s = Math.sqrt(p * p + f * f), void 0 !== c && (m += a, Math.acos((c * p + h * f) / (a * s)) > t && (m > y && (y = m, d = v, g = o), m = 0, v = o - i)), a = s, c = p, h = f), l = _, u = b } return (m += s) > y ? [v, o] : [d, g] } var zg = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Ug = { left: 0, end: 0, center: .5, right: 1, start: 1, top: 0, middle: .5, hanging: .2, alphabetic: .8, ideographic: .8, bottom: 1 }, Bg = function (t) { function e(e, r, n, i) { var o = t.call(this, e, r, n, i) || this; return o.labels_ = null, o.text_ = "", o.textOffsetX_ = 0, o.textOffsetY_ = 0, o.textRotateWithView_ = void 0, o.textRotation_ = 0, o.textFillState_ = null, o.fillStates = {}, o.textStrokeState_ = null, o.strokeStates = {}, o.textState_ = {}, o.textStates = {}, o.textKey_ = "", o.fillKey_ = "", o.strokeKey_ = "", o.declutterImageWithText_ = void 0, o } return zg(e, t), e.prototype.finish = function () { var e = t.prototype.finish.call(this); return e.textStates = this.textStates, e.fillStates = this.fillStates, e.strokeStates = this.strokeStates, e }, e.prototype.drawText = function (t, e) { var r = this.textFillState_, n = this.textStrokeState_, i = this.textState_; if ("" !== this.text_ && i && (r || n)) { var o = this.coordinates, a = o.length, s = t.getType(), l = null, u = t.getStride(); if (i.placement !== Ep || s != bt.LINE_STRING && s != bt.MULTI_LINE_STRING && s != bt.POLYGON && s != bt.MULTI_POLYGON) { var c = i.overflow ? null : []; switch (s) { case bt.POINT: case bt.MULTI_POINT: l = t.getFlatCoordinates(); break; case bt.LINE_STRING: l = t.getFlatMidpoint(); break; case bt.CIRCLE: l = t.getCenter(); break; case bt.MULTI_LINE_STRING: l = t.getFlatMidpoints(), u = 2; break; case bt.POLYGON: l = t.getFlatInteriorPoint(), i.overflow || c.push(l[2] / this.resolution), u = 3; break; case bt.MULTI_POLYGON: var h = t.getFlatInteriorPoints(); l = []; for (x = 0, w = h.length; x < w; x += 3) i.overflow || c.push(h[x + 2] / this.resolution), l.push(h[x], h[x + 1]); if (0 === l.length) return; u = 2 } if ((R = this.appendFlatPointCoordinates(l, u)) === a) return; this.saveTextStates_(), (i.backgroundFill || i.backgroundStroke) && (this.setFillStrokeStyle(i.backgroundFill, i.backgroundStroke), i.backgroundFill && (this.updateFillStyle(this.state, this.createFill), this.hitDetectionInstructions.push(this.createFill(this.state))), i.backgroundStroke && (this.updateStrokeStyle(this.state, this.applyStroke), this.hitDetectionInstructions.push(this.createStroke(this.state)))), this.beginGeometry(t, e); var p = i.padding; if (p != fa && (i.scale[0] < 0 || i.scale[1] < 0)) { var f = i.padding[0], d = i.padding[1], g = i.padding[2], y = i.padding[3]; i.scale[0] < 0 && (d = -d, y = -y), i.scale[1] < 0 && (f = -f, g = -g), p = [f, d, g, y] } var m = this.pixelRatio; this.instructions.push([Ig.DRAW_IMAGE, a, R, null, NaN, NaN, NaN, 1, 0, 0, this.textRotateWithView_, this.textRotation_, [1, 1], NaN, this.declutterImageWithText_, p == fa ? fa : p.map((function (t) { return t * m })), !!i.backgroundFill, !!i.backgroundStroke, this.text_, this.textKey_, this.strokeKey_, this.fillKey_, this.textOffsetX_, this.textOffsetY_, c]); var v = 1 / m; this.hitDetectionInstructions.push([Ig.DRAW_IMAGE, a, R, null, NaN, NaN, NaN, 1, 0, 0, this.textRotateWithView_, this.textRotation_, [v, v], NaN, this.declutterImageWithText_, p, !!i.backgroundFill, !!i.backgroundStroke, this.text_, this.textKey_, this.strokeKey_, this.fillKey_, this.textOffsetX_, this.textOffsetY_, c]), this.endGeometry(e) } else { if (!Re(this.getBufferedMaxExtent(), t.getExtent())) return; var _ = void 0; if (l = t.getFlatCoordinates(), s == bt.LINE_STRING) _ = [l.length]; else if (s == bt.MULTI_LINE_STRING) _ = t.getEnds(); else if (s == bt.POLYGON) _ = t.getEnds().slice(0, 1); else if (s == bt.MULTI_POLYGON) { var b = t.getEndss(); _ = []; for (var x = 0, w = b.length; x < w; ++x) _.push(b[x][0]) } this.beginGeometry(t, e); for (var S = i.textAlign, E = 0, T = void 0, C = 0, O = _.length; C < O; ++C) { if (null == S) { var P = Gg(i.maxAngle, l, E, _[C], u); E = P[0], T = P[1] } else T = _[C]; for (var x = E; x < T; x += u) o.push(l[x], l[x + 1]); var R = o.length; E = _[C], this.drawChars_(a, R), a = R } this.endGeometry(e) } } }, e.prototype.saveTextStates_ = function () { var t = this.textStrokeState_, e = this.textState_, r = this.textFillState_, n = this.strokeKey_; t && (n in this.strokeStates || (this.strokeStates[n] = { strokeStyle: t.strokeStyle, lineCap: t.lineCap, lineDashOffset: t.lineDashOffset, lineWidth: t.lineWidth, lineJoin: t.lineJoin, miterLimit: t.miterLimit, lineDash: t.lineDash })); var i = this.textKey_; i in this.textStates || (this.textStates[i] = { font: e.font, textAlign: e.textAlign || "center", textBaseline: e.textBaseline || "middle", scale: e.scale }); var o = this.fillKey_; r && (o in this.fillStates || (this.fillStates[o] = {fillStyle: r.fillStyle})) }, e.prototype.drawChars_ = function (t, e) { var r = this.textStrokeState_, n = this.textState_, i = this.strokeKey_, o = this.textKey_, a = this.fillKey_; this.saveTextStates_(); var s = this.pixelRatio, l = Ug[n.textBaseline], u = this.textOffsetY_ * s, c = this.text_, h = r ? r.lineWidth * Math.abs(n.scale[0]) / 2 : 0; this.instructions.push([Ig.DRAW_CHARS, t, e, l, n.overflow, a, n.maxAngle, s, u, i, h * s, c, o, 1]), this.hitDetectionInstructions.push([Ig.DRAW_CHARS, t, e, l, n.overflow, a, n.maxAngle, 1, u, i, h, c, o, 1 / s]) }, e.prototype.setTextStyle = function (t, e) { var r, n, i; if (t) { var a = t.getFill(); a ? ((n = this.textFillState_) || (n = {}, this.textFillState_ = n), n.fillStyle = Tu(a.getColor() || "#000")) : (n = null, this.textFillState_ = n); var s = t.getStroke(); if (s) { (i = this.textStrokeState_) || (i = {}, this.textStrokeState_ = i); var l = s.getLineDash(), u = s.getLineDashOffset(), c = s.getWidth(), h = s.getMiterLimit(); i.lineCap = s.getLineCap() || "round", i.lineDash = l ? l.slice() : pa, i.lineDashOffset = void 0 === u ? 0 : u, i.lineJoin = s.getLineJoin() || "round", i.lineWidth = void 0 === c ? 1 : c, i.miterLimit = void 0 === h ? 10 : h, i.strokeStyle = Tu(s.getColor() || "#000") } else i = null, this.textStrokeState_ = i; r = this.textState_; var p = t.getFont() || "10px sans-serif"; ba(p); var f = t.getScaleArray(); r.overflow = t.getOverflow(), r.font = p, r.maxAngle = t.getMaxAngle(), r.placement = t.getPlacement(), r.textAlign = t.getTextAlign(), r.textBaseline = t.getTextBaseline() || "middle", r.backgroundFill = t.getBackgroundFill(), r.backgroundStroke = t.getBackgroundStroke(), r.padding = t.getPadding() || fa, r.scale = void 0 === f ? [1, 1] : f; var d = t.getOffsetX(), g = t.getOffsetY(), y = t.getRotateWithView(), m = t.getRotation(); this.text_ = t.getText() || "", this.textOffsetX_ = void 0 === d ? 0 : d, this.textOffsetY_ = void 0 === g ? 0 : g, this.textRotateWithView_ = void 0 !== y && y, this.textRotation_ = void 0 === m ? 0 : m, this.strokeKey_ = i ? ("string" == typeof i.strokeStyle ? i.strokeStyle : o(i.strokeStyle)) + i.lineCap + i.lineDashOffset + "|" + i.lineWidth + i.lineJoin + i.miterLimit + "[" + i.lineDash.join() + "]" : "", this.textKey_ = r.font + r.scale + (r.textAlign || "?") + (r.textBaseline || "?"), this.fillKey_ = n ? "string" == typeof n.fillStyle ? n.fillStyle : "|" + o(n.fillStyle) : "" } else this.text_ = ""; this.declutterImageWithText_ = e }, e }(Mg), Vg = {Circle: Dg, Default: Mg, Image: Ag, LineString: jg, Polygon: Dg, Text: Bg}, Yg = function () { function t(t, e, r, n) { this.tolerance_ = t, this.maxExtent_ = e, this.pixelRatio_ = n, this.resolution_ = r, this.buildersByZIndex_ = {} } return t.prototype.finish = function () { var t = {}; for (var e in this.buildersByZIndex_) { t[e] = t[e] || {}; var r = this.buildersByZIndex_[e]; for (var n in r) { var i = r[n].finish(); t[e][n] = i } } return t }, t.prototype.getBuilder = function (t, e) { var r = void 0 !== t ? t.toString() : "0", n = this.buildersByZIndex_[r]; void 0 === n && (n = {}, this.buildersByZIndex_[r] = n); var i = n[e]; void 0 === i && (i = new (0, Vg[e])(this.tolerance_, this.maxExtent_, this.resolution_, this.pixelRatio_), n[e] = i); return i }, t }(); function Wg(t, e, r, n, i, o, a, s, l, u, c, h) { var p = t[e], f = t[e + 1], d = 0, g = 0, y = 0, m = 0; function v() { d = p, g = f, p = t[e += n], f = t[e + 1], m += y, y = Math.sqrt((p - d) * (p - d) + (f - g) * (f - g)) } do { v() } while (e < r - n && m + y < o); for (var _ = (o - m) / y, b = qe(d, p, _), x = qe(g, f, _), w = e - n, S = m, E = o + s * l(u, i, c); e < r - n && m + y < E;) v(); var T, C = qe(d, p, _ = (E - m) / y), O = qe(g, f, _); if (h) { var P = [b, x, C, O]; un(P, 0, 4, 2, h, P, P), T = P[0] > P[2] } else T = b > C; var R, I = Math.PI, L = [], M = w + n === e; if (y = 0, m = S, p = t[e = w], f = t[e + 1], M) { v(); var F = Math.atan2(f - g, p - d); T && (F += F > 0 ? -I : I); var A = (C + b) / 2, k = (O + x) / 2; return L[0] = [A, k, (E - o) / 2, F, i], L } for (var j = 0, N = i.length; j < N;) { v(); var D = Math.atan2(f - g, p - d); if (T && (D += D > 0 ? -I : I), void 0 !== R) { var G = D - R; if (G += G > I ? -2 * I : G < -I ? 2 * I : 0, Math.abs(G) > a) return null } R = D; for (var z = j, U = 0; j < N; ++j) { var B = s * l(u, i[T ? N - j - 1 : j], c); if (e + n < r && m + y < o + U + B / 2) break; U += B } if (j !== z) { var V = T ? i.substring(N - z, N - j) : i.substring(z, j); A = qe(d, p, _ = (o + U / 2 - m) / y), k = qe(g, f, _); L.push([A, k, U / 2, D, V]), o += U } } return L } function qg(t, e, r, n) { for (var i = t[e], o = t[e + 1], a = 0, s = e + n; s < r; s += n) { var l = t[s], u = t[s + 1]; a += Math.sqrt((l - i) * (l - i) + (u - o) * (u - o)), i = l, o = u } return a } var Xg = [1 / 0, 1 / 0, -1 / 0, -1 / 0], Zg = [], Kg = [], Hg = [], $g = []; function Jg(t) { return t[3].declutterBox } var Qg = new RegExp("[" + String.fromCharCode(1425) + "-" + String.fromCharCode(2303) + String.fromCharCode(64285) + "-" + String.fromCharCode(65023) + String.fromCharCode(65136) + "-" + String.fromCharCode(65276) + String.fromCharCode(67584) + "-" + String.fromCharCode(69631) + String.fromCharCode(124928) + "-" + String.fromCharCode(126975) + "]"); function ty(t, e) { return "start" !== e && "end" !== e || Qg.test(t) || (e = "start" === e ? "left" : "right"), Ug[e] } var ey = function () { function t(t, e, r, n, i) { this.overlaps = r, this.pixelRatio = e, this.resolution = t, this.alignFill_, this.instructions = n.instructions, this.coordinates = n.coordinates, this.coordinateCache_ = {}, this.renderBuffer_ = i, this.renderedTransform_ = [1, 0, 0, 1, 0, 0], this.hitDetectionInstructions = n.hitDetectionInstructions, this.pixelCoordinates_ = null, this.viewRotation_ = 0, this.fillStates = n.fillStates || {}, this.strokeStates = n.strokeStates || {}, this.textStates = n.textStates || {}, this.widths_ = {}, this.labels_ = {} } return t.prototype.createLabel = function (t, e, r, n) { var i = t + e + r + n; if (this.labels_[i]) return this.labels_[i]; var o = n ? this.strokeStates[n] : null, a = r ? this.fillStates[r] : null, s = this.textStates[e], l = this.pixelRatio, u = [s.scale[0] * l, s.scale[1] * l], c = ty(t, s.textAlign || "center"), h = n && o.lineWidth ? o.lineWidth : 0, p = t.split("\n"), f = p.length, d = [], g = Ta(s.font, p, d), y = xa(s.font), m = g + h, v = [], _ = (m + 2) * u[0], b = (y * f + h) * u[1], x = { width: _ < 0 ? Math.floor(_) : Math.ceil(_), height: b < 0 ? Math.floor(b) : Math.ceil(b), contextInstructions: v }; (1 == u[0] && 1 == u[1] || v.push("scale", u), v.push("font", s.font), n) && (v.push("strokeStyle", o.strokeStyle), v.push("lineWidth", h), v.push("lineCap", o.lineCap), v.push("lineJoin", o.lineJoin), v.push("miterLimit", o.miterLimit), (Yi ? OffscreenCanvasRenderingContext2D : CanvasRenderingContext2D).prototype.setLineDash && (v.push("setLineDash", [o.lineDash]), v.push("lineDashOffset", o.lineDashOffset))); r && v.push("fillStyle", a.fillStyle), v.push("textBaseline", "middle"), v.push("textAlign", "center"); var w, S = .5 - c, E = c * m + S * h; if (n) for (w = 0; w < f; ++w) v.push("strokeText", [p[w], E + S * d[w], .5 * (h + y) + w * y]); if (r) for (w = 0; w < f; ++w) v.push("fillText", [p[w], E + S * d[w], .5 * (h + y) + w * y]); return this.labels_[i] = x, x }, t.prototype.replayTextBackground_ = function (t, e, r, n, i, o, a) { t.beginPath(), t.moveTo.apply(t, e), t.lineTo.apply(t, r), t.lineTo.apply(t, n), t.lineTo.apply(t, i), t.lineTo.apply(t, e), o && (this.alignFill_ = o[2], this.fill_(t)), a && (this.setStrokeStyle_(t, a), t.stroke()) }, t.prototype.calculateImageOrLabelDimensions_ = function (t, e, r, n, i, o, a, s, l, u, c, h, p, f, d, g) { var y, m = r - (a *= h[0]), v = n - (s *= h[1]), _ = i + l > t ? t - l : i, b = o + u > e ? e - u : o, x = f[3] + _ * h[0] + f[1], w = f[0] + b * h[1] + f[2], S = m - f[3], E = v - f[0]; return (d || 0 !== c) && (Zg[0] = S, $g[0] = S, Zg[1] = E, Kg[1] = E, Kg[0] = S + x, Hg[0] = Kg[0], Hg[1] = E + w, $g[1] = Hg[1]), 0 !== c ? (It(y = kt([1, 0, 0, 1, 0, 0], r, n, 1, 1, c, -r, -n), Zg), It(y, Kg), It(y, Hg), It(y, $g), ie(Math.min(Zg[0], Kg[0], Hg[0], $g[0]), Math.min(Zg[1], Kg[1], Hg[1], $g[1]), Math.max(Zg[0], Kg[0], Hg[0], $g[0]), Math.max(Zg[1], Kg[1], Hg[1], $g[1]), Xg)) : ie(Math.min(S, S + x), Math.min(E, E + w), Math.max(S, S + x), Math.max(E, E + w), Xg), p && (m = Math.round(m), v = Math.round(v)), { drawImageX: m, drawImageY: v, drawImageW: _, drawImageH: b, originX: l, originY: u, declutterBox: {minX: Xg[0], minY: Xg[1], maxX: Xg[2], maxY: Xg[3], value: g}, canvasTransform: y, scale: h } }, t.prototype.replayImageOrLabel_ = function (t, e, r, n, i, o, a) { var s = !(!o && !a), l = n.declutterBox, u = t.canvas, c = a ? a[2] * n.scale[0] / 2 : 0; return l.minX - c <= u.width / e && l.maxX + c >= 0 && l.minY - c <= u.height / e && l.maxY + c >= 0 && (s && this.replayTextBackground_(t, Zg, Kg, Hg, $g, o, a), Oa(t, n.canvasTransform, i, r, n.originX, n.originY, n.drawImageW, n.drawImageH, n.drawImageX, n.drawImageY, n.scale)), !0 }, t.prototype.fill_ = function (t) { if (this.alignFill_) { var e = It(this.renderedTransform_, [0, 0]), r = 512 * this.pixelRatio; t.save(), t.translate(e[0] % r, e[1] % r), t.rotate(this.viewRotation_) } t.fill(), this.alignFill_ && t.restore() }, t.prototype.setStrokeStyle_ = function (t, e) { t.strokeStyle = e[1], t.lineWidth = e[2], t.lineCap = e[3], t.lineJoin = e[4], t.miterLimit = e[5], t.setLineDash && (t.lineDashOffset = e[7], t.setLineDash(e[6])) }, t.prototype.drawLabelWithPointPlacement_ = function (t, e, r, n) { var i = this.textStates[e], o = this.createLabel(t, e, n, r), a = this.strokeStates[r], s = this.pixelRatio, l = ty(t, i.textAlign || "center"), u = Ug[i.textBaseline || "middle"], c = a && a.lineWidth ? a.lineWidth : 0; return { label: o, anchorX: l * (o.width / s - 2 * i.scale[0]) + 2 * (.5 - l) * c, anchorY: u * o.height / s + 2 * (.5 - u) * c } }, t.prototype.execute_ = function (t, e, r, n, i, o, a, s) { var l; this.pixelCoordinates_ && b(r, this.renderedTransform_) ? l = this.pixelCoordinates_ : (this.pixelCoordinates_ || (this.pixelCoordinates_ = []), l = ln(this.coordinates, 0, this.coordinates.length, 2, r, this.pixelCoordinates_), Rt(this.renderedTransform_, r)); for (var u, c, h, p, f, d, g, y, m, v, _, x, w, S, E, T, C = 0, O = n.length, P = 0, R = 0, I = 0, L = null, M = null, F = this.coordinateCache_, A = this.viewRotation_, k = Math.round(1e12 * Math.atan2(-r[1], r[0])) / 1e12, j = { context: t, pixelRatio: this.pixelRatio, resolution: this.resolution, rotation: A }, N = this.instructions != n || this.overlaps ? 0 : 200; C < O;) { var D = n[C]; switch (D[0]) { case Ig.BEGIN_GEOMETRY: w = D[1], T = D[3], w.getGeometry() ? void 0 === a || Re(a, T.getExtent()) ? ++C : C = D[2] + 1 : C = D[2]; break; case Ig.BEGIN_PATH: R > N && (this.fill_(t), R = 0), I > N && (t.stroke(), I = 0), R || I || (t.beginPath(), p = NaN, f = NaN), ++C; break; case Ig.CIRCLE: var G = l[P = D[1]], z = l[P + 1], U = l[P + 2] - G, B = l[P + 3] - z, V = Math.sqrt(U * U + B * B); t.moveTo(G + V, z), t.arc(G, z, V, 0, 2 * Math.PI, !0), ++C; break; case Ig.CLOSE_PATH: t.closePath(), ++C; break; case Ig.CUSTOM: P = D[1], u = D[2]; var Y = D[3], W = D[4], q = 6 == D.length ? D[5] : void 0; j.geometry = Y, j.feature = w, C in F || (F[C] = []); var X = F[C]; q ? q(l, P, u, 2, X) : (X[0] = l[P], X[1] = l[P + 1], X.length = 2), W(X, j), ++C; break; case Ig.DRAW_IMAGE: P = D[1], u = D[2], y = D[3], c = D[4], h = D[5]; var Z = D[6], K = D[7], H = D[8], $ = D[9], J = D[10], Q = D[11], tt = D[12], et = D[13], rt = D[14]; if (!y && D.length >= 19) { m = D[18], v = D[19], _ = D[20], x = D[21]; var nt = this.drawLabelWithPointPlacement_(m, v, _, x); y = nt.label, D[3] = y; var it = D[22]; c = (nt.anchorX - it) * this.pixelRatio, D[4] = c; var ot = D[23]; h = (nt.anchorY - ot) * this.pixelRatio, D[5] = h, Z = y.height, D[6] = Z, et = y.width, D[13] = et } var at = void 0; D.length > 24 && (at = D[24]); var st = void 0, lt = void 0, ut = void 0; D.length > 16 ? (st = D[15], lt = D[16], ut = D[17]) : (st = fa, lt = !1, ut = !1), J && k ? Q += A : J || k || (Q -= A); for (var ct = 0; P < u; P += 2) if (!(at && at[ct++] < et / this.pixelRatio)) { var ht = [t, e, y, Dt = this.calculateImageOrLabelDimensions_(y.width, y.height, l[P], l[P + 1], et, Z, c, h, H, $, Q, tt, i, st, lt || ut, w), K, lt ? L : null, ut ? M : null], pt = void 0, ft = void 0; if (s && rt) { if (!rt[P]) { rt[P] = ht; continue } if (pt = rt[P], delete rt[P], ft = Jg(pt), s.collides(ft)) continue } s && s.collides(Dt.declutterBox) || (pt && (s && s.insert(ft), this.replayImageOrLabel_.apply(this, pt)), s && s.insert(Dt.declutterBox), this.replayImageOrLabel_.apply(this, ht)) } ++C; break; case Ig.DRAW_CHARS: var dt = D[1], gt = D[2], yt = D[3], mt = D[4]; x = D[5]; var vt = D[6], _t = D[7], bt = D[8]; _ = D[9]; var xt = D[10]; m = D[11], v = D[12]; var wt = [D[13], D[13]], St = this.textStates[v], Et = St.font, Tt = [St.scale[0] * _t, St.scale[1] * _t], Ct = void 0; Et in this.widths_ ? Ct = this.widths_[Et] : (Ct = {}, this.widths_[Et] = Ct); var Ot = qg(l, dt, gt, 2), Pt = Math.abs(Tt[0]) * Ea(Et, m, Ct); if (mt || Pt <= Ot) { var It = this.textStates[v].textAlign, Lt = Wg(l, dt, gt, 2, m, (Ot - Pt) * Ug[It], vt, Math.abs(Tt[0]), Ea, Et, Ct, k ? 0 : this.viewRotation_); t:if (Lt) { var Mt = [], Ft = void 0, At = void 0, kt = void 0, jt = void 0, Nt = void 0; if (_) for (Ft = 0, At = Lt.length; Ft < At; ++Ft) { kt = (Nt = Lt[Ft])[4], jt = this.createLabel(kt, v, "", _), c = Nt[2] + (Tt[0] < 0 ? -xt : xt), h = yt * jt.height + 2 * (.5 - yt) * xt * Tt[1] / Tt[0] - bt; var Dt = this.calculateImageOrLabelDimensions_(jt.width, jt.height, Nt[0], Nt[1], jt.width, jt.height, c, h, 0, 0, Nt[3], wt, !1, fa, !1, w); if (s && s.collides(Dt.declutterBox)) break t; Mt.push([t, e, jt, Dt, 1, null, null]) } if (x) for (Ft = 0, At = Lt.length; Ft < At; ++Ft) { kt = (Nt = Lt[Ft])[4], jt = this.createLabel(kt, v, x, ""), c = Nt[2], h = yt * jt.height - bt; Dt = this.calculateImageOrLabelDimensions_(jt.width, jt.height, Nt[0], Nt[1], jt.width, jt.height, c, h, 0, 0, Nt[3], wt, !1, fa, !1, w); if (s && s.collides(Dt.declutterBox)) break t; Mt.push([t, e, jt, Dt, 1, null, null]) } s && s.load(Mt.map(Jg)); for (var Gt = 0, zt = Mt.length; Gt < zt; ++Gt) this.replayImageOrLabel_.apply(this, Mt[Gt]) } } ++C; break; case Ig.END_GEOMETRY: if (void 0 !== o) { var Ut = o(w = D[1], T); if (Ut) return Ut } ++C; break; case Ig.FILL: N ? R++ : this.fill_(t), ++C; break; case Ig.MOVE_TO_LINE_TO: for (P = D[1], u = D[2], S = l[P], g = (E = l[P + 1]) + .5 | 0, (d = S + .5 | 0) === p && g === f || (t.moveTo(S, E), p = d, f = g), P += 2; P < u; P += 2) d = (S = l[P]) + .5 | 0, g = (E = l[P + 1]) + .5 | 0, P != u - 2 && d === p && g === f || (t.lineTo(S, E), p = d, f = g); ++C; break; case Ig.SET_FILL_STYLE: L = D, this.alignFill_ = D[2], R && (this.fill_(t), R = 0, I && (t.stroke(), I = 0)), t.fillStyle = D[1], ++C; break; case Ig.SET_STROKE_STYLE: M = D, I && (t.stroke(), I = 0), this.setStrokeStyle_(t, D), ++C; break; case Ig.STROKE: N ? I++ : t.stroke(), ++C; break; default: ++C } } R && this.fill_(t), I && t.stroke() }, t.prototype.execute = function (t, e, r, n, i, o) { this.viewRotation_ = n, this.execute_(t, e, r, this.instructions, i, void 0, void 0, o) }, t.prototype.executeHitDetection = function (t, e, r, n, i) { return this.viewRotation_ = r, this.execute_(t, 1, e, this.hitDetectionInstructions, !0, n, i) }, t }(), ry = [Bu, Du, Uu, zu, Vu, Gu], ny = function () { function t(t, e, r, n, i, o) { this.maxExtent_ = t, this.overlaps_ = n, this.pixelRatio_ = r, this.resolution_ = e, this.renderBuffer_ = o, this.executorsByZIndex_ = {}, this.hitDetectionContext_ = null, this.hitDetectionTransform_ = [1, 0, 0, 1, 0, 0], this.createExecutors_(i) } return t.prototype.clip = function (t, e) { var r = this.getClipCoords(e); t.beginPath(), t.moveTo(r[0], r[1]), t.lineTo(r[2], r[3]), t.lineTo(r[4], r[5]), t.lineTo(r[6], r[7]), t.clip() }, t.prototype.createExecutors_ = function (t) { for (var e in t) { var r = this.executorsByZIndex_[e]; void 0 === r && (r = {}, this.executorsByZIndex_[e] = r); var n = t[e], i = [this.renderBuffer_ || 0, this.renderBuffer_ || 0]; for (var o in n) { var a = n[o]; r[o] = new ey(this.resolution_, this.pixelRatio_, this.overlaps_, a, i) } } }, t.prototype.hasExecutors = function (t) { for (var e in this.executorsByZIndex_) for (var r = this.executorsByZIndex_[e], n = 0, i = t.length; n < i; ++n) if (t[n] in r) return !0; return !1 }, t.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i, o) { var a = 2 * (n = Math.round(n)) + 1, s = kt(this.hitDetectionTransform_, n + .5, n + .5, 1 / e, -1 / e, -r, -t[0], -t[1]), l = !this.hitDetectionContext_; l && (this.hitDetectionContext_ = uo(a, a)); var u, c = this.hitDetectionContext_; c.canvas.width !== a || c.canvas.height !== a ? (c.canvas.width = a, c.canvas.height = a) : l || c.clearRect(0, 0, a, a), void 0 !== this.renderBuffer_ && (pe(u = [1 / 0, 1 / 0, -1 / 0, -1 / 0], t), Ht(u, e * (this.renderBuffer_ + n), u)); var h, p = oy(n); function f(t, e) { for (var r = c.getImageData(0, 0, a, a).data, s = 0, l = p.length; s < l; s++) if (r[p[s]] > 0) { if (!o || h !== zu && h !== Vu || -1 !== o.indexOf(t)) { var u = (p[s] - 3) / 4, f = n - u % a, d = n - (u / a | 0), g = i(t, e, f * f + d * d); if (g) return g } c.clearRect(0, 0, a, a); break } } var g, y, m, v, _, b = Object.keys(this.executorsByZIndex_).map(Number); for (b.sort(d), g = b.length - 1; g >= 0; --g) { var x = b[g].toString(); for (m = this.executorsByZIndex_[x], y = ry.length - 1; y >= 0; --y) if (void 0 !== (v = m[h = ry[y]]) && (_ = v.executeHitDetection(c, s, r, f, u))) return _ } }, t.prototype.getClipCoords = function (t) { var e = this.maxExtent_; if (!e) return null; var r = e[0], n = e[1], i = e[2], o = e[3], a = [r, n, r, o, i, o, i, n]; return ln(a, 0, 8, 2, t, a), a }, t.prototype.isEmpty = function () { return I(this.executorsByZIndex_) }, t.prototype.execute = function (t, e, r, n, i, o, a) { var s = Object.keys(this.executorsByZIndex_).map(Number); s.sort(d), this.maxExtent_ && (t.save(), this.clip(t, r)); var l, u, c, h, p, f, g = o || ry; for (a && s.reverse(), l = 0, u = s.length; l < u; ++l) { var y = s[l].toString(); for (p = this.executorsByZIndex_[y], c = 0, h = g.length; c < h; ++c) { void 0 !== (f = p[g[c]]) && f.execute(t, e, r, n, i, a) } } this.maxExtent_ && t.restore() }, t }(), iy = {}; function oy(t) { if (void 0 !== iy[t]) return iy[t]; for (var e = 2 * t + 1, r = t * t, n = new Array(r + 1), i = 0; i <= t; ++i) for (var o = 0; o <= t; ++o) { var a = i * i + o * o; if (a > r) break; var s = n[a]; s || (s = [], n[a] = s), s.push(4 * ((t + i) * e + (t + o)) + 3), i > 0 && s.push(4 * ((t - i) * e + (t + o)) + 3), o > 0 && (s.push(4 * ((t + i) * e + (t - o)) + 3), i > 0 && s.push(4 * ((t - i) * e + (t - o)) + 3)) } for (var l = [], u = (i = 0, n.length); i < u; ++i) n[i] && l.push.apply(l, n[i]); return iy[t] = l, l } var ay = ny; function sy(t, e, r, n, i, o, a) { var s = uo(t[0] / 2, t[1] / 2); s.imageSmoothingEnabled = !1; for (var l = s.canvas, u = new Nu(s, .5, i, null, a), c = r.length, h = Math.floor(16777215 / c), p = {}, f = 1; f <= c; ++f) { var g = r[f - 1], y = g.getStyleFunction() || n; if (n) { var m = y(g, o); if (m) { Array.isArray(m) || (m = [m]); for (var v = "#" + ("000000" + (f * h).toString(16)).slice(-6), _ = 0, b = m.length; _ < b; ++_) { var x = m[_], w = x.clone(), S = w.getFill(); S && S.setColor(v); var E = w.getStroke(); E && E.setColor(v), w.setText(void 0); var T = x.getImage(); if (T) { var C = T.getImageSize(); if (!C) continue; var O = document.createElement("canvas"); O.width = C[0], O.height = C[1]; var P = O.getContext("2d", {alpha: !1}); P.fillStyle = v; var R = P.canvas; P.fillRect(0, 0, R.width, R.height), uo(C ? C[0] : R.width, C ? C[1] : R.height).drawImage(R, 0, 0), w.setImage(new dp({ img: R, imgSize: C, anchor: T.getAnchor(), anchorXUnits: np, anchorYUnits: np, offset: T.getOrigin(), size: T.getSize(), opacity: T.getOpacity(), scale: T.getScale(), rotation: T.getRotation(), rotateWithView: T.getRotateWithView() })) } var I = Number(w.getZIndex()); (A = p[I]) || (A = {}, p[I] = A, A[bt.POLYGON] = [], A[bt.CIRCLE] = [], A[bt.LINE_STRING] = [], A[bt.POINT] = []); var L = w.getGeometryFunction()(g); L && Re(i, L.getExtent()) && A[L.getType().replace("Multi", "")].push(L, w) } } } } for (var M = Object.keys(p).map(Number).sort(d), F = (f = 0, M.length); f < F; ++f) { var A = p[M[f]]; for (var k in A) { var j = A[k]; for (_ = 0, b = j.length; _ < b; _ += 2) { u.setStyle(j[_ + 1]); for (var N = 0, D = e.length; N < D; ++N) u.setTransform(e[N]), u.drawGeometry(j[_]) } } } return s.getImageData(0, 0, l.width, l.height) } function ly(t, e, r) { var n = []; if (r) { var i = 4 * (Math.round(t[0] / 2) + Math.round(t[1] / 2) * r.width), o = r.data[i], a = r.data[i + 1], s = r.data[i + 2] + 256 * (a + 256 * o), l = Math.floor(16777215 / e.length); s && s % l == 0 && n.push(e[s / l - 1]) } return n } var uy = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), cy = function (t) { function e(e) { var r = t.call(this, e) || this; return r.boundHandleStyleImageChange_ = r.handleStyleImageChange_.bind(r), r.animatingOrInteracting_, r.dirty_ = !1, r.hitDetectionImageData_ = null, r.renderedFeatures_ = null, r.renderedRevision_ = -1, r.renderedResolution_ = NaN, r.renderedExtent_ = [1 / 0, 1 / 0, -1 / 0, -1 / 0], r.renderedRotation_, r.renderedCenter_ = null, r.renderedProjection_ = null, r.renderedRenderOrder_ = null, r.replayGroup_ = null, r.replayGroupChanged = !0, r.declutterExecutorGroup = null, r.clipping = !0, r } return uy(e, t), e.prototype.useContainer = function (e, r, n) { n < 1 && (e = null), t.prototype.useContainer.call(this, e, r, n) }, e.prototype.renderWorlds = function (t, e, r) { var n = e.extent, i = e.viewState, o = i.center, a = i.resolution, s = i.projection, l = i.rotation, u = s.getExtent(), c = this.getLayer().getSource(), h = e.pixelRatio, p = e.viewHints, f = !(p[ns] || p[is]), d = this.context, g = Math.round(e.size[0] * h), y = Math.round(e.size[1] * h), m = c.getWrapX() && s.canWrapX(), v = m ? Pe(u) : null, _ = m ? Math.ceil((n[2] - u[2]) / v) + 1 : 1, b = m ? Math.floor((n[0] - u[0]) / v) : 0; do { var x = this.getRenderTransform(o, a, l, h, g, y, b * v); t.execute(d, 1, x, l, f, void 0, r) } while (++b < _) }, e.prototype.renderDeclutter = function (t) { this.declutterExecutorGroup && this.renderWorlds(this.declutterExecutorGroup, t, t.declutterTree) }, e.prototype.renderFrame = function (t, e) { var r = t.pixelRatio, n = t.layerStatesArray[t.layerIndex]; Ft(this.pixelTransform, 1 / r, 1 / r), jt(this.inversePixelTransform, this.pixelTransform); var i = Dt(this.pixelTransform); this.useContainer(e, i, n.opacity); var o = this.context, a = o.canvas, s = this.replayGroup_, l = this.declutterExecutorGroup; if ((!s || s.isEmpty()) && (!l || l.isEmpty())) return !this.containerReused && a.width > 0 && (a.width = 0), this.container; var u = Math.round(t.size[0] * r), c = Math.round(t.size[1] * r); a.width != u || a.height != c ? (a.width = u, a.height = c, a.style.transform !== i && (a.style.transform = i)) : this.containerReused || o.clearRect(0, 0, u, c), this.preRender(o, t); var h = t.viewState, p = h.projection, f = !1; if (n.extent && this.clipping) { var d = on(n.extent, p); (f = !te(d, t.extent) && Re(d, t.extent)) && this.clipUnrotated(o, t, d) } this.renderWorlds(s, t), f && o.restore(), this.postRender(o, t); var g = n.opacity, y = this.container; return g !== parseFloat(y.style.opacity) && (y.style.opacity = 1 === g ? "" : String(g)), this.renderedRotation_ !== h.rotation && (this.renderedRotation_ = h.rotation, this.hitDetectionImageData_ = null), this.container }, e.prototype.getFeatures = function (t) { return new Promise(function (e) { if (!this.hitDetectionImageData_ && !this.animatingOrInteracting_) { var r = [this.context.canvas.width, this.context.canvas.height]; It(this.pixelTransform, r); var n = this.renderedCenter_, i = this.renderedResolution_, o = this.renderedRotation_, a = this.renderedProjection_, s = this.renderedExtent_, l = this.getLayer(), u = [], c = r[0] / 2, h = r[1] / 2; u.push(this.getRenderTransform(n, i, o, .5, c, h, 0).slice()); var p = l.getSource(), f = a.getExtent(); if (p.getWrapX() && a.canWrapX() && !te(f, s)) { for (var d = s[0], g = Pe(f), y = 0, m = void 0; d < f[0];) m = g * --y, u.push(this.getRenderTransform(n, i, o, .5, c, h, m).slice()), d += g; for (y = 0, d = s[2]; d > f[2];) m = g * ++y, u.push(this.getRenderTransform(n, i, o, .5, c, h, m).slice()), d -= g } this.hitDetectionImageData_ = sy(r, u, this.renderedFeatures_, l.getStyleFunction(), s, i, o) } e(ly(t, this.renderedFeatures_, this.hitDetectionImageData_)) }.bind(this)) }, e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i) { var a = this; if (this.replayGroup_) { var s, l = e.viewState.resolution, u = e.viewState.rotation, c = this.getLayer(), h = {}, p = function (t, e, r) { var a = o(t), s = h[a]; if (s) { if (!0 !== s && r < s.distanceSq) { if (0 === r) return h[a] = !0, i.splice(i.lastIndexOf(s), 1), n(t, c, e); s.geometry = e, s.distanceSq = r } } else { if (0 === r) return h[a] = !0, n(t, c, e); i.push(h[a] = {feature: t, layer: c, geometry: e, distanceSq: r, callback: n}) } }, f = [this.replayGroup_]; return this.declutterExecutorGroup && f.push(this.declutterExecutorGroup), f.some((function (n) { return s = n.forEachFeatureAtCoordinate(t, l, u, r, p, n === a.declutterExecutorGroup ? e.declutterTree.all().map((function (t) { return t.value })) : null) })), s } }, e.prototype.handleFontsChanged = function () { var t = this.getLayer(); t.getVisible() && this.replayGroup_ && t.changed() }, e.prototype.handleStyleImageChange_ = function (t) { this.renderIfReadyAndVisible() }, e.prototype.prepareFrame = function (t) { var e = this.getLayer(), r = e.getSource(); if (!r) return !1; var n = t.viewHints[ns], i = t.viewHints[is], o = e.getUpdateWhileAnimating(), a = e.getUpdateWhileInteracting(); if (!this.dirty_ && !o && n || !a && i) return this.animatingOrInteracting_ = !0, !0; this.animatingOrInteracting_ = !1; var s = t.extent, l = t.viewState, u = l.projection, c = l.resolution, h = t.pixelRatio, p = e.getRevision(), f = e.getRenderBuffer(), d = e.getRenderOrder(); void 0 === d && (d = Wu); var g = l.center.slice(), y = Ht(s, f * c), m = [y.slice()], v = u.getExtent(); if (r.getWrapX() && u.canWrapX() && !te(v, t.extent)) { var _ = Pe(v), b = Math.max(Pe(y) / 2, _); y[0] = v[0] - b, y[2] = v[2] + b, Fr(g, u); var x = ke(m[0], u); x[0] < v[0] && x[2] < v[2] ? m.push([x[0] + _, x[1], x[2] + _, x[3]]) : x[0] > v[0] && x[2] > v[2] && m.push([x[0] - _, x[1], x[2] - _, x[3]]) } if (!this.dirty_ && this.renderedResolution_ == c && this.renderedRevision_ == p && this.renderedRenderOrder_ == d && te(this.renderedExtent_, y)) return this.replayGroupChanged = !1, !0; this.replayGroup_ = null, this.dirty_ = !1; var w, S = new Yg(Xu(c, h), y, c, h); this.getLayer().getDeclutter() && (w = new Yg(Xu(c, h), y, c, h)); var E, T = tn(); if (T) { for (var C = 0, O = m.length; C < O; ++C) r.loadFeatures(nn(m[C], u), c, T); E = Zr(T, u) } else for (C = 0, O = m.length; C < O; ++C) r.loadFeatures(m[C], c, u); var P = qu(c, h), R = function (t) { var r, n = t.getStyleFunction() || e.getStyleFunction(); if (n && (r = n(t, c)), r) { var i = this.renderFeature(t, P, r, S, E, w); this.dirty_ = this.dirty_ || i } }.bind(this), I = nn(y, u), L = r.getFeaturesInExtent(I); d && L.sort(d); for (C = 0, O = L.length; C < O; ++C) R(L[C]); this.renderedFeatures_ = L; var M = S.finish(), F = new ay(y, c, h, r.getOverlaps(), M, e.getRenderBuffer()); return w && (this.declutterExecutorGroup = new ay(y, c, h, r.getOverlaps(), w.finish(), e.getRenderBuffer())), this.renderedResolution_ = c, this.renderedRevision_ = p, this.renderedRenderOrder_ = d, this.renderedExtent_ = y, this.renderedCenter_ = g, this.renderedProjection_ = u, this.replayGroup_ = F, this.hitDetectionImageData_ = null, this.replayGroupChanged = !0, !0 }, e.prototype.renderFeature = function (t, e, r, n, i, o) { if (!r) return !1; var a = !1; if (Array.isArray(r)) for (var s = 0, l = r.length; s < l; ++s) a = Zu(n, t, r[s], e, this.boundHandleStyleImageChange_, i, o) || a; else a = Zu(n, t, r, e, this.boundHandleStyleImageChange_, i, o); return a }, e }(cd), hy = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), py = function (t) { function e(e) { var r = t.call(this, e) || this; return r.vectorRenderer_ = new cy(e), r.layerImageRatio_ = e.getImageRatio(), r.coordinateToVectorPixelTransform_ = [1, 0, 0, 1, 0, 0], r.renderedPixelToCoordinateTransform_ = null, r } return hy(e, t), e.prototype.disposeInternal = function () { this.vectorRenderer_.dispose(), t.prototype.disposeInternal.call(this) }, e.prototype.getFeatures = function (t) { if (this.vectorRenderer_) { var e = It(this.coordinateToVectorPixelTransform_, It(this.renderedPixelToCoordinateTransform_, t.slice())); return this.vectorRenderer_.getFeatures(e) } return new Promise((function (t, e) { t([]) })) }, e.prototype.handleFontsChanged = function () { this.vectorRenderer_.handleFontsChanged() }, e.prototype.prepareFrame = function (t) { var e = t.pixelRatio, r = t.viewState, n = r.resolution, i = t.viewHints, o = this.vectorRenderer_, a = t.extent; 1 !== this.layerImageRatio_ && Me(a = a.slice(0), this.layerImageRatio_); var s = Pe(a) / n, l = Ee(a) / n; if (!i[ns] && !i[is] && !Ie(a)) { o.useContainer(null, null, 1); var u = o.context, c = O({}, t, { declutterTree: new Pp.a(9), extent: a, size: [s, l], viewState: O({}, t.viewState, {rotation: 0}) }), h = new $i(a, n, e, u.canvas, (function (t) { o.prepareFrame(c) && o.replayGroupChanged && (o.clipping = !1, o.renderFrame(c, null), o.renderDeclutter(c), t()) })); h.addEventListener(F, function () { if (h.getState() === ki) { this.image_ = h; var t = h.getResolution(), n = h.getPixelRatio(), i = t * e / n; this.renderedResolution = i, this.coordinateToVectorPixelTransform_ = kt(this.coordinateToVectorPixelTransform_, s / 2, l / 2, 1 / i, -1 / i, 0, -r.center[0], -r.center[1]) } }.bind(this)), h.load() } return this.image_ && (this.renderedPixelToCoordinateTransform_ = t.pixelToCoordinateTransform.slice()), !!this.image_ }, e.prototype.preRender = function () { }, e.prototype.postRender = function () { }, e.prototype.renderDeclutter = function () { }, e.prototype.forEachFeatureAtCoordinate = function (e, r, n, i, o) { return this.vectorRenderer_ ? this.vectorRenderer_.forEachFeatureAtCoordinate(e, r, n, i, o) : t.prototype.forEachFeatureAtCoordinate.call(this, e, r, n, i, o) }, e }(pd), fy = "image", dy = "hybrid", gy = "vector", yy = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), my = {image: [Bu, Du, Uu, zu, Vu], hybrid: [Bu, Uu], vector: []}, vy = {image: [Gu], hybrid: [zu, Vu, Gu], vector: [Bu, Du, Uu, zu, Vu, Gu]}, _y = function (t) { function e(e) { var r = t.call(this, e) || this; return r.boundHandleStyleImageChange_ = r.handleStyleImageChange_.bind(r), r.dirty_ = !1, r.renderedLayerRevision_, r.renderedPixelToCoordinateTransform_ = null, r.renderedRotation_, r.renderTileImageQueue_ = {}, r.tileListenerKeys_ = {}, r.tmpTransform_ = [1, 0, 0, 1, 0, 0], r } return yy(e, t), e.prototype.prepareTile = function (t, e, r, n) { var i, a = o(t), s = t.getState(); return (s === to && t.hifi || s === eo) && a in this.tileListenerKeys_ && (H(this.tileListenerKeys_[a]), delete this.tileListenerKeys_[a]), s !== to && s !== eo || (this.updateExecutorGroup_(t, e, r), this.tileImageNeedsRender_(t, e, r) && (i = !0, n && (this.renderTileImageQueue_[a] = t))), i }, e.prototype.getTile = function (e, r, n, i) { var a = i.pixelRatio, s = i.viewState, l = s.resolution, u = s.projection, c = this.getLayer(), h = c.getSource().getTile(e, r, n, a, u); if (h.getState() < to) { h.wantedResolution = l; var p = o(h); if (!(p in this.tileListenerKeys_)) { var f = Z(h, F, this.prepareTile.bind(this, h, a, u, !0)); this.tileListenerKeys_[p] = f } } else { var d = i.viewHints; !!(d[ns] || d[is]) && h.wantedResolution || (h.wantedResolution = l), this.prepareTile(h, a, u, !1) && c.getRenderMode() !== gy && this.renderTileImage_(h, i) } return t.prototype.getTile.call(this, e, r, n, i) }, e.prototype.isDrawableTile = function (e) { var r = this.getLayer(); return t.prototype.isDrawableTile.call(this, e) && (r.getRenderMode() === gy ? o(r) in e.executorGroups : e.hasContext(r)) }, e.prototype.getTileImage = function (t) { return t.getImage(this.getLayer()) }, e.prototype.prepareFrame = function (e) { var r = this.getLayer().getRevision(); return this.renderedLayerRevision_ != r && (this.renderedTiles.length = 0), this.renderedLayerRevision_ = r, t.prototype.prepareFrame.call(this, e) }, e.prototype.updateExecutorGroup_ = function (t, e, r) { var n = this.getLayer(), i = n.getRevision(), a = n.getRenderOrder() || null, s = t.wantedResolution, l = t.getReplayState(n); if (l.dirty || l.renderedResolution !== s || l.renderedRevision != i || l.renderedRenderOrder != a || l.renderedZ !== t.sourceZ) { var u = n.getSource(), c = n.getDeclutter(), h = u.getTileGrid(), p = u.getTileGridForProjection(r).getTileCoordExtent(t.wrappedTileCoord), f = u.getSourceTiles(e, r, t), d = o(n); delete t.hitDetectionImageData[d], t.executorGroups[d] = [], c && (t.declutterExecutorGroups[d] = []); for (var g = function (r, i) { var o = f[r]; if (o.getState() != to) return "continue"; var g = o.tileCoord, m = h.getTileCoordExtent(g), v = Te(p, m), _ = ue(m, v) ? null : Ht(v, n.getRenderBuffer() * s, y.tmpExtent); l.dirty = !1; var b = new Yg(0, v, s, e), x = c ? new Yg(0, v, s, e) : void 0, w = qu(s, e), S = function (t) { var e, r = t.getStyleFunction() || n.getStyleFunction(); if (r && (e = r(t, s)), e) { var i = this.renderFeature(t, w, e, b, x); this.dirty_ = this.dirty_ || i, l.dirty = l.dirty || i } }, E = o.getFeatures(); a && a !== l.renderedRenderOrder && E.sort(a); for (var T = 0, C = E.length; T < C; ++T) { var O = E[T]; _ && !Re(_, O.getGeometry().getExtent()) || S.call(y, O) } var P = b.finish(), R = n.getRenderMode() !== gy && c && 1 === f.length ? null : v, I = new ay(R, s, e, u.getOverlaps(), P, n.getRenderBuffer()); if (t.executorGroups[d].push(I), x) { var L = new ay(R, s, e, u.getOverlaps(), x.finish(), n.getRenderBuffer()); t.declutterExecutorGroups[d].push(L) } }, y = this, m = 0, v = f.length; m < v; ++m) g(m); l.renderedRevision = i, l.renderedZ = t.sourceZ, l.renderedRenderOrder = a, l.renderedResolution = s } }, e.prototype.forEachFeatureAtCoordinate = function (t, e, r, n, i) { var a = e.viewState.resolution, s = e.viewState.rotation; r = null == r ? 0 : r; var l = this.getLayer(), u = l.getSource().getTileGridForProjection(e.viewState.projection), c = Kt([t]); Ht(c, a * r, c); for (var h, p = {}, f = function (t, e, r) { var a = t.getId(); void 0 === a && (a = o(t)); var s = p[a]; if (s) { if (!0 !== s && r < s.distanceSq) { if (0 === r) return p[a] = !0, i.splice(i.lastIndexOf(s), 1), n(t, l, e); s.geometry = e, s.distanceSq = r } } else { if (0 === r) return p[a] = !0, n(t, l, e); i.push(p[a] = {feature: t, layer: l, geometry: e, distanceSq: r, callback: n}) } }, d = this.renderedTiles, g = function (n, i) { var p = d[n]; if (!Re(u.getTileCoordExtent(p.wrappedTileCoord), c)) return "continue"; var g = o(l), y = [p.executorGroups[g]], m = p.declutterExecutorGroups[g]; m && y.push(m), y.some((function (n) { for (var i = n === m ? e.declutterTree.all().map((function (t) { return t.value })) : null, o = 0, l = n.length; o < l; ++o) { var u = n[o]; if (h = u.forEachFeatureAtCoordinate(t, a, s, r, f, i)) return !0 } })) }, y = 0, m = d.length; !h && y < m; ++y) g(y); return h }, e.prototype.getFeatures = function (t) { return new Promise(function (e, r) { for (var n, i = this.getLayer(), a = o(i), s = i.getSource(), l = this.renderedProjection, u = l.getExtent(), c = this.renderedResolution, h = s.getTileGridForProjection(l), p = It(this.renderedPixelToCoordinateTransform_, t.slice()), f = h.getTileCoordForCoordAndResolution(p, c), d = 0, g = this.renderedTiles.length; d < g; ++d) if (f.toString() === this.renderedTiles[d].tileCoord.toString()) { if ((n = this.renderedTiles[d]).getState() === to && n.hifi) { var y = h.getTileCoordExtent(n.tileCoord); s.getWrapX() && l.canWrapX() && !te(u, y) && Fr(p, l); break } n = void 0 } if (!n || n.loadingSourceTiles > 0) e([]); else { var m = Ce(h.getTileCoordExtent(n.wrappedTileCoord)), v = [(p[0] - m[0]) / c, (m[1] - p[1]) / c], _ = n.getSourceTiles().reduce((function (t, e) { return t.concat(e.getFeatures()) }), []), b = n.hitDetectionImageData[a]; if (!b && !this.animatingOrInteracting_) { var x = Is(h.getTileSize(h.getZForResolution(c))), w = [x[0] / 2, x[1] / 2], S = this.renderedRotation_; b = sy(x, [this.getRenderTransform(h.getTileCoordCenter(n.wrappedTileCoord), c, 0, .5, w[0], w[1], 0)], _, i.getStyleFunction(), h.getTileCoordExtent(n.wrappedTileCoord), n.getReplayState(i).renderedResolution, S), n.hitDetectionImageData[a] = b } e(ly(v, _, b)) } }.bind(this)) }, e.prototype.handleFontsChanged = function () { P(this.renderTileImageQueue_); var t = this.getLayer(); t.getVisible() && void 0 !== this.renderedLayerRevision_ && t.changed() }, e.prototype.handleStyleImageChange_ = function (t) { this.renderIfReadyAndVisible() }, e.prototype.renderDeclutter = function (t) { for (var e = t.viewHints, r = !(e[ns] || e[is]), n = this.renderedTiles, i = 0, a = n.length; i < a; ++i) { var s = n[i], l = s.declutterExecutorGroups[o(this.getLayer())]; if (l) for (var u = l.length - 1; u >= 0; --u) l[u].execute(this.context, 1, this.getTileRenderTransform(s, t), t.viewState.rotation, r, void 0, t.declutterTree) } }, e.prototype.getTileRenderTransform = function (t, e) { var r = e.pixelRatio, n = e.viewState, i = n.center, o = n.resolution, a = n.rotation, s = e.size, l = Math.round(s[0] * r), u = Math.round(s[1] * r), c = this.getLayer().getSource().getTileGridForProjection(e.viewState.projection), h = t.tileCoord, p = c.getTileCoordExtent(t.wrappedTileCoord), f = c.getTileCoordExtent(h, this.tmpExtent)[0] - p[0]; return Ot(Mt(this.inversePixelTransform.slice(), 1 / r, 1 / r), this.getRenderTransform(i, o, a, r, l, u, f)) }, e.prototype.renderFrame = function (e, r) { var n = e.viewHints, i = !(n[ns] || n[is]); this.renderQueuedTileImages_(i, e), t.prototype.renderFrame.call(this, e, r), this.renderedPixelToCoordinateTransform_ = e.pixelToCoordinateTransform.slice(), this.renderedRotation_ = e.viewState.rotation; var a = this.getLayer(), s = a.getRenderMode(); if (s === fy) return this.container; var l = a.getSource(), u = e.usedTiles[o(l)]; for (var c in this.renderTileImageQueue_) u && c in u || delete this.renderTileImageQueue_[c]; for (var h = this.context, p = vy[s], f = e.viewState.rotation, d = this.renderedTiles, g = [], y = [], m = d.length - 1; m >= 0; --m) for (var v = d[m], _ = this.getTileRenderTransform(v, e), b = v.executorGroups[o(a)], x = !1, w = 0, S = b.length; w < S; ++w) { var E = b[w]; if (E.hasExecutors(p)) { var T = v.tileCoord[0], C = void 0; if (!x && (C = E.getClipCoords(_))) { h.save(); for (var O = 0, P = g.length; O < P; ++O) { var R = g[O]; T < y[O] && (h.beginPath(), h.moveTo(C[0], C[1]), h.lineTo(C[2], C[3]), h.lineTo(C[4], C[5]), h.lineTo(C[6], C[7]), h.moveTo(R[6], R[7]), h.lineTo(R[4], R[5]), h.lineTo(R[2], R[3]), h.lineTo(R[0], R[1]), h.clip()) } } E.execute(h, 1, _, f, i, p), !x && C && (h.restore(), g.push(C), y.push(T), x = !0) } } return this.container }, e.prototype.renderQueuedTileImages_ = function (t, e) { for (var r in this.renderTileImageQueue_) { if (!t && Date.now() - e.time > 8) { e.animate = !0; break } var n = this.renderTileImageQueue_[r]; delete this.renderTileImageQueue_[r], this.renderTileImage_(n, e) } }, e.prototype.renderFeature = function (t, e, r, n, i) { if (!r) return !1; var o = !1; if (Array.isArray(r)) for (var a = 0, s = r.length; a < s; ++a) o = Zu(n, t, r[a], e, this.boundHandleStyleImageChange_, void 0, i) || o; else o = Zu(n, t, r, e, this.boundHandleStyleImageChange_, void 0, i); return o }, e.prototype.tileImageNeedsRender_ = function (t, e, r) { var n = this.getLayer(), i = t.getReplayState(n), o = n.getRevision(), a = t.sourceZ, s = t.wantedResolution; return i.renderedTileResolution !== s || i.renderedTileRevision !== o || i.renderedTileZ !== a }, e.prototype.renderTileImage_ = function (t, e) { var r = this.getLayer(), n = t.getReplayState(r), i = r.getRevision(), a = t.executorGroups[o(r)]; n.renderedTileRevision = i, n.renderedTileZ = t.sourceZ; var s = t.wrappedTileCoord, l = s[0], u = r.getSource(), c = e.pixelRatio, h = e.viewState.projection, p = u.getTileGridForProjection(h), f = p.getResolution(t.tileCoord[0]), d = e.pixelRatio / t.wantedResolution * f, g = p.getResolution(l), y = t.getContext(r); c = Math.round(Math.max(c, d / c)); var m = u.getTilePixelSize(l, c, h); y.canvas.width = m[0], y.canvas.height = m[1]; var v = c / d; if (1 !== v) { var _ = Ct(this.tmpTransform_); Mt(_, v, v), y.setTransform.apply(y, _) } var b = p.getTileCoordExtent(s, this.tmpExtent), x = d / g, w = Ct(this.tmpTransform_); Mt(w, x, -x), At(w, -b[0], -b[3]); for (var S = 0, E = a.length; S < E; ++S) { a[S].execute(y, v, w, 0, !0, my[r.getRenderMode()]) } n.renderedTileResolution = t.wantedResolution }, e }(xd); function by(t, e, r, n, i, o, a) { var s, l, u = (r - e) / n; if (1 === u) s = e; else if (2 === u) s = e, l = i; else if (0 !== u) { for (var c = t[e], h = t[e + 1], p = 0, d = [0], g = e + n; g < r; g += n) { var y = t[g], m = t[g + 1]; p += Math.sqrt((y - c) * (y - c) + (m - h) * (m - h)), d.push(p), c = y, h = m } var v = i * p, _ = f(d, v); _ < 0 ? (l = (v - d[-_ - 2]) / (d[-_ - 1] - d[-_ - 2]), s = e + (-_ - 2) * n) : s = e + _ * n } var b = a > 1 ? a : 2, x = o || new Array(b); for (g = 0; g < b; ++g) x[g] = void 0 === s ? NaN : void 0 === l ? t[s + g] : qe(t[s + g], t[s + n + g], l); return x } function xy(t, e, r, n, i, o) { if (r == e) return null; var a; if (i < t[e + n - 1]) return o ? ((a = t.slice(e, e + n))[n - 1] = i, a) : null; if (t[r - 1] < i) return o ? ((a = t.slice(r - n, r))[n - 1] = i, a) : null; if (i == t[e + n - 1]) return t.slice(e, e + n); for (var s = e / n, l = r / n; s < l;) { var u = s + l >> 1; i < t[(u + 1) * n - 1] ? l = u : s = u + 1 } var c = t[s * n - 1]; if (i == c) return t.slice((s - 1) * n, (s - 1) * n + n); var h = (i - c) / (t[(s + 1) * n - 1] - c); a = []; for (var p = 0; p < n - 1; ++p) a.push(qe(t[(s - 1) * n + p], t[s * n + p], h)); return a.push(i), a } function wy(t, e, r, n, i, o, a) { if (a) return xy(t, e, r[r.length - 1], n, i, o); var s; if (i < t[n - 1]) return o ? ((s = t.slice(0, n))[n - 1] = i, s) : null; if (t[t.length - 1] < i) return o ? ((s = t.slice(t.length - n))[n - 1] = i, s) : null; for (var l = 0, u = r.length; l < u; ++l) { var c = r[l]; if (e != c) { if (i < t[e + n - 1]) return null; if (i <= t[c - 1]) return xy(t, e, c, n, i, !1); e = c } } return null } function Sy(t, e, r, n) { for (var i = [], o = [1 / 0, 1 / 0, -1 / 0, -1 / 0], a = 0, s = r.length; a < s; ++a) { var l = r[a]; o = le(t, e, l[0], n), i.push((o[0] + o[2]) / 2, (o[1] + o[3]) / 2), e = l[l.length - 1] } return i } var Ey = [1, 0, 0, 1, 0, 0], Ty = function () { function t(t, e, r, n, i) { this.extent_, this.id_ = i, this.type_ = t, this.flatCoordinates_ = e, this.flatInteriorPoints_ = null, this.flatMidpoints_ = null, this.ends_ = r, this.properties_ = n } return t.prototype.get = function (t) { return this.properties_[t] }, t.prototype.getExtent = function () { return this.extent_ || (this.extent_ = this.type_ === bt.POINT ? ae(this.flatCoordinates_) : le(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2)), this.extent_ }, t.prototype.getFlatInteriorPoint = function () { if (!this.flatInteriorPoints_) { var t = xe(this.getExtent()); this.flatInteriorPoints_ = $n(this.flatCoordinates_, 0, this.ends_, 2, t, 0) } return this.flatInteriorPoints_ }, t.prototype.getFlatInteriorPoints = function () { if (!this.flatInteriorPoints_) { var t = Sy(this.flatCoordinates_, 0, this.ends_, 2); this.flatInteriorPoints_ = Jn(this.flatCoordinates_, 0, this.ends_, 2, t) } return this.flatInteriorPoints_ }, t.prototype.getFlatMidpoint = function () { return this.flatMidpoints_ || (this.flatMidpoints_ = by(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2, .5)), this.flatMidpoints_ }, t.prototype.getFlatMidpoints = function () { if (!this.flatMidpoints_) { this.flatMidpoints_ = []; for (var t = this.flatCoordinates_, e = 0, r = this.ends_, n = 0, i = r.length; n < i; ++n) { var o = r[n], a = by(t, e, o, 2, .5); v(this.flatMidpoints_, a), e = o } } return this.flatMidpoints_ }, t.prototype.getId = function () { return this.id_ }, t.prototype.getOrientedFlatCoordinates = function () { return this.flatCoordinates_ }, t.prototype.getGeometry = function () { return this }, t.prototype.getSimplifiedGeometry = function (t) { return this }, t.prototype.simplifyTransformed = function (t, e) { return this }, t.prototype.getProperties = function () { return this.properties_ }, t.prototype.getStride = function () { return 2 }, t.prototype.getStyleFunction = function () { }, t.prototype.getType = function () { return this.type_ }, t.prototype.transform = function (t) { var e = (t = Gr(t)).getExtent(), r = t.getWorldExtent(); if (e && r) { var n = Ee(r) / Ee(e); kt(Ey, r[0], r[3], n, -n, 0, 0, 0), ln(this.flatCoordinates_, 0, this.flatCoordinates_.length, 2, Ey, this.flatCoordinates_) } }, t.prototype.getEnds = function () { return this.ends_ }, t }(); Ty.prototype.getEndss = Ty.prototype.getEnds, Ty.prototype.getFlatCoordinates = Ty.prototype.getOrientedFlatCoordinates; var Cy = Ty; var Oy = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Py = function (t) { function e(e, r) { var n = t.call(this) || this; return n.flatMidpoint_ = null, n.flatMidpointRevision_ = -1, n.maxDelta_ = -1, n.maxDeltaRevision_ = -1, void 0 === r || Array.isArray(e[0]) ? n.setCoordinates(e, r) : n.setFlatCoordinates(r, e), n } return Oy(e, t), e.prototype.appendCoordinate = function (t) { this.flatCoordinates ? v(this.flatCoordinates, t) : this.flatCoordinates = t.slice(), this.changed() }, e.prototype.clone = function () { var t = new e(this.flatCoordinates.slice(), this.layout); return t.applyProperties(this), t }, e.prototype.closestPointXY = function (t, e, r, n) { return n < Jt(this.getExtent(), t, e) ? n : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(bn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Sn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, !1, t, e, r, n)) }, e.prototype.forEachSegment = function (t) { return Qn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t) }, e.prototype.getCoordinateAtM = function (t, e) { if (this.layout != vt && this.layout != _t) return null; var r = void 0 !== e && e; return xy(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, r) }, e.prototype.getCoordinates = function () { return Nn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }, e.prototype.getCoordinateAt = function (t, e) { return by(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, e, this.stride) }, e.prototype.getLength = function () { return qg(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }, e.prototype.getFlatMidpoint = function () { return this.flatMidpointRevision_ != this.getRevision() && (this.flatMidpoint_ = this.getCoordinateAt(.5, this.flatMidpoint_), this.flatMidpointRevision_ = this.getRevision()), this.flatMidpoint_ }, e.prototype.getSimplifiedGeometryInternal = function (t) { var r = []; return r.length = In(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t, r, 0), new e(r, yt) }, e.prototype.getType = function () { return bt.LINE_STRING }, e.prototype.intersectsExtent = function (t) { return ti(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, t) }, e.prototype.setCoordinates = function (t, e) { this.setLayout(e, t, 1), this.flatCoordinates || (this.flatCoordinates = []), this.flatCoordinates.length = On(this.flatCoordinates, 0, t, this.stride), this.changed() }, e }(vn), Ry = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Iy = function (t) { function e(e) { return t.call(this, e) || this } return Ry(e, t), e.prototype.createRenderer = function () { return new cy(this) }, e }(wg); function Ly(t, e, r) { for (var n, i, o, a, s, l, u = [], c = t(0), h = t(1), p = e(c), f = e(h), d = [h, c], g = [f, p], y = [1, 0], m = {}, v = 1e5; --v > 0 && y.length > 0;) o = y.pop(), c = d.pop(), p = g.pop(), (l = o.toString()) in m || (u.push(p[0], p[1]), m[l] = !0), a = y.pop(), h = d.pop(), f = g.pop(), ze((i = e(n = t(s = (o + a) / 2)))[0], i[1], p[0], p[1], f[0], f[1]) < r ? (u.push(f[0], f[1]), m[l = a.toString()] = !0) : (y.push(a, s, s, o), g.push(f, i, i, p), d.push(h, n, n, c)); return u } function My(t, e, r, n, i) { return Ly((function (n) { return [t, e + (r - e) * n] }), Kr(Gr("EPSG:4326"), n), i) } function Fy(t, e, r, n, i) { return Ly((function (n) { return [e + (r - e) * n, t] }), Kr(Gr("EPSG:4326"), n), i) } var Ay = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ky = new gp({color: "rgba(0,0,0,0.2)"}), jy = [90, 45, 30, 20, 10, 5, 2, 1, .5, .2, .1, .05, .01, .005, .002, .001], Ny = function (t) { function e(e) { var r = this, n = e || {}, i = O({updateWhileAnimating: !0, updateWhileInteracting: !0, renderBuffer: 0}, n); return delete i.maxLines, delete i.strokeStyle, delete i.targetSize, delete i.showLabels, delete i.lonLabelFormatter, delete i.latLabelFormatter, delete i.lonLabelPosition, delete i.latLabelPosition, delete i.lonLabelStyle, delete i.latLabelStyle, delete i.intervals, (r = t.call(this, i) || this).projection_ = null, r.maxLat_ = 1 / 0, r.maxLon_ = 1 / 0, r.minLat_ = -1 / 0, r.minLon_ = -1 / 0, r.maxX_ = 1 / 0, r.maxY_ = 1 / 0, r.minX_ = -1 / 0, r.minY_ = -1 / 0, r.targetSize_ = void 0 !== n.targetSize ? n.targetSize : 100, r.maxLines_ = void 0 !== n.maxLines ? n.maxLines : 100, r.meridians_ = [], r.parallels_ = [], r.strokeStyle_ = void 0 !== n.strokeStyle ? n.strokeStyle : ky, r.fromLonLatTransform_ = void 0, r.toLonLatTransform_ = void 0, r.projectionCenterLonLat_ = null, r.bottomLeft_ = null, r.bottomRight_ = null, r.topLeft_ = null, r.topRight_ = null, r.meridiansLabels_ = null, r.parallelsLabels_ = null, n.showLabels && (r.lonLabelFormatter_ = null == n.lonLabelFormatter ? Er.bind(r, "EW") : n.lonLabelFormatter, r.latLabelFormatter_ = null == n.latLabelFormatter ? Er.bind(r, "NS") : n.latLabelFormatter, r.lonLabelPosition_ = null == n.lonLabelPosition ? 0 : n.lonLabelPosition, r.latLabelPosition_ = null == n.latLabelPosition ? 1 : n.latLabelPosition, r.lonLabelStyleBase_ = new wp({ text: void 0 !== n.lonLabelStyle ? n.lonLabelStyle.clone() : new Tp({ font: "12px Calibri,sans-serif", textBaseline: "bottom", fill: new ep({color: "rgba(0,0,0,1)"}), stroke: new gp({color: "rgba(255,255,255,1)", width: 3}) }) }), r.lonLabelStyle_ = function (t) { var e = t.get("graticule_label"); return this.lonLabelStyleBase_.getText().setText(e), this.lonLabelStyleBase_ }.bind(r), r.latLabelStyleBase_ = new wp({ text: void 0 !== n.latLabelStyle ? n.latLabelStyle.clone() : new Tp({ font: "12px Calibri,sans-serif", textAlign: "right", fill: new ep({color: "rgba(0,0,0,1)"}), stroke: new gp({color: "rgba(255,255,255,1)", width: 3}) }) }), r.latLabelStyle_ = function (t) { var e = t.get("graticule_label"); return this.latLabelStyleBase_.getText().setText(e), this.latLabelStyleBase_ }.bind(r), r.meridiansLabels_ = [], r.parallelsLabels_ = [], r.addEventListener(Xo, r.drawLabels_.bind(r))), r.intervals_ = void 0 !== n.intervals ? n.intervals : jy, r.setSource(new hf({ loader: r.loaderFunction.bind(r), strategy: r.strategyFunction.bind(r), features: new ht, overlaps: !1, useSpatialIndex: !1, wrapX: n.wrapX })), r.featurePool_ = [], r.lineStyle_ = new wp({stroke: r.strokeStyle_}), r.loadedExtent_ = null, r.renderedExtent_ = null, r.setRenderOrder(null), r } return Ay(e, t), e.prototype.strategyFunction = function (t, e) { var r = t.slice(); return this.projection_ && this.getSource().getWrapX() && ke(r, this.projection_), this.loadedExtent_ && (ce(this.loadedExtent_, r, e) ? r = this.loadedExtent_.slice() : this.getSource().removeLoadedExtent(this.loadedExtent_)), [r] }, e.prototype.loaderFunction = function (t, e, r) { this.loadedExtent_ = t; var n = this.getSource(), i = Te(this.getExtent() || [-1 / 0, -1 / 0, 1 / 0, 1 / 0], t); if (!(this.renderedExtent_ && ue(this.renderedExtent_, i) || (this.renderedExtent_ = i, Ie(i)))) { var o = xe(i), a = e * e / 4; (!this.projection_ || !Xr(this.projection_, r)) && this.updateProjectionInfo_(r), this.createGraticule_(i, o, e, a); var s, l = this.meridians_.length + this.parallels_.length; for (this.meridiansLabels_ && (l += this.meridians_.length), this.parallelsLabels_ && (l += this.parallels_.length); l > this.featurePool_.length;) s = new gt, this.featurePool_.push(s); var u = n.getFeaturesCollection(); u.clear(); var c, h, p = 0; for (c = 0, h = this.meridians_.length; c < h; ++c) (s = this.featurePool_[p++]).setGeometry(this.meridians_[c]), s.setStyle(this.lineStyle_), u.push(s); for (c = 0, h = this.parallels_.length; c < h; ++c) (s = this.featurePool_[p++]).setGeometry(this.parallels_[c]), s.setStyle(this.lineStyle_), u.push(s) } }, e.prototype.addMeridian_ = function (t, e, r, n, i, o) { var a = this.getMeridian_(t, e, r, n, o); if (Re(a.getExtent(), i)) { if (this.meridiansLabels_) { var s = this.lonLabelFormatter_(t); o in this.meridiansLabels_ ? this.meridiansLabels_[o].text = s : this.meridiansLabels_[o] = { geom: new qn([]), text: s } } this.meridians_[o++] = a } return o }, e.prototype.addParallel_ = function (t, e, r, n, i, o) { var a = this.getParallel_(t, e, r, n, o); if (Re(a.getExtent(), i)) { if (this.parallelsLabels_) { var s = this.latLabelFormatter_(t); o in this.parallelsLabels_ ? this.parallelsLabels_[o].text = s : this.parallelsLabels_[o] = { geom: new qn([]), text: s } } this.parallels_[o++] = a } return o }, e.prototype.drawLabels_ = function (t) { var e = t.frameState.viewState.rotation, r = t.frameState.extent, n = xe(r), i = r; if (e) { var o = Pe(r), a = Ee(r), s = Math.abs(Math.cos(e)), l = Math.abs(Math.sin(e)), u = (l * a - s * o) / (l * l - s * s), c = (l * o - s * a) / (l * l - s * s); i = [n[0] - u / 2, n[1] - c / 2, n[0] + u / 2, n[1] + c / 2] } var h = 0, p = 0, f = this.latLabelPosition_ < .5, d = this.projection_.getExtent(), g = Pe(d); this.getSource().getWrapX() && this.projection_.canWrapX() && !te(d, r) && (h = Math.floor((r[0] - d[0]) / g), p = Math.ceil((r[2] - d[2]) / g), f = f !== Math.abs(e) > Math.PI / 2); for (var y = Ku(t), m = h; m <= p; ++m) { var v = this.meridians_.length + this.parallels_.length, _ = void 0, b = void 0, x = void 0, w = void 0; if (this.meridiansLabels_) for (b = 0, x = this.meridiansLabels_.length; b < x; ++b) { var S = this.meridians_[b]; if (e || 0 !== m) (E = S.clone()).translate(m * g, 0), E.rotate(-e, n), (w = this.getMeridianPoint_(E, i, b)).rotate(e, n); else w = this.getMeridianPoint_(S, r, b); (_ = this.featurePool_[v++]).setGeometry(w), _.set("graticule_label", this.meridiansLabels_[b].text), y.drawFeature(_, this.lonLabelStyle_(_)) } if (this.parallelsLabels_ && (m === h && f || m === p && !f)) for (b = 0, x = this.parallels_.length; b < x; ++b) { var E; S = this.parallels_[b]; if (e || 0 !== m) (E = S.clone()).translate(m * g, 0), E.rotate(-e, n), (w = this.getParallelPoint_(E, i, b)).rotate(e, n); else w = this.getParallelPoint_(S, r, b); (_ = this.featurePool_[v++]).setGeometry(w), _.set("graticule_label", this.parallelsLabels_[b].text), y.drawFeature(_, this.latLabelStyle_(_)) } } }, e.prototype.createGraticule_ = function (t, e, r, n) { var i = this.getInterval_(r); if (-1 == i) return this.meridians_.length = 0, this.parallels_.length = 0, this.meridiansLabels_ && (this.meridiansLabels_.length = 0), void (this.parallelsLabels_ && (this.parallelsLabels_.length = 0)); var o = !1, a = this.projection_.getExtent(), s = Pe(a); this.getSource().getWrapX() && this.projection_.canWrapX() && !te(a, t) && (Pe(t) >= s ? (t[0] = a[0], t[2] = a[2]) : o = !0); var l = [Ne(e[0], this.minX_, this.maxX_), Ne(e[1], this.minY_, this.maxY_)], u = this.toLonLatTransform_(l); isNaN(u[1]) && (u[1] = Math.abs(this.maxLat_) >= Math.abs(this.minLat_) ? this.maxLat_ : this.minLat_); var c, h, p, f, d = Ne(u[0], this.minLon_, this.maxLon_), g = Ne(u[1], this.minLat_, this.maxLat_), y = this.maxLines_, m = t; o || (m = [Ne(t[0], this.minX_, this.maxX_), Ne(t[1], this.minY_, this.maxY_), Ne(t[2], this.minX_, this.maxX_), Ne(t[3], this.minY_, this.maxY_)]); var v = Ae(m, this.toLonLatTransform_, void 0, 8), _ = v[3], b = v[2], x = v[1], w = v[0]; if (o || (Qt(m, this.bottomLeft_) && (w = this.minLon_, x = this.minLat_), Qt(m, this.bottomRight_) && (b = this.maxLon_, x = this.minLat_), Qt(m, this.topLeft_) && (w = this.minLon_, _ = this.maxLat_), Qt(m, this.topRight_) && (b = this.maxLon_, _ = this.maxLat_), _ = Ne(_, g, this.maxLat_), b = Ne(b, d, this.maxLon_), x = Ne(x, this.minLat_, g), w = Ne(w, this.minLon_, d)), f = Ne(d = Math.floor(d / i) * i, this.minLon_, this.maxLon_), h = this.addMeridian_(f, x, _, n, t, 0), c = 0, o) for (; (f -= i) >= w && c++ < y;) h = this.addMeridian_(f, x, _, n, t, h); else for (; f != this.minLon_ && c++ < y;) f = Math.max(f - i, this.minLon_), h = this.addMeridian_(f, x, _, n, t, h); if (f = Ne(d, this.minLon_, this.maxLon_), c = 0, o) for (; (f += i) <= b && c++ < y;) h = this.addMeridian_(f, x, _, n, t, h); else for (; f != this.maxLon_ && c++ < y;) f = Math.min(f + i, this.maxLon_), h = this.addMeridian_(f, x, _, n, t, h); for (this.meridians_.length = h, this.meridiansLabels_ && (this.meridiansLabels_.length = h), p = Ne(g = Math.floor(g / i) * i, this.minLat_, this.maxLat_), h = this.addParallel_(p, w, b, n, t, 0), c = 0; p != this.minLat_ && c++ < y;) p = Math.max(p - i, this.minLat_), h = this.addParallel_(p, w, b, n, t, h); for (p = Ne(g, this.minLat_, this.maxLat_), c = 0; p != this.maxLat_ && c++ < y;) p = Math.min(p + i, this.maxLat_), h = this.addParallel_(p, w, b, n, t, h); this.parallels_.length = h, this.parallelsLabels_ && (this.parallelsLabels_.length = h) }, e.prototype.getInterval_ = function (t) { for (var e = this.projectionCenterLonLat_[0], r = this.projectionCenterLonLat_[1], n = -1, i = Math.pow(this.targetSize_ * t, 2), o = [], a = [], s = 0, l = this.intervals_.length; s < l; ++s) { var u = Ne(this.intervals_[s] / 2, 0, 90), c = Ne(r, -90 + u, 90 - u); if (o[0] = e - u, o[1] = c - u, a[0] = e + u, a[1] = c + u, this.fromLonLatTransform_(o, o), this.fromLonLatTransform_(a, a), Math.pow(a[0] - o[0], 2) + Math.pow(a[1] - o[1], 2) <= i) break; n = this.intervals_[s] } return n }, e.prototype.getMeridian_ = function (t, e, r, n, i) { var o = My(t, e, r, this.projection_, n), a = this.meridians_[i]; return a ? (a.setFlatCoordinates(yt, o), a.changed()) : (a = new Py(o, yt), this.meridians_[i] = a), a }, e.prototype.getMeridianPoint_ = function (t, e, r) { var n = t.getFlatCoordinates(), i = 1, o = n.length - 1; n[i] > n[o] && (i = o, o = 1); var a = Math.max(e[1], n[i]), s = Math.min(e[3], n[o]), l = Ne(e[1] + Math.abs(e[1] - e[3]) * this.lonLabelPosition_, a, s), u = [n[i - 1] + (n[o - 1] - n[i - 1]) * (l - n[i]) / (n[o] - n[i]), l], c = this.meridiansLabels_[r].geom; return c.setCoordinates(u), c }, e.prototype.getMeridians = function () { return this.meridians_ }, e.prototype.getParallel_ = function (t, e, r, n, i) { var o = Fy(t, e, r, this.projection_, n), a = this.parallels_[i]; return a ? (a.setFlatCoordinates(yt, o), a.changed()) : a = new Py(o, yt), a }, e.prototype.getParallelPoint_ = function (t, e, r) { var n = t.getFlatCoordinates(), i = 0, o = n.length - 2; n[i] > n[o] && (i = o, o = 0); var a = Math.max(e[0], n[i]), s = Math.min(e[2], n[o]), l = Ne(e[0] + Math.abs(e[0] - e[2]) * this.latLabelPosition_, a, s), u = [l, n[i + 1] + (n[o + 1] - n[i + 1]) * (l - n[i]) / (n[o] - n[i])], c = this.parallelsLabels_[r].geom; return c.setCoordinates(u), c }, e.prototype.getParallels = function () { return this.parallels_ }, e.prototype.updateProjectionInfo_ = function (t) { var e = Gr("EPSG:4326"), r = t.getWorldExtent(); this.maxLat_ = r[3], this.maxLon_ = r[2], this.minLat_ = r[1], this.minLon_ = r[0]; var n = Kr(t, e); if (this.minLon_ < this.maxLon_) this.toLonLatTransform_ = n; else { var i = this.minLon_ + this.maxLon_ / 2; this.maxLon_ += 360, this.toLonLatTransform_ = function (t, e, r) { for (var o = r || 2, a = n(t, e, o), s = 0, l = a.length; s < l; s += o) a[s] < i && (a[s] += 360); return a } } this.fromLonLatTransform_ = Kr(e, t); var o = Ae([this.minLon_, this.minLat_, this.maxLon_, this.maxLat_], this.fromLonLatTransform_, void 0, 8); this.minX_ = o[0], this.maxX_ = o[2], this.minY_ = o[1], this.maxY_ = o[3], this.bottomLeft_ = this.fromLonLatTransform_([this.minLon_, this.minLat_]), this.bottomRight_ = this.fromLonLatTransform_([this.maxLon_, this.minLat_]), this.topLeft_ = this.fromLonLatTransform_([this.minLon_, this.maxLat_]), this.topRight_ = this.fromLonLatTransform_([this.maxLon_, this.maxLat_]), this.projectionCenterLonLat_ = this.toLonLatTransform_(xe(t.getExtent())), isNaN(this.projectionCenterLonLat_[1]) && (this.projectionCenterLonLat_[1] = Math.abs(this.maxLat_) >= Math.abs(this.minLat_) ? this.maxLat_ : this.minLat_), this.projection_ = t }, e }(Iy), Dy = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Gy = "blur", zy = "gradient", Uy = "radius", By = ["#00f", "#0ff", "#0f0", "#ff0", "#f00"]; var Vy = function (t) { function e(e) { var r = this, n = e || {}, i = O({}, n); delete i.gradient, delete i.radius, delete i.blur, delete i.weight, (r = t.call(this, i) || this).gradient_ = null, r.addEventListener(it(zy), r.handleGradientChanged_), r.setGradient(n.gradient ? n.gradient : By), r.setBlur(void 0 !== n.blur ? n.blur : 15), r.setRadius(void 0 !== n.radius ? n.radius : 8); var o = n.weight ? n.weight : "weight"; return r.weightFunction_ = "string" == typeof o ? function (t) { return t.get(o) } : o, r.setRenderOrder(null), r } return Dy(e, t), e.prototype.getBlur = function () { return this.get(Gy) }, e.prototype.getGradient = function () { return this.get(zy) }, e.prototype.getRadius = function () { return this.get(Uy) }, e.prototype.handleGradientChanged_ = function () { this.gradient_ = function (t) { for (var e = uo(1, 256), r = e.createLinearGradient(0, 0, 1, 256), n = 1 / (t.length - 1), i = 0, o = t.length; i < o; ++i) r.addColorStop(i * n, t[i]); return e.fillStyle = r, e.fillRect(0, 0, 1, 256), e.canvas }(this.getGradient()) }, e.prototype.setBlur = function (t) { this.set(Gy, t) }, e.prototype.setGradient = function (t) { this.set(zy, t) }, e.prototype.setRadius = function (t) { this.set(Uy, t) }, e.prototype.createRenderer = function () { return new Eg(this, { className: this.getClassName(), attributes: [{ name: "weight", callback: function (t) { var e = this.weightFunction_(t); return void 0 !== e ? Ne(e, 0, 1) : 1 }.bind(this) }], vertexShader: "\n precision mediump float;\n uniform mat4 u_projectionMatrix;\n uniform mat4 u_offsetScaleMatrix;\n uniform float u_size;\n attribute vec2 a_position;\n attribute float a_index;\n attribute float a_weight;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n\n void main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n v_texCoord = vec2(u, v);\n v_weight = a_weight;\n }", fragmentShader: "\n precision mediump float;\n uniform float u_blurSlope;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n\n void main(void) {\n vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n gl_FragColor = vec4(alpha, alpha, alpha, alpha);\n }", hitVertexShader: "\n precision mediump float;\n uniform mat4 u_projectionMatrix;\n uniform mat4 u_offsetScaleMatrix;\n uniform float u_size;\n attribute vec2 a_position;\n attribute float a_index;\n attribute float a_weight;\n attribute vec4 a_hitColor;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n varying vec4 v_hitColor;\n\n void main(void) {\n mat4 offsetMatrix = u_offsetScaleMatrix;\n float offsetX = a_index == 0.0 || a_index == 3.0 ? -u_size / 2.0 : u_size / 2.0;\n float offsetY = a_index == 0.0 || a_index == 1.0 ? -u_size / 2.0 : u_size / 2.0;\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n float u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n float v = a_index == 0.0 || a_index == 1.0 ? 0.0 : 1.0;\n v_texCoord = vec2(u, v);\n v_hitColor = a_hitColor;\n v_weight = a_weight;\n }", hitFragmentShader: "\n precision mediump float;\n uniform float u_blurSlope;\n\n varying vec2 v_texCoord;\n varying float v_weight;\n varying vec4 v_hitColor;\n\n void main(void) {\n vec2 texCoord = v_texCoord * 2.0 - vec2(1.0, 1.0);\n float sqRadius = texCoord.x * texCoord.x + texCoord.y * texCoord.y;\n float value = (1.0 - sqrt(sqRadius)) * u_blurSlope;\n float alpha = smoothstep(0.0, 1.0, value) * v_weight;\n if (alpha < 0.05) {\n discard;\n }\n\n gl_FragColor = v_hitColor;\n }", uniforms: { u_size: function () { return 2 * (this.get(Uy) + this.get(Gy)) }.bind(this), u_blurSlope: function () { return this.get(Uy) / Math.max(1, this.get(Gy)) }.bind(this) }, postProcesses: [{ fragmentShader: "\n precision mediump float;\n\n uniform sampler2D u_image;\n uniform sampler2D u_gradientTexture;\n\n varying vec2 v_texCoord;\n\n void main() {\n vec4 color = texture2D(u_image, v_texCoord);\n gl_FragColor.a = color.a;\n gl_FragColor.rgb = texture2D(u_gradientTexture, vec2(0.5, color.a)).rgb;\n gl_FragColor.rgb *= gl_FragColor.a;\n }", uniforms: { u_gradientTexture: function () { return this.gradient_ }.bind(this) } }] }) }, e.prototype.renderDeclutter = function () { }, e }(Iy), Yy = function () { function t() { this.dataProjection = null, this.defaultFeatureProjection = null } return t.prototype.getReadOptions = function (t, e) { var r; if (e) { var n = e.dataProjection ? Gr(e.dataProjection) : this.readProjection(t); e.extent && n && n.getUnits() === St.TILE_PIXELS && (n = Gr(n)).setWorldExtent(e.extent), r = { dataProjection: n, featureProjection: e.featureProjection } } return this.adaptOptions(r) }, t.prototype.adaptOptions = function (t) { return O({dataProjection: this.dataProjection, featureProjection: this.defaultFeatureProjection}, t) }, t.prototype.getType = function () { return n() }, t.prototype.readFeature = function (t, e) { return n() }, t.prototype.readFeatures = function (t, e) { return n() }, t.prototype.readGeometry = function (t, e) { return n() }, t.prototype.readProjection = function (t) { return n() }, t.prototype.writeFeature = function (t, e) { return n() }, t.prototype.writeFeatures = function (t, e) { return n() }, t.prototype.writeGeometry = function (t, e) { return n() }, t }(); function Wy(t, e, r) { var n, i = r ? Gr(r.featureProjection) : null, o = r ? Gr(r.dataProjection) : null; if (n = i && o && !Xr(i, o) ? (e ? t.clone() : t).transform(e ? i : o, e ? o : i) : t, e && r && void 0 !== r.decimals) { var a = Math.pow(10, r.decimals); n === t && (n = t.clone()), n.applyTransform((function (t) { for (var e = 0, r = t.length; e < r; ++e) t[e] = Math.round(t[e] * a) / a; return t })) } return n } function qy(t, e) { var r = e ? Gr(e.featureProjection) : null, n = e ? Gr(e.dataProjection) : null; return r && n && !Xr(r, n) ? $r(t, n, r) : t } var Xy = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Zy = function (t) { function e(e, r, n) { var i = t.call(this) || this; if (i.ends_ = [], i.maxDelta_ = -1, i.maxDeltaRevision_ = -1, Array.isArray(e[0])) i.setCoordinates(e, r); else if (void 0 !== r && n) i.setFlatCoordinates(r, e), i.ends_ = n; else { for (var o = i.getLayout(), a = e, s = [], l = [], u = 0, c = a.length; u < c; ++u) { var h = a[u]; 0 === u && (o = h.getLayout()), v(s, h.getFlatCoordinates()), l.push(s.length) } i.setFlatCoordinates(o, s), i.ends_ = l } return i } return Xy(e, t), e.prototype.appendLineString = function (t) { this.flatCoordinates ? v(this.flatCoordinates, t.getFlatCoordinates().slice()) : this.flatCoordinates = t.getFlatCoordinates().slice(), this.ends_.push(this.flatCoordinates.length), this.changed() }, e.prototype.clone = function () { var t = new e(this.flatCoordinates.slice(), this.layout, this.ends_.slice()); return t.applyProperties(this), t }, e.prototype.closestPointXY = function (t, e, r, n) { return n < Jt(this.getExtent(), t, e) ? n : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(xn(this.flatCoordinates, 0, this.ends_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), En(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, !1, t, e, r, n)) }, e.prototype.getCoordinateAtM = function (t, e, r) { if (this.layout != vt && this.layout != _t || 0 === this.flatCoordinates.length) return null; var n = void 0 !== e && e, i = void 0 !== r && r; return wy(this.flatCoordinates, 0, this.ends_, this.stride, t, n, i) }, e.prototype.getCoordinates = function () { return Dn(this.flatCoordinates, 0, this.ends_, this.stride) }, e.prototype.getEnds = function () { return this.ends_ }, e.prototype.getLineString = function (t) { return t < 0 || this.ends_.length <= t ? null : new Py(this.flatCoordinates.slice(0 === t ? 0 : this.ends_[t - 1], this.ends_[t]), this.layout) }, e.prototype.getLineStrings = function () { for (var t = this.flatCoordinates, e = this.ends_, r = this.layout, n = [], i = 0, o = 0, a = e.length; o < a; ++o) { var s = e[o], l = new Py(t.slice(i, s), r); n.push(l), i = s } return n }, e.prototype.getFlatMidpoints = function () { for (var t = [], e = this.flatCoordinates, r = 0, n = this.ends_, i = this.stride, o = 0, a = n.length; o < a; ++o) { var s = n[o]; v(t, by(e, r, s, i, .5)), r = s } return t }, e.prototype.getSimplifiedGeometryInternal = function (t) { var r = [], n = []; return r.length = Ln(this.flatCoordinates, 0, this.ends_, this.stride, t, r, 0, n), new e(r, yt, n) }, e.prototype.getType = function () { return bt.MULTI_LINE_STRING }, e.prototype.intersectsExtent = function (t) { return ei(this.flatCoordinates, 0, this.ends_, this.stride, t) }, e.prototype.setCoordinates = function (t, e) { this.setLayout(e, t, 2), this.flatCoordinates || (this.flatCoordinates = []); var r = Pn(this.flatCoordinates, 0, t, this.stride, this.ends_); this.flatCoordinates.length = 0 === r.length ? 0 : r[r.length - 1], this.changed() }, e }(vn), Ky = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Hy = function (t) { function e(e, r) { var n = t.call(this) || this; return r && !Array.isArray(e[0]) ? n.setFlatCoordinates(r, e) : n.setCoordinates(e, r), n } return Ky(e, t), e.prototype.appendPoint = function (t) { this.flatCoordinates ? v(this.flatCoordinates, t.getFlatCoordinates()) : this.flatCoordinates = t.getFlatCoordinates().slice(), this.changed() }, e.prototype.clone = function () { var t = new e(this.flatCoordinates.slice(), this.layout); return t.applyProperties(this), t }, e.prototype.closestPointXY = function (t, e, r, n) { if (n < Jt(this.getExtent(), t, e)) return n; for (var i = this.flatCoordinates, o = this.stride, a = 0, s = i.length; a < s; a += o) { var l = Ue(t, e, i[a], i[a + 1]); if (l < n) { n = l; for (var u = 0; u < o; ++u) r[u] = i[a + u]; r.length = o } } return n }, e.prototype.getCoordinates = function () { return Nn(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }, e.prototype.getPoint = function (t) { var e = this.flatCoordinates ? this.flatCoordinates.length / this.stride : 0; return t < 0 || e <= t ? null : new qn(this.flatCoordinates.slice(t * this.stride, (t + 1) * this.stride), this.layout) }, e.prototype.getPoints = function () { for (var t = this.flatCoordinates, e = this.layout, r = this.stride, n = [], i = 0, o = t.length; i < o; i += r) { var a = new qn(t.slice(i, i + r), e); n.push(a) } return n }, e.prototype.getType = function () { return bt.MULTI_POINT }, e.prototype.intersectsExtent = function (t) { for (var e = this.flatCoordinates, r = this.stride, n = 0, i = e.length; n < i; n += r) { if (ee(t, e[n], e[n + 1])) return !0 } return !1 }, e.prototype.setCoordinates = function (t, e) { this.setLayout(e, t, 1), this.flatCoordinates || (this.flatCoordinates = []), this.flatCoordinates.length = On(this.flatCoordinates, 0, t, this.stride), this.changed() }, e }(vn), $y = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Jy = function (t) { function e(e, r, n) { var i = t.call(this) || this; if (i.endss_ = [], i.flatInteriorPointsRevision_ = -1, i.flatInteriorPoints_ = null, i.maxDelta_ = -1, i.maxDeltaRevision_ = -1, i.orientedRevision_ = -1, i.orientedFlatCoordinates_ = null, !n && !Array.isArray(e[0])) { for (var o = i.getLayout(), a = e, s = [], l = [], u = 0, c = a.length; u < c; ++u) { var h = a[u]; 0 === u && (o = h.getLayout()); for (var p = s.length, f = h.getEnds(), d = 0, g = f.length; d < g; ++d) f[d] += p; v(s, h.getFlatCoordinates()), l.push(f) } r = o, e = s, n = l } return void 0 !== r && n ? (i.setFlatCoordinates(r, e), i.endss_ = n) : i.setCoordinates(e, r), i } return $y(e, t), e.prototype.appendPolygon = function (t) { var e; if (this.flatCoordinates) { var r = this.flatCoordinates.length; v(this.flatCoordinates, t.getFlatCoordinates()); for (var n = 0, i = (e = t.getEnds().slice()).length; n < i; ++n) e[n] += r } else this.flatCoordinates = t.getFlatCoordinates().slice(), e = t.getEnds().slice(), this.endss_.push(); this.endss_.push(e), this.changed() }, e.prototype.clone = function () { for (var t = this.endss_.length, r = new Array(t), n = 0; n < t; ++n) r[n] = this.endss_[n].slice(); var i = new e(this.flatCoordinates.slice(), this.layout, r); return i.applyProperties(this), i }, e.prototype.closestPointXY = function (t, e, r, n) { return n < Jt(this.getExtent(), t, e) ? n : (this.maxDeltaRevision_ != this.getRevision() && (this.maxDelta_ = Math.sqrt(wn(this.flatCoordinates, 0, this.endss_, this.stride, 0)), this.maxDeltaRevision_ = this.getRevision()), Tn(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, this.maxDelta_, !0, t, e, r, n)) }, e.prototype.containsXY = function (t, e) { return Hn(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, t, e) }, e.prototype.getArea = function () { return Bn(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride) }, e.prototype.getCoordinates = function (t) { var e; return void 0 !== t ? ci(e = this.getOrientedFlatCoordinates().slice(), 0, this.endss_, this.stride, t) : e = this.flatCoordinates, Gn(e, 0, this.endss_, this.stride) }, e.prototype.getEndss = function () { return this.endss_ }, e.prototype.getFlatInteriorPoints = function () { if (this.flatInteriorPointsRevision_ != this.getRevision()) { var t = Sy(this.flatCoordinates, 0, this.endss_, this.stride); this.flatInteriorPoints_ = Jn(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, t), this.flatInteriorPointsRevision_ = this.getRevision() } return this.flatInteriorPoints_ }, e.prototype.getInteriorPoints = function () { return new Hy(this.getFlatInteriorPoints().slice(), vt) }, e.prototype.getOrientedFlatCoordinates = function () { if (this.orientedRevision_ != this.getRevision()) { var t = this.flatCoordinates; li(t, 0, this.endss_, this.stride) ? this.orientedFlatCoordinates_ = t : (this.orientedFlatCoordinates_ = t.slice(), this.orientedFlatCoordinates_.length = ci(this.orientedFlatCoordinates_, 0, this.endss_, this.stride)), this.orientedRevision_ = this.getRevision() } return this.orientedFlatCoordinates_ }, e.prototype.getSimplifiedGeometryInternal = function (t) { var r = [], n = []; return r.length = jn(this.flatCoordinates, 0, this.endss_, this.stride, Math.sqrt(t), r, 0, n), new e(r, yt, n) }, e.prototype.getPolygon = function (t) { if (t < 0 || this.endss_.length <= t) return null; var e; if (0 === t) e = 0; else { var r = this.endss_[t - 1]; e = r[r.length - 1] } var n = this.endss_[t].slice(), i = n[n.length - 1]; if (0 !== e) for (var o = 0, a = n.length; o < a; ++o) n[o] -= e; return new fi(this.flatCoordinates.slice(e, i), this.layout, n) }, e.prototype.getPolygons = function () { for (var t = this.layout, e = this.flatCoordinates, r = this.endss_, n = [], i = 0, o = 0, a = r.length; o < a; ++o) { var s = r[o].slice(), l = s[s.length - 1]; if (0 !== i) for (var u = 0, c = s.length; u < c; ++u) s[u] -= i; var h = new fi(e.slice(i, l), t, s); n.push(h), i = l } return n }, e.prototype.getType = function () { return bt.MULTI_POLYGON }, e.prototype.intersectsExtent = function (t) { return ii(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, t) }, e.prototype.setCoordinates = function (t, e) { this.setLayout(e, t, 3), this.flatCoordinates || (this.flatCoordinates = []); var r = Rn(this.flatCoordinates, 0, t, this.stride, this.endss_); if (0 === r.length) this.flatCoordinates.length = 0; else { var n = r[r.length - 1]; this.flatCoordinates.length = 0 === n.length ? 0 : n[n.length - 1] } this.changed() }, e }(vn), Qy = r(5), tm = r.n(Qy), em = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function rm(t, e, r) { if (3 === t) { var n = {keys: [], values: [], features: []}, i = r.readVarint() + r.pos; r.readFields(nm, n, i), n.length = n.features.length, n.length && (e[n.name] = n) } } function nm(t, e, r) { if (15 === t) e.version = r.readVarint(); else if (1 === t) e.name = r.readString(); else if (5 === t) e.extent = r.readVarint(); else if (2 === t) e.features.push(r.pos); else if (3 === t) e.keys.push(r.readString()); else if (4 === t) { for (var n = null, i = r.readVarint() + r.pos; r.pos < i;) n = 1 === (t = r.readVarint() >> 3) ? r.readString() : 2 === t ? r.readFloat() : 3 === t ? r.readDouble() : 4 === t ? r.readVarint64() : 5 === t ? r.readVarint() : 6 === t ? r.readSVarint() : 7 === t ? r.readBoolean() : null; e.values.push(n) } } function im(t, e, r) { if (1 == t) e.id = r.readVarint(); else if (2 == t) for (var n = r.readVarint() + r.pos; r.pos < n;) { var i = e.layer.keys[r.readVarint()], o = e.layer.values[r.readVarint()]; e.properties[i] = o } else 3 == t ? e.type = r.readVarint() : 4 == t && (e.geometry = r.pos) } function om(t, e, r) { t.pos = e.features[r]; var n = t.readVarint() + t.pos, i = {layer: e, type: 0, properties: {}}; return t.readFields(im, i, n), i } var am = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.dataProjection = new je({ code: "", units: St.TILE_PIXELS }), r.featureClass_ = n.featureClass ? n.featureClass : Cy, r.geometryName_ = n.geometryName, r.layerName_ = n.layerName ? n.layerName : "layer", r.layers_ = n.layers ? n.layers : null, r.idProperty_ = n.idProperty, r } return em(e, t), e.prototype.readRawGeometry_ = function (t, e, r, n) { t.pos = e.geometry; for (var i = t.readVarint() + t.pos, o = 1, a = 0, s = 0, l = 0, u = 0, c = 0; t.pos < i;) { if (!a) { var h = t.readVarint(); o = 7 & h, a = h >> 3 } a--, 1 === o || 2 === o ? (s += t.readSVarint(), l += t.readSVarint(), 1 === o && u > c && (n.push(u), c = u), r.push(s, l), u += 2) : 7 === o ? u > c && (r.push(r[c], r[c + 1]), u += 2) : pt(!1, 59) } u > c && (n.push(u), c = u) }, e.prototype.createFeature_ = function (t, e, r) { var n, i = e.type; if (0 === i) return null; var o, a = e.properties; this.idProperty_ ? (o = a[this.idProperty_], delete a[this.idProperty_]) : o = e.id, a[this.layerName_] = e.layer.name; var s = [], l = []; this.readRawGeometry_(t, e, s, l); var u = function (t, e) { var r; 1 === t ? r = 1 === e ? bt.POINT : bt.MULTI_POINT : 2 === t ? r = 1 === e ? bt.LINE_STRING : bt.MULTI_LINE_STRING : 3 === t && (r = bt.POLYGON); return r }(i, l.length); if (this.featureClass_ === Cy) (n = new this.featureClass_(u, s, l, a, o)).transform(r.dataProjection); else { var c = void 0; if (u == bt.POLYGON) { for (var h = [], p = 0, f = 0, d = 0, g = l.length; d < g; ++d) { var y = l[d]; if (ai(s, p, y, 2)) { if (0 === h.length) continue; h[h.length - 1].push(l[f]) } else h.push(l.slice(f, d + 1)); f = d + 1, p = y } c = h.length > 1 ? new Jy(s, yt, h) : new fi(s, yt, l) } else c = u === bt.POINT ? new qn(s, yt) : u === bt.LINE_STRING ? new Py(s, yt) : u === bt.POLYGON ? new fi(s, yt, l) : u === bt.MULTI_POINT ? new Hy(s, yt) : u === bt.MULTI_LINE_STRING ? new Zy(s, yt, l) : null; n = new (0, this.featureClass_), this.geometryName_ && n.setGeometryName(this.geometryName_); var m = Wy(c, !1, r); n.setGeometry(m), n.setId(o), n.setProperties(a, !0) } return n }, e.prototype.getType = function () { return Cu }, e.prototype.readFeatures = function (t, e) { var r = this.layers_, n = this.adaptOptions(e), i = Gr(n.dataProjection); i.setWorldExtent(n.extent), n.dataProjection = i; var o = new tm.a(t), a = o.readFields(rm, {}), s = []; for (var l in a) if (!r || -1 != r.indexOf(l)) { var u = a[l], c = u ? [0, 0, u.extent, u.extent] : null; i.setExtent(c); for (var h = 0, p = u.length; h < p; ++h) { var f = om(o, u, h); s.push(this.createFeature_(o, f, n)) } } return s }, e.prototype.readProjection = function (t) { return this.dataProjection }, e.prototype.setLayers = function (t) { this.layers_ = t }, e }(Yy), sm = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), lm = function (t) { function e(e) { var r = this, n = e || {}, i = O({}, n); delete i.preload, delete i.useInterimTilesOnError, r = t.call(this, i) || this; var o = n.renderMode || dy; return pt(null == o || o == fy || o == dy || o == gy, 28), r.renderMode_ = o, r.setPreload(n.preload ? n.preload : 0), r.setUseInterimTilesOnError(void 0 === n.useInterimTilesOnError || n.useInterimTilesOnError), r } return sm(e, t), e.prototype.createRenderer = function () { return new _y(this) }, e.prototype.getFeatures = function (e) { return t.prototype.getFeatures.call(this, e) }, e.prototype.getRenderMode = function () { return this.renderMode_ }, e.prototype.getPreload = function () { return this.get(gd) }, e.prototype.getUseInterimTilesOnError = function () { return this.get(yd) }, e.prototype.setPreload = function (t) { this.set(gd, t) }, e.prototype.setUseInterimTilesOnError = function (t) { this.set(yd, t) }, e }(wg), um = r(2), cm = r.n(um), hm = r(0); "function" == typeof Object.assign && Object.assign; function pm(t) { return t * Math.PI / 180 } var fm = function () { for (var t = [], e = 78271.51696402048; t.length <= 24; e /= 2) t.push(e); return t }(); function dm(t, e) { if ("undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope && "undefined" != typeof OffscreenCanvas) return new OffscreenCanvas(t, e); var r = document.createElement("canvas"); return r.width = t, r.height = e, r } var gm, ym = Array(256).join(" "); function mm(t, e) { if (e >= .05) { for (var r = "", n = t.split("\n"), i = ym.slice(0, Math.round(e / .1)), o = 0, a = n.length; o < a; ++o) o > 0 && (r += "\n"), r += n[o].split("").join(i); return r } return t } function vm() { return gm || (gm = dm(1, 1).getContext("2d")), gm } function _m(t, e) { return vm().measureText(t).width + (t.length - 1) * e } var bm = {}; ga && Z(ga, k, (function () { bm = {} })); var xm, wm, Sm = hm.e.isFunction, Em = hm.e.convertFunction, Tm = hm.c.isExpression, Cm = hm.c.createPropertyExpression, Om = {Point: 1, MultiPoint: 1, LineString: 2, MultiLineString: 2, Polygon: 3, MultiPolygon: 3}, Pm = { center: [.5, .5], left: [0, .5], right: [1, .5], top: [.5, 0], bottom: [.5, 1], "top-left": [0, 0], "top-right": [1, 0], "bottom-left": [0, 1], "bottom-right": [1, 1] }, Rm = {}, Im = {zoom: 0}, Lm = {}; function Mm(t, e, r, n, i) { var o = t.id; Lm[o] || (Lm[o] = {}); var a = Lm[o]; if (!a[r]) { var s = (t[e] || Rm)[r], l = hm.f[e + "_" + t.type][r]; void 0 === s && (s = l.default); var u = Tm(s); if (!u && Sm(s) && (s = Em(s, l), u = !0), u) { var c = function (t, e) { var r = Cm(t, e); if ("error" === r.result) throw new Error(r.value.map((function (t) { return t.key + ": " + t.message })).join(", ")); return r.value }(s, l); a[r] = c.evaluate.bind(c) } else "color" == l.type && (s = hm.a.parse(s)), a[r] = function () { return s } } return Im.zoom = n, a[r](Im, i) } var Fm = {}; function Am(t, e) { if (t) { if (0 === t.a || 0 === e) return; var r = t.a; return e = void 0 === e ? 1 : e, "rgba(" + Math.round(255 * t.r / r) + "," + Math.round(255 * t.g / r) + "," + Math.round(255 * t.b / r) + "," + r * e + ")" } return t } var km = /^([^]*)\{(.*)\}([^]*)$/; function jm(t, e) { var r; do { if (r = t.match(km)) { var n = e[r[2]] || ""; t = r[1] + n + r[3] } } while (r); return t } var Nm = !1; var Dm = function (t, e, r, n, i, o, a) { if (void 0 === n && (n = fm), "string" == typeof e && (e = JSON.parse(e)), 8 != e.version) throw new Error("glStyle version 8 required."); var s, l; if (o) if ("undefined" != typeof Image) { var u = new Image; u.crossOrigin = "anonymous", u.onload = function () { s = u, l = [u.width, u.height], t.changed(), u.onload = null }, u.src = o } else if ("undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope) { var c = self; c.postMessage({action: "loadImage", src: o}), c.addEventListener("message", (function (t) { "imageLoaded" === t.data.action && t.data.src === o && (s = t.data.image, l = [s.width, s.height]) })) } for (var h, p = Object(hm.b)(e.layers), f = {}, d = [], g = 0, y = p.length; g < y; ++g) { var m = p[g], v = m.id; if ("string" == typeof r && m.source == r || -1 !== r.indexOf(v)) { var _ = m["source-layer"]; if (!h) { h = m.source; var b = e.sources[h]; if (!b) throw new Error('Source "' + h + '" is not defined'); var x = b.type; if ("vector" !== x && "geojson" !== x) throw new Error('Source "' + h + '" is not of type "vector" or "geojson", but "' + x + '"') } var w = f[_]; w || (w = f[_] = []), w.push({layer: m, index: g}), d.push(v) } delete Lm[v], delete Fm[v] } var S = new gp, E = new ep, T = {}, C = {}, O = [], P = function (t, e) { var r = t.getProperties(), o = f[r.layer]; if (o) { var u = n.indexOf(e); -1 == u && (u = function (t, e) { for (var r = 0, n = e.length; r < n; ++r) { if (e[r] < t && r + 1 < n) { var i = e[r] / e[r + 1]; return r + Math.log(e[r] / t) / Math.log(i) } } return n - 1 }(e, n)); for (var c, h = Om[t.getGeometry().getType()], p = {properties: r, type: h}, d = -1, g = function (n, f) { var g = o[n], y = g.layer, m = y.id, v = y.layout || Rm, _ = y.paint || Rm; if ("none" === v.visibility || "minzoom" in y && u < y.minzoom || "maxzoom" in y && u >= y.maxzoom) return "continue"; var b = y.filter; if (!b || function (t, e, r, n) { return t in Fm || (Fm[t] = Object(hm.d)(e).filter), Im.zoom = n, Fm[t](Im, r) }(m, b, p, u)) { c = y; var x = void 0, w = void 0, P = void 0, R = void 0, I = void 0, L = void 0, M = g.index; if (3 == h && ("fill" == y.type || "fill-extrusion" == y.type)) if (w = Mm(y, "paint", y.type + "-opacity", u, p), y.type + "-pattern" in _) { var F = Mm(y, "paint", y.type + "-pattern", u, p); if (F) { var A = "string" == typeof F ? jm(F, r) : F.toString(); if (s && i && i[A]) { ++d, (L = O[d]) && L.getFill() && !L.getStroke() && !L.getText() || (L = O[d] = new wp({fill: new ep})), P = L.getFill(), L.setZIndex(M); var k = C[ut = A + "." + w]; if (!k) (pt = (ht = dm((ct = i[A]).width, ct.height)).getContext("2d")).globalAlpha = w, pt.drawImage(s, ct.x, ct.y, ct.width, ct.height, 0, 0, ct.width, ct.height), k = pt.createPattern(ht, "repeat"), C[ut] = k; P.setColor(k) } } } else (x = Am(Mm(y, "paint", y.type + "-color", u, p), w)) && (y.type + "-outline-color" in _ && (I = Am(Mm(y, "paint", y.type + "-outline-color", u, p), w)), I || (I = x), ++d, (L = O[d]) && L.getFill() && L.getStroke() && !L.getText() || (L = O[d] = new wp({ fill: new ep, stroke: new gp })), (P = L.getFill()).setColor(x), (R = L.getStroke()).setColor(I), R.setWidth(1), L.setZIndex(M)); if (1 != h && "line" == y.type) { x = !("line-pattern" in _) && "line-color" in _ ? Am(Mm(y, "paint", "line-color", u, p), Mm(y, "paint", "line-opacity", u, p)) : void 0; var j = Mm(y, "paint", "line-width", u, p); x && j > 0 && (++d, (L = O[d]) && L.getStroke() && !L.getFill() && !L.getText() || (L = O[d] = new wp({stroke: new gp})), (R = L.getStroke()).setLineCap(Mm(y, "layout", "line-cap", u, p)), R.setLineJoin(Mm(y, "layout", "line-join", u, p)), R.setMiterLimit(Mm(y, "layout", "line-miter-limit", u, p)), R.setColor(x), R.setWidth(j), R.setLineDash(_["line-dasharray"] ? Mm(y, "paint", "line-dasharray", u, p).map((function (t) { return t * j })) : null), L.setZIndex(M)) } var N = !1, D = null, G = 0, z = void 0, U = void 0, B = void 0; if ((1 == h || 2 == h) && "icon-image" in v) { var V = Mm(y, "layout", "icon-image", u, p); if (V) { z = "string" == typeof V ? jm(V, r) : V.toString(); var Y = void 0; if (s && i && i[z]) { var W = Mm(y, "layout", "icon-rotation-alignment", u, p); if (2 == h) { var q = t.getGeometry(); if (q.getFlatMidpoint || q.getFlatMidpoints) { var X = q.getExtent(); if (Math.sqrt(Math.max(Math.pow((X[2] - X[0]) / e, 2), Math.pow((X[3] - X[1]) / e, 2))) > 150) { var Z = "MultiLineString" === q.getType() ? q.getFlatMidpoints() : q.getFlatMidpoint(); if (wm || (wm = new Cy("Point", xm = [NaN, NaN], [], {}, null)), Y = wm, xm[0] = Z[0], xm[1] = Z[1], "line" === (Mt = Mm(y, "layout", "symbol-placement", u, p)) && "map" === W) for (var K = q.getStride(), H = q.getFlatCoordinates(), $ = 0, J = H.length - K; $ < J; $ += K) { var Q = H[$], tt = H[$ + 1], et = H[$ + K], rt = H[$ + K + 1], nt = Math.min(Q, et), it = Math.min(tt, rt), ot = Math.max(Q, et), at = Math.max(tt, rt); if (Z[0] >= nt && Z[0] <= ot && Z[1] >= it && Z[1] <= at) { G = Math.atan2(tt - rt, et - Q); break } } } } } if (2 !== h || Y) { ++d, (L = O[d]) && L.getImage() && !L.getFill() && !L.getStroke() || (L = O[d] = new wp), L.setGeometry(Y); var st = Mm(y, "layout", "icon-size", u, p), lt = void 0 !== _["icon-color"] ? Mm(y, "paint", "icon-color", u, p) : null, ut = z + "." + st; if (null !== lt && (ut += "." + lt), !(U = T[ut])) { var ct = i[z]; if (null !== lt) { var ht, pt; (pt = (ht = dm(ct.width, ct.height)).getContext("2d")).drawImage(s, ct.x, ct.y, ct.width, ct.height, 0, 0, ct.width, ct.height); for (var ft = pt.getImageData(0, 0, ht.width, ht.height), dt = 0, gt = ft.data.length; dt < gt; dt += 4) { var yt = lt.a; 0 !== yt && (ft.data[dt] = 255 * lt.r / yt, ft.data[dt + 1] = 255 * lt.g / yt, ft.data[dt + 2] = 255 * lt.b / yt), ft.data[dt + 3] = yt } pt.putImageData(ft, 0, 0), U = T[ut] = new dp({ img: ht, imgSize: [ht.width, ht.height], scale: st / ct.pixelRatio }) } else U = T[ut] = new dp({ img: s, imgSize: l, size: [ct.width, ct.height], offset: [ct.x, ct.y], rotateWithView: "map" === W, scale: st / ct.pixelRatio }) } U.setRotation(G + pm(Mm(y, "layout", "icon-rotate", u, p))), U.setOpacity(Mm(y, "paint", "icon-opacity", u, p)), U.setAnchor(Pm[Mm(y, "layout", "icon-anchor", u, p)]), L.setImage(U), D = L.getText(), L.setText(void 0), L.setZIndex(M), N = !0, B = !1 } else B = !0 } } } if (1 == h && "circle-radius" in _) { ++d, (L = O[d]) && L.getImage() && !L.getFill() && !L.getStroke() || (L = O[d] = new wp); var mt = Mm(y, "paint", "circle-radius", u, p), vt = Am(Mm(y, "paint", "circle-stroke-color", u, p), Mm(y, "paint", "circle-stroke-opacity", u, p)), _t = Am(Mm(y, "paint", "circle-color", u, p), Mm(y, "paint", "circle-opacity", u, p)), bt = Mm(y, "paint", "circle-stroke-width", u, p), xt = mt + "." + vt + "." + _t + "." + bt; (U = T[xt]) || (U = T[xt] = new tp({ radius: mt, stroke: vt && bt > 0 ? new gp({width: bt, color: vt}) : void 0, fill: _t ? new ep({color: _t}) : void 0 })), L.setImage(U), D = L.getText(), L.setText(void 0), L.setGeometry(void 0), L.setZIndex(M), N = !0 } var wt = void 0; if ("text-field" in v) wt = jm(Mm(y, "layout", "text-field", u, p).toString(), r).trim(), w = Mm(y, "paint", "text-opacity", u, p); if (wt && w && !B) { N || (++d, (L = O[d]) && L.getText() && !L.getFill() && !L.getStroke() || (L = O[d] = new wp), L.setImage(void 0), L.setGeometry(void 0)), L.getText() || L.setText(D || new Tp({padding: [2, 2, 2, 2]})), D = L.getText(); var St = Math.round(Mm(y, "layout", "text-size", u, p)), Et = Mm(y, "layout", "text-font", u, p), Tt = Mm(y, "layout", "text-line-height", u, p), Ct = cm()(a ? a(Et) : Et, St, Tt), Ot = v["text-transform"]; "uppercase" == Ot ? wt = wt.toUpperCase() : "lowercase" == Ot && (wt = wt.toLowerCase()); var Pt = Mm(y, "layout", "text-max-width", u, p), Rt = Mm(y, "layout", "text-letter-spacing", u, p), It = 2 == h ? mm(wt, Rt) : function t(e, r, n, i) { if (-1 !== e.indexOf("\n")) { for (var o = e.split("\n"), a = [], s = 0, l = o.length; s < l; ++s) a.push(t(o[s], r, n, i)); return a.join("\n") } var u = n + "," + r + "," + e + "," + i, c = bm[u]; if (!c) { var h = e.split(" "); if (h.length > 1) { var p = vm(); p.font = r; var f = p.measureText("M").width * n, d = ""; for (a = [], s = 0, l = h.length; s < l; ++s) { var g = h[s], y = d + (d ? " " : "") + g; _m(y, i) <= f ? d = y : (d && a.push(d), d = g) } d && a.push(d); for (s = 0, l = a.length; s < l && l > 1; ++s) { var m = a[s]; if (_m(m, i) < .35 * f) { var v = s > 0 ? _m(a[s - 1], i) : 1 / 0, _ = s < l - 1 ? _m(a[s + 1], i) : 1 / 0; a.splice(s, 1), l -= 1, v < _ ? (a[s - 1] += " " + m, s -= 1) : a[s] = m + " " + a[s] } } for (s = 0, l = a.length - 1; s < l; ++s) { var b = a[s], x = a[s + 1]; if (_m(b, i) > .7 * f && _m(x, i) < .6 * f) { var w = b.split(" "), S = w.pop(); _m(S, i) < .2 * f && (a[s] = w.join(" "), a[s + 1] = S + " " + x), l -= 1 } } c = a.join("\n") } else c = e; c = mm(c, i), bm[u] = c } return c }(wt, Ct, Pt, Rt); D.setText(It), D.setFont(Ct), D.setRotation(pm(Mm(y, "layout", "text-rotate", u, p))); var Lt = Mm(y, "layout", "text-anchor", u, p), Mt = N || 1 == h ? "point" : Mm(y, "layout", "symbol-placement", u, p); D.setPlacement(Mt); var Ft = Mm(y, "paint", "text-halo-width", u, p), At = Mm(y, "layout", "text-offset", u, p), kt = Mm(y, "paint", "text-translate", u, p), jt = 0, Nt = 0; if ("point" == Mt) { var Dt = "center"; -1 !== Lt.indexOf("left") ? (Dt = "left", Nt = Ft) : -1 !== Lt.indexOf("right") && (Dt = "right", Nt = -Ft), D.setTextAlign(Dt); var Gt = Mm(y, "layout", "text-rotation-alignment", u, p); D.setRotateWithView("map" == Gt) } else D.setMaxAngle(pm(Mm(y, "layout", "text-max-angle", u, p)) * wt.length / It.length), D.setTextAlign(), D.setRotateWithView(!1); var zt = "middle"; 0 == Lt.indexOf("bottom") ? (zt = "bottom", jt = -Ft - .5 * (Tt - 1) * St) : 0 == Lt.indexOf("top") && (zt = "top", jt = Ft + .5 * (Tt - 1) * St), D.setTextBaseline(zt), D.setOffsetX(At[0] * St + Nt + kt[0]), D.setOffsetY(At[1] * St + jt + kt[1]), E.setColor(Am(Mm(y, "paint", "text-color", u, p), w)), D.setFill(E); var Ut = Am(Mm(y, "paint", "text-halo-color", u, p), w); if (Ut) { S.setColor(Ut), Ft *= 2; var Bt = .5 * St; S.setWidth(Ft <= Bt ? Ft : Bt), D.setStroke(S) } else D.setStroke(void 0); var Vt = Mm(y, "layout", "text-padding", u, p), Yt = D.getPadding(); Vt !== Yt[0] && (Yt[0] = Yt[1] = Yt[2] = Yt[3] = Vt), L.setZIndex(M) } } }, y = 0, m = o.length; y < m; ++y) g(y); return d > -1 ? (O.length = d + 1, Nm && ("function" == typeof t.set ? t.set("mapbox-layer", c) : t.getProperties()["mapbox-layer"] = c), O) : void 0 } }; return t.setStyle(P), t.set("mapbox-source", h), t.set("mapbox-layers", d), P }, Gm = r(6), zm = r.n(Gm), Um = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Bm(t) { for (var e = [], r = 0, n = t.length; r < n; ++r) e.push(t[r].clone()); return e } var Vm = function (t) { function e(e) { var r = t.call(this) || this; return r.geometries_ = e || null, r.changeEventsKeys_ = [], r.listenGeometriesChange_(), r } return Um(e, t), e.prototype.unlistenGeometriesChange_ = function () { this.changeEventsKeys_.forEach(H), this.changeEventsKeys_.length = 0 }, e.prototype.listenGeometriesChange_ = function () { if (this.geometries_) for (var t = 0, e = this.geometries_.length; t < e; ++t) this.changeEventsKeys_.push(Z(this.geometries_[t], F, this.changed, this)) }, e.prototype.clone = function () { var t = new e(null); return t.setGeometries(this.geometries_), t.applyProperties(this), t }, e.prototype.closestPointXY = function (t, e, r, n) { if (n < Jt(this.getExtent(), t, e)) return n; for (var i = this.geometries_, o = 0, a = i.length; o < a; ++o) n = i[o].closestPointXY(t, e, r, n); return n }, e.prototype.containsXY = function (t, e) { for (var r = this.geometries_, n = 0, i = r.length; n < i; ++n) if (r[n].containsXY(t, e)) return !0; return !1 }, e.prototype.computeExtent = function (t) { oe(t); for (var e = this.geometries_, r = 0, n = e.length; r < n; ++r) he(t, e[r].getExtent()); return t }, e.prototype.getGeometries = function () { return Bm(this.geometries_) }, e.prototype.getGeometriesArray = function () { return this.geometries_ }, e.prototype.getGeometriesArrayRecursive = function () { for (var t = [], e = this.geometries_, r = 0, n = e.length; r < n; ++r) e[r].getType() === this.getType() ? t = t.concat(e[r].getGeometriesArrayRecursive()) : t.push(e[r]); return t }, e.prototype.getSimplifiedGeometry = function (t) { if (this.simplifiedGeometryRevision !== this.getRevision() && (this.simplifiedGeometryMaxMinSquaredTolerance = 0, this.simplifiedGeometryRevision = this.getRevision()), t < 0 || 0 !== this.simplifiedGeometryMaxMinSquaredTolerance && t < this.simplifiedGeometryMaxMinSquaredTolerance) return this; for (var r = [], n = this.geometries_, i = !1, o = 0, a = n.length; o < a; ++o) { var s = n[o], l = s.getSimplifiedGeometry(t); r.push(l), l !== s && (i = !0) } if (i) { var u = new e(null); return u.setGeometriesArray(r), u } return this.simplifiedGeometryMaxMinSquaredTolerance = t, this }, e.prototype.getType = function () { return bt.GEOMETRY_COLLECTION }, e.prototype.intersectsExtent = function (t) { for (var e = this.geometries_, r = 0, n = e.length; r < n; ++r) if (e[r].intersectsExtent(t)) return !0; return !1 }, e.prototype.isEmpty = function () { return 0 === this.geometries_.length }, e.prototype.rotate = function (t, e) { for (var r = this.geometries_, n = 0, i = r.length; n < i; ++n) r[n].rotate(t, e); this.changed() }, e.prototype.scale = function (t, e, r) { var n = r; n || (n = xe(this.getExtent())); for (var i = this.geometries_, o = 0, a = i.length; o < a; ++o) i[o].scale(t, e, n); this.changed() }, e.prototype.setGeometries = function (t) { this.setGeometriesArray(Bm(t)) }, e.prototype.setGeometriesArray = function (t) { this.unlistenGeometriesChange_(), this.geometries_ = t, this.listenGeometriesChange_(), this.changed() }, e.prototype.applyTransform = function (t) { for (var e = this.geometries_, r = 0, n = e.length; r < n; ++r) e[r].applyTransform(t); this.changed() }, e.prototype.translate = function (t, e) { for (var r = this.geometries_, n = 0, i = r.length; n < i; ++n) r[n].translate(t, e); this.changed() }, e.prototype.disposeInternal = function () { this.unlistenGeometriesChange_(), t.prototype.disposeInternal.call(this) }, e }(dn), Ym = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Wm(t) { if ("string" == typeof t) { var e = JSON.parse(t); return e || null } return null !== t ? t : null } var qm = function (t) { function e() { return t.call(this) || this } return Ym(e, t), e.prototype.getType = function () { return Ou }, e.prototype.readFeature = function (t, e) { return this.readFeatureFromObject(Wm(t), this.getReadOptions(t, e)) }, e.prototype.readFeatures = function (t, e) { return this.readFeaturesFromObject(Wm(t), this.getReadOptions(t, e)) }, e.prototype.readFeatureFromObject = function (t, e) { return n() }, e.prototype.readFeaturesFromObject = function (t, e) { return n() }, e.prototype.readGeometry = function (t, e) { return this.readGeometryFromObject(Wm(t), this.getReadOptions(t, e)) }, e.prototype.readGeometryFromObject = function (t, e) { return n() }, e.prototype.readProjection = function (t) { return this.readProjectionFromObject(Wm(t)) }, e.prototype.readProjectionFromObject = function (t) { return n() }, e.prototype.writeFeature = function (t, e) { return JSON.stringify(this.writeFeatureObject(t, e)) }, e.prototype.writeFeatureObject = function (t, e) { return n() }, e.prototype.writeFeatures = function (t, e) { return JSON.stringify(this.writeFeaturesObject(t, e)) }, e.prototype.writeFeaturesObject = function (t, e) { return n() }, e.prototype.writeGeometry = function (t, e) { return JSON.stringify(this.writeGeometryObject(t, e)) }, e.prototype.writeGeometryObject = function (t, e) { return n() }, e }(Yy), Xm = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Zm(t, e) { if (!t) return null; var r; switch (t.type) { case bt.POINT: r = function (t) { return new qn(t.coordinates) }(t); break; case bt.LINE_STRING: r = function (t) { return new Py(t.coordinates) }(t); break; case bt.POLYGON: r = function (t) { return new fi(t.coordinates) }(t); break; case bt.MULTI_POINT: r = function (t) { return new Hy(t.coordinates) }(t); break; case bt.MULTI_LINE_STRING: r = function (t) { return new Zy(t.coordinates) }(t); break; case bt.MULTI_POLYGON: r = function (t) { return new Jy(t.coordinates) }(t); break; case bt.GEOMETRY_COLLECTION: r = function (t, e) { var r = t.geometries.map((function (t) { return Zm(t, e) })); return new Vm(r) }(t); break; default: throw new Error("Unsupported GeoJSON type: " + t.type) } return Wy(r, !1, e) } function Km(t, e) { var r, n = (t = Wy(t, !0, e)).getType(); switch (n) { case bt.POINT: r = function (t, e) { return {type: "Point", coordinates: t.getCoordinates()} }(t); break; case bt.LINE_STRING: r = function (t, e) { return {type: "LineString", coordinates: t.getCoordinates()} }(t); break; case bt.POLYGON: r = function (t, e) { var r; e && (r = e.rightHanded); return {type: "Polygon", coordinates: t.getCoordinates(r)} }(t, e); break; case bt.MULTI_POINT: r = function (t, e) { return {type: "MultiPoint", coordinates: t.getCoordinates()} }(t); break; case bt.MULTI_LINE_STRING: r = function (t, e) { return {type: "MultiLineString", coordinates: t.getCoordinates()} }(t); break; case bt.MULTI_POLYGON: r = function (t, e) { var r; e && (r = e.rightHanded); return {type: "MultiPolygon", coordinates: t.getCoordinates(r)} }(t, e); break; case bt.GEOMETRY_COLLECTION: r = function (t, e) { return { type: "GeometryCollection", geometries: t.getGeometriesArray().map((function (t) { var r = O({}, e); return delete r.featureProjection, Km(t, r) })) } }(t, e); break; case bt.CIRCLE: r = {type: "GeometryCollection", geometries: []}; break; default: throw new Error("Unsupported geometry type: " + n) } return r } var Hm, $m = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this) || this).dataProjection = Gr(n.dataProjection ? n.dataProjection : "EPSG:4326"), n.featureProjection && (r.defaultFeatureProjection = Gr(n.featureProjection)), r.geometryName_ = n.geometryName, r.extractGeometryName_ = n.extractGeometryName, r } return Xm(e, t), e.prototype.readFeatureFromObject = function (t, e) { var r = null, n = Zm((r = "Feature" === t.type ? t : {type: "Feature", geometry: t, properties: null}).geometry, e), i = new gt; return this.geometryName_ ? i.setGeometryName(this.geometryName_) : this.extractGeometryName_ && "geometry_name" in r !== void 0 && i.setGeometryName(r.geometry_name), i.setGeometry(n), "id" in r && i.setId(r.id), r.properties && i.setProperties(r.properties, !0), i }, e.prototype.readFeaturesFromObject = function (t, e) { var r = null; if ("FeatureCollection" === t.type) { r = []; for (var n = t.features, i = 0, o = n.length; i < o; ++i) r.push(this.readFeatureFromObject(n[i], e)) } else r = [this.readFeatureFromObject(t, e)]; return r }, e.prototype.readGeometryFromObject = function (t, e) { return Zm(t, e) }, e.prototype.readProjectionFromObject = function (t) { var e, r = t.crs; return r ? "name" == r.type ? e = Gr(r.properties.name) : "EPSG" === r.type ? e = Gr("EPSG:" + r.properties.code) : pt(!1, 36) : e = this.dataProjection, e }, e.prototype.writeFeatureObject = function (t, e) { e = this.adaptOptions(e); var r = {type: "Feature", geometry: null, properties: null}, n = t.getId(); if (void 0 !== n && (r.id = n), !t.hasProperties()) return r; var i = t.getProperties(), o = t.getGeometry(); return o && (r.geometry = Km(o, e), delete i[t.getGeometryName()]), I(i) || (r.properties = i), r }, e.prototype.writeFeaturesObject = function (t, e) { e = this.adaptOptions(e); for (var r = [], n = 0, i = t.length; n < i; ++n) r.push(this.writeFeatureObject(t[n], e)); return {type: "FeatureCollection", features: r} }, e.prototype.writeGeometryObject = function (t, e) { return Km(t, this.adaptOptions(e)) }, e }(qm), Jm = /font-family: ?([^;]*);/, Qm = /("|')/g; function tv(t) { if (!Hm) { Hm = {}; for (var e = document.styleSheets, r = 0, n = e.length; r < n; ++r) { var i = e[r]; try { var o = i.rules || i.cssRules; if (o) for (var a = 0, s = o.length; a < s; ++a) { var l = o[a]; if (5 == l.type) { var u = l.cssText.match(Jm); Hm[u[1].replace(Qm, "")] = !0 } } } catch (t) { } } } return t in Hm } var ev = {}, rv = zm.a.getNames(); function nv(t) { var e = t.toString(); if (e in ev) return t; for (var r = t.map((function (t) { var e = cm()(t, 1).split(" "); return [e.slice(3).join(" ").replace(/"/g, ""), e[1] + e[0]] })), n = 0, i = r.length; n < i; ++n) { var o = r[n], a = o[0]; if (!tv(a) && -1 !== rv.indexOf(a)) { var s = "https://fonts.googleapis.com/css?family=" + a.replace(/ /g, "+") + ":" + o[1]; if (!document.querySelector('link[href="' + s + '"]')) { var l = document.createElement("link"); l.href = s, l.rel = "stylesheet", document.head.appendChild(l) } } } return ev[e] = !0, t } var iv = /^(.*)(\?.*)$/; function ov(t, e) { return e && 0 === t.indexOf(".") && (t = e + t), t } function av(t, e, r) { var n = (t = ov(t, e)).match(iv); return n ? n[1] + r + (n.length > 2 ? n[2] : "") : t + r } function sv(t, e, r, n, i) { return new Promise((function (o, a) { if ("object" != typeof e && (e = JSON.parse(e)), 8 != e.version) return a(new Error("glStyle version 8 required.")); if (!(t instanceof Iy || t instanceof lm)) return a(new Error("Can only apply to VectorLayer or VectorTileLayer")); var s, l, u; function c() { u || e.sprite && !s ? u ? (t.setStyle(u), o()) : a(new Error("Something went wrong trying to apply style.")) : (u = Dm(t, e, r, i, s, l, nv), t.getStyle() ? o() : a(new Error("Nothing to show for source [" + r + "]"))) } if (e.sprite) { var h = .5 == (window.devicePixelRatio >= 1.5 ? .5 : 1) ? "@2x" : "", p = av(e.sprite, n, h + ".json"); fetch(p, {credentials: "same-origin"}).then((function (t) { return t.ok || "" === h ? t : (p = av(e.sprite, n, ".json"), fetch(p, {credentials: "same-origin"})) })).then((function (t) { if (t.ok) return t.json(); a(new Error("Problem fetching sprite from " + p + ": " + t.statusText)) })).then((function (t) { if (void 0 === t) return a(new Error("No sprites found.")); s = t, l = av(e.sprite, n, h + ".png"), c() })).catch((function (t) { a(new Error("Sprites cannot be loaded: " + p + ": " + t.message)) })) } else c() })) } new $m; var lv = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function uv(t) { return 0 !== t.indexOf("mapbox://") ? "" : t.slice("mapbox://".length) } function cv(t, e) { var r = uv(t); if (!r) return t; if (0 !== r.indexOf("sprites/")) throw new Error("unexpected sprites url: " + t); return "https://api.mapbox.com/styles/v1/" + r.slice("sprites/".length) + "/sprite?access_token=" + e } function hv(t, e) { var r = uv(t); if (!r) return t; if (0 !== r.indexOf("fonts/")) throw new Error("unexpected fonts url: " + t); return "https://api.mapbox.com/fonts/v1/" + r.slice("fonts/".length) + "/0-255.pbf?access_token=" + e } function pv(t, e) { var r = uv(t); if (!r) return t; if (0 !== r.indexOf("styles/")) throw new Error("unexpected style url: " + t); return "https://api.mapbox.com/styles/v1/" + r.slice("styles/".length) + "?&access_token=" + e } function fv(t, e) { var r = uv(t); return r ? "https://{a-d}.tiles.mapbox.com/v4/" + r + "/{z}/{x}/{y}.vector.pbf?access_token=" + e : t } var dv = function (t) { function e(e) { var r = t.call(this, A) || this; return r.error = e, r } return lv(e, t), e }(c), gv = "vector", yv = function (t) { function e(e) { var r = this, n = !("declutter" in e) || e.declutter, i = new og({state: Jo, format: new am}); return (r = t.call(this, { source: i, declutter: n, className: e.className, opacity: e.opacity, visible: e.visible, zIndex: e.zIndex, minResolution: e.minResolution, maxResolution: e.maxResolution, minZoom: e.minZoom, maxZoom: e.maxZoom, renderOrder: e.renderOrder, renderBuffer: e.renderBuffer, renderMode: e.renderMode, map: e.map, updateWhileAnimating: e.updateWhileAnimating, updateWhileInteracting: e.updateWhileInteracting, preload: e.preload, useInterimTilesOnError: e.useInterimTilesOnError }) || this).sourceId = e.source, r.layers = e.layers, r.accessToken = e.accessToken, r.fetchStyle(e.styleUrl), r } return lv(e, t), e.prototype.fetchStyle = function (t) { var e = this, r = pv(t, this.accessToken); fetch(r).then((function (t) { if (!t.ok) throw new Error("unexpected response when fetching style: " + t.status); return t.json() })).then((function (t) { e.onStyleLoad(t) })).catch((function (t) { e.handleError(t) })) }, e.prototype.onStyleLoad = function (t) { var e, r, n = this; if (this.layers) { for (var i = {}, o = 0; o < t.layers.length; ++o) { var a = t.layers[o]; a.source && (i[a.id] = a.source) } var s = void 0; for (o = 0; o < this.layers.length; ++o) { var l = i[this.layers[o]]; if (!l) return void this.handleError(new Error("could not find source for " + this.layers[o])); if (s) { if (s !== l) return void this.handleError(new Error("layers can only use a single source, found " + s + " and " + l)) } else s = l } e = s, r = this.layers } else r = e = this.sourceId; r || (r = e = Object.keys(t.sources)[0]), t.sprite && (t.sprite = cv(t.sprite, this.accessToken)), t.glyphs && (t.glyphs = hv(t.glyphs, this.accessToken)); var u = t.sources[e]; if (u.type === gv) { var c = this.getSource(); c.setUrl(fv(u.url, this.accessToken)), sv(this, t, r).then((function () { c.setState(Qo) })).catch((function (t) { n.handleError(t) })) } else this.handleError(new Error("only works for vector sources, found " + u.type)) }, e.prototype.handleError = function (t) { this.dispatchEvent(new dv(t)), this.getSource().setState(ta) }, e }(lm), mv = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), vv = function (t) { function e(e) { var r = this, n = e || {}, i = O({}, n); return delete i.imageRatio, (r = t.call(this, i) || this).imageRatio_ = void 0 !== n.imageRatio ? n.imageRatio : 1, r } return mv(e, t), e.prototype.getImageRatio = function () { return this.imageRatio_ }, e.prototype.createRenderer = function () { return new py(this) }, e }(wg), _v = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), bv = function (t) { function e(e) { var r = this, n = O({}, e); return (r = t.call(this, n) || this).parseResult_ = Wh(e.style), r.hitDetectionDisabled_ = !!e.disableHitDetection, r } return _v(e, t), e.prototype.createRenderer = function () { return new Eg(this, { className: this.getClassName(), vertexShader: this.parseResult_.builder.getSymbolVertexShader(), fragmentShader: this.parseResult_.builder.getSymbolFragmentShader(), hitVertexShader: !this.hitDetectionDisabled_ && this.parseResult_.builder.getSymbolVertexShader(!0), hitFragmentShader: !this.hitDetectionDisabled_ && this.parseResult_.builder.getSymbolFragmentShader(!0), uniforms: this.parseResult_.uniforms, attributes: this.parseResult_.attributes }) }, e.prototype.disposeInternal = function () { this.getRenderer().disposeInternal(), t.prototype.disposeInternal.call(this) }, e }(na), xv = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), wv = "addfeatures", Sv = function (t) { function e(e, r, n, i) { var o = t.call(this, e) || this; return o.features = n, o.file = r, o.projection = i, o } return xv(e, t), e }(c), Ev = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, {handleEvent: S}) || this).readAsBuffer_ = !1, r.formats_ = []; for (var i = n.formatConstructors ? n.formatConstructors : [], o = 0, a = i.length; o < a; ++o) { var s = i[o]; "function" == typeof s && (s = new s), r.formats_.push(s), r.readAsBuffer_ = r.readAsBuffer_ || s.getType() === Cu } return r.projection_ = n.projection ? Gr(n.projection) : null, r.dropListenKeys_ = null, r.source_ = n.source || null, r.target = n.target ? n.target : null, r } return xv(e, t), e.prototype.handleResult_ = function (t, e) { var r, n = e.target.result, i = this.getMap(), o = this.projection_; o || (o = i.getView().getProjection()); for (var a = this.formats_, s = 0, l = a.length; s < l; ++s) { var u = a[s], c = n; this.readAsBuffer_ && u.getType() !== Cu && (void 0 === r && (r = (new TextDecoder).decode(n)), c = r); var h = this.tryReadFeatures_(u, c, {featureProjection: o}); if (h && h.length > 0) { this.source_ && (this.source_.clear(), this.source_.addFeatures(h)), this.dispatchEvent(new Sv(wv, t, h, o)); break } } }, e.prototype.registerListeners_ = function () { var t = this.getMap(); if (t) { var e = this.target ? this.target : t.getViewport(); this.dropListenKeys_ = [Z(e, U, this.handleDrop, this), Z(e, G, this.handleStop, this), Z(e, z, this.handleStop, this), Z(e, U, this.handleStop, this)] } }, e.prototype.setActive = function (e) { !this.getActive() && e && this.registerListeners_(), this.getActive() && !e && this.unregisterListeners_(), t.prototype.setActive.call(this, e) }, e.prototype.setMap = function (e) { this.unregisterListeners_(), t.prototype.setMap.call(this, e), this.getActive() && this.registerListeners_() }, e.prototype.tryReadFeatures_ = function (t, e, r) { try { return t.readFeatures(e, r) } catch (t) { return null } }, e.prototype.unregisterListeners_ = function () { this.dropListenKeys_ && (this.dropListenKeys_.forEach(H), this.dropListenKeys_ = null) }, e.prototype.handleDrop = function (t) { for (var e = t.dataTransfer.files, r = 0, n = e.length; r < n; ++r) { var i = e.item(r), o = new FileReader; o.addEventListener(Y, this.handleResult_.bind(this, i)), this.readAsBuffer_ ? o.readAsArrayBuffer(i) : o.readAsText(i) } }, e.prototype.handleStop = function (t) { t.stopPropagation(), t.preventDefault(), t.dataTransfer.dropEffect = "copy" }, e }(qs), Tv = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Cv = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, n) || this).condition_ = n.condition ? n.condition : ll, r.lastAngle_ = void 0, r.lastMagnitude_ = void 0, r.lastScaleDelta_ = 0, r.duration_ = void 0 !== n.duration ? n.duration : 400, r } return Tv(e, t), e.prototype.handleDragEvent = function (t) { if (cl(t)) { var e = t.map, r = e.getSize(), n = t.pixel, i = n[0] - r[0] / 2, o = r[1] / 2 - n[1], a = Math.atan2(o, i), s = Math.sqrt(i * i + o * o), l = e.getView(); if (void 0 !== this.lastAngle_) { var u = this.lastAngle_ - a; l.adjustRotationInternal(u) } this.lastAngle_ = a, void 0 !== this.lastMagnitude_ && l.adjustResolutionInternal(this.lastMagnitude_ / s), void 0 !== this.lastMagnitude_ && (this.lastScaleDelta_ = this.lastMagnitude_ / s), this.lastMagnitude_ = s } }, e.prototype.handleUpEvent = function (t) { if (!cl(t)) return !0; var e = t.map.getView(), r = this.lastScaleDelta_ > 1 ? 1 : -1; return e.endInteraction(this.duration_, r), this.lastScaleDelta_ = 0, !1 }, e.prototype.handleDownEvent = function (t) { return !!cl(t) && (!!this.condition_(t) && (t.map.getView().beginInteraction(), this.lastAngle_ = void 0, this.lastMagnitude_ = void 0, !0)) }, e }($s), Ov = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Pv = function (t) { function e(e, r, n) { var i = t.call(this) || this; if (void 0 !== n && void 0 === r) i.setFlatCoordinates(n, e); else { var o = r || 0; i.setCenterAndRadius(e, o, n) } return i } return Ov(e, t), e.prototype.clone = function () { var t = new e(this.flatCoordinates.slice(), void 0, this.layout); return t.applyProperties(this), t }, e.prototype.closestPointXY = function (t, e, r, n) { var i = this.flatCoordinates, o = t - i[0], a = e - i[1], s = o * o + a * a; if (s < n) { if (0 === s) for (var l = 0; l < this.stride; ++l) r[l] = i[l]; else { var u = this.getRadius() / Math.sqrt(s); r[0] = i[0] + u * o, r[1] = i[1] + u * a; for (l = 2; l < this.stride; ++l) r[l] = i[l] } return r.length = this.stride, s } return n }, e.prototype.containsXY = function (t, e) { var r = this.flatCoordinates, n = t - r[0], i = e - r[1]; return n * n + i * i <= this.getRadiusSquared_() }, e.prototype.getCenter = function () { return this.flatCoordinates.slice(0, this.stride) }, e.prototype.computeExtent = function (t) { var e = this.flatCoordinates, r = e[this.stride] - e[0]; return ie(e[0] - r, e[1] - r, e[0] + r, e[1] + r, t) }, e.prototype.getRadius = function () { return Math.sqrt(this.getRadiusSquared_()) }, e.prototype.getRadiusSquared_ = function () { var t = this.flatCoordinates[this.stride] - this.flatCoordinates[0], e = this.flatCoordinates[this.stride + 1] - this.flatCoordinates[1]; return t * t + e * e }, e.prototype.getType = function () { return bt.CIRCLE }, e.prototype.intersectsExtent = function (t) { if (Re(t, this.getExtent())) { var e = this.getCenter(); return t[0] <= e[0] && t[2] >= e[0] || (t[1] <= e[1] && t[3] >= e[1] || me(t, this.intersectsCoordinate.bind(this))) } return !1 }, e.prototype.setCenter = function (t) { var e = this.stride, r = this.flatCoordinates[e] - this.flatCoordinates[0], n = t.slice(); n[e] = n[0] + r; for (var i = 1; i < e; ++i) n[e + i] = t[i]; this.setFlatCoordinates(this.layout, n), this.changed() }, e.prototype.setCenterAndRadius = function (t, e, r) { this.setLayout(r, t, 0), this.flatCoordinates || (this.flatCoordinates = []); var n = this.flatCoordinates, i = Cn(n, 0, t, this.stride); n[i++] = n[0] + e; for (var o = 1, a = this.stride; o < a; ++o) n[i++] = n[o]; n.length = i, this.changed() }, e.prototype.getCoordinates = function () { return null }, e.prototype.setCoordinates = function (t, e) { }, e.prototype.setRadius = function (t) { this.flatCoordinates[this.stride] = this.flatCoordinates[0] + t, this.changed() }, e.prototype.rotate = function (t, e) { var r = this.getCenter(), n = this.getStride(); this.setCenter(un(r, 0, r.length, n, t, e, r)), this.changed() }, e.prototype.translate = function (t, e) { var r = this.getCenter(), n = this.getStride(); this.setCenter(hn(r, 0, r.length, n, t, e, r)), this.changed() }, e }(vn); Pv.prototype.transform; var Rv = Pv, Iv = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Lv = "Point", Mv = "LineString", Fv = "Polygon", Av = "Circle", kv = "drawstart", jv = "drawend", Nv = "drawabort", Dv = function (t) { function e(e, r) { var n = t.call(this, e) || this; return n.feature = r, n } return Iv(e, t), e }(c); var Gv = function (t) { function e(e) { var r = this, n = e; n.stopDown || (n.stopDown = E), (r = t.call(this, n) || this).shouldHandle_ = !1, r.downPx_ = null, r.downTimeout_, r.lastDragTime_, r.pointerType_, r.freehand_ = !1, r.source_ = e.source ? e.source : null, r.features_ = e.features ? e.features : null, r.snapTolerance_ = e.snapTolerance ? e.snapTolerance : 12, r.type_ = e.type, r.mode_ = function (t) { var e; t === bt.POINT || t === bt.MULTI_POINT ? e = Lv : t === bt.LINE_STRING || t === bt.MULTI_LINE_STRING ? e = Mv : t === bt.POLYGON || t === bt.MULTI_POLYGON ? e = Fv : t === bt.CIRCLE && (e = Av); return e }(r.type_), r.stopClick_ = !!e.stopClick, r.minPoints_ = e.minPoints ? e.minPoints : r.mode_ === Fv ? 3 : 2, r.maxPoints_ = r.mode_ === Av ? 2 : e.maxPoints ? e.maxPoints : 1 / 0, r.finishCondition_ = e.finishCondition ? e.finishCondition : S; var i, o = e.geometryFunction; if (!o) { var a, s = r.mode_; if (s === Av) o = function (t, e, r) { var n = e || new Rv([NaN, NaN]), i = rn(t[0], r), o = Rr(i, rn(t[t.length - 1], r)); n.setCenterAndRadius(i, Math.sqrt(o)); var a = tn(); return a && n.transform(r, a), n }; else s === Lv ? a = qn : s === Mv ? a = Py : s === Fv && (a = fi), o = function (t, e, r) { return e ? s === Fv ? t[0].length ? e.setCoordinates([t[0].concat([t[0][0]])]) : e.setCoordinates([]) : e.setCoordinates(t) : e = new a(t), e } } return r.geometryFunction_ = o, r.dragVertexDelay_ = void 0 !== e.dragVertexDelay ? e.dragVertexDelay : 500, r.finishCoordinate_ = null, r.sketchFeature_ = null, r.sketchPoint_ = null, r.sketchCoords_ = null, r.sketchLine_ = null, r.sketchLineCoords_ = null, r.squaredClickTolerance_ = e.clickTolerance ? e.clickTolerance * e.clickTolerance : 36, r.overlay_ = new Iy({ source: new hf({ useSpatialIndex: !1, wrapX: !!e.wrapX && e.wrapX }), style: e.style ? e.style : (i = bp(), function (t, e) { return i[t.getGeometry().getType()] }), updateWhileInteracting: !0 }), r.geometryName_ = e.geometryName, r.condition_ = e.condition ? e.condition : sl, r.freehandCondition_, e.freehand ? r.freehandCondition_ = nl : r.freehandCondition_ = e.freehandCondition ? e.freehandCondition : ll, r.addEventListener(it(Bs), r.updateState_), r } return Iv(e, t), e.prototype.setMap = function (e) { t.prototype.setMap.call(this, e), this.updateState_() }, e.prototype.getOverlay = function () { return this.overlay_ }, e.prototype.handleEvent = function (e) { e.originalEvent.type === j && e.originalEvent.preventDefault(), this.freehand_ = this.mode_ !== Lv && this.freehandCondition_(e); var r = e.type === Ga.POINTERMOVE, n = !0; !this.freehand_ && this.lastDragTime_ && e.type === Ga.POINTERDRAG && (Date.now() - this.lastDragTime_ >= this.dragVertexDelay_ ? (this.downPx_ = e.pixel, this.shouldHandle_ = !this.freehand_, r = !0) : this.lastDragTime_ = void 0, this.shouldHandle_ && void 0 !== this.downTimeout_ && (clearTimeout(this.downTimeout_), this.downTimeout_ = void 0)); return this.freehand_ && e.type === Ga.POINTERDRAG && null !== this.sketchFeature_ ? (this.addToDrawing_(e.coordinate), n = !1) : this.freehand_ && e.type === Ga.POINTERDOWN ? n = !1 : r && this.getPointerCount() < 2 ? (n = e.type === Ga.POINTERMOVE) && this.freehand_ ? (this.handlePointerMove_(e), this.shouldHandle_ && e.originalEvent.preventDefault()) : ("mouse" === e.originalEvent.pointerType || e.type === Ga.POINTERDRAG && void 0 === this.downTimeout_) && this.handlePointerMove_(e) : e.type === Ga.DBLCLICK && (n = !1), t.prototype.handleEvent.call(this, e) && n }, e.prototype.handleDownEvent = function (t) { return this.shouldHandle_ = !this.freehand_, this.freehand_ ? (this.downPx_ = t.pixel, this.finishCoordinate_ || this.startDrawing_(t.coordinate), !0) : this.condition_(t) ? (this.lastDragTime_ = Date.now(), this.downTimeout_ = setTimeout(function () { this.handlePointerMove_(new Da(Ga.POINTERMOVE, t.map, t.originalEvent, !1, t.frameState)) }.bind(this), this.dragVertexDelay_), this.downPx_ = t.pixel, !0) : (this.lastDragTime_ = void 0, !1) }, e.prototype.handleUpEvent = function (t) { var e = !0; if (0 === this.getPointerCount()) if (this.downTimeout_ && (clearTimeout(this.downTimeout_), this.downTimeout_ = void 0), this.handlePointerMove_(t), this.shouldHandle_) { switch (!0) { case!this.finishCoordinate_: if (this.startDrawing_(t.coordinate), this.mode_ !== Lv) break; case this.freehand_ || this.atFinish_(t.pixel) && this.finishCondition_(t): this.finishDrawing(); break; case!this.freehand_: this.addToDrawing_(t.coordinate) } e = !1 } else this.freehand_ && this.abortDrawing(); return !e && this.stopClick_ && t.originalEvent.stopPropagation(), e }, e.prototype.handlePointerMove_ = function (t) { if (this.pointerType_ = t.originalEvent.pointerType, this.downPx_ && (!this.freehand_ && this.shouldHandle_ || this.freehand_ && !this.shouldHandle_)) { var e = this.downPx_, r = t.pixel, n = e[0] - r[0], i = e[1] - r[1], o = n * n + i * i; if (this.shouldHandle_ = this.freehand_ ? o > this.squaredClickTolerance_ : o <= this.squaredClickTolerance_, !this.shouldHandle_) return } this.finishCoordinate_ ? this.modifyDrawing_(t.coordinate) : this.createOrUpdateSketchPoint_(t) }, e.prototype.atFinish_ = function (t) { var e = !1; if (this.sketchFeature_) { var r = !1, n = [this.finishCoordinate_], i = this.mode_; if (i === Lv) e = !0; else if (i === Av) e = 2 === this.sketchCoords_.length; else if (i === Mv) r = this.sketchCoords_.length > this.minPoints_; else if (i === Fv) { var o = this.sketchCoords_; r = o[0].length > this.minPoints_, n = [o[0][0], o[0][o[0].length - 2]] } if (r) for (var a = this.getMap(), s = 0, l = n.length; s < l; s++) { var u = n[s], c = a.getPixelFromCoordinate(u), h = t[0] - c[0], p = t[1] - c[1], f = this.freehand_ ? 1 : this.snapTolerance_; if (e = Math.sqrt(h * h + p * p) <= f) { this.finishCoordinate_ = u; break } } } return e }, e.prototype.createOrUpdateSketchPoint_ = function (t) { var e = t.coordinate.slice(); this.sketchPoint_ ? this.sketchPoint_.getGeometry().setCoordinates(e) : (this.sketchPoint_ = new gt(new qn(e)), this.updateSketchFeatures_()) }, e.prototype.createOrUpdateCustomSketchLine_ = function (t) { this.sketchLine_ || (this.sketchLine_ = new gt); var e = t.getLinearRing(0), r = this.sketchLine_.getGeometry(); r ? (r.setFlatCoordinates(e.getLayout(), e.getFlatCoordinates()), r.changed()) : (r = new Py(e.getFlatCoordinates(), e.getLayout()), this.sketchLine_.setGeometry(r)) }, e.prototype.startDrawing_ = function (t) { var e = this.getMap().getView().getProjection(); this.finishCoordinate_ = t, this.mode_ === Lv ? this.sketchCoords_ = t.slice() : this.mode_ === Fv ? (this.sketchCoords_ = [[t.slice(), t.slice()]], this.sketchLineCoords_ = this.sketchCoords_[0]) : this.sketchCoords_ = [t.slice(), t.slice()], this.sketchLineCoords_ && (this.sketchLine_ = new gt(new Py(this.sketchLineCoords_))); var r = this.geometryFunction_(this.sketchCoords_, void 0, e); this.sketchFeature_ = new gt, this.geometryName_ && this.sketchFeature_.setGeometryName(this.geometryName_), this.sketchFeature_.setGeometry(r), this.updateSketchFeatures_(), this.dispatchEvent(new Dv(kv, this.sketchFeature_)) }, e.prototype.modifyDrawing_ = function (t) { var e, r, n = this.getMap(), i = this.sketchFeature_.getGeometry(), o = n.getView().getProjection(); (this.mode_ === Lv ? r = this.sketchCoords_ : this.mode_ === Fv ? (r = (e = this.sketchCoords_[0])[e.length - 1], this.atFinish_(n.getPixelFromCoordinate(t)) && (t = this.finishCoordinate_.slice())) : r = (e = this.sketchCoords_)[e.length - 1], r[0] = t[0], r[1] = t[1], this.geometryFunction_(this.sketchCoords_, i, o), this.sketchPoint_) && this.sketchPoint_.getGeometry().setCoordinates(t); if (i.getType() === bt.POLYGON && this.mode_ !== Fv) this.createOrUpdateCustomSketchLine_(i); else if (this.sketchLineCoords_) { this.sketchLine_.getGeometry().setCoordinates(this.sketchLineCoords_) } this.updateSketchFeatures_() }, e.prototype.addToDrawing_ = function (t) { var e, r, n = this.sketchFeature_.getGeometry(), i = this.getMap().getView().getProjection(), o = this.mode_; o === Mv || o === Av ? (this.finishCoordinate_ = t.slice(), (r = this.sketchCoords_).length >= this.maxPoints_ && (this.freehand_ ? r.pop() : e = !0), r.push(t.slice()), this.geometryFunction_(r, n, i)) : o === Fv && ((r = this.sketchCoords_[0]).length >= this.maxPoints_ && (this.freehand_ ? r.pop() : e = !0), r.push(t.slice()), e && (this.finishCoordinate_ = r[0]), this.geometryFunction_(this.sketchCoords_, n, i)), this.updateSketchFeatures_(), e && this.finishDrawing() }, e.prototype.removeLastPoint = function () { if (this.sketchFeature_) { var t, e = this.sketchFeature_.getGeometry(), r = this.getMap().getView().getProjection(), n = this.mode_; if (n === Mv || n === Av) { if ((t = this.sketchCoords_).splice(-2, 1), t.length >= 2) { this.finishCoordinate_ = t[t.length - 2].slice(); var i = this.finishCoordinate_.slice(); t[t.length - 1] = i, this.sketchPoint_.setGeometry(new qn(i)) } this.geometryFunction_(t, e, r), e.getType() === bt.POLYGON && this.sketchLine_ && this.createOrUpdateCustomSketchLine_(e) } else if (n === Fv) { (t = this.sketchCoords_[0]).splice(-2, 1); var o = this.sketchLine_.getGeometry(); if (t.length >= 2) { i = t[t.length - 2].slice(); t[t.length - 1] = i, this.sketchPoint_.setGeometry(new qn(i)) } o.setCoordinates(t), this.geometryFunction_(this.sketchCoords_, e, r) } 1 === t.length && this.abortDrawing(), this.updateSketchFeatures_() } }, e.prototype.finishDrawing = function () { var t = this.abortDrawing_(); if (t) { var e = this.sketchCoords_, r = t.getGeometry(), n = this.getMap().getView().getProjection(); this.mode_ === Mv ? (e.pop(), this.geometryFunction_(e, r, n)) : this.mode_ === Fv && (e[0].pop(), this.geometryFunction_(e, r, n), e = r.getCoordinates()), this.type_ === bt.MULTI_POINT ? t.setGeometry(new Hy([e])) : this.type_ === bt.MULTI_LINE_STRING ? t.setGeometry(new Zy([e])) : this.type_ === bt.MULTI_POLYGON && t.setGeometry(new Jy([e])), this.dispatchEvent(new Dv(jv, t)), this.features_ && this.features_.push(t), this.source_ && this.source_.addFeature(t) } }, e.prototype.abortDrawing_ = function () { this.finishCoordinate_ = null; var t = this.sketchFeature_; return this.sketchFeature_ = null, this.sketchPoint_ = null, this.sketchLine_ = null, this.overlay_.getSource().clear(!0), t }, e.prototype.abortDrawing = function () { var t = this.abortDrawing_(); t && this.dispatchEvent(new Dv(Nv, t)) }, e.prototype.appendCoordinates = function (t) { var e, r = this.mode_, n = !this.sketchFeature_; if (n && this.startDrawing_(t[0]), r === Mv || r === Av) e = this.sketchCoords_; else { if (r !== Fv) return; e = this.sketchCoords_ && this.sketchCoords_.length ? this.sketchCoords_[0] : [] } n && e.shift(), e.pop(); for (var i = 0; i < t.length; i++) this.addToDrawing_(t[i]); var o = t[t.length - 1]; this.addToDrawing_(o), this.modifyDrawing_(o) }, e.prototype.extend = function (t) { var e = t.getGeometry(); this.sketchFeature_ = t, this.sketchCoords_ = e.getCoordinates(); var r = this.sketchCoords_[this.sketchCoords_.length - 1]; this.finishCoordinate_ = r.slice(), this.sketchCoords_.push(r.slice()), this.sketchPoint_ = new gt(new qn(r)), this.updateSketchFeatures_(), this.dispatchEvent(new Dv(kv, this.sketchFeature_)) }, e.prototype.updateSketchFeatures_ = function () { var t = []; this.sketchFeature_ && t.push(this.sketchFeature_), this.sketchLine_ && t.push(this.sketchLine_), this.sketchPoint_ && t.push(this.sketchPoint_); var e = this.overlay_.getSource(); e.clear(!0), e.addFeatures(t) }, e.prototype.updateState_ = function () { var t = this.getMap(), e = this.getActive(); t && e || this.abortDrawing(), this.overlay_.setMap(e ? t : null) }, e }($s), zv = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Uv = "extentchanged", Bv = function (t) { function e(e) { var r = t.call(this, Uv) || this; return r.extent = e, r } return zv(e, t), e }(c); function Vv() { var t = bp(); return function (e, r) { return t[bt.POINT] } } function Yv(t) { return function (e) { return Kt([t, e]) } } function Wv(t, e) { return t[0] == e[0] ? function (r) { return Kt([t, [r[0], e[1]]]) } : t[1] == e[1] ? function (r) { return Kt([t, [e[0], r[1]]]) } : null } var qv = function (t) { function e(e) { var r, n = this, i = e || {}; return (n = t.call(this, i) || this).condition_ = i.condition ? i.condition : nl, n.extent_ = null, n.pointerHandler_ = null, n.pixelTolerance_ = void 0 !== i.pixelTolerance ? i.pixelTolerance : 10, n.snappedToVertex_ = !1, n.extentFeature_ = null, n.vertexFeature_ = null, e || (e = {}), n.extentOverlay_ = new Iy({ source: new hf({ useSpatialIndex: !1, wrapX: !!e.wrapX }), style: e.boxStyle ? e.boxStyle : (r = bp(), function (t, e) { return r[bt.POLYGON] }), updateWhileAnimating: !0, updateWhileInteracting: !0 }), n.vertexOverlay_ = new Iy({ source: new hf({useSpatialIndex: !1, wrapX: !!e.wrapX}), style: e.pointerStyle ? e.pointerStyle : Vv(), updateWhileAnimating: !0, updateWhileInteracting: !0 }), e.extent && n.setExtent(e.extent), n } return zv(e, t), e.prototype.snapToVertex_ = function (t, e) { var r = e.getCoordinateFromPixelInternal(t), n = this.getExtentInternal(); if (n) { var i = function (t) { return [[[t[0], t[1]], [t[0], t[3]]], [[t[0], t[3]], [t[2], t[3]]], [[t[2], t[3]], [t[2], t[1]]], [[t[2], t[1]], [t[0], t[1]]]] }(n); i.sort((function (t, e) { return Lr(r, t) - Lr(r, e) })); var o = i[0], a = Sr(r, o), s = e.getPixelFromCoordinateInternal(a); if (Ir(t, s) <= this.pixelTolerance_) { var l = e.getPixelFromCoordinateInternal(o[0]), u = e.getPixelFromCoordinateInternal(o[1]), c = Rr(s, l), h = Rr(s, u), p = Math.sqrt(Math.min(c, h)); return this.snappedToVertex_ = p <= this.pixelTolerance_, this.snappedToVertex_ && (a = c > h ? o[1] : o[0]), a } } return null }, e.prototype.handlePointerMove_ = function (t) { var e = t.pixel, r = t.map, n = this.snapToVertex_(e, r); n || (n = r.getCoordinateFromPixelInternal(e)), this.createOrUpdatePointerFeature_(n) }, e.prototype.createOrUpdateExtentFeature_ = function (t) { var e = this.extentFeature_; return e ? t ? e.setGeometry(gi(t)) : e.setGeometry(void 0) : (e = new gt(t ? gi(t) : {}), this.extentFeature_ = e, this.extentOverlay_.getSource().addFeature(e)), e }, e.prototype.createOrUpdatePointerFeature_ = function (t) { var e = this.vertexFeature_; e ? e.getGeometry().setCoordinates(t) : (e = new gt(new qn(t)), this.vertexFeature_ = e, this.vertexOverlay_.getSource().addFeature(e)); return e }, e.prototype.handleEvent = function (e) { return !e.originalEvent || !this.condition_(e) || (e.type != Ga.POINTERMOVE || this.handlingDownUpSequence || this.handlePointerMove_(e), t.prototype.handleEvent.call(this, e), !1) }, e.prototype.handleDownEvent = function (t) { var e = t.pixel, r = t.map, n = this.getExtentInternal(), i = this.snapToVertex_(e, r), o = function (t) { var e = null, r = null; return t[0] == n[0] ? e = n[2] : t[0] == n[2] && (e = n[0]), t[1] == n[1] ? r = n[3] : t[1] == n[3] && (r = n[1]), null !== e && null !== r ? [e, r] : null }; if (i && n) { var a = i[0] == n[0] || i[0] == n[2] ? i[0] : null, s = i[1] == n[1] || i[1] == n[3] ? i[1] : null; null !== a && null !== s ? this.pointerHandler_ = Yv(o(i)) : null !== a ? this.pointerHandler_ = Wv(o([a, n[1]]), o([a, n[3]])) : null !== s && (this.pointerHandler_ = Wv(o([n[0], s]), o([n[2], s]))) } else i = r.getCoordinateFromPixelInternal(e), this.setExtent([i[0], i[1], i[0], i[1]]), this.pointerHandler_ = Yv(i); return !0 }, e.prototype.handleDragEvent = function (t) { if (this.pointerHandler_) { var e = t.coordinate; this.setExtent(this.pointerHandler_(e)), this.createOrUpdatePointerFeature_(e) } }, e.prototype.handleUpEvent = function (t) { this.pointerHandler_ = null; var e = this.getExtentInternal(); return e && 0 !== ve(e) || this.setExtent(null), !1 }, e.prototype.setMap = function (e) { this.extentOverlay_.setMap(e), this.vertexOverlay_.setMap(e), t.prototype.setMap.call(this, e) }, e.prototype.getExtent = function () { return nn(this.getExtentInternal(), this.getMap().getView().getProjection()) }, e.prototype.getExtentInternal = function () { return this.extent_ }, e.prototype.setExtent = function (t) { this.extent_ = t || null, this.createOrUpdateExtentFeature_(t), this.dispatchEvent(new Bv(this.extent_)) }, e }($s), Xv = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Zv = [0, 0, 0, 0], Kv = [], Hv = "modifystart", $v = "modifyend", Jv = function (t) { function e(e, r, n) { var i = t.call(this, e) || this; return i.features = r, i.mapBrowserEvent = n, i } return Xv(e, t), e }(c); function Qv(t, e) { return t.index - e.index } function t_(t, e, r) { var n = e.geometry; if (n.getType() === bt.CIRCLE) { var i = n; if (1 === e.index) { var o = tn(); o && (i = i.clone().transform(o, r)); var a = Rr(i.getCenter(), rn(t, r)), s = Math.sqrt(a) - i.getRadius(); return s * s } } var l = rn(t, r); return Kv[0] = rn(e.segment[0], r), Kv[1] = rn(e.segment[1], r), Lr(l, Kv) } function e_(t, e, r) { var n = e.geometry; if (n.getType() === bt.CIRCLE && 1 === e.index) { var i = n, o = tn(); return o && (i = i.clone().transform(o, r)), en(i.getClosestPoint(rn(t, r)), r) } var a = rn(t, r); return Kv[0] = rn(e.segment[0], r), Kv[1] = rn(e.segment[1], r), en(Sr(a, Kv), r) } var r_ = function (t) { function e(e) { var r, n, i = t.call(this, e) || this; if (i.boundHandleFeatureChange_ = i.handleFeatureChange_.bind(i), i.condition_ = e.condition ? e.condition : hl, i.defaultDeleteCondition_ = function (t) { return Qs(t) && al(t) }, i.deleteCondition_ = e.deleteCondition ? e.deleteCondition : i.defaultDeleteCondition_, i.insertVertexCondition_ = e.insertVertexCondition ? e.insertVertexCondition : nl, i.vertexFeature_ = null, i.vertexSegments_ = null, i.lastPixel_ = [0, 0], i.ignoreNextSingleClick_ = !1, i.featuresBeingModified_ = null, i.rBush_ = new Rp, i.pixelTolerance_ = void 0 !== e.pixelTolerance ? e.pixelTolerance : 10, i.snappedToVertex_ = !1, i.changingFeature_ = !1, i.dragSegments_ = [], i.overlay_ = new Iy({ source: new hf({ useSpatialIndex: !1, wrapX: !!e.wrapX }), style: e.style ? e.style : (r = bp(), function (t, e) { return r[bt.POINT] }), updateWhileAnimating: !0, updateWhileInteracting: !0 }), i.SEGMENT_WRITERS_ = { Point: i.writePointGeometry_.bind(i), LineString: i.writeLineStringGeometry_.bind(i), LinearRing: i.writeLineStringGeometry_.bind(i), Polygon: i.writePolygonGeometry_.bind(i), MultiPoint: i.writeMultiPointGeometry_.bind(i), MultiLineString: i.writeMultiLineStringGeometry_.bind(i), MultiPolygon: i.writeMultiPolygonGeometry_.bind(i), Circle: i.writeCircleGeometry_.bind(i), GeometryCollection: i.writeGeometryCollectionGeometry_.bind(i) }, i.source_ = null, i.hitDetection_ = null, e.features ? n = e.features : e.source && (i.source_ = e.source, n = new ht(i.source_.getFeatures()), i.source_.addEventListener(ef, i.handleSourceAdd_.bind(i)), i.source_.addEventListener(of, i.handleSourceRemove_.bind(i))), !n) throw new Error("The modify interaction requires features, a source or a layer"); return e.hitDetection && (i.hitDetection_ = e.hitDetection), i.features_ = n, i.features_.forEach(i.addFeature_.bind(i)), i.features_.addEventListener(at, i.handleFeatureAdd_.bind(i)), i.features_.addEventListener(st, i.handleFeatureRemove_.bind(i)), i.lastPointerEvent_ = null, i.delta_ = [0, 0], i } return Xv(e, t), e.prototype.addFeature_ = function (t) { var e = t.getGeometry(); if (e) { var r = this.SEGMENT_WRITERS_[e.getType()]; r && r(t, e) } var n = this.getMap(); n && n.isRendered() && this.getActive() && this.handlePointerAtPixel_(this.lastPixel_, n), t.addEventListener(F, this.boundHandleFeatureChange_) }, e.prototype.willModifyFeatures_ = function (t, e) { if (!this.featuresBeingModified_) { this.featuresBeingModified_ = new ht; for (var r = this.featuresBeingModified_.getArray(), n = 0, i = e.length; n < i; ++n) { var o = e[n][0].feature; -1 === r.indexOf(o) && this.featuresBeingModified_.push(o) } this.dispatchEvent(new Jv(Hv, this.featuresBeingModified_, t)) } }, e.prototype.removeFeature_ = function (t) { this.removeFeatureSegmentData_(t), this.vertexFeature_ && 0 === this.features_.getLength() && (this.overlay_.getSource().removeFeature(this.vertexFeature_), this.vertexFeature_ = null), t.removeEventListener(F, this.boundHandleFeatureChange_) }, e.prototype.removeFeatureSegmentData_ = function (t) { var e = this.rBush_, r = []; e.forEach((function (e) { t === e.feature && r.push(e) })); for (var n = r.length - 1; n >= 0; --n) { for (var i = r[n], o = this.dragSegments_.length - 1; o >= 0; --o) this.dragSegments_[o][0] === i && this.dragSegments_.splice(o, 1); e.remove(i) } }, e.prototype.setActive = function (e) { this.vertexFeature_ && !e && (this.overlay_.getSource().removeFeature(this.vertexFeature_), this.vertexFeature_ = null), t.prototype.setActive.call(this, e) }, e.prototype.setMap = function (e) { this.overlay_.setMap(e), t.prototype.setMap.call(this, e) }, e.prototype.getOverlay = function () { return this.overlay_ }, e.prototype.handleSourceAdd_ = function (t) { t.feature && this.features_.push(t.feature) }, e.prototype.handleSourceRemove_ = function (t) { t.feature && this.features_.remove(t.feature) }, e.prototype.handleFeatureAdd_ = function (t) { this.addFeature_(t.element) }, e.prototype.handleFeatureChange_ = function (t) { if (!this.changingFeature_) { var e = t.target; this.removeFeature_(e), this.addFeature_(e) } }, e.prototype.handleFeatureRemove_ = function (t) { var e = t.element; this.removeFeature_(e) }, e.prototype.writePointGeometry_ = function (t, e) { var r = e.getCoordinates(), n = {feature: t, geometry: e, segment: [r, r]}; this.rBush_.insert(e.getExtent(), n) }, e.prototype.writeMultiPointGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) { var o = r[n], a = {feature: t, geometry: e, depth: [n], index: n, segment: [o, o]}; this.rBush_.insert(e.getExtent(), a) } }, e.prototype.writeLineStringGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length - 1; n < i; ++n) { var o = r.slice(n, n + 2), a = {feature: t, geometry: e, index: n, segment: o}; this.rBush_.insert(Kt(o), a) } }, e.prototype.writeMultiLineStringGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { var l = o.slice(a, a + 2), u = {feature: t, geometry: e, depth: [n], index: a, segment: l}; this.rBush_.insert(Kt(l), u) } }, e.prototype.writePolygonGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { var l = o.slice(a, a + 2), u = {feature: t, geometry: e, depth: [n], index: a, segment: l}; this.rBush_.insert(Kt(l), u) } }, e.prototype.writeMultiPolygonGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) for (var o = r[n], a = 0, s = o.length; a < s; ++a) for (var l = o[a], u = 0, c = l.length - 1; u < c; ++u) { var h = l.slice(u, u + 2), p = {feature: t, geometry: e, depth: [a, n], index: u, segment: h}; this.rBush_.insert(Kt(h), p) } }, e.prototype.writeCircleGeometry_ = function (t, e) { var r = e.getCenter(), n = {feature: t, geometry: e, index: 0, segment: [r, r]}, i = {feature: t, geometry: e, index: 1, segment: [r, r]}, o = [n, i]; n.featureSegments = o, i.featureSegments = o, this.rBush_.insert(ae(r), n); var a = e, s = tn(); if (s && this.getMap()) { var l = this.getMap().getView().getProjection(); a = yi(a = a.clone().transform(s, l)).transform(l, s) } this.rBush_.insert(a.getExtent(), i) }, e.prototype.writeGeometryCollectionGeometry_ = function (t, e) { for (var r = e.getGeometriesArray(), n = 0; n < r.length; ++n) { var i = r[n]; (0, this.SEGMENT_WRITERS_[i.getType()])(t, i) } }, e.prototype.createOrUpdateVertexFeature_ = function (t, e, r) { var n = this.vertexFeature_; n ? n.getGeometry().setCoordinates(t) : (n = new gt(new qn(t)), this.vertexFeature_ = n, this.overlay_.getSource().addFeature(n)); return n.set("features", e), n.set("geometries", r), n }, e.prototype.handleEvent = function (e) { return !e.originalEvent || (this.lastPointerEvent_ = e, e.map.getView().getInteracting() || e.type != Ga.POINTERMOVE || this.handlingDownUpSequence || this.handlePointerMove_(e), this.vertexFeature_ && this.deleteCondition_(e) && (r = !(e.type != Ga.SINGLECLICK || !this.ignoreNextSingleClick_) || this.removePoint()), e.type == Ga.SINGLECLICK && (this.ignoreNextSingleClick_ = !1), t.prototype.handleEvent.call(this, e) && !r); var r }, e.prototype.handleDragEvent = function (t) { this.ignoreNextSingleClick_ = !1, this.willModifyFeatures_(t, this.dragSegments_); for (var e = [t.coordinate[0] + this.delta_[0], t.coordinate[1] + this.delta_[1]], r = [], n = [], i = 0, o = this.dragSegments_.length; i < o; ++i) { var a = this.dragSegments_[i], s = a[0], l = s.feature; -1 === r.indexOf(l) && r.push(l); var u = s.geometry; -1 === n.indexOf(u) && n.push(u); for (var c = s.depth, h = void 0, p = s.segment, f = a[1]; e.length < u.getStride();) e.push(p[f][e.length]); switch (u.getType()) { case bt.POINT: h = e, p[0] = e, p[1] = e; break; case bt.MULTI_POINT: (h = u.getCoordinates())[s.index] = e, p[0] = e, p[1] = e; break; case bt.LINE_STRING: (h = u.getCoordinates())[s.index + f] = e, p[f] = e; break; case bt.MULTI_LINE_STRING: case bt.POLYGON: (h = u.getCoordinates())[c[0]][s.index + f] = e, p[f] = e; break; case bt.MULTI_POLYGON: (h = u.getCoordinates())[c[1]][c[0]][s.index + f] = e, p[f] = e; break; case bt.CIRCLE: if (p[0] = e, p[1] = e, 0 === s.index) this.changingFeature_ = !0, u.setCenter(e), this.changingFeature_ = !1; else { this.changingFeature_ = !0; var d = t.map.getView().getProjection(), g = Ir(rn(u.getCenter(), d), rn(e, d)), y = tn(); if (y) { var m = u.clone().transform(y, d); m.setRadius(g), g = m.transform(d, y).getRadius() } u.setRadius(g), this.changingFeature_ = !1 } } h && this.setGeometryCoordinates_(u, h) } this.createOrUpdateVertexFeature_(e, r, n) }, e.prototype.handleDownEvent = function (t) { if (!this.condition_(t)) return !1; var e = t.coordinate; this.handlePointerAtPixel_(t.pixel, t.map, e), this.dragSegments_.length = 0, this.featuresBeingModified_ = null; var r = this.vertexFeature_; if (r) { var n = t.map.getView().getProjection(), i = [], a = r.getGeometry().getCoordinates(), s = Kt([a]), l = this.rBush_.getInExtent(s), u = {}; l.sort(Qv); for (var c = 0, h = l.length; c < h; ++c) { var p = l[c], f = p.segment, d = o(p.geometry), g = p.depth; if (g && (d += "-" + g.join("-")), u[d] || (u[d] = new Array(2)), p.geometry.getType() !== bt.CIRCLE || 1 !== p.index) if (!Cr(f[0], a) || u[d][0]) if (!Cr(f[1], a) || u[d][1]) o(f) in this.vertexSegments_ && !u[d][0] && !u[d][1] && this.insertVertexCondition_(t) && i.push(p); else { if ((p.geometry.getType() === bt.LINE_STRING || p.geometry.getType() === bt.MULTI_LINE_STRING) && u[d][0] && 0 === u[d][0].index) continue; this.dragSegments_.push([p, 1]), u[d][1] = p } else this.dragSegments_.push([p, 0]), u[d][0] = p; else Cr(e_(e, p, n), a) && !u[d][0] && (this.dragSegments_.push([p, 0]), u[d][0] = p) } i.length && this.willModifyFeatures_(t, [i]); for (var y = i.length - 1; y >= 0; --y) this.insertVertex_(i[y], a) } return !!this.vertexFeature_ }, e.prototype.handleUpEvent = function (t) { for (var e = this.dragSegments_.length - 1; e >= 0; --e) { var r = this.dragSegments_[e][0], n = r.geometry; if (n.getType() === bt.CIRCLE) { var i = n.getCenter(), o = r.featureSegments[0], a = r.featureSegments[1]; o.segment[0] = i, o.segment[1] = i, a.segment[0] = i, a.segment[1] = i, this.rBush_.update(ae(i), o); var s = n, l = tn(); if (l) { var u = t.map.getView().getProjection(); s = yi(s = s.clone().transform(l, u)).transform(u, l) } this.rBush_.update(s.getExtent(), a) } else this.rBush_.update(Kt(r.segment), r) } return this.featuresBeingModified_ && (this.dispatchEvent(new Jv($v, this.featuresBeingModified_, t)), this.featuresBeingModified_ = null), !1 }, e.prototype.handlePointerMove_ = function (t) { this.lastPixel_ = t.pixel, this.handlePointerAtPixel_(t.pixel, t.map, t.coordinate) }, e.prototype.handlePointerAtPixel_ = function (t, e, r) { var n, i, a = this, s = r || e.getCoordinateFromPixel(t), l = e.getView().getProjection(); if (this.hitDetection_) { var u = "object" == typeof this.hitDetection_ ? function (t) { return t === a.hitDetection_ } : void 0; e.forEachFeatureAtPixel(t, (function (t, e, r) { if ((r = r || t.getGeometry()).getType() === bt.POINT) { i = r; var o = r.getCoordinates(); n = [{feature: t, geometry: r, segment: [o, o]}] } return !0 }), {layerFilter: u}) } if (!n) { var c = nn(Ht(on(ae(s, Zv), l), e.getView().getResolution() * this.pixelTolerance_, Zv), l); n = this.rBush_.getInExtent(c) } if (n && n.length > 0) { var h = n.sort((function (t, e) { return t_(s, t, l) - t_(s, e, l) }))[0], p = h.segment, f = e_(s, h, l), d = e.getPixelFromCoordinate(f), g = Ir(t, d); if (i || g <= this.pixelTolerance_) { var y = {}; if (y[o(p)] = !0, this.delta_[0] = f[0] - s[0], this.delta_[1] = f[1] - s[1], h.geometry.getType() === bt.CIRCLE && 1 === h.index) this.snappedToVertex_ = !0, this.createOrUpdateVertexFeature_(f, [h.feature], [h.geometry]); else { var m = e.getPixelFromCoordinate(p[0]), v = e.getPixelFromCoordinate(p[1]), _ = Rr(d, m), b = Rr(d, v); g = Math.sqrt(Math.min(_, b)), this.snappedToVertex_ = g <= this.pixelTolerance_, this.snappedToVertex_ && (f = _ > b ? p[1] : p[0]), this.createOrUpdateVertexFeature_(f, [h.feature], [h.geometry]); var x = {}; x[o(h.geometry)] = !0; for (var w = 1, S = n.length; w < S; ++w) { var E = n[w].segment; if (!(Cr(p[0], E[0]) && Cr(p[1], E[1]) || Cr(p[0], E[1]) && Cr(p[1], E[0]))) break; var T = o(n[w].geometry); T in x || (x[T] = !0, y[o(E)] = !0) } } return void (this.vertexSegments_ = y) } } this.vertexFeature_ && (this.overlay_.getSource().removeFeature(this.vertexFeature_), this.vertexFeature_ = null) }, e.prototype.insertVertex_ = function (t, e) { for (var r, n = t.segment, i = t.feature, o = t.geometry, a = t.depth, s = t.index; e.length < o.getStride();) e.push(0); switch (o.getType()) { case bt.MULTI_LINE_STRING: case bt.POLYGON: (r = o.getCoordinates())[a[0]].splice(s + 1, 0, e); break; case bt.MULTI_POLYGON: (r = o.getCoordinates())[a[1]][a[0]].splice(s + 1, 0, e); break; case bt.LINE_STRING: (r = o.getCoordinates()).splice(s + 1, 0, e); break; default: return } this.setGeometryCoordinates_(o, r); var l = this.rBush_; l.remove(t), this.updateSegmentIndices_(o, s, a, 1); var u = {segment: [n[0], e], feature: i, geometry: o, depth: a, index: s}; l.insert(Kt(u.segment), u), this.dragSegments_.push([u, 1]); var c = {segment: [e, n[1]], feature: i, geometry: o, depth: a, index: s + 1}; l.insert(Kt(c.segment), c), this.dragSegments_.push([c, 0]), this.ignoreNextSingleClick_ = !0 }, e.prototype.removePoint = function () { if (this.lastPointerEvent_ && this.lastPointerEvent_.type != Ga.POINTERDRAG) { var t = this.lastPointerEvent_; this.willModifyFeatures_(t, this.dragSegments_); var e = this.removeVertex_(); return this.dispatchEvent(new Jv($v, this.featuresBeingModified_, t)), this.featuresBeingModified_ = null, e } return !1 }, e.prototype.removeVertex_ = function () { var t, e, r, n, i, a, s, l, u, c, h, p = this.dragSegments_, f = {}, d = !1; for (i = p.length - 1; i >= 0; --i) h = o((c = (r = p[i])[0]).feature), c.depth && (h += "-" + c.depth.join("-")), h in f || (f[h] = {}), 0 === r[1] ? (f[h].right = c, f[h].index = c.index) : 1 == r[1] && (f[h].left = c, f[h].index = c.index + 1); for (h in f) { switch (u = f[h].right, s = f[h].left, (l = (a = f[h].index) - 1) < 0 && (l = 0), t = e = (n = (c = void 0 !== s ? s : u).geometry).getCoordinates(), d = !1, n.getType()) { case bt.MULTI_LINE_STRING: e[c.depth[0]].length > 2 && (e[c.depth[0]].splice(a, 1), d = !0); break; case bt.LINE_STRING: e.length > 2 && (e.splice(a, 1), d = !0); break; case bt.MULTI_POLYGON: t = t[c.depth[1]]; case bt.POLYGON: (t = t[c.depth[0]]).length > 4 && (a == t.length - 1 && (a = 0), t.splice(a, 1), d = !0, 0 === a && (t.pop(), t.push(t[0]), l = t.length - 1)) } if (d) { this.setGeometryCoordinates_(n, e); var g = []; if (void 0 !== s && (this.rBush_.remove(s), g.push(s.segment[0])), void 0 !== u && (this.rBush_.remove(u), g.push(u.segment[1])), void 0 !== s && void 0 !== u) { var y = {depth: c.depth, feature: c.feature, geometry: c.geometry, index: l, segment: g}; this.rBush_.insert(Kt(y.segment), y) } this.updateSegmentIndices_(n, a, c.depth, -1), this.vertexFeature_ && (this.overlay_.getSource().removeFeature(this.vertexFeature_), this.vertexFeature_ = null), p.length = 0 } } return d }, e.prototype.setGeometryCoordinates_ = function (t, e) { this.changingFeature_ = !0, t.setCoordinates(e), this.changingFeature_ = !1 }, e.prototype.updateSegmentIndices_ = function (t, e, r, n) { this.rBush_.forEachInExtent(t.getExtent(), (function (i) { i.geometry === t && (void 0 === r || void 0 === i.depth || b(i.depth, r)) && i.index > e && (i.index += n) })) }, e }($s), n_ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), i_ = "select", o_ = function (t) { function e(e, r, n, i) { var o = t.call(this, e) || this; return o.selected = r, o.deselected = n, o.mapBrowserEvent = i, o } return n_(e, t), e }(c), a_ = {}; var s_ = function (t) { function e(e) { var r, n, i = t.call(this) || this, o = e || {}; if (i.boundAddFeature_ = i.addFeature_.bind(i), i.boundRemoveFeature_ = i.removeFeature_.bind(i), i.condition_ = o.condition ? o.condition : al, i.addCondition_ = o.addCondition ? o.addCondition : ol, i.removeCondition_ = o.removeCondition ? o.removeCondition : ol, i.toggleCondition_ = o.toggleCondition ? o.toggleCondition : ll, i.multi_ = !!o.multi && o.multi, i.filter_ = o.filter ? o.filter : S, i.hitTolerance_ = o.hitTolerance ? o.hitTolerance : 0, i.style_ = void 0 !== o.style ? o.style : (v((r = bp())[bt.POLYGON], r[bt.LINE_STRING]), v(r[bt.GEOMETRY_COLLECTION], r[bt.LINE_STRING]), function (t) { return t.getGeometry() ? r[t.getGeometry().getType()] : null }), i.features_ = o.features || new ht, o.layers) if ("function" == typeof o.layers) n = o.layers; else { var a = o.layers; n = function (t) { return g(a, t) } } else n = S; return i.layerFilter_ = n, i.featureLayerAssociation_ = {}, i } return n_(e, t), e.prototype.addFeatureLayerAssociation_ = function (t, e) { this.featureLayerAssociation_[o(t)] = e }, e.prototype.getFeatures = function () { return this.features_ }, e.prototype.getHitTolerance = function () { return this.hitTolerance_ }, e.prototype.getLayer = function (t) { return this.featureLayerAssociation_[o(t)] }, e.prototype.setHitTolerance = function (t) { this.hitTolerance_ = t }, e.prototype.setMap = function (e) { this.getMap() && this.style_ && this.features_.forEach(this.restorePreviousStyle_.bind(this)), t.prototype.setMap.call(this, e), e ? (this.features_.addEventListener(at, this.boundAddFeature_), this.features_.addEventListener(st, this.boundRemoveFeature_), this.style_ && this.features_.forEach(this.applySelectedStyle_.bind(this))) : (this.features_.removeEventListener(at, this.boundAddFeature_), this.features_.removeEventListener(st, this.boundRemoveFeature_)) }, e.prototype.addFeature_ = function (t) { var e = t.element; this.style_ && this.applySelectedStyle_(e) }, e.prototype.removeFeature_ = function (t) { var e = t.element; this.style_ && this.restorePreviousStyle_(e) }, e.prototype.getStyle = function () { return this.style_ }, e.prototype.applySelectedStyle_ = function (t) { var e = o(t); e in a_ || (a_[e] = t.getStyle()), t.setStyle(this.style_) }, e.prototype.restorePreviousStyle_ = function (t) { for (var r = this.getMap().getInteractions().getArray(), n = r.length - 1; n >= 0; --n) { var i = r[n]; if (i !== this && i instanceof e && i.getStyle() && -1 !== i.getFeatures().getArray().lastIndexOf(t)) return void t.setStyle(i.getStyle()) } var a = o(t); t.setStyle(a_[a]), delete a_[a] }, e.prototype.removeFeatureLayerAssociation_ = function (t) { delete this.featureLayerAssociation_[o(t)] }, e.prototype.handleEvent = function (t) { if (!this.condition_(t)) return !0; var e = this.addCondition_(t), r = this.removeCondition_(t), n = this.toggleCondition_(t), i = !e && !r && !n, o = t.map, a = this.getFeatures(), s = [], l = []; if (i) { P(this.featureLayerAssociation_), o.forEachFeatureAtPixel(t.pixel, function (t, e) { if (this.filter_(t, e)) return l.push(t), this.addFeatureLayerAssociation_(t, e), !this.multi_ }.bind(this), {layerFilter: this.layerFilter_, hitTolerance: this.hitTolerance_}); for (var u = a.getLength() - 1; u >= 0; --u) { var c = a.item(u), h = l.indexOf(c); h > -1 ? l.splice(h, 1) : (a.remove(c), s.push(c)) } 0 !== l.length && a.extend(l) } else { o.forEachFeatureAtPixel(t.pixel, function (t, i) { if (this.filter_(t, i)) return !e && !n || g(a.getArray(), t) ? (r || n) && g(a.getArray(), t) && (s.push(t), this.removeFeatureLayerAssociation_(t)) : (l.push(t), this.addFeatureLayerAssociation_(t, i)), !this.multi_ }.bind(this), {layerFilter: this.layerFilter_, hitTolerance: this.hitTolerance_}); for (var p = s.length - 1; p >= 0; --p) a.remove(s[p]); a.extend(l) } return (l.length > 0 || s.length > 0) && this.dispatchEvent(new o_(i_, l, s, t)), !0 }, e }(qs), l_ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function u_(t) { return t.feature ? t.feature : t.element ? t.element : void 0 } var c_ = [], h_ = function (t) { function e(e) { var r = this, n = e || {}, i = n; return i.handleDownEvent || (i.handleDownEvent = S), i.stopDown || (i.stopDown = E), (r = t.call(this, i) || this).source_ = n.source ? n.source : null, r.vertex_ = void 0 === n.vertex || n.vertex, r.edge_ = void 0 === n.edge || n.edge, r.features_ = n.features ? n.features : null, r.featuresListenerKeys_ = [], r.featureChangeListenerKeys_ = {}, r.indexedFeaturesExtents_ = {}, r.pendingFeatures_ = {}, r.pixelTolerance_ = void 0 !== n.pixelTolerance ? n.pixelTolerance : 10, r.rBush_ = new Rp, r.SEGMENT_WRITERS_ = { Point: r.writePointGeometry_.bind(r), LineString: r.writeLineStringGeometry_.bind(r), LinearRing: r.writeLineStringGeometry_.bind(r), Polygon: r.writePolygonGeometry_.bind(r), MultiPoint: r.writeMultiPointGeometry_.bind(r), MultiLineString: r.writeMultiLineStringGeometry_.bind(r), MultiPolygon: r.writeMultiPolygonGeometry_.bind(r), GeometryCollection: r.writeGeometryCollectionGeometry_.bind(r), Circle: r.writeCircleGeometry_.bind(r) }, r } return l_(e, t), e.prototype.addFeature = function (t, e) { var r = void 0 === e || e, n = o(t), i = t.getGeometry(); if (i) { var a = this.SEGMENT_WRITERS_[i.getType()]; a && (this.indexedFeaturesExtents_[n] = i.getExtent([1 / 0, 1 / 0, -1 / 0, -1 / 0]), a(t, i)) } r && (this.featureChangeListenerKeys_[n] = Z(t, F, this.handleFeatureChange_, this)) }, e.prototype.forEachFeatureAdd_ = function (t) { this.addFeature(t) }, e.prototype.forEachFeatureRemove_ = function (t) { this.removeFeature(t) }, e.prototype.getFeatures_ = function () { var t; return this.features_ ? t = this.features_ : this.source_ && (t = this.source_.getFeatures()), t }, e.prototype.handleEvent = function (e) { var r = this.snapTo(e.pixel, e.coordinate, e.map); return r.snapped && (e.coordinate = r.vertex.slice(0, 2), e.pixel = r.vertexPixel), t.prototype.handleEvent.call(this, e) }, e.prototype.handleFeatureAdd_ = function (t) { var e = u_(t); this.addFeature(e) }, e.prototype.handleFeatureRemove_ = function (t) { var e = u_(t); this.removeFeature(e) }, e.prototype.handleFeatureChange_ = function (t) { var e = t.target; if (this.handlingDownUpSequence) { var r = o(e); r in this.pendingFeatures_ || (this.pendingFeatures_[r] = e) } else this.updateFeature_(e) }, e.prototype.handleUpEvent = function (t) { var e = R(this.pendingFeatures_); return e.length && (e.forEach(this.updateFeature_.bind(this)), this.pendingFeatures_ = {}), !1 }, e.prototype.removeFeature = function (t, e) { var r = void 0 === e || e, n = o(t), i = this.indexedFeaturesExtents_[n]; if (i) { var a = this.rBush_, s = []; a.forEachInExtent(i, (function (e) { t === e.feature && s.push(e) })); for (var l = s.length - 1; l >= 0; --l) a.remove(s[l]) } r && (H(this.featureChangeListenerKeys_[n]), delete this.featureChangeListenerKeys_[n]) }, e.prototype.setMap = function (e) { var r = this.getMap(), n = this.featuresListenerKeys_, i = this.getFeatures_(); r && (n.forEach(H), n.length = 0, i.forEach(this.forEachFeatureRemove_.bind(this))), t.prototype.setMap.call(this, e), e && (this.features_ ? n.push(Z(this.features_, at, this.handleFeatureAdd_, this), Z(this.features_, st, this.handleFeatureRemove_, this)) : this.source_ && n.push(Z(this.source_, ef, this.handleFeatureAdd_, this), Z(this.source_, of, this.handleFeatureRemove_, this)), i.forEach(this.forEachFeatureAdd_.bind(this))) }, e.prototype.snapTo = function (t, e, r) { var n = Kt([r.getCoordinateFromPixel([t[0] - this.pixelTolerance_, t[1] + this.pixelTolerance_]), r.getCoordinateFromPixel([t[0] + this.pixelTolerance_, t[1] - this.pixelTolerance_])]), i = this.rBush_.getInExtent(n); this.vertex_ && !this.edge_ && (i = i.filter((function (t) { return t.feature.getGeometry().getType() !== bt.CIRCLE }))); var o = !1, a = null, s = null; if (0 === i.length) return {snapped: o, vertex: a, vertexPixel: s}; for (var l, u = r.getView().getProjection(), c = rn(e, u), h = 1 / 0, p = 0; p < i.length; ++p) { var f = i[p]; c_[0] = rn(f.segment[0], u), c_[1] = rn(f.segment[1], u); var d = Lr(c, c_); d < h && (l = f, h = d) } var g = l.segment; if (this.vertex_ && !this.edge_) { var y = r.getPixelFromCoordinate(g[0]), m = r.getPixelFromCoordinate(g[1]), v = Rr(t, y), _ = Rr(t, m); Math.sqrt(Math.min(v, _)) <= this.pixelTolerance_ && (o = !0, a = v > _ ? g[1] : g[0], s = r.getPixelFromCoordinate(a)) } else if (this.edge_) { var b = l.feature.getGeometry().getType() === bt.CIRCLE; if (b) { var x = l.feature.getGeometry(), w = tn(); w && (x = x.clone().transform(w, u)), a = en(wr(c, x), u) } else c_[0] = rn(g[0], u), c_[1] = rn(g[1], u), a = en(Sr(c, c_), u); if (Ir(t, s = r.getPixelFromCoordinate(a)) <= this.pixelTolerance_ && (o = !0, this.vertex_ && !b)) { y = r.getPixelFromCoordinate(g[0]), m = r.getPixelFromCoordinate(g[1]), v = Rr(s, y), _ = Rr(s, m); Math.sqrt(Math.min(v, _)) <= this.pixelTolerance_ && (a = v > _ ? g[1] : g[0], s = r.getPixelFromCoordinate(a)) } } return o && (s = [Math.round(s[0]), Math.round(s[1])]), {snapped: o, vertex: a, vertexPixel: s} }, e.prototype.updateFeature_ = function (t) { this.removeFeature(t, !1), this.addFeature(t, !1) }, e.prototype.writeCircleGeometry_ = function (t, e) { var r = this.getMap().getView().getProjection(), n = e, i = tn(); i && (n = n.clone().transform(i, r)); var o = yi(n); i && o.transform(r, i); for (var a = o.getCoordinates()[0], s = 0, l = a.length - 1; s < l; ++s) { var u = a.slice(s, s + 2), c = {feature: t, segment: u}; this.rBush_.insert(Kt(u), c) } }, e.prototype.writeGeometryCollectionGeometry_ = function (t, e) { for (var r = e.getGeometriesArray(), n = 0; n < r.length; ++n) { var i = this.SEGMENT_WRITERS_[r[n].getType()]; i && i(t, r[n]) } }, e.prototype.writeLineStringGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length - 1; n < i; ++n) { var o = r.slice(n, n + 2), a = {feature: t, segment: o}; this.rBush_.insert(Kt(o), a) } }, e.prototype.writeMultiLineStringGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { var l = o.slice(a, a + 2), u = {feature: t, segment: l}; this.rBush_.insert(Kt(l), u) } }, e.prototype.writeMultiPointGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) { var o = r[n], a = {feature: t, segment: [o, o]}; this.rBush_.insert(e.getExtent(), a) } }, e.prototype.writeMultiPolygonGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) for (var o = r[n], a = 0, s = o.length; a < s; ++a) for (var l = o[a], u = 0, c = l.length - 1; u < c; ++u) { var h = l.slice(u, u + 2), p = {feature: t, segment: h}; this.rBush_.insert(Kt(h), p) } }, e.prototype.writePointGeometry_ = function (t, e) { var r = e.getCoordinates(), n = {feature: t, segment: [r, r]}; this.rBush_.insert(e.getExtent(), n) }, e.prototype.writePolygonGeometry_ = function (t, e) { for (var r = e.getCoordinates(), n = 0, i = r.length; n < i; ++n) for (var o = r[n], a = 0, s = o.length - 1; a < s; ++a) { var l = o.slice(a, a + 2), u = {feature: t, segment: l}; this.rBush_.insert(Kt(l), u) } }, e }($s), p_ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), f_ = "translatestart", d_ = "translating", g_ = "translateend", y_ = function (t) { function e(e, r, n, i, o) { var a = t.call(this, e) || this; return a.features = r, a.coordinate = n, a.startCoordinate = i, a.mapBrowserEvent = o, a } return p_(e, t), e }(c), m_ = function (t) { function e(e) { var r, n = this, i = e || {}; if ((n = t.call(this, i) || this).lastCoordinate_ = null, n.startCoordinate_ = null, n.features_ = void 0 !== i.features ? i.features : null, i.layers) if ("function" == typeof i.layers) r = i.layers; else { var o = i.layers; r = function (t) { return g(o, t) } } else r = S; return n.layerFilter_ = r, n.filter_ = i.filter ? i.filter : S, n.hitTolerance_ = i.hitTolerance ? i.hitTolerance : 0, n.lastFeature_ = null, n.addEventListener(it(Bs), n.handleActiveChanged_), n } return p_(e, t), e.prototype.handleDownEvent = function (t) { if (this.lastFeature_ = this.featuresAtPixel_(t.pixel, t.map), !this.lastCoordinate_ && this.lastFeature_) { this.startCoordinate_ = t.coordinate, this.lastCoordinate_ = t.coordinate, this.handleMoveEvent(t); var e = this.features_ || new ht([this.lastFeature_]); return this.dispatchEvent(new y_(f_, e, t.coordinate, this.startCoordinate_, t)), !0 } return !1 }, e.prototype.handleUpEvent = function (t) { if (this.lastCoordinate_) { this.lastCoordinate_ = null, this.handleMoveEvent(t); var e = this.features_ || new ht([this.lastFeature_]); return this.dispatchEvent(new y_(g_, e, t.coordinate, this.startCoordinate_, t)), this.startCoordinate_ = null, !0 } return !1 }, e.prototype.handleDragEvent = function (t) { if (this.lastCoordinate_) { var e = t.coordinate, r = e[0] - this.lastCoordinate_[0], n = e[1] - this.lastCoordinate_[1], i = this.features_ || new ht([this.lastFeature_]); i.forEach((function (t) { var e = t.getGeometry(); e.translate(r, n), t.setGeometry(e) })), this.lastCoordinate_ = e, this.dispatchEvent(new y_(d_, i, e, this.startCoordinate_, t)) } }, e.prototype.handleMoveEvent = function (t) { var e = t.map.getViewport(); this.featuresAtPixel_(t.pixel, t.map) ? (e.classList.remove(this.lastCoordinate_ ? "ol-grab" : "ol-grabbing"), e.classList.add(this.lastCoordinate_ ? "ol-grabbing" : "ol-grab")) : e.classList.remove("ol-grab", "ol-grabbing") }, e.prototype.featuresAtPixel_ = function (t, e) { return e.forEachFeatureAtPixel(t, function (t, e) { if (this.filter_(t, e) && (!this.features_ || g(this.features_.getArray(), t))) return t }.bind(this), {layerFilter: this.layerFilter_, hitTolerance: this.hitTolerance_}) }, e.prototype.getHitTolerance = function () { return this.hitTolerance_ }, e.prototype.setHitTolerance = function (t) { this.hitTolerance_ = t }, e.prototype.setMap = function (e) { var r = this.getMap(); t.prototype.setMap.call(this, e), this.updateState_(r) }, e.prototype.handleActiveChanged_ = function () { this.updateState_(null) }, e.prototype.updateState_ = function (t) { var e = this.getMap(), r = this.getActive(); e && r || (e = e || t) && e.getViewport().classList.remove("ol-grab", "ol-grabbing") }, e }($s); function v_(t, e, r, n, i, o) { var a, s; void 0 !== i ? (a = i, s = void 0 !== o ? o : 0) : (a = [], s = 0); for (var l = e; l < r;) { var u = t[l++]; a[s++] = t[l++], a[s++] = u; for (var c = 2; c < n; ++c) a[s++] = t[l++] } return a.length = s, a } var __ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), b_ = {}; b_[bt.POINT] = function (t) { var e; e = void 0 !== t.m && void 0 !== t.z ? new qn([t.x, t.y, t.z, t.m], _t) : void 0 !== t.z ? new qn([t.x, t.y, t.z], mt) : void 0 !== t.m ? new qn([t.x, t.y, t.m], vt) : new qn([t.x, t.y]); return e }, b_[bt.LINE_STRING] = function (t) { var e = S_(t); return new Py(t.paths[0], e) }, b_[bt.POLYGON] = function (t) { var e = S_(t); return new fi(t.rings, e) }, b_[bt.MULTI_POINT] = function (t) { var e = S_(t); return new Hy(t.points, e) }, b_[bt.MULTI_LINE_STRING] = function (t) { var e = S_(t); return new Zy(t.paths, e) }, b_[bt.MULTI_POLYGON] = function (t) { var e = S_(t); return new Jy(t.rings, e) }; var x_ = {}; function w_(t, e) { var r, n, i; if (!t) return null; if ("number" == typeof t.x && "number" == typeof t.y) i = bt.POINT; else if (t.points) i = bt.MULTI_POINT; else if (t.paths) { i = 1 === t.paths.length ? bt.LINE_STRING : bt.MULTI_LINE_STRING } else if (t.rings) { var o = t, a = S_(o), s = function (t, e) { var r, n, i = [], o = [], a = []; for (r = 0, n = t.length; r < n; ++r) { i.length = 0, On(i, 0, t[r], e.length), ai(i, 0, i.length, e.length) ? o.push([t[r]]) : a.push(t[r]) } for (; a.length;) { var s = a.shift(), l = !1; for (r = o.length - 1; r >= 0; r--) { var u = o[r][0]; if (te(new Yn(u).getExtent(), new Yn(s).getExtent())) { o[r].push(s), l = !0; break } } l || o.push([s.reverse()]) } return o }(o.rings, a); 1 === s.length ? (i = bt.POLYGON, t = O({}, t, ((r = {}).rings = s[0], r))) : (i = bt.MULTI_POLYGON, t = O({}, t, ((n = {}).rings = s, n))) } return Wy((0, b_[i])(t), !1, e) } function S_(t) { var e = yt; return !0 === t.hasZ && !0 === t.hasM ? e = _t : !0 === t.hasZ ? e = mt : !0 === t.hasM && (e = vt), e } function E_(t) { var e = t.getLayout(); return {hasZ: e === mt || e === _t, hasM: e === vt || e === _t} } function T_(t, e) { return (0, x_[t.getType()])(Wy(t, !0, e), e) } x_[bt.POINT] = function (t, e) { var r, n = t.getCoordinates(), i = t.getLayout(); i === mt ? r = {x: n[0], y: n[1], z: n[2]} : i === vt ? r = {x: n[0], y: n[1], m: n[2]} : i === _t ? r = { x: n[0], y: n[1], z: n[2], m: n[3] } : i === yt ? r = {x: n[0], y: n[1]} : pt(!1, 34); return r }, x_[bt.LINE_STRING] = function (t, e) { var r = E_(t); return {hasZ: r.hasZ, hasM: r.hasM, paths: [t.getCoordinates()]} }, x_[bt.POLYGON] = function (t, e) { var r = E_(t); return {hasZ: r.hasZ, hasM: r.hasM, rings: t.getCoordinates(!1)} }, x_[bt.MULTI_POINT] = function (t, e) { var r = E_(t); return {hasZ: r.hasZ, hasM: r.hasM, points: t.getCoordinates()} }, x_[bt.MULTI_LINE_STRING] = function (t, e) { var r = E_(t); return {hasZ: r.hasZ, hasM: r.hasM, paths: t.getCoordinates()} }, x_[bt.MULTI_POLYGON] = function (t, e) { for (var r = E_(t), n = t.getCoordinates(!1), i = [], o = 0; o < n.length; o++) for (var a = n[o].length - 1; a >= 0; a--) i.push(n[o][a]); return {hasZ: r.hasZ, hasM: r.hasM, rings: i} }; var C_ = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this) || this).geometryName_ = n.geometryName, r } return __(e, t), e.prototype.readFeatureFromObject = function (t, e, r) { var n = t, i = w_(n.geometry, e), o = new gt; if (this.geometryName_ && o.setGeometryName(this.geometryName_), o.setGeometry(i), n.attributes) { o.setProperties(n.attributes, !0); var a = n.attributes[r]; void 0 !== a && o.setId(a) } return o }, e.prototype.readFeaturesFromObject = function (t, e) { var r = e || {}; if (t.features) { for (var n = [], i = t.features, o = 0, a = i.length; o < a; ++o) n.push(this.readFeatureFromObject(i[o], r, t.objectIdFieldName)); return n } return [this.readFeatureFromObject(t, r)] }, e.prototype.readGeometryFromObject = function (t, e) { return w_(t, e) }, e.prototype.readProjectionFromObject = function (t) { return t.spatialReference && void 0 !== t.spatialReference.wkid ? Gr("EPSG:" + t.spatialReference.wkid) : null }, e.prototype.writeGeometryObject = function (t, e) { return T_(t, this.adaptOptions(e)) }, e.prototype.writeFeatureObject = function (t, e) { e = this.adaptOptions(e); var r = {}; if (!t.hasProperties()) return r.attributes = {}, r; var n = t.getProperties(), i = t.getGeometry(); if (i) { r.geometry = T_(i, e); var o = e && (e.dataProjection || e.featureProjection); o && (r.geometry.spatialReference = {wkid: Number(Gr(o).getCode().split(":").pop())}), delete n[t.getGeometryName()] } return I(n) ? r.attributes = {} : r.attributes = n, r }, e.prototype.writeFeaturesObject = function (t, e) { e = this.adaptOptions(e); for (var r = [], n = 0, i = t.length; n < i; ++n) r.push(this.writeFeatureObject(t[n], e)); return {features: r} }, e }(qm), O_ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), P_ = function (t) { function e() { var e = t.call(this) || this; return e.xmlSerializer_ = Wc(), e } return O_(e, t), e.prototype.getType = function () { return Ru }, e.prototype.readFeature = function (t, e) { if (t) { if ("string" == typeof t) { var r = Pc(t); return this.readFeatureFromDocument(r, e) } return Cc(t) ? this.readFeatureFromDocument(t, e) : this.readFeatureFromNode(t, e) } return null }, e.prototype.readFeatureFromDocument = function (t, e) { var r = this.readFeaturesFromDocument(t, e); return r.length > 0 ? r[0] : null }, e.prototype.readFeatureFromNode = function (t, e) { return null }, e.prototype.readFeatures = function (t, e) { if (t) { if ("string" == typeof t) { var r = Pc(t); return this.readFeaturesFromDocument(r, e) } return Cc(t) ? this.readFeaturesFromDocument(t, e) : this.readFeaturesFromNode(t, e) } return [] }, e.prototype.readFeaturesFromDocument = function (t, e) { for (var r = [], n = t.firstChild; n; n = n.nextSibling) n.nodeType == Node.ELEMENT_NODE && v(r, this.readFeaturesFromNode(n, e)); return r }, e.prototype.readFeaturesFromNode = function (t, e) { return n() }, e.prototype.readGeometry = function (t, e) { if (t) { if ("string" == typeof t) { var r = Pc(t); return this.readGeometryFromDocument(r, e) } return Cc(t) ? this.readGeometryFromDocument(t, e) : this.readGeometryFromNode(t, e) } return null }, e.prototype.readGeometryFromDocument = function (t, e) { return null }, e.prototype.readGeometryFromNode = function (t, e) { return null }, e.prototype.readProjection = function (t) { if (t) { if ("string" == typeof t) { var e = Pc(t); return this.readProjectionFromDocument(e) } return Cc(t) ? this.readProjectionFromDocument(t) : this.readProjectionFromNode(t) } return null }, e.prototype.readProjectionFromDocument = function (t) { return this.dataProjection }, e.prototype.readProjectionFromNode = function (t) { return this.dataProjection }, e.prototype.writeFeature = function (t, e) { var r = this.writeFeatureNode(t, e); return this.xmlSerializer_.serializeToString(r) }, e.prototype.writeFeatureNode = function (t, e) { return null }, e.prototype.writeFeatures = function (t, e) { var r = this.writeFeaturesNode(t, e); return this.xmlSerializer_.serializeToString(r) }, e.prototype.writeFeaturesNode = function (t, e) { return null }, e.prototype.writeGeometry = function (t, e) { var r = this.writeGeometryNode(t, e); return this.xmlSerializer_.serializeToString(r) }, e.prototype.writeGeometryNode = function (t, e) { return null }, e }(Yy), R_ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), I_ = "http://www.opengis.net/gml", L_ = /^[\s\xa0]*$/, M_ = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.featureType = n.featureType, r.featureNS = n.featureNS, r.srsName = n.srsName, r.schemaLocation = "", r.FEATURE_COLLECTION_PARSERS = {}, r.FEATURE_COLLECTION_PARSERS[r.namespace] = { featureMember: Ic(r.readFeaturesInternal), featureMembers: Lc(r.readFeaturesInternal) }, r } return R_(e, t), e.prototype.readFeaturesInternal = function (t, e) { var r = t.localName, n = null; if ("FeatureCollection" == r) n = Uc([], this.FEATURE_COLLECTION_PARSERS, t, e, this); else if ("featureMembers" == r || "featureMember" == r || "member" == r) { var i = e[0], o = i.featureType, a = i.featureNS; if (!o && t.childNodes) { o = [], a = {}; for (var s = 0, l = t.childNodes.length; s < l; ++s) { var u = t.childNodes[s]; if (1 === u.nodeType) { var c = u.nodeName.split(":").pop(); if (-1 === o.indexOf(c)) { var h = "", p = 0, f = u.namespaceURI; for (var d in a) { if (a[d] === f) { h = d; break } ++p } h || (a[h = "p" + p] = f), o.push(h + ":" + c) } } } "featureMember" != r && (i.featureType = o, i.featureNS = a) } if ("string" == typeof a) { var g = a; (a = {}).p0 = g } var y = {}, m = Array.isArray(o) ? o : [o]; for (var v in a) { var _ = {}; for (s = 0, l = m.length; s < l; ++s) { (-1 === m[s].indexOf(":") ? "p0" : m[s].split(":")[0]) === v && (_[m[s].split(":").pop()] = "featureMembers" == r ? Ic(this.readFeatureElement, this) : Lc(this.readFeatureElement, this)) } y[a[v]] = _ } n = Uc("featureMember" == r || "member" == r ? void 0 : [], y, t, e) } return null === n && (n = []), n }, e.prototype.readGeometryElement = function (t, e) { var r = e[0]; r.srsName = t.firstElementChild.getAttribute("srsName"), r.srsDimension = t.firstElementChild.getAttribute("srsDimension"); var n = Uc(null, this.GEOMETRY_PARSERS, t, e, this); return n ? Array.isArray(n) ? qy(n, r) : Wy(n, !1, r) : void 0 }, e.prototype.readFeatureElementInternal = function (t, e, r) { for (var n, i = {}, o = t.firstElementChild; o; o = o.nextElementSibling) { var a = void 0, s = o.localName; 0 === o.childNodes.length || 1 === o.childNodes.length && (3 === o.firstChild.nodeType || 4 === o.firstChild.nodeType) ? (a = Ec(o, !1), L_.test(a) && (a = void 0)) : (r && (a = this.readGeometryElement(o, e)), a ? "boundedBy" !== s && (n = s) : a = this.readFeatureElementInternal(o, e, !1)), i[s] ? (i[s] instanceof Array || (i[s] = [i[s]]), i[s].push(a)) : i[s] = a; var l = o.attributes.length; if (l > 0) { i[s] = {_content_: i[s]}; for (var u = 0; u < l; u++) { var c = o.attributes[u].name; i[s][c] = o.attributes[u].value } } } if (r) { var h = new gt(i); n && h.setGeometryName(n); var p = t.getAttribute("fid") || Oc(t, this.namespace, "id"); return p && h.setId(p), h } return i }, e.prototype.readFeatureElement = function (t, e) { return this.readFeatureElementInternal(t, e, !0) }, e.prototype.readPoint = function (t, e) { var r = this.readFlatCoordinatesFromNode(t, e); if (r) return new qn(r, mt) }, e.prototype.readMultiPoint = function (t, e) { var r = Uc([], this.MULTIPOINT_PARSERS, t, e, this); return r ? new Hy(r) : void 0 }, e.prototype.readMultiLineString = function (t, e) { var r = Uc([], this.MULTILINESTRING_PARSERS, t, e, this); if (r) return new Zy(r) }, e.prototype.readMultiPolygon = function (t, e) { var r = Uc([], this.MULTIPOLYGON_PARSERS, t, e, this); if (r) return new Jy(r) }, e.prototype.pointMemberParser = function (t, e) { zc(this.POINTMEMBER_PARSERS, t, e, this) }, e.prototype.lineStringMemberParser = function (t, e) { zc(this.LINESTRINGMEMBER_PARSERS, t, e, this) }, e.prototype.polygonMemberParser = function (t, e) { zc(this.POLYGONMEMBER_PARSERS, t, e, this) }, e.prototype.readLineString = function (t, e) { var r = this.readFlatCoordinatesFromNode(t, e); return r ? new Py(r, mt) : void 0 }, e.prototype.readFlatLinearRing = function (t, e) { var r = Uc(null, this.GEOMETRY_FLAT_COORDINATES_PARSERS, t, e, this); return r || void 0 }, e.prototype.readLinearRing = function (t, e) { var r = this.readFlatCoordinatesFromNode(t, e); if (r) return new Yn(r, mt) }, e.prototype.readPolygon = function (t, e) { var r = Uc([null], this.FLAT_LINEAR_RINGS_PARSERS, t, e, this); if (r && r[0]) { var n, i = r[0], o = [i.length], a = void 0; for (a = 1, n = r.length; a < n; ++a) v(i, r[a]), o.push(i.length); return new fi(i, mt, o) } }, e.prototype.readFlatCoordinatesFromNode = function (t, e) { return Uc(null, this.GEOMETRY_FLAT_COORDINATES_PARSERS, t, e, this) }, e.prototype.readGeometryFromNode = function (t, e) { var r = this.readGeometryElement(t, [this.getReadOptions(t, e || {})]); return r || null }, e.prototype.readFeaturesFromNode = function (t, e) { var r = {featureType: this.featureType, featureNS: this.featureNS}; return e && O(r, this.getReadOptions(t, e)), this.readFeaturesInternal(t, [r]) || [] }, e.prototype.readProjectionFromNode = function (t) { return Gr(this.srsName ? this.srsName : t.firstElementChild.getAttribute("srsName")) }, e }(P_); M_.prototype.namespace = I_, M_.prototype.FLAT_LINEAR_RINGS_PARSERS = {"http://www.opengis.net/gml": {}}, M_.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {"http://www.opengis.net/gml": {}}, M_.prototype.GEOMETRY_PARSERS = {"http://www.opengis.net/gml": {}}, M_.prototype.MULTIPOINT_PARSERS = { "http://www.opengis.net/gml": { pointMember: Ic(M_.prototype.pointMemberParser), pointMembers: Ic(M_.prototype.pointMemberParser) } }, M_.prototype.MULTILINESTRING_PARSERS = { "http://www.opengis.net/gml": { lineStringMember: Ic(M_.prototype.lineStringMemberParser), lineStringMembers: Ic(M_.prototype.lineStringMemberParser) } }, M_.prototype.MULTIPOLYGON_PARSERS = { "http://www.opengis.net/gml": { polygonMember: Ic(M_.prototype.polygonMemberParser), polygonMembers: Ic(M_.prototype.polygonMemberParser) } }, M_.prototype.POINTMEMBER_PARSERS = {"http://www.opengis.net/gml": {Point: Ic(M_.prototype.readFlatCoordinatesFromNode)}}, M_.prototype.LINESTRINGMEMBER_PARSERS = {"http://www.opengis.net/gml": {LineString: Ic(M_.prototype.readLineString)}}, M_.prototype.POLYGONMEMBER_PARSERS = {"http://www.opengis.net/gml": {Polygon: Ic(M_.prototype.readPolygon)}}, M_.prototype.RING_PARSERS = {"http://www.opengis.net/gml": {LinearRing: Lc(M_.prototype.readFlatLinearRing)}}; var F_ = M_; function A_(t) { return k_(Ec(t, !1)) } function k_(t) { var e = /^\s*(true|1)|(false|0)\s*$/.exec(t); return e ? void 0 !== e[1] || !1 : void 0 } function j_(t) { var e = Ec(t, !1), r = Date.parse(e); return isNaN(r) ? void 0 : r / 1e3 } function N_(t) { return D_(Ec(t, !1)) } function D_(t) { var e = /^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(t); return e ? parseFloat(e[1]) : void 0 } function G_(t) { return z_(Ec(t, !1)) } function z_(t) { var e = /^\s*(\d+)\s*$/.exec(t); return e ? parseInt(e[1], 10) : void 0 } function U_(t) { return Ec(t, !1).trim() } function B_(t, e) { X_(t, e ? "1" : "0") } function V_(t, e) { t.appendChild(Xc().createCDATASection(e)) } function Y_(t, e) { var r = new Date(1e3 * e), n = r.getUTCFullYear() + "-" + _r(r.getUTCMonth() + 1, 2) + "-" + _r(r.getUTCDate(), 2) + "T" + _r(r.getUTCHours(), 2) + ":" + _r(r.getUTCMinutes(), 2) + ":" + _r(r.getUTCSeconds(), 2) + "Z"; t.appendChild(Xc().createTextNode(n)) } function W_(t, e) { var r = e.toPrecision(); t.appendChild(Xc().createTextNode(r)) } function q_(t, e) { var r = e.toString(); t.appendChild(Xc().createTextNode(r)) } function X_(t, e) { t.appendChild(Xc().createTextNode(e)) } var Z_ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), K_ = { MultiLineString: "lineStringMember", MultiCurve: "curveMember", MultiPolygon: "polygonMember", MultiSurface: "surfaceMember" }, H_ = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, n) || this).FEATURE_COLLECTION_PARSERS[I_].featureMember = Ic(r.readFeaturesInternal), r.schemaLocation = n.schemaLocation ? n.schemaLocation : "http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd", r } return Z_(e, t), e.prototype.readFlatCoordinates = function (t, e) { var r = Ec(t, !1).replace(/^\s*|\s*$/g, ""), n = e[0].srsName, i = "enu"; if (n) { var o = Gr(n); o && (i = o.getAxisOrientation()) } for (var a = r.trim().split(/\s+/), s = [], l = 0, u = a.length; l < u; l++) { var c = a[l].split(/,+/), h = parseFloat(c[0]), p = parseFloat(c[1]), f = 3 === c.length ? parseFloat(c[2]) : 0; "en" === i.substr(0, 2) ? s.push(h, p, f) : s.push(p, h, f) } return s }, e.prototype.readBox = function (t, e) { var r = Uc([null], this.BOX_PARSERS_, t, e, this); return ie(r[1][0], r[1][1], r[1][3], r[1][4]) }, e.prototype.innerBoundaryIsParser = function (t, e) { var r = Uc(void 0, this.RING_PARSERS, t, e, this); r && e[e.length - 1].push(r) }, e.prototype.outerBoundaryIsParser = function (t, e) { var r = Uc(void 0, this.RING_PARSERS, t, e, this); r && (e[e.length - 1][0] = r) }, e.prototype.GEOMETRY_NODE_FACTORY_ = function (t, e, r) { var n, i = e[e.length - 1], o = i.multiSurface, a = i.surface, s = i.multiCurve; return Array.isArray(t) ? n = "Envelope" : "MultiPolygon" === (n = t.getType()) && !0 === o ? n = "MultiSurface" : "Polygon" === n && !0 === a ? n = "Surface" : "MultiLineString" === n && !0 === s && (n = "MultiCurve"), Sc("http://www.opengis.net/gml", n) }, e.prototype.writeFeatureElement = function (t, e, r) { var n = e.getId(); n && t.setAttribute("fid", n); var i = r[r.length - 1], o = i.featureNS, a = e.getGeometryName(); i.serializers || (i.serializers = {}, i.serializers[o] = {}); var s = [], l = []; if (e.hasProperties()) { var u = e.getProperties(); for (var c in u) { var h = u[c]; null !== h && (s.push(c), l.push(h), c == a || "function" == typeof h.getSimplifiedGeometry ? c in i.serializers[o] || (i.serializers[o][c] = Ac(this.writeGeometryElement, this)) : c in i.serializers[o] || (i.serializers[o][c] = Ac(X_))) } } var p = O({}, i); p.node = t, Vc(p, i.serializers, jc(void 0, o), l, r, s) }, e.prototype.writeCurveOrLineString = function (t, e, r) { var n = r[r.length - 1].srsName; if ("LineStringSegment" !== t.nodeName && n && t.setAttribute("srsName", n), "LineString" === t.nodeName || "LineStringSegment" === t.nodeName) { var i = this.createCoordinatesNode_(t.namespaceURI); t.appendChild(i), this.writeCoordinates_(i, e, r) } else if ("Curve" === t.nodeName) { var o = Sc(t.namespaceURI, "segments"); t.appendChild(o), this.writeCurveSegments_(o, e, r) } }, e.prototype.writeLineStringOrCurveMember = function (t, e, r) { var n = this.GEOMETRY_NODE_FACTORY_(e, r); n && (t.appendChild(n), this.writeCurveOrLineString(n, e, r)) }, e.prototype.writeMultiCurveOrLineString = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName, a = n.curve; o && t.setAttribute("srsName", o); var s = e.getLineStrings(); Vc({ node: t, hasZ: i, srsName: o, curve: a }, this.LINESTRINGORCURVEMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, s, r, void 0, this) }, e.prototype.writeGeometryElement = function (t, e, r) { var n, i = r[r.length - 1], o = O({}, i); o.node = t, n = Array.isArray(e) ? qy(e, i) : Wy(e, !0, i), Vc(o, this.GEOMETRY_SERIALIZERS, this.GEOMETRY_NODE_FACTORY_, [n], r, void 0, this) }, e.prototype.createCoordinatesNode_ = function (t) { var e = Sc(t, "coordinates"); return e.setAttribute("decimal", "."), e.setAttribute("cs", ","), e.setAttribute("ts", " "), e }, e.prototype.writeCoordinates_ = function (t, e, r) { for (var n = r[r.length - 1], i = n.hasZ, o = n.srsName, a = e.getCoordinates(), s = a.length, l = new Array(s), u = 0; u < s; ++u) { var c = a[u]; l[u] = this.getCoords_(c, o, i) } X_(t, l.join(" ")) }, e.prototype.writeCurveSegments_ = function (t, e, r) { var n = Sc(t.namespaceURI, "LineStringSegment"); t.appendChild(n), this.writeCurveOrLineString(n, e, r) }, e.prototype.writeSurfaceOrPolygon = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName; if ("PolygonPatch" !== t.nodeName && o && t.setAttribute("srsName", o), "Polygon" === t.nodeName || "PolygonPatch" === t.nodeName) { var a = e.getLinearRings(); Vc({node: t, hasZ: i, srsName: o}, this.RING_SERIALIZERS, this.RING_NODE_FACTORY_, a, r, void 0, this) } else if ("Surface" === t.nodeName) { var s = Sc(t.namespaceURI, "patches"); t.appendChild(s), this.writeSurfacePatches_(s, e, r) } }, e.prototype.RING_NODE_FACTORY_ = function (t, e, r) { var n = e[e.length - 1], i = n.node, o = n.exteriorWritten; return void 0 === o && (n.exteriorWritten = !0), Sc(i.namespaceURI, void 0 !== o ? "innerBoundaryIs" : "outerBoundaryIs") }, e.prototype.writeSurfacePatches_ = function (t, e, r) { var n = Sc(t.namespaceURI, "PolygonPatch"); t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r) }, e.prototype.writeRing = function (t, e, r) { var n = Sc(t.namespaceURI, "LinearRing"); t.appendChild(n), this.writeLinearRing(n, e, r) }, e.prototype.getCoords_ = function (t, e, r) { var n = "enu"; e && (n = Gr(e).getAxisOrientation()); var i = "en" === n.substr(0, 2) ? t[0] + "," + t[1] : t[1] + "," + t[0]; r && (i += "," + (t[2] || 0)); return i }, e.prototype.writePoint = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName; o && t.setAttribute("srsName", o); var a = this.createCoordinatesNode_(t.namespaceURI); t.appendChild(a); var s = e.getCoordinates(); X_(a, this.getCoords_(s, o, i)) }, e.prototype.writeMultiPoint = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName; o && t.setAttribute("srsName", o); var a = e.getPoints(); Vc({node: t, hasZ: i, srsName: o}, this.POINTMEMBER_SERIALIZERS, jc("pointMember"), a, r, void 0, this) }, e.prototype.writePointMember = function (t, e, r) { var n = Sc(t.namespaceURI, "Point"); t.appendChild(n), this.writePoint(n, e, r) }, e.prototype.writeLinearRing = function (t, e, r) { var n = r[r.length - 1].srsName; n && t.setAttribute("srsName", n); var i = this.createCoordinatesNode_(t.namespaceURI); t.appendChild(i), this.writeCoordinates_(i, e, r) }, e.prototype.writeMultiSurfaceOrPolygon = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName, a = n.surface; o && t.setAttribute("srsName", o); var s = e.getPolygons(); Vc({ node: t, hasZ: i, srsName: o, surface: a }, this.SURFACEORPOLYGONMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, s, r, void 0, this) }, e.prototype.writeSurfaceOrPolygonMember = function (t, e, r) { var n = this.GEOMETRY_NODE_FACTORY_(e, r); n && (t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r)) }, e.prototype.writeEnvelope = function (t, e, r) { var n = r[r.length - 1].srsName; n && t.setAttribute("srsName", n); var i = [e[0] + " " + e[1], e[2] + " " + e[3]]; Vc({node: t}, this.ENVELOPE_SERIALIZERS, Nc, i, r, ["lowerCorner", "upperCorner"], this) }, e.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function (t, e, r) { var n = e[e.length - 1].node; return Sc("http://www.opengis.net/gml", K_[n.nodeName]) }, e }(F_); H_.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {"http://www.opengis.net/gml": {coordinates: Lc(H_.prototype.readFlatCoordinates)}}, H_.prototype.FLAT_LINEAR_RINGS_PARSERS = { "http://www.opengis.net/gml": { innerBoundaryIs: H_.prototype.innerBoundaryIsParser, outerBoundaryIs: H_.prototype.outerBoundaryIsParser } }, H_.prototype.BOX_PARSERS_ = {"http://www.opengis.net/gml": {coordinates: Ic(H_.prototype.readFlatCoordinates)}}, H_.prototype.GEOMETRY_PARSERS = { "http://www.opengis.net/gml": { Point: Lc(F_.prototype.readPoint), MultiPoint: Lc(F_.prototype.readMultiPoint), LineString: Lc(F_.prototype.readLineString), MultiLineString: Lc(F_.prototype.readMultiLineString), LinearRing: Lc(F_.prototype.readLinearRing), Polygon: Lc(F_.prototype.readPolygon), MultiPolygon: Lc(F_.prototype.readMultiPolygon), Box: Lc(H_.prototype.readBox) } }, H_.prototype.GEOMETRY_SERIALIZERS = { "http://www.opengis.net/gml": { Curve: Ac(H_.prototype.writeCurveOrLineString), MultiCurve: Ac(H_.prototype.writeMultiCurveOrLineString), Point: Ac(H_.prototype.writePoint), MultiPoint: Ac(H_.prototype.writeMultiPoint), LineString: Ac(H_.prototype.writeCurveOrLineString), MultiLineString: Ac(H_.prototype.writeMultiCurveOrLineString), LinearRing: Ac(H_.prototype.writeLinearRing), Polygon: Ac(H_.prototype.writeSurfaceOrPolygon), MultiPolygon: Ac(H_.prototype.writeMultiSurfaceOrPolygon), Surface: Ac(H_.prototype.writeSurfaceOrPolygon), MultiSurface: Ac(H_.prototype.writeMultiSurfaceOrPolygon), Envelope: Ac(H_.prototype.writeEnvelope) } }, H_.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = { "http://www.opengis.net/gml": { lineStringMember: Ac(H_.prototype.writeLineStringOrCurveMember), curveMember: Ac(H_.prototype.writeLineStringOrCurveMember) } }, H_.prototype.RING_SERIALIZERS = { "http://www.opengis.net/gml": { outerBoundaryIs: Ac(H_.prototype.writeRing), innerBoundaryIs: Ac(H_.prototype.writeRing) } }, H_.prototype.POINTMEMBER_SERIALIZERS = {"http://www.opengis.net/gml": {pointMember: Ac(H_.prototype.writePointMember)}}, H_.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = { "http://www.opengis.net/gml": { surfaceMember: Ac(H_.prototype.writeSurfaceOrPolygonMember), polygonMember: Ac(H_.prototype.writeSurfaceOrPolygonMember) } }, H_.prototype.ENVELOPE_SERIALIZERS = {"http://www.opengis.net/gml": {lowerCorner: Ac(X_), upperCorner: Ac(X_)}}; var $_ = H_, J_ = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), Q_ = { MultiLineString: "lineStringMember", MultiCurve: "curveMember", MultiPolygon: "polygonMember", MultiSurface: "surfaceMember" }, tb = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, n) || this).surface_ = void 0 !== n.surface && n.surface, r.curve_ = void 0 !== n.curve && n.curve, r.multiCurve_ = void 0 === n.multiCurve || n.multiCurve, r.multiSurface_ = void 0 === n.multiSurface || n.multiSurface, r.schemaLocation = n.schemaLocation ? n.schemaLocation : "http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd", r.hasZ = void 0 !== n.hasZ && n.hasZ, r } return J_(e, t), e.prototype.readMultiCurve = function (t, e) { var r = Uc([], this.MULTICURVE_PARSERS, t, e, this); return r ? new Zy(r) : void 0 }, e.prototype.readMultiSurface = function (t, e) { var r = Uc([], this.MULTISURFACE_PARSERS, t, e, this); if (r) return new Jy(r) }, e.prototype.curveMemberParser = function (t, e) { zc(this.CURVEMEMBER_PARSERS, t, e, this) }, e.prototype.surfaceMemberParser = function (t, e) { zc(this.SURFACEMEMBER_PARSERS, t, e, this) }, e.prototype.readPatch = function (t, e) { return Uc([null], this.PATCHES_PARSERS, t, e, this) }, e.prototype.readSegment = function (t, e) { return Uc([null], this.SEGMENTS_PARSERS, t, e, this) }, e.prototype.readPolygonPatch = function (t, e) { return Uc([null], this.FLAT_LINEAR_RINGS_PARSERS, t, e, this) }, e.prototype.readLineStringSegment = function (t, e) { return Uc([null], this.GEOMETRY_FLAT_COORDINATES_PARSERS, t, e, this) }, e.prototype.interiorParser = function (t, e) { var r = Uc(void 0, this.RING_PARSERS, t, e, this); r && e[e.length - 1].push(r) }, e.prototype.exteriorParser = function (t, e) { var r = Uc(void 0, this.RING_PARSERS, t, e, this); r && (e[e.length - 1][0] = r) }, e.prototype.readSurface = function (t, e) { var r = Uc([null], this.SURFACE_PARSERS, t, e, this); if (r && r[0]) { var n, i = r[0], o = [i.length], a = void 0; for (a = 1, n = r.length; a < n; ++a) v(i, r[a]), o.push(i.length); return new fi(i, mt, o) } }, e.prototype.readCurve = function (t, e) { var r = Uc([null], this.CURVE_PARSERS, t, e, this); return r ? new Py(r, mt) : void 0 }, e.prototype.readEnvelope = function (t, e) { var r = Uc([null], this.ENVELOPE_PARSERS, t, e, this); return ie(r[1][0], r[1][1], r[2][0], r[2][1]) }, e.prototype.readFlatPos = function (t, e) { for (var r, n = Ec(t, !1), i = /^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/, o = []; r = i.exec(n);) o.push(parseFloat(r[1])), n = n.substr(r[0].length); if ("" === n) { var a = e[0].srsName, s = "enu"; if (a) s = Gr(a).getAxisOrientation(); if ("neu" === s) { var l, u = void 0; for (u = 0, l = o.length; u < l; u += 3) { var c = o[u], h = o[u + 1]; o[u] = h, o[u + 1] = c } } var p = o.length; if (2 == p && o.push(0), 0 !== p) return o } }, e.prototype.readFlatPosList = function (t, e) { var r = Ec(t, !1).replace(/^\s*|\s*$/g, ""), n = e[0], i = n.srsName, o = n.srsDimension, a = "enu"; i && (a = Gr(i).getAxisOrientation()); var s, l, u, c = r.split(/\s+/), h = 2; t.getAttribute("srsDimension") ? h = z_(t.getAttribute("srsDimension")) : t.getAttribute("dimension") ? h = z_(t.getAttribute("dimension")) : t.parentNode.getAttribute("srsDimension") ? h = z_(t.parentNode.getAttribute("srsDimension")) : o && (h = z_(o)); for (var p = [], f = 0, d = c.length; f < d; f += h) s = parseFloat(c[f]), l = parseFloat(c[f + 1]), u = 3 === h ? parseFloat(c[f + 2]) : 0, "en" === a.substr(0, 2) ? p.push(s, l, u) : p.push(l, s, u); return p }, e.prototype.writePos_ = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = i ? "3" : "2"; t.setAttribute("srsDimension", o); var a = n.srsName, s = "enu"; a && (s = Gr(a).getAxisOrientation()); var l, u = e.getCoordinates(); (l = "en" === s.substr(0, 2) ? u[0] + " " + u[1] : u[1] + " " + u[0], i) && (l += " " + (u[2] || 0)); X_(t, l) }, e.prototype.getCoords_ = function (t, e, r) { var n = "enu"; e && (n = Gr(e).getAxisOrientation()); var i = "en" === n.substr(0, 2) ? t[0] + " " + t[1] : t[1] + " " + t[0]; r && (i += " " + (t[2] || 0)); return i }, e.prototype.writePosList_ = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = i ? "3" : "2"; t.setAttribute("srsDimension", o); for (var a, s = n.srsName, l = e.getCoordinates(), u = l.length, c = new Array(u), h = 0; h < u; ++h) a = l[h], c[h] = this.getCoords_(a, s, i); X_(t, c.join(" ")) }, e.prototype.writePoint = function (t, e, r) { var n = r[r.length - 1].srsName; n && t.setAttribute("srsName", n); var i = Sc(t.namespaceURI, "pos"); t.appendChild(i), this.writePos_(i, e, r) }, e.prototype.writeEnvelope = function (t, e, r) { var n = r[r.length - 1].srsName; n && t.setAttribute("srsName", n); var i = [e[0] + " " + e[1], e[2] + " " + e[3]]; Vc({node: t}, this.ENVELOPE_SERIALIZERS, Nc, i, r, ["lowerCorner", "upperCorner"], this) }, e.prototype.writeLinearRing = function (t, e, r) { var n = r[r.length - 1].srsName; n && t.setAttribute("srsName", n); var i = Sc(t.namespaceURI, "posList"); t.appendChild(i), this.writePosList_(i, e, r) }, e.prototype.RING_NODE_FACTORY_ = function (t, e, r) { var n = e[e.length - 1], i = n.node, o = n.exteriorWritten; return void 0 === o && (n.exteriorWritten = !0), Sc(i.namespaceURI, void 0 !== o ? "interior" : "exterior") }, e.prototype.writeSurfaceOrPolygon = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName; if ("PolygonPatch" !== t.nodeName && o && t.setAttribute("srsName", o), "Polygon" === t.nodeName || "PolygonPatch" === t.nodeName) { var a = e.getLinearRings(); Vc({node: t, hasZ: i, srsName: o}, this.RING_SERIALIZERS, this.RING_NODE_FACTORY_, a, r, void 0, this) } else if ("Surface" === t.nodeName) { var s = Sc(t.namespaceURI, "patches"); t.appendChild(s), this.writeSurfacePatches_(s, e, r) } }, e.prototype.writeCurveOrLineString = function (t, e, r) { var n = r[r.length - 1].srsName; if ("LineStringSegment" !== t.nodeName && n && t.setAttribute("srsName", n), "LineString" === t.nodeName || "LineStringSegment" === t.nodeName) { var i = Sc(t.namespaceURI, "posList"); t.appendChild(i), this.writePosList_(i, e, r) } else if ("Curve" === t.nodeName) { var o = Sc(t.namespaceURI, "segments"); t.appendChild(o), this.writeCurveSegments_(o, e, r) } }, e.prototype.writeMultiSurfaceOrPolygon = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName, a = n.surface; o && t.setAttribute("srsName", o); var s = e.getPolygons(); Vc({ node: t, hasZ: i, srsName: o, surface: a }, this.SURFACEORPOLYGONMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, s, r, void 0, this) }, e.prototype.writeMultiPoint = function (t, e, r) { var n = r[r.length - 1], i = n.srsName, o = n.hasZ; i && t.setAttribute("srsName", i); var a = e.getPoints(); Vc({node: t, hasZ: o, srsName: i}, this.POINTMEMBER_SERIALIZERS, jc("pointMember"), a, r, void 0, this) }, e.prototype.writeMultiCurveOrLineString = function (t, e, r) { var n = r[r.length - 1], i = n.hasZ, o = n.srsName, a = n.curve; o && t.setAttribute("srsName", o); var s = e.getLineStrings(); Vc({ node: t, hasZ: i, srsName: o, curve: a }, this.LINESTRINGORCURVEMEMBER_SERIALIZERS, this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, s, r, void 0, this) }, e.prototype.writeRing = function (t, e, r) { var n = Sc(t.namespaceURI, "LinearRing"); t.appendChild(n), this.writeLinearRing(n, e, r) }, e.prototype.writeSurfaceOrPolygonMember = function (t, e, r) { var n = this.GEOMETRY_NODE_FACTORY_(e, r); n && (t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r)) }, e.prototype.writePointMember = function (t, e, r) { var n = Sc(t.namespaceURI, "Point"); t.appendChild(n), this.writePoint(n, e, r) }, e.prototype.writeLineStringOrCurveMember = function (t, e, r) { var n = this.GEOMETRY_NODE_FACTORY_(e, r); n && (t.appendChild(n), this.writeCurveOrLineString(n, e, r)) }, e.prototype.writeSurfacePatches_ = function (t, e, r) { var n = Sc(t.namespaceURI, "PolygonPatch"); t.appendChild(n), this.writeSurfaceOrPolygon(n, e, r) }, e.prototype.writeCurveSegments_ = function (t, e, r) { var n = Sc(t.namespaceURI, "LineStringSegment"); t.appendChild(n), this.writeCurveOrLineString(n, e, r) }, e.prototype.writeGeometryElement = function (t, e, r) { var n, i = r[r.length - 1], o = O({}, i); o.node = t, n = Array.isArray(e) ? qy(e, i) : Wy(e, !0, i), Vc(o, this.GEOMETRY_SERIALIZERS, this.GEOMETRY_NODE_FACTORY_, [n], r, void 0, this) }, e.prototype.writeFeatureElement = function (t, e, r) { var n = e.getId(); n && t.setAttribute("fid", n); var i = r[r.length - 1], o = i.featureNS, a = e.getGeometryName(); i.serializers || (i.serializers = {}, i.serializers[o] = {}); var s = [], l = []; if (e.hasProperties()) { var u = e.getProperties(); for (var c in u) { var h = u[c]; null !== h && (s.push(c), l.push(h), c == a || "function" == typeof h.getSimplifiedGeometry ? c in i.serializers[o] || (i.serializers[o][c] = Ac(this.writeGeometryElement, this)) : c in i.serializers[o] || (i.serializers[o][c] = Ac(X_))) } } var p = O({}, i); p.node = t, Vc(p, i.serializers, jc(void 0, o), l, r, s) }, e.prototype.writeFeatureMembers_ = function (t, e, r) { var n = r[r.length - 1], i = n.featureType, o = n.featureNS, a = {}; a[o] = {}, a[o][i] = Ac(this.writeFeatureElement, this); var s = O({}, n); s.node = t, Vc(s, a, jc(i, o), e, r) }, e.prototype.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function (t, e, r) { var n = e[e.length - 1].node; return Sc(this.namespace, Q_[n.nodeName]) }, e.prototype.GEOMETRY_NODE_FACTORY_ = function (t, e, r) { var n, i = e[e.length - 1], o = i.multiSurface, a = i.surface, s = i.curve, l = i.multiCurve; return Array.isArray(t) ? n = "Envelope" : "MultiPolygon" === (n = t.getType()) && !0 === o ? n = "MultiSurface" : "Polygon" === n && !0 === a ? n = "Surface" : "LineString" === n && !0 === s ? n = "Curve" : "MultiLineString" === n && !0 === l && (n = "MultiCurve"), Sc(this.namespace, n) }, e.prototype.writeGeometryNode = function (t, e) { e = this.adaptOptions(e); var r = Sc(this.namespace, "geom"), n = { node: r, hasZ: this.hasZ, srsName: this.srsName, curve: this.curve_, surface: this.surface_, multiSurface: this.multiSurface_, multiCurve: this.multiCurve_ }; return e && O(n, e), this.writeGeometryElement(r, t, [n]), r }, e.prototype.writeFeaturesNode = function (t, e) { e = this.adaptOptions(e); var r = Sc(this.namespace, "featureMembers"); r.setAttributeNS(wc, "xsi:schemaLocation", this.schemaLocation); var n = { srsName: this.srsName, hasZ: this.hasZ, curve: this.curve_, surface: this.surface_, multiSurface: this.multiSurface_, multiCurve: this.multiCurve_, featureNS: this.featureNS, featureType: this.featureType }; return e && O(n, e), this.writeFeatureMembers_(r, t, [n]), r }, e }(F_); tb.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = { "http://www.opengis.net/gml": { pos: Lc(tb.prototype.readFlatPos), posList: Lc(tb.prototype.readFlatPosList), coordinates: Lc($_.prototype.readFlatCoordinates) } }, tb.prototype.FLAT_LINEAR_RINGS_PARSERS = { "http://www.opengis.net/gml": { interior: tb.prototype.interiorParser, exterior: tb.prototype.exteriorParser } }, tb.prototype.GEOMETRY_PARSERS = { "http://www.opengis.net/gml": { Point: Lc(F_.prototype.readPoint), MultiPoint: Lc(F_.prototype.readMultiPoint), LineString: Lc(F_.prototype.readLineString), MultiLineString: Lc(F_.prototype.readMultiLineString), LinearRing: Lc(F_.prototype.readLinearRing), Polygon: Lc(F_.prototype.readPolygon), MultiPolygon: Lc(F_.prototype.readMultiPolygon), Surface: Lc(tb.prototype.readSurface), MultiSurface: Lc(tb.prototype.readMultiSurface), Curve: Lc(tb.prototype.readCurve), MultiCurve: Lc(tb.prototype.readMultiCurve), Envelope: Lc(tb.prototype.readEnvelope) } }, tb.prototype.MULTICURVE_PARSERS = { "http://www.opengis.net/gml": { curveMember: Ic(tb.prototype.curveMemberParser), curveMembers: Ic(tb.prototype.curveMemberParser) } }, tb.prototype.MULTISURFACE_PARSERS = { "http://www.opengis.net/gml": { surfaceMember: Ic(tb.prototype.surfaceMemberParser), surfaceMembers: Ic(tb.prototype.surfaceMemberParser) } }, tb.prototype.CURVEMEMBER_PARSERS = { "http://www.opengis.net/gml": { LineString: Ic(F_.prototype.readLineString), Curve: Ic(tb.prototype.readCurve) } }, tb.prototype.SURFACEMEMBER_PARSERS = { "http://www.opengis.net/gml": { Polygon: Ic(F_.prototype.readPolygon), Surface: Ic(tb.prototype.readSurface) } }, tb.prototype.SURFACE_PARSERS = {"http://www.opengis.net/gml": {patches: Lc(tb.prototype.readPatch)}}, tb.prototype.CURVE_PARSERS = {"http://www.opengis.net/gml": {segments: Lc(tb.prototype.readSegment)}}, tb.prototype.ENVELOPE_PARSERS = { "http://www.opengis.net/gml": { lowerCorner: Ic(tb.prototype.readFlatPosList), upperCorner: Ic(tb.prototype.readFlatPosList) } }, tb.prototype.PATCHES_PARSERS = {"http://www.opengis.net/gml": {PolygonPatch: Lc(tb.prototype.readPolygonPatch)}}, tb.prototype.SEGMENTS_PARSERS = {"http://www.opengis.net/gml": {LineStringSegment: Lc(tb.prototype.readLineStringSegment)}}, tb.prototype.writeFeatures, tb.prototype.RING_SERIALIZERS = { "http://www.opengis.net/gml": { exterior: Ac(tb.prototype.writeRing), interior: Ac(tb.prototype.writeRing) } }, tb.prototype.ENVELOPE_SERIALIZERS = { "http://www.opengis.net/gml": { lowerCorner: Ac(X_), upperCorner: Ac(X_) } }, tb.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = { "http://www.opengis.net/gml": { surfaceMember: Ac(tb.prototype.writeSurfaceOrPolygonMember), polygonMember: Ac(tb.prototype.writeSurfaceOrPolygonMember) } }, tb.prototype.POINTMEMBER_SERIALIZERS = {"http://www.opengis.net/gml": {pointMember: Ac(tb.prototype.writePointMember)}}, tb.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = { "http://www.opengis.net/gml": { lineStringMember: Ac(tb.prototype.writeLineStringOrCurveMember), curveMember: Ac(tb.prototype.writeLineStringOrCurveMember) } }, tb.prototype.GEOMETRY_SERIALIZERS = { "http://www.opengis.net/gml": { Curve: Ac(tb.prototype.writeCurveOrLineString), MultiCurve: Ac(tb.prototype.writeMultiCurveOrLineString), Point: Ac(tb.prototype.writePoint), MultiPoint: Ac(tb.prototype.writeMultiPoint), LineString: Ac(tb.prototype.writeCurveOrLineString), MultiLineString: Ac(tb.prototype.writeMultiCurveOrLineString), LinearRing: Ac(tb.prototype.writeLinearRing), Polygon: Ac(tb.prototype.writeSurfaceOrPolygon), MultiPolygon: Ac(tb.prototype.writeMultiSurfaceOrPolygon), Surface: Ac(tb.prototype.writeSurfaceOrPolygon), MultiSurface: Ac(tb.prototype.writeMultiSurfaceOrPolygon), Envelope: Ac(tb.prototype.writeEnvelope) } }; var eb = tb, rb = eb; rb.prototype.writeFeatures, rb.prototype.writeFeaturesNode; var nb = rb, ib = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ob = function (t) { function e(e) { var r = this, n = e || {}; return (r = t.call(this, n) || this).schemaLocation = n.schemaLocation ? n.schemaLocation : r.namespace + " http://schemas.opengis.net/gml/3.2.1/gml.xsd", r } return ib(e, t), e }(eb); ob.prototype.namespace = "http://www.opengis.net/gml/3.2", ob.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = { "http://www.opengis.net/gml/3.2": { pos: Lc(eb.prototype.readFlatPos), posList: Lc(eb.prototype.readFlatPosList), coordinates: Lc($_.prototype.readFlatCoordinates) } }, ob.prototype.FLAT_LINEAR_RINGS_PARSERS = { "http://www.opengis.net/gml/3.2": { interior: eb.prototype.interiorParser, exterior: eb.prototype.exteriorParser } }, ob.prototype.GEOMETRY_PARSERS = { "http://www.opengis.net/gml/3.2": { Point: Lc(F_.prototype.readPoint), MultiPoint: Lc(F_.prototype.readMultiPoint), LineString: Lc(F_.prototype.readLineString), MultiLineString: Lc(F_.prototype.readMultiLineString), LinearRing: Lc(F_.prototype.readLinearRing), Polygon: Lc(F_.prototype.readPolygon), MultiPolygon: Lc(F_.prototype.readMultiPolygon), Surface: Lc(ob.prototype.readSurface), MultiSurface: Lc(eb.prototype.readMultiSurface), Curve: Lc(ob.prototype.readCurve), MultiCurve: Lc(eb.prototype.readMultiCurve), Envelope: Lc(ob.prototype.readEnvelope) } }, ob.prototype.MULTICURVE_PARSERS = { "http://www.opengis.net/gml/3.2": { curveMember: Ic(eb.prototype.curveMemberParser), curveMembers: Ic(eb.prototype.curveMemberParser) } }, ob.prototype.MULTISURFACE_PARSERS = { "http://www.opengis.net/gml/3.2": { surfaceMember: Ic(eb.prototype.surfaceMemberParser), surfaceMembers: Ic(eb.prototype.surfaceMemberParser) } }, ob.prototype.CURVEMEMBER_PARSERS = { "http://www.opengis.net/gml/3.2": { LineString: Ic(F_.prototype.readLineString), Curve: Ic(eb.prototype.readCurve) } }, ob.prototype.SURFACEMEMBER_PARSERS = { "http://www.opengis.net/gml/3.2": { Polygon: Ic(F_.prototype.readPolygon), Surface: Ic(eb.prototype.readSurface) } }, ob.prototype.SURFACE_PARSERS = {"http://www.opengis.net/gml/3.2": {patches: Lc(eb.prototype.readPatch)}}, ob.prototype.CURVE_PARSERS = {"http://www.opengis.net/gml/3.2": {segments: Lc(eb.prototype.readSegment)}}, ob.prototype.ENVELOPE_PARSERS = { "http://www.opengis.net/gml/3.2": { lowerCorner: Ic(eb.prototype.readFlatPosList), upperCorner: Ic(eb.prototype.readFlatPosList) } }, ob.prototype.PATCHES_PARSERS = {"http://www.opengis.net/gml/3.2": {PolygonPatch: Lc(eb.prototype.readPolygonPatch)}}, ob.prototype.SEGMENTS_PARSERS = {"http://www.opengis.net/gml/3.2": {LineStringSegment: Lc(eb.prototype.readLineStringSegment)}}, ob.prototype.MULTIPOINT_PARSERS = { "http://www.opengis.net/gml/3.2": { pointMember: Ic(F_.prototype.pointMemberParser), pointMembers: Ic(F_.prototype.pointMemberParser) } }, ob.prototype.MULTILINESTRING_PARSERS = { "http://www.opengis.net/gml/3.2": { lineStringMember: Ic(F_.prototype.lineStringMemberParser), lineStringMembers: Ic(F_.prototype.lineStringMemberParser) } }, ob.prototype.MULTIPOLYGON_PARSERS = { "http://www.opengis.net/gml/3.2": { polygonMember: Ic(F_.prototype.polygonMemberParser), polygonMembers: Ic(F_.prototype.polygonMemberParser) } }, ob.prototype.POINTMEMBER_PARSERS = {"http://www.opengis.net/gml/3.2": {Point: Ic(F_.prototype.readFlatCoordinatesFromNode)}}, ob.prototype.LINESTRINGMEMBER_PARSERS = {"http://www.opengis.net/gml/3.2": {LineString: Ic(F_.prototype.readLineString)}}, ob.prototype.POLYGONMEMBER_PARSERS = {"http://www.opengis.net/gml/3.2": {Polygon: Ic(F_.prototype.readPolygon)}}, ob.prototype.RING_PARSERS = {"http://www.opengis.net/gml/3.2": {LinearRing: Lc(F_.prototype.readFlatLinearRing)}}, ob.prototype.RING_SERIALIZERS = { "http://www.opengis.net/gml/3.2": { exterior: Ac(eb.prototype.writeRing), interior: Ac(eb.prototype.writeRing) } }, ob.prototype.ENVELOPE_SERIALIZERS = { "http://www.opengis.net/gml/3.2": { lowerCorner: Ac(X_), upperCorner: Ac(X_) } }, ob.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = { "http://www.opengis.net/gml/3.2": { surfaceMember: Ac(eb.prototype.writeSurfaceOrPolygonMember), polygonMember: Ac(eb.prototype.writeSurfaceOrPolygonMember) } }, ob.prototype.POINTMEMBER_SERIALIZERS = {"http://www.opengis.net/gml/3.2": {pointMember: Ac(eb.prototype.writePointMember)}}, ob.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = { "http://www.opengis.net/gml/3.2": { lineStringMember: Ac(eb.prototype.writeLineStringOrCurveMember), curveMember: Ac(eb.prototype.writeLineStringOrCurveMember) } }, ob.prototype.GEOMETRY_SERIALIZERS = { "http://www.opengis.net/gml/3.2": { Curve: Ac(eb.prototype.writeCurveOrLineString), MultiCurve: Ac(eb.prototype.writeMultiCurveOrLineString), Point: Ac(ob.prototype.writePoint), MultiPoint: Ac(eb.prototype.writeMultiPoint), LineString: Ac(eb.prototype.writeCurveOrLineString), MultiLineString: Ac(eb.prototype.writeMultiCurveOrLineString), LinearRing: Ac(eb.prototype.writeLinearRing), Polygon: Ac(eb.prototype.writeSurfaceOrPolygon), MultiPolygon: Ac(eb.prototype.writeMultiSurfaceOrPolygon), Surface: Ac(eb.prototype.writeSurfaceOrPolygon), MultiSurface: Ac(eb.prototype.writeMultiSurfaceOrPolygon), Envelope: Ac(eb.prototype.writeEnvelope) } }; var ab = ob, sb = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), lb = [null, "http://www.topografix.com/GPX/1/0", "http://www.topografix.com/GPX/1/1"], ub = {rte: Nb, trk: Db, wpt: Gb}, cb = Gc(lb, {rte: Ic(Nb), trk: Ic(Db), wpt: Ic(Gb)}), hb = Gc(lb, {text: Fc(U_, "linkText"), type: Fc(U_, "linkType")}), pb = Gc(lb, { rte: Ac((function (t, e, r) { var n = r[0], i = e.getProperties(), o = {node: t}; o.properties = i; var a = e.getGeometry(); if (a.getType() == bt.LINE_STRING) { var s = Wy(a, !0, n); o.geometryLayout = s.getLayout(), i.rtept = s.getCoordinates() } var l = r[r.length - 1].node, u = wb[l.namespaceURI], c = Dc(i, u); Vc(o, Sb, Nc, c, r, u) })), trk: Ac((function (t, e, r) { var n = r[0], i = e.getProperties(), o = {node: t}; o.properties = i; var a = e.getGeometry(); if (a.getType() == bt.MULTI_LINE_STRING) { var s = Wy(a, !0, n); i.trkseg = s.getLineStrings() } var l = r[r.length - 1].node, u = Tb[l.namespaceURI], c = Dc(i, u); Vc(o, Cb, Nc, c, r, u) })), wpt: Ac((function (t, e, r) { var n = r[0], i = r[r.length - 1]; i.properties = e.getProperties(); var o = e.getGeometry(); if (o.getType() == bt.POINT) { var a = Wy(o, !0, n); i.geometryLayout = a.getLayout(), Ub(t, a.getCoordinates(), r) } })) }), fb = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.dataProjection = Gr("EPSG:4326"), r.readExtensions_ = n.readExtensions, r } return sb(e, t), e.prototype.handleReadExtensions_ = function (t) { t || (t = []); for (var e = 0, r = t.length; e < r; ++e) { var n = t[e]; if (this.readExtensions_) { var i = n.get("extensionsNode_") || null; this.readExtensions_(n, i) } n.set("extensionsNode_", void 0) } }, e.prototype.readFeatureFromNode = function (t, e) { if (!g(lb, t.namespaceURI)) return null; var r = ub[t.localName]; if (!r) return null; var n = r(t, [this.getReadOptions(t, e)]); return n ? (this.handleReadExtensions_([n]), n) : null }, e.prototype.readFeaturesFromNode = function (t, e) { if (!g(lb, t.namespaceURI)) return []; if ("gpx" == t.localName) { var r = Uc([], cb, t, [this.getReadOptions(t, e)]); return r ? (this.handleReadExtensions_(r), r) : [] } return [] }, e.prototype.writeFeaturesNode = function (t, e) { e = this.adaptOptions(e); var r = Sc("http://www.topografix.com/GPX/1/1", "gpx"); return r.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsi", wc), r.setAttributeNS(wc, "xsi:schemaLocation", "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"), r.setAttribute("version", "1.1"), r.setAttribute("creator", "OpenLayers"), Vc({node: r}, pb, Mb, t, [e]), r }, e }(P_), db = Gc(lb, { name: Fc(U_), cmt: Fc(U_), desc: Fc(U_), src: Fc(U_), link: kb, number: Fc(G_), extensions: jb, type: Fc(U_), rtept: function (t, e) { var r = Uc({}, gb, t, e); if (r) { var n = e[e.length - 1], i = n.flatCoordinates, o = n.layoutOptions; Fb(i, o, t, r) } } }), gb = Gc(lb, {ele: Fc(N_), time: Fc(j_)}), yb = Gc(lb, { name: Fc(U_), cmt: Fc(U_), desc: Fc(U_), src: Fc(U_), link: kb, number: Fc(G_), type: Fc(U_), extensions: jb, trkseg: function (t, e) { var r = e[e.length - 1]; zc(mb, t, e); var n = r.flatCoordinates; r.ends.push(n.length) } }), mb = Gc(lb, { trkpt: function (t, e) { var r = Uc({}, vb, t, e); if (r) { var n = e[e.length - 1], i = n.flatCoordinates, o = n.layoutOptions; Fb(i, o, t, r) } } }), vb = Gc(lb, {ele: Fc(N_), time: Fc(j_)}), _b = Gc(lb, { ele: Fc(N_), time: Fc(j_), magvar: Fc(N_), geoidheight: Fc(N_), name: Fc(U_), cmt: Fc(U_), desc: Fc(U_), src: Fc(U_), link: kb, sym: Fc(U_), type: Fc(U_), fix: Fc(U_), sat: Fc(G_), hdop: Fc(N_), vdop: Fc(N_), pdop: Fc(N_), ageofdgpsdata: Fc(N_), dgpsid: Fc(G_), extensions: jb }), bb = ["text", "type"], xb = Gc(lb, {text: Ac(X_), type: Ac(X_)}), wb = Gc(lb, ["name", "cmt", "desc", "src", "link", "number", "type", "rtept"]), Sb = Gc(lb, { name: Ac(X_), cmt: Ac(X_), desc: Ac(X_), src: Ac(X_), link: Ac(zb), number: Ac(q_), type: Ac(X_), rtept: kc(Ac(Ub)) }), Eb = Gc(lb, ["ele", "time"]), Tb = Gc(lb, ["name", "cmt", "desc", "src", "link", "number", "type", "trkseg"]), Cb = Gc(lb, { name: Ac(X_), cmt: Ac(X_), desc: Ac(X_), src: Ac(X_), link: Ac(zb), number: Ac(q_), type: Ac(X_), trkseg: kc(Ac((function (t, e, r) { var n = {node: t}; n.geometryLayout = e.getLayout(), n.properties = {}, Vc(n, Pb, Ob, e.getCoordinates(), r) }))) }), Ob = jc("trkpt"), Pb = Gc(lb, {trkpt: Ac(Ub)}), Rb = Gc(lb, ["ele", "time", "magvar", "geoidheight", "name", "cmt", "desc", "src", "link", "sym", "type", "fix", "sat", "hdop", "vdop", "pdop", "ageofdgpsdata", "dgpsid"]), Ib = Gc(lb, { ele: Ac(W_), time: Ac(Y_), magvar: Ac(W_), geoidheight: Ac(W_), name: Ac(X_), cmt: Ac(X_), desc: Ac(X_), src: Ac(X_), link: Ac(zb), sym: Ac(X_), type: Ac(X_), fix: Ac(X_), sat: Ac(q_), hdop: Ac(W_), vdop: Ac(W_), pdop: Ac(W_), ageofdgpsdata: Ac(W_), dgpsid: Ac(q_) }), Lb = {Point: "wpt", LineString: "rte", MultiLineString: "trk"}; function Mb(t, e, r) { var n = t.getGeometry(); if (n) { var i = Lb[n.getType()]; if (i) return Sc(e[e.length - 1].node.namespaceURI, i) } } function Fb(t, e, r, n) { return t.push(parseFloat(r.getAttribute("lon")), parseFloat(r.getAttribute("lat"))), "ele" in n ? (t.push(n.ele), delete n.ele, e.hasZ = !0) : t.push(0), "time" in n ? (t.push(n.time), delete n.time, e.hasM = !0) : t.push(0), t } function Ab(t, e, r) { var n = yt, i = 2; if (t.hasZ && t.hasM ? (n = _t, i = 4) : t.hasZ ? (n = mt, i = 3) : t.hasM && (n = vt, i = 3), 4 !== i) { for (var o = 0, a = e.length / 4; o < a; o++) e[o * i] = e[4 * o], e[o * i + 1] = e[4 * o + 1], t.hasZ && (e[o * i + 2] = e[4 * o + 2]), t.hasM && (e[o * i + 2] = e[4 * o + 3]); if (e.length = e.length / 4 * i, r) for (o = 0, a = r.length; o < a; o++) r[o] = r[o] / 4 * i } return n } function kb(t, e) { var r = e[e.length - 1], n = t.getAttribute("href"); null !== n && (r.link = n), zc(hb, t, e) } function jb(t, e) { e[e.length - 1].extensionsNode_ = t } function Nb(t, e) { var r = e[0], n = Uc({flatCoordinates: [], layoutOptions: {}}, db, t, e); if (n) { var i = n.flatCoordinates; delete n.flatCoordinates; var o = n.layoutOptions; delete n.layoutOptions; var a = Ab(o, i), s = new Py(i, a); Wy(s, !1, r); var l = new gt(s); return l.setProperties(n, !0), l } } function Db(t, e) { var r = e[0], n = Uc({flatCoordinates: [], ends: [], layoutOptions: {}}, yb, t, e); if (n) { var i = n.flatCoordinates; delete n.flatCoordinates; var o = n.ends; delete n.ends; var a = n.layoutOptions; delete n.layoutOptions; var s = Ab(a, i, o), l = new Zy(i, s, o); Wy(l, !1, r); var u = new gt(l); return u.setProperties(n, !0), u } } function Gb(t, e) { var r = e[0], n = Uc({}, _b, t, e); if (n) { var i = {}, o = Fb([], i, t, n), a = Ab(i, o), s = new qn(o, a); Wy(s, !1, r); var l = new gt(s); return l.setProperties(n, !0), l } } function zb(t, e, r) { t.setAttribute("href", e); var n = r[r.length - 1].properties, i = [n.linkText, n.linkType]; Vc({node: t}, xb, Nc, i, r, bb) } function Ub(t, e, r) { var n = r[r.length - 1], i = n.node.namespaceURI, o = n.properties; switch (t.setAttributeNS(null, "lat", String(e[1])), t.setAttributeNS(null, "lon", String(e[0])), n.geometryLayout) { case _t: 0 !== e[3] && (o.time = e[3]); case mt: 0 !== e[2] && (o.ele = e[2]); break; case vt: 0 !== e[2] && (o.time = e[2]) } var a = "rtept" == t.nodeName ? Eb[i] : Rb[i], s = Dc(o, a); Vc({node: t, properties: o}, Ib, Nc, s, r, a) } var Bb = fb, Vb = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function Yb(t) { return "string" == typeof t ? t : "" } var Wb, qb, Xb, Zb, Kb, Hb, $b, Jb = function (t) { function e() { return t.call(this) || this } return Vb(e, t), e.prototype.getType = function () { return Pu }, e.prototype.readFeature = function (t, e) { return this.readFeatureFromText(Yb(t), this.adaptOptions(e)) }, e.prototype.readFeatureFromText = function (t, e) { return n() }, e.prototype.readFeatures = function (t, e) { return this.readFeaturesFromText(Yb(t), this.adaptOptions(e)) }, e.prototype.readFeaturesFromText = function (t, e) { return n() }, e.prototype.readGeometry = function (t, e) { return this.readGeometryFromText(Yb(t), this.adaptOptions(e)) }, e.prototype.readGeometryFromText = function (t, e) { return n() }, e.prototype.readProjection = function (t) { return this.readProjectionFromText(Yb(t)) }, e.prototype.readProjectionFromText = function (t) { return this.dataProjection }, e.prototype.writeFeature = function (t, e) { return this.writeFeatureText(t, this.adaptOptions(e)) }, e.prototype.writeFeatureText = function (t, e) { return n() }, e.prototype.writeFeatures = function (t, e) { return this.writeFeaturesText(t, this.adaptOptions(e)) }, e.prototype.writeFeaturesText = function (t, e) { return n() }, e.prototype.writeGeometry = function (t, e) { return this.writeGeometryText(t, this.adaptOptions(e)) }, e.prototype.writeGeometryText = function (t, e) { return n() }, e }(Yy), Qb = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), tx = "barometric", ex = "gps", rx = "none", nx = /^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])([AV])(\d{5})(\d{5})/, ix = /^H.([A-Z]{3}).*?:(.*)/, ox = /^HFDTE(\d{2})(\d{2})(\d{2})/, ax = /\r\n|\r|\n/, sx = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.dataProjection = Gr("EPSG:4326"), r.altitudeMode_ = n.altitudeMode ? n.altitudeMode : rx, r } return Qb(e, t), e.prototype.readFeatureFromText = function (t, e) { var r, n, i = this.altitudeMode_, o = t.split(ax), a = {}, s = [], l = 2e3, u = 0, c = 1, h = -1; for (r = 0, n = o.length; r < n; ++r) { var p = o[r], f = void 0; if ("B" == p.charAt(0)) { if (f = nx.exec(p)) { var d = parseInt(f[1], 10), g = parseInt(f[2], 10), y = parseInt(f[3], 10), m = parseInt(f[4], 10) + parseInt(f[5], 10) / 6e4; "S" == f[6] && (m = -m); var v = parseInt(f[7], 10) + parseInt(f[8], 10) / 6e4; if ("W" == f[9] && (v = -v), s.push(v, m), i != rx) { var _ = void 0; _ = i == ex ? parseInt(f[11], 10) : i == tx ? parseInt(f[12], 10) : 0, s.push(_) } var b = Date.UTC(l, u, c, d, g, y); b < h && (b = Date.UTC(l, u, c + 1, d, g, y)), s.push(b / 1e3), h = b } } else "H" == p.charAt(0) && ((f = ox.exec(p)) ? (c = parseInt(f[1], 10), u = parseInt(f[2], 10) - 1, l = 2e3 + parseInt(f[3], 10)) : (f = ix.exec(p)) && (a[f[1]] = f[2].trim())) } if (0 === s.length) return null; var x = new Py(s, i == rx ? vt : _t), w = new gt(Wy(x, !1, e)); return w.setProperties(a, !0), w }, e.prototype.readFeaturesFromText = function (t, e) { var r = this.readFeatureFromText(t, e); return r ? [r] : [] }, e }(Jb), lx = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ux = ["http://www.google.com/kml/ext/2.2"], cx = [null, "http://earth.google.com/kml/2.0", "http://earth.google.com/kml/2.1", "http://earth.google.com/kml/2.2", "http://www.opengis.net/kml/2.2"], hx = {fraction: rp, pixels: np, insetPixels: np}, px = Gc(cx, { ExtendedData: sw, Region: lw, MultiGeometry: Fc(Jx, "geometry"), LineString: Fc(Kx, "geometry"), LinearRing: Fc(Hx, "geometry"), Point: Fc(Qx, "geometry"), Polygon: Fc(ew, "geometry"), Style: Fc(nw), StyleMap: function (t, e) { var r = kx.call(this, t, e); if (!r) return; var n = e[e.length - 1]; Array.isArray(r) ? n.Style = r : "string" == typeof r ? n.styleUrl = r : pt(!1, 38) }, address: Fc(U_), description: Fc(U_), name: Fc(U_), open: Fc(A_), phoneNumber: Fc(U_), styleUrl: Fc(Mx), visibility: Fc(A_) }, Gc(ux, { MultiTrack: Fc((function (t, e) { var r = Uc([], Bx, t, e); if (!r) return; return new Zy(r) }), "geometry"), Track: Fc(Yx, "geometry") })), fx = Gc(cx, { ExtendedData: sw, Region: lw, Link: function (t, e) { zc(dx, t, e) }, address: Fc(U_), description: Fc(U_), name: Fc(U_), open: Fc(A_), phoneNumber: Fc(U_), visibility: Fc(A_) }), dx = Gc(cx, {href: Fc(Lx)}), gx = Gc(cx, { LatLonAltBox: function (t, e) { var r = Uc({}, hw, t, e); if (!r) return; var n = e[e.length - 1], i = [parseFloat(r.west), parseFloat(r.south), parseFloat(r.east), parseFloat(r.north)]; n.extent = i, n.altitudeMode = r.altitudeMode, n.minAltitude = parseFloat(r.minAltitude), n.maxAltitude = parseFloat(r.maxAltitude) }, Lod: function (t, e) { var r = Uc({}, pw, t, e); if (!r) return; var n = e[e.length - 1]; n.minLodPixels = parseFloat(r.minLodPixels), n.maxLodPixels = parseFloat(r.maxLodPixels), n.minFadeExtent = parseFloat(r.minFadeExtent), n.maxFadeExtent = parseFloat(r.maxFadeExtent) } }), yx = Gc(cx, ["Document", "Placemark"]), mx = Gc(cx, { Document: Ac((function (t, e, r) { Vc({node: t}, mw, vw, e, r, void 0, this) })), Placemark: Ac(Bw) }), vx = null; var _x, bx = null; var xx, wx = null; var Sx = null; var Ex = null; var Tx, Cx = null; function Ox(t) { return t } var Px = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return Cx || (vx = new ep({color: Wb = [255, 255, 255, 1]}), bx = new dp({ anchor: qb = [20, 2], anchorOrigin: ip, anchorXUnits: Xb = np, anchorYUnits: Zb = np, crossOrigin: "anonymous", rotation: 0, scale: $b = .5, size: Kb = [64, 64], src: Hb = "https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png" }), _x = "NO_IMAGE", wx = new gp({color: Wb, width: 1}), xx = new gp({ color: [51, 51, 51, 1], width: 2 }), Sx = new Tp({font: "bold 16px Helvetica", fill: vx, stroke: xx, scale: .8}), Ex = new wp({ fill: vx, image: bx, text: Sx, stroke: wx, zIndex: 0 }), Cx = [Ex]), r.dataProjection = Gr("EPSG:4326"), r.defaultStyle_ = n.defaultStyle ? n.defaultStyle : Cx, r.extractStyles_ = void 0 === n.extractStyles || n.extractStyles, r.writeStyles_ = void 0 === n.writeStyles || n.writeStyles, r.sharedStyles_ = {}, r.showPointNames_ = void 0 === n.showPointNames || n.showPointNames, r.crossOrigin_ = void 0 !== n.crossOrigin ? n.crossOrigin : "anonymous", r.iconUrlFunction_ = n.iconUrlFunction ? n.iconUrlFunction : Ox, r } return lx(e, t), e.prototype.readDocumentOrFolder_ = function (t, e) { var r = Uc([], Gc(cx, { Document: Rc(this.readDocumentOrFolder_, this), Folder: Rc(this.readDocumentOrFolder_, this), Placemark: Ic(this.readPlacemark_, this), Style: this.readSharedStyle_.bind(this), StyleMap: this.readSharedStyleMap_.bind(this) }), t, e, this); return r || void 0 }, e.prototype.readPlacemark_ = function (t, e) { var r = Uc({geometry: null}, px, t, e, this); if (r) { var n = new gt, i = t.getAttribute("id"); null !== i && n.setId(i); var o = e[0], a = r.geometry; if (a && Wy(a, !1, o), n.setGeometry(a), delete r.geometry, this.extractStyles_) { var s = function (t, e, r, n, i) { return function (o, a) { var s = i, l = "", u = []; if (s) { var c = o.getGeometry(); if (c) { var h = c.getType(); s = h === bt.GEOMETRY_COLLECTION ? (u = c.getGeometriesArrayRecursive().filter((function (t) { var e = t.getType(); return e === bt.POINT || e === bt.MULTI_POINT }))).length > 0 : h === bt.POINT || h === bt.MULTI_POINT } } s && (l = o.get("name"), (s = s && !!l) && l.search(/&[^&]+;/) > -1 && (Tx || (Tx = document.createElement("textarea")), Tx.innerHTML = l, l = Tx.value)); var p = r; if (t ? p = t : e && (p = function t(e, r, n) { return Array.isArray(e) ? e : "string" == typeof e ? t(n[e], r, n) : r }(e, r, n)), s) { var f = function (t, e) { var r = [0, 0], n = "start", i = t.getImage(); if (i) { var o = i.getImageSize(); if (null === o && (o = Kb), 2 == o.length) { var a = i.getScaleArray(); r[0] = a[0] * o[0] / 2, r[1] = -a[1] * o[1] / 2, n = "left" } } var s = t.getText(); s ? ((s = s.clone()).setFont(s.getFont() || Sx.getFont()), s.setScale(s.getScale() || Sx.getScale()), s.setFill(s.getFill() || Sx.getFill()), s.setStroke(s.getStroke() || xx)) : s = Sx.clone(); return s.setText(e), s.setOffsetX(r[0]), s.setOffsetY(r[1]), s.setTextAlign(n), new wp({ image: i, text: s }) }(p[0], l); return u.length > 0 ? (f.setGeometry(new Vm(u)), [f, new wp({ geometry: p[0].getGeometry(), image: null, fill: p[0].getFill(), stroke: p[0].getStroke(), text: null })].concat(p.slice(1))) : f } return p } }(r.Style, r.styleUrl, this.defaultStyle_, this.sharedStyles_, this.showPointNames_); n.setStyle(s) } return delete r.Style, n.setProperties(r, !0), n } }, e.prototype.readSharedStyle_ = function (t, e) { var r = t.getAttribute("id"); if (null !== r) { var n = nw.call(this, t, e); if (n) { var i = void 0, o = t.baseURI; if (o && "about:blank" != o || (o = window.location.href), o) i = new URL("#" + r, o).href; else i = "#" + r; this.sharedStyles_[i] = n } } }, e.prototype.readSharedStyleMap_ = function (t, e) { var r = t.getAttribute("id"); if (null !== r) { var n = kx.call(this, t, e); if (n) { var i, o = t.baseURI; if (o && "about:blank" != o || (o = window.location.href), o) i = new URL("#" + r, o).href; else i = "#" + r; this.sharedStyles_[i] = n } } }, e.prototype.readFeatureFromNode = function (t, e) { if (!g(cx, t.namespaceURI)) return null; var r = this.readPlacemark_(t, [this.getReadOptions(t, e)]); return r || null }, e.prototype.readFeaturesFromNode = function (t, e) { if (!g(cx, t.namespaceURI)) return []; var r, n = t.localName; if ("Document" == n || "Folder" == n) return (r = this.readDocumentOrFolder_(t, [this.getReadOptions(t, e)])) || []; if ("Placemark" == n) { var i = this.readPlacemark_(t, [this.getReadOptions(t, e)]); return i ? [i] : [] } if ("kml" == n) { r = []; for (var o = t.firstElementChild; o; o = o.nextElementSibling) { var a = this.readFeaturesFromNode(o, e); a && v(r, a) } return r } return [] }, e.prototype.readName = function (t) { if (t) { if ("string" == typeof t) { var e = Pc(t); return this.readNameFromDocument(e) } return Cc(t) ? this.readNameFromDocument(t) : this.readNameFromNode(t) } }, e.prototype.readNameFromDocument = function (t) { for (var e = t.firstChild; e; e = e.nextSibling) if (e.nodeType == Node.ELEMENT_NODE) { var r = this.readNameFromNode(e); if (r) return r } }, e.prototype.readNameFromNode = function (t) { for (var e = t.firstElementChild; e; e = e.nextElementSibling) if (g(cx, e.namespaceURI) && "name" == e.localName) return U_(e); for (e = t.firstElementChild; e; e = e.nextElementSibling) { var r = e.localName; if (g(cx, e.namespaceURI) && ("Document" == r || "Folder" == r || "Placemark" == r || "kml" == r)) { var n = this.readNameFromNode(e); if (n) return n } } }, e.prototype.readNetworkLinks = function (t) { var e = []; if ("string" == typeof t) { var r = Pc(t); v(e, this.readNetworkLinksFromDocument(r)) } else Cc(t) ? v(e, this.readNetworkLinksFromDocument(t)) : v(e, this.readNetworkLinksFromNode(t)); return e }, e.prototype.readNetworkLinksFromDocument = function (t) { for (var e = [], r = t.firstChild; r; r = r.nextSibling) r.nodeType == Node.ELEMENT_NODE && v(e, this.readNetworkLinksFromNode(r)); return e }, e.prototype.readNetworkLinksFromNode = function (t) { for (var e = [], r = t.firstElementChild; r; r = r.nextElementSibling) if (g(cx, r.namespaceURI) && "NetworkLink" == r.localName) { var n = Uc({}, fx, r, []); e.push(n) } for (r = t.firstElementChild; r; r = r.nextElementSibling) { var i = r.localName; !g(cx, r.namespaceURI) || "Document" != i && "Folder" != i && "kml" != i || v(e, this.readNetworkLinksFromNode(r)) } return e }, e.prototype.readRegion = function (t) { var e = []; if ("string" == typeof t) { var r = Pc(t); v(e, this.readRegionFromDocument(r)) } else Cc(t) ? v(e, this.readRegionFromDocument(t)) : v(e, this.readRegionFromNode(t)); return e }, e.prototype.readRegionFromDocument = function (t) { for (var e = [], r = t.firstChild; r; r = r.nextSibling) r.nodeType == Node.ELEMENT_NODE && v(e, this.readRegionFromNode(r)); return e }, e.prototype.readRegionFromNode = function (t) { for (var e = [], r = t.firstElementChild; r; r = r.nextElementSibling) if (g(cx, r.namespaceURI) && "Region" == r.localName) { var n = Uc({}, gx, r, []); e.push(n) } for (r = t.firstElementChild; r; r = r.nextElementSibling) { var i = r.localName; !g(cx, r.namespaceURI) || "Document" != i && "Folder" != i && "kml" != i || v(e, this.readRegionFromNode(r)) } return e }, e.prototype.writeFeaturesNode = function (t, e) { e = this.adaptOptions(e); var r = Sc(cx[4], "kml"), n = "http://www.w3.org/2000/xmlns/"; r.setAttributeNS(n, "xmlns:gx", ux[0]), r.setAttributeNS(n, "xmlns:xsi", wc), r.setAttributeNS(wc, "xsi:schemaLocation", "http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd"); var i = {node: r}, o = {}; t.length > 1 ? o.Document = t : 1 == t.length && (o.Placemark = t[0]); var a = yx[r.namespaceURI], s = Dc(o, a); return Vc(i, mx, Nc, s, [e], a, this), r }, e }(P_); function Rx(t) { var e = Ec(t, !1), r = /^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e); if (r) { var n = r[1]; return [parseInt(n.substr(6, 2), 16), parseInt(n.substr(4, 2), 16), parseInt(n.substr(2, 2), 16), parseInt(n.substr(0, 2), 16) / 255] } } function Ix(t) { var e = Ec(t, !1), r = []; e = e.replace(/\s*,\s*/g, ","); for (var n, i = /^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i; n = i.exec(e);) { var o = parseFloat(n[1]), a = parseFloat(n[2]), s = n[3] ? parseFloat(n[3]) : 0; r.push(o, a, s), e = e.substr(n[0].length) } if ("" === e) return r } function Lx(t) { var e = Ec(t, !1).trim(), r = t.baseURI; return r && "about:blank" != r || (r = window.location.href), r ? new URL(e, r).href : e } function Mx(t) { var e = Ec(t, !1).trim().replace(/^(?!.*#)/, "#"), r = t.baseURI; return r && "about:blank" != r || (r = window.location.href), r ? new URL(e, r).href : e } function Fx(t) { return N_(t) } var Ax = Gc(cx, { Pair: function (t, e) { var r = Uc({}, uw, t, e, this); if (!r) return; var n = r.key; if (n && "normal" == n) { var i = r.styleUrl; i && (e[e.length - 1] = i); var o = r.Style; o && (e[e.length - 1] = o) } } }); function kx(t, e) { return Uc(void 0, Ax, t, e, this) } var jx = Gc(cx, { Icon: Fc((function (t, e) { var r = Uc({}, Wx, t, e); return r || null })), color: Fc(Rx), heading: Fc(N_), hotSpot: Fc((function (t) { var e, r = t.getAttribute("xunits"), n = t.getAttribute("yunits"); return e = "insetPixels" !== r ? "insetPixels" !== n ? ip : ap : "insetPixels" !== n ? op : sp, { x: parseFloat(t.getAttribute("x")), xunits: hx[r], y: parseFloat(t.getAttribute("y")), yunits: hx[n], origin: e } })), scale: Fc(Fx) }); var Nx = Gc(cx, {color: Fc(Rx), scale: Fc(Fx)}); var Dx = Gc(cx, {color: Fc(Rx), width: Fc(N_)}); var Gx = Gc(cx, {color: Fc(Rx), fill: Fc(A_), outline: Fc(A_)}); var zx = Gc(cx, {coordinates: Lc(Ix)}); function Ux(t, e) { return Uc(null, zx, t, e) } var Bx = Gc(ux, {Track: Ic(Yx)}); var Vx = Gc(cx, { when: function (t, e) { var r = e[e.length - 1].whens, n = Ec(t, !1), i = Date.parse(n); r.push(isNaN(i) ? 0 : i) } }, Gc(ux, { coord: function (t, e) { var r = e[e.length - 1].flatCoordinates, n = Ec(t, !1), i = /^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(n); if (i) { var o = parseFloat(i[1]), a = parseFloat(i[2]), s = parseFloat(i[3]); r.push(o, a, s, 0) } else r.push(0, 0, 0, 0) } })); function Yx(t, e) { var r = Uc({flatCoordinates: [], whens: []}, Vx, t, e); if (r) { for (var n = r.flatCoordinates, i = r.whens, o = 0, a = Math.min(n.length, i.length); o < a; ++o) n[4 * o + 3] = i[o]; return new Py(n, _t) } } var Wx = Gc(cx, {href: Fc(Lx)}, Gc(ux, {x: Fc(N_), y: Fc(N_), w: Fc(N_), h: Fc(N_)})); var qx = Gc(cx, {coordinates: Lc(Ix)}); function Xx(t, e) { return Uc(null, qx, t, e) } var Zx = Gc(cx, {extrude: Fc(A_), tessellate: Fc(A_), altitudeMode: Fc(U_)}); function Kx(t, e) { var r = Uc({}, Zx, t, e), n = Xx(t, e); if (n) { var i = new Py(n, mt); return i.setProperties(r, !0), i } } function Hx(t, e) { var r = Uc({}, Zx, t, e), n = Xx(t, e); if (n) { var i = new fi(n, mt, [n.length]); return i.setProperties(r, !0), i } } var $x = Gc(cx, {LineString: Ic(Kx), LinearRing: Ic(Hx), MultiGeometry: Ic(Jx), Point: Ic(Qx), Polygon: Ic(ew)}); function Jx(t, e) { var r, n = Uc([], $x, t, e); if (!n) return null; if (0 === n.length) return new Vm(n); for (var i = !0, o = n[0].getType(), a = 1, s = n.length; a < s; ++a) if (n[a].getType() != o) { i = !1; break } if (i) { var l = void 0, u = void 0; if (o == bt.POINT) { var c = n[0]; l = c.getLayout(), u = c.getFlatCoordinates(); for (a = 1, s = n.length; a < s; ++a) v(u, n[a].getFlatCoordinates()); iw(r = new Hy(u, l), n) } else o == bt.LINE_STRING ? iw(r = new Zy(n), n) : o == bt.POLYGON ? iw(r = new Jy(n), n) : o == bt.GEOMETRY_COLLECTION ? r = new Vm(n) : pt(!1, 37) } else r = new Vm(n); return r } function Qx(t, e) { var r = Uc({}, Zx, t, e), n = Xx(t, e); if (n) { var i = new qn(n, mt); return i.setProperties(r, !0), i } } var tw = Gc(cx, { innerBoundaryIs: function (t, e) { var r = Uc(void 0, fw, t, e); if (r) { e[e.length - 1].push(r) } }, outerBoundaryIs: function (t, e) { var r = Uc(void 0, dw, t, e); if (r) { e[e.length - 1][0] = r } } }); function ew(t, e) { var r = Uc({}, Zx, t, e), n = Uc([null], tw, t, e); if (n && n[0]) { for (var i = n[0], o = [i.length], a = 1, s = n.length; a < s; ++a) v(i, n[a]), o.push(i.length); var l = new fi(i, mt, o); return l.setProperties(r, !0), l } } var rw = Gc(cx, { IconStyle: function (t, e) { var r = Uc({}, jx, t, e); if (r) { var n, i, o, a, s = e[e.length - 1], l = "Icon" in r ? r.Icon : {}, u = !("Icon" in r) || Object.keys(l).length > 0, c = l.href; c ? n = c : u && (n = Hb); var h, p = ip, f = r.hotSpot; f ? (i = [f.x, f.y], o = f.xunits, a = f.yunits, p = f.origin) : n === Hb ? (i = qb, o = Xb, a = Zb) : /^http:\/\/maps\.(?:google|gstatic)\.com\//.test(n) && (i = [.5, 0], o = rp, a = rp); var d, g = l.x, y = l.y; void 0 !== g && void 0 !== y && (h = [g, y]); var m, v = l.w, _ = l.h; void 0 !== v && void 0 !== _ && (d = [v, _]); var b = r.heading; void 0 !== b && (m = Ye(b)); var x = r.scale, w = r.color; if (u) { n == Hb && (d = Kb, void 0 === x && (x = $b)); var S = new dp({ anchor: i, anchorOrigin: p, anchorXUnits: o, anchorYUnits: a, crossOrigin: this.crossOrigin_, offset: h, offsetOrigin: ip, rotation: m, scale: x, size: d, src: this.iconUrlFunction_(n), color: w }); s.imageStyle = S } else s.imageStyle = _x } }, LabelStyle: function (t, e) { var r = Uc({}, Nx, t, e); if (r) { var n = e[e.length - 1], i = new Tp({fill: new ep({color: "color" in r ? r.color : Wb}), scale: r.scale}); n.textStyle = i } }, LineStyle: function (t, e) { var r = Uc({}, Dx, t, e); if (r) { var n = e[e.length - 1], i = new gp({color: "color" in r ? r.color : Wb, width: "width" in r ? r.width : 1}); n.strokeStyle = i } }, PolyStyle: function (t, e) { var r = Uc({}, Gx, t, e); if (r) { var n = e[e.length - 1], i = new ep({color: "color" in r ? r.color : Wb}); n.fillStyle = i; var o = r.fill; void 0 !== o && (n.fill = o); var a = r.outline; void 0 !== a && (n.outline = a) } } }); function nw(t, e) { var r = Uc({}, rw, t, e, this); if (!r) return null; var n, i = "fillStyle" in r ? r.fillStyle : vx, o = r.fill; void 0 === o || o || (i = null), "imageStyle" in r ? r.imageStyle != _x && (n = r.imageStyle) : n = bx; var a = "textStyle" in r ? r.textStyle : Sx, s = "strokeStyle" in r ? r.strokeStyle : wx, l = r.outline; return void 0 === l || l ? [new wp({ fill: i, image: n, stroke: s, text: a, zIndex: void 0 })] : [new wp({ geometry: function (t) { var e = t.getGeometry(), r = e.getType(); return r === bt.GEOMETRY_COLLECTION ? new Vm(e.getGeometriesArrayRecursive().filter((function (t) { var e = t.getType(); return e !== bt.POLYGON && e !== bt.MULTI_POLYGON }))) : r !== bt.POLYGON && r !== bt.MULTI_POLYGON ? e : void 0 }, fill: i, image: n, stroke: s, text: a, zIndex: void 0 }), new wp({ geometry: function (t) { var e = t.getGeometry(), r = e.getType(); return r === bt.GEOMETRY_COLLECTION ? new Vm(e.getGeometriesArrayRecursive().filter((function (t) { var e = t.getType(); return e === bt.POLYGON || e === bt.MULTI_POLYGON }))) : r === bt.POLYGON || r === bt.MULTI_POLYGON ? e : void 0 }, fill: i, stroke: null, zIndex: void 0 })] } function iw(t, e) { var r, n, i, o = e.length, a = new Array(e.length), s = new Array(e.length), l = new Array(e.length); r = !1, n = !1, i = !1; for (var u = 0; u < o; ++u) { var c = e[u]; a[u] = c.get("extrude"), s[u] = c.get("tessellate"), l[u] = c.get("altitudeMode"), r = r || void 0 !== a[u], n = n || void 0 !== s[u], i = i || l[u] } r && t.set("extrude", a), n && t.set("tessellate", s), i && t.set("altitudeMode", l) } var ow = Gc(cx, {displayName: Fc(U_), value: Fc(U_)}); var aw = Gc(cx, { Data: function (t, e) { var r = t.getAttribute("name"); zc(ow, t, e); var n = e[e.length - 1]; r && n.displayName ? n[r] = { value: n.value, displayName: n.displayName, toString: function () { return n.value } } : null !== r ? n[r] = n.value : null !== n.displayName && (n[n.displayName] = n.value), delete n.value }, SchemaData: function (t, e) { zc(cw, t, e) } }); function sw(t, e) { zc(aw, t, e) } function lw(t, e) { zc(gx, t, e) } var uw = Gc(cx, {Style: Fc(nw), key: Fc(U_), styleUrl: Fc(Mx)}); var cw = Gc(cx, { SimpleData: function (t, e) { var r = t.getAttribute("name"); if (null !== r) { var n = U_(t); e[e.length - 1][r] = n } } }); var hw = Gc(cx, { altitudeMode: Fc(U_), minAltitude: Fc(N_), maxAltitude: Fc(N_), north: Fc(N_), south: Fc(N_), east: Fc(N_), west: Fc(N_) }); var pw = Gc(cx, {minLodPixels: Fc(N_), maxLodPixels: Fc(N_), minFadeExtent: Fc(N_), maxFadeExtent: Fc(N_)}); var fw = Gc(cx, {LinearRing: Lc(Ux)}); var dw = Gc(cx, {LinearRing: Lc(Ux)}); function gw(t, e) { for (var r = Oo(e), n = [255 * (4 == r.length ? r[3] : 1), r[2], r[1], r[0]], i = 0; i < 4; ++i) { var o = Math.floor(n[i]).toString(16); n[i] = 1 == o.length ? "0" + o : o } X_(t, n.join("")) } var yw = Gc(cx, { Data: Ac((function (t, e, r) { t.setAttribute("name", e.name); var n = {node: t}, i = e.value; "object" == typeof i ? (null !== i && i.displayName && Vc(n, yw, Nc, [i.displayName], r, ["displayName"]), null !== i && i.value && Vc(n, yw, Nc, [i.value], r, ["value"])) : Vc(n, yw, Nc, [i], r, ["value"]) })), value: Ac((function (t, e) { X_(t, e) })), displayName: Ac((function (t, e) { V_(t, e) })) }); var mw = Gc(cx, {Placemark: Ac(Bw)}), vw = function (t, e, r) { return Sc(e[e.length - 1].node.namespaceURI, "Placemark") }; var _w = jc("Data"); var bw = Gc(cx, ["href"], Gc(ux, ["x", "y", "w", "h"])), xw = Gc(cx, {href: Ac(X_)}, Gc(ux, {x: Ac(W_), y: Ac(W_), w: Ac(W_), h: Ac(W_)})), ww = function (t, e, r) { return Sc(ux[0], "gx:" + r) }; var Sw = Gc(cx, ["scale", "heading", "Icon", "color", "hotSpot"]), Ew = Gc(cx, { Icon: Ac((function (t, e, r) { var n = {node: t}, i = r[r.length - 1].node, o = bw[i.namespaceURI], a = Dc(e, o); Vc(n, xw, Nc, a, r, o), a = Dc(e, o = bw[ux[0]]), Vc(n, xw, ww, a, r, o) })), color: Ac(gw), heading: Ac(W_), hotSpot: Ac((function (t, e) { t.setAttribute("x", String(e.x)), t.setAttribute("y", String(e.y)), t.setAttribute("xunits", e.xunits), t.setAttribute("yunits", e.yunits) })), scale: Ac(Jw) }); var Tw = Gc(cx, ["color", "scale"]), Cw = Gc(cx, {color: Ac(gw), scale: Ac(Jw)}); var Ow = Gc(cx, ["color", "width"]), Pw = Gc(cx, {color: Ac(gw), width: Ac(W_)}); var Rw = { Point: "Point", LineString: "LineString", LinearRing: "LinearRing", Polygon: "Polygon", MultiPoint: "MultiGeometry", MultiLineString: "MultiGeometry", MultiPolygon: "MultiGeometry", GeometryCollection: "MultiGeometry" }, Iw = function (t, e, r) { if (t) return Sc(e[e.length - 1].node.namespaceURI, Rw[t.getType()]) }, Lw = jc("Point"), Mw = jc("LineString"), Fw = jc("LinearRing"), Aw = jc("Polygon"), kw = Gc(cx, {LineString: Ac(Ww), Point: Ac(Ww), Polygon: Ac(Hw), GeometryCollection: Ac(jw)}); function jw(t, e, r) { var n, i = {node: t}, o = e.getType(), a = []; o === bt.GEOMETRY_COLLECTION ? (e.getGeometriesArrayRecursive().forEach((function (t) { var e = t.getType(); e === bt.MULTI_POINT ? a = a.concat(t.getPoints()) : e === bt.MULTI_LINE_STRING ? a = a.concat(t.getLineStrings()) : e === bt.MULTI_POLYGON ? a = a.concat(t.getPolygons()) : e === bt.POINT || e === bt.LINE_STRING || e === bt.POLYGON ? a.push(t) : pt(!1, 39) })), n = Iw) : o === bt.MULTI_POINT ? (a = e.getPoints(), n = Lw) : o === bt.MULTI_LINE_STRING ? (a = e.getLineStrings(), n = Mw) : o === bt.MULTI_POLYGON ? (a = e.getPolygons(), n = Aw) : pt(!1, 39), Vc(i, kw, n, a, r) } var Nw = Gc(cx, {LinearRing: Ac(Ww)}); function Dw(t, e, r) { Vc({node: t}, Nw, Fw, [e], r) } var Gw = Gc(cx, { ExtendedData: Ac((function (t, e, r) { for (var n = {node: t}, i = e.names, o = e.values, a = i.length, s = 0; s < a; s++) Vc(n, yw, _w, [{ name: i[s], value: o[s] }], r) })), MultiGeometry: Ac(jw), LineString: Ac(Ww), LinearRing: Ac(Ww), Point: Ac(Ww), Polygon: Ac(Hw), Style: Ac((function (t, e, r) { var n = {node: t}, i = {}; if (e.pointStyles.length) { var o = e.pointStyles[0].getText(); o && (i.LabelStyle = o); var a = e.pointStyles[0].getImage(); a && "function" == typeof a.getSrc && (i.IconStyle = a) } if (e.lineStyles.length) { (s = e.lineStyles[0].getStroke()) && (i.LineStyle = s) } if (e.polyStyles.length) { var s; (s = e.polyStyles[0].getStroke()) && !i.LineStyle && (i.LineStyle = s), i.PolyStyle = e.polyStyles[0] } var l = r[r.length - 1].node, u = Qw[l.namespaceURI], c = Dc(i, u); Vc(n, tS, Nc, c, r, u) })), address: Ac(X_), description: Ac(X_), name: Ac(X_), open: Ac(B_), phoneNumber: Ac(X_), styleUrl: Ac(X_), visibility: Ac(B_) }), zw = Gc(cx, ["name", "open", "visibility", "address", "phoneNumber", "description", "styleUrl", "Style"]), Uw = jc("ExtendedData"); function Bw(t, e, r) { var n = {node: t}; e.getId() && t.setAttribute("id", e.getId()); var i = e.getProperties(), o = {address: 1, description: 1, name: 1, open: 1, phoneNumber: 1, styleUrl: 1, visibility: 1}; o[e.getGeometryName()] = 1; var a = Object.keys(i || {}).sort().filter((function (t) { return !o[t] })), s = e.getStyleFunction(); if (s) { var l = s(e, 0); if (l) { var u = Array.isArray(l) ? l : [l], c = u; if (e.getGeometry() && (c = u.filter((function (t) { var r = t.getGeometryFunction()(e); if (r) { var n = r.getType(); return n === bt.GEOMETRY_COLLECTION ? r.getGeometriesArrayRecursive().filter((function (t) { var e = t.getType(); return e === bt.POINT || e === bt.MULTI_POINT })).length : n === bt.POINT || n === bt.MULTI_POINT } }))), this.writeStyles_) { var h = u, p = u; e.getGeometry() && (h = u.filter((function (t) { var r = t.getGeometryFunction()(e); if (r) { var n = r.getType(); return n === bt.GEOMETRY_COLLECTION ? r.getGeometriesArrayRecursive().filter((function (t) { var e = t.getType(); return e === bt.LINE_STRING || e === bt.MULTI_LINE_STRING })).length : n === bt.LINE_STRING || n === bt.MULTI_LINE_STRING } })), p = u.filter((function (t) { var r = t.getGeometryFunction()(e); if (r) { var n = r.getType(); return n === bt.GEOMETRY_COLLECTION ? r.getGeometriesArrayRecursive().filter((function (t) { var e = t.getType(); return e === bt.POLYGON || e === bt.MULTI_POLYGON })).length : n === bt.POLYGON || n === bt.MULTI_POLYGON } }))), i.Style = {pointStyles: c, lineStyles: h, polyStyles: p} } if (c.length && void 0 === i.name) { var f = c[0].getText(); f && (i.name = f.getText()) } } } var d = r[r.length - 1].node, g = zw[d.namespaceURI], y = Dc(i, g); if (Vc(n, Gw, Nc, y, r, g), a.length > 0) { var m = Dc(i, a); Vc(n, Gw, Uw, [{names: a, values: m}], r) } var v = r[0], _ = e.getGeometry(); _ && (_ = Wy(_, !0, v)), Vc(n, Gw, Iw, [_], r) } var Vw = Gc(cx, ["extrude", "tessellate", "altitudeMode", "coordinates"]), Yw = Gc(cx, { extrude: Ac(B_), tessellate: Ac(B_), altitudeMode: Ac(X_), coordinates: Ac((function (t, e, r) { var n, i = r[r.length - 1], o = i.layout, a = i.stride; o == yt || o == vt ? n = 2 : o == mt || o == _t ? n = 3 : pt(!1, 34); var s = e.length, l = ""; if (s > 0) { l += e[0]; for (var u = 1; u < n; ++u) l += "," + e[u]; for (var c = a; c < s; c += a) { l += " " + e[c]; for (u = 1; u < n; ++u) l += "," + e[c + u] } } X_(t, l) })) }); function Ww(t, e, r) { var n = e.getFlatCoordinates(), i = {node: t}; i.layout = e.getLayout(), i.stride = e.getStride(); var o = e.getProperties(); o.coordinates = n; var a = r[r.length - 1].node, s = Vw[a.namespaceURI], l = Dc(o, s); Vc(i, Yw, Nc, l, r, s) } var qw = Gc(cx, ["color", "fill", "outline"]), Xw = Gc(cx, {outerBoundaryIs: Ac(Dw), innerBoundaryIs: Ac(Dw)}), Zw = jc("innerBoundaryIs"), Kw = jc("outerBoundaryIs"); function Hw(t, e, r) { var n = e.getLinearRings(), i = n.shift(), o = {node: t}; Vc(o, Xw, Zw, n, r), Vc(o, Xw, Kw, [i], r) } var $w = Gc(cx, {color: Ac(gw), fill: Ac(B_), outline: Ac(B_)}); function Jw(t, e) { W_(t, Math.round(1e6 * e) / 1e6) } var Qw = Gc(cx, ["IconStyle", "LabelStyle", "LineStyle", "PolyStyle"]), tS = Gc(cx, { IconStyle: Ac((function (t, e, r) { var n = {node: t}, i = {}, o = e.getSrc(), a = e.getSize(), s = e.getImageSize(), l = {href: o}; if (a) { l.w = a[0], l.h = a[1]; var u = e.getAnchor(), c = e.getOrigin(); if (c && s && 0 !== c[0] && c[1] !== a[1] && (l.x = c[0], l.y = s[1] - (c[1] + a[1])), u && (u[0] !== a[0] / 2 || u[1] !== a[1] / 2)) { var h = {x: u[0], xunits: np, y: a[1] - u[1], yunits: np}; i.hotSpot = h } } i.Icon = l; var p = e.getScale(); 1 !== p && (i.scale = p); var f = e.getRotation(); 0 !== f && (i.heading = f); var d = e.getColor(); d && (i.color = d); var g = r[r.length - 1].node, y = Sw[g.namespaceURI], m = Dc(i, y); Vc(n, Ew, Nc, m, r, y) })), LabelStyle: Ac((function (t, e, r) { var n = {node: t}, i = {}, o = e.getFill(); o && (i.color = o.getColor()); var a = e.getScale(); a && 1 !== a && (i.scale = a); var s = r[r.length - 1].node, l = Tw[s.namespaceURI], u = Dc(i, l); Vc(n, Cw, Nc, u, r, l) })), LineStyle: Ac((function (t, e, r) { var n = {node: t}, i = {color: e.getColor(), width: Number(e.getWidth()) || 1}, o = r[r.length - 1].node, a = Ow[o.namespaceURI], s = Dc(i, a); Vc(n, Pw, Nc, s, r, a) })), PolyStyle: Ac((function (t, e, r) { var n = {node: t}, i = e.getFill(), o = e.getStroke(), a = {color: i ? i.getColor() : void 0, fill: !!i && void 0, outline: !!o && void 0}, s = r[r.length - 1].node, l = qw[s.namespaceURI], u = Dc(a, l); Vc(n, $w, Nc, u, r, l) })) }); var eS = Px, rS = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), nS = [null], iS = Gc(nS, { nd: function (t, e) { e[e.length - 1].ndrefs.push(t.getAttribute("ref")) }, tag: lS }), oS = Gc(nS, { node: function (t, e) { var r = e[0], n = e[e.length - 1], i = t.getAttribute("id"), o = [parseFloat(t.getAttribute("lon")), parseFloat(t.getAttribute("lat"))]; n.nodes[i] = o; var a = Uc({tags: {}}, sS, t, e); if (!I(a.tags)) { var s = new qn(o); Wy(s, !1, r); var l = new gt(s); l.setId(i), l.setProperties(a.tags, !0), n.features.push(l) } }, way: function (t, e) { var r = Uc({id: t.getAttribute("id"), ndrefs: [], tags: {}}, iS, t, e); e[e.length - 1].ways.push(r) } }), aS = function (t) { function e() { var e = t.call(this) || this; return e.dataProjection = Gr("EPSG:4326"), e } return rS(e, t), e.prototype.readFeaturesFromNode = function (t, e) { var r = this.getReadOptions(t, e); if ("osm" == t.localName) { for (var n = Uc({nodes: {}, ways: [], features: []}, oS, t, [r]), i = 0; i < n.ways.length; i++) { for (var o = n.ways[i], a = [], s = 0, l = o.ndrefs.length; s < l; s++) { v(a, n.nodes[o.ndrefs[s]]) } var u = void 0; Wy(u = o.ndrefs[0] == o.ndrefs[o.ndrefs.length - 1] ? new fi(a, yt, [a.length]) : new Py(a, yt), !1, r); var c = new gt(u); c.setId(o.id), c.setProperties(o.tags, !0), n.features.push(c) } if (n.features) return n.features } return [] }, e }(P_), sS = Gc(nS, {tag: lS}); function lS(t, e) { e[e.length - 1].tags[t.getAttribute("k")] = t.getAttribute("v") } var uS = aS, cS = function () { function t() { } return t.prototype.read = function (t) { if (t) { if ("string" == typeof t) { var e = Pc(t); return this.readFromDocument(e) } return Cc(t) ? this.readFromDocument(t) : this.readFromNode(t) } return null }, t.prototype.readFromDocument = function (t) { for (var e = t.firstChild; e; e = e.nextSibling) if (e.nodeType == Node.ELEMENT_NODE) return this.readFromNode(e); return null }, t.prototype.readFromNode = function (t) { }, t }(); function hS(t) { return t.getAttributeNS("http://www.w3.org/1999/xlink", "href") } var pS = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), fS = [null, "http://www.opengis.net/ows/1.1"], dS = Gc(fS, { ServiceIdentification: Fc((function (t, e) { return Uc({}, OS, t, e) })), ServiceProvider: Fc((function (t, e) { return Uc({}, PS, t, e) })), OperationsMetadata: Fc((function (t, e) { return Uc({}, SS, t, e) })) }), gS = function (t) { function e() { return t.call(this) || this } return pS(e, t), e.prototype.readFromNode = function (t) { var e = Uc({}, dS, t, []); return e || null }, e }(cS), yS = Gc(fS, { DeliveryPoint: Fc(U_), City: Fc(U_), AdministrativeArea: Fc(U_), PostalCode: Fc(U_), Country: Fc(U_), ElectronicMailAddress: Fc(U_) }), mS = Gc(fS, { Value: Mc((function (t, e) { return U_(t) })) }), vS = Gc(fS, { AllowedValues: Fc((function (t, e) { return Uc({}, mS, t, e) })) }), _S = Gc(fS, { Phone: Fc((function (t, e) { return Uc({}, ES, t, e) })), Address: Fc((function (t, e) { return Uc({}, yS, t, e) })) }), bS = Gc(fS, { HTTP: Fc((function (t, e) { return Uc({}, xS, t, e) })) }), xS = Gc(fS, { Get: Mc((function (t, e) { var r = hS(t); if (!r) return; return Uc({href: r}, TS, t, e) })), Post: void 0 }), wS = Gc(fS, { DCP: Fc((function (t, e) { return Uc({}, bS, t, e) })) }), SS = Gc(fS, { Operation: function (t, e) { var r = t.getAttribute("name"), n = Uc({}, wS, t, e); if (!n) return; e[e.length - 1][r] = n } }), ES = Gc(fS, {Voice: Fc(U_), Facsimile: Fc(U_)}), TS = Gc(fS, { Constraint: Mc((function (t, e) { var r = t.getAttribute("name"); if (!r) return; return Uc({name: r}, vS, t, e) })) }), CS = Gc(fS, { IndividualName: Fc(U_), PositionName: Fc(U_), ContactInfo: Fc((function (t, e) { return Uc({}, _S, t, e) })) }), OS = Gc(fS, { Abstract: Fc(U_), AccessConstraints: Fc(U_), Fees: Fc(U_), Title: Fc(U_), ServiceTypeVersion: Fc(U_), ServiceType: Fc(U_) }), PS = Gc(fS, { ProviderName: Fc(U_), ProviderSite: Fc(hS), ServiceContact: Fc((function (t, e) { return Uc({}, CS, t, e) })) }); var RS = gS, IS = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(); function LS(t, e, r) { var n, i = r || 1e5, o = new Array(e); for (n = 0; n < e; ++n) o[n] = 0; for (var a = 0, s = t.length; a < s;) for (n = 0; n < e; ++n, ++a) { var l = t[a], u = l - o[n]; o[n] = l, t[a] = u } return FS(t, i) } function MS(t, e, r) { var n, i = r || 1e5, o = new Array(e); for (n = 0; n < e; ++n) o[n] = 0; for (var a = AS(t, i), s = 0, l = a.length; s < l;) for (n = 0; n < e; ++n, ++s) o[n] += a[s], a[s] = o[n]; return a } function FS(t, e) { for (var r = e || 1e5, n = 0, i = t.length; n < i; ++n) t[n] = Math.round(t[n] * r); return kS(t) } function AS(t, e) { for (var r = e || 1e5, n = jS(t), i = 0, o = n.length; i < o; ++i) n[i] /= r; return n } function kS(t) { for (var e = 0, r = t.length; e < r; ++e) { var n = t[e]; t[e] = n < 0 ? ~(n << 1) : n << 1 } return NS(t) } function jS(t) { for (var e = DS(t), r = 0, n = e.length; r < n; ++r) { var i = e[r]; e[r] = 1 & i ? ~(i >> 1) : i >> 1 } return e } function NS(t) { for (var e = "", r = 0, n = t.length; r < n; ++r) e += GS(t[r]); return e } function DS(t) { for (var e = [], r = 0, n = 0, i = 0, o = t.length; i < o; ++i) { var a = t.charCodeAt(i) - 63; r |= (31 & a) << n, a < 32 ? (e.push(r), r = 0, n = 0) : n += 5 } return e } function GS(t) { for (var e, r = ""; t >= 32;) e = 63 + (32 | 31 & t), r += String.fromCharCode(e), t >>= 5; return e = t + 63, r += String.fromCharCode(e) } var zS = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.dataProjection = Gr("EPSG:4326"), r.factor_ = n.factor ? n.factor : 1e5, r.geometryLayout_ = n.geometryLayout ? n.geometryLayout : yt, r } return IS(e, t), e.prototype.readFeatureFromText = function (t, e) { var r = this.readGeometryFromText(t, e); return new gt(r) }, e.prototype.readFeaturesFromText = function (t, e) { return [this.readFeatureFromText(t, e)] }, e.prototype.readGeometryFromText = function (t, e) { var r = yn(this.geometryLayout_), n = MS(t, r, this.factor_); v_(n, 0, n.length, r, n); var i = Nn(n, 0, n.length, r); return Wy(new Py(i, this.geometryLayout_), !1, this.adaptOptions(e)) }, e.prototype.writeFeatureText = function (t, e) { var r = t.getGeometry(); return r ? this.writeGeometryText(r, e) : (pt(!1, 40), "") }, e.prototype.writeFeaturesText = function (t, e) { return this.writeFeatureText(t[0], e) }, e.prototype.writeGeometryText = function (t, e) { var r = (t = Wy(t, !0, this.adaptOptions(e))).getFlatCoordinates(), n = t.getStride(); return v_(r, 0, r.length, n, r), LS(r, n, this.factor_) }, e }(Jb), US = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), BS = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.layerName_ = n.layerName, r.layers_ = n.layers ? n.layers : null, r.dataProjection = Gr(n.dataProjection ? n.dataProjection : "EPSG:4326"), r } return US(e, t), e.prototype.readFeaturesFromObject = function (t, e) { if ("Topology" == t.type) { var r = t, n = void 0, i = null, o = null; r.transform && (i = (n = r.transform).scale, o = n.translate); var a = r.arcs; n && function (t, e, r) { for (var n = 0, i = t.length; n < i; ++n) XS(t[n], e, r) }(a, i, o); var s = [], l = r.objects, u = this.layerName_, c = void 0; for (var h in l) this.layers_ && -1 == this.layers_.indexOf(h) || ("GeometryCollection" === l[h].type ? (c = l[h], s.push.apply(s, WS(c, a, i, o, u, h, e))) : (c = l[h], s.push(qS(c, a, i, o, u, h, e)))); return s } return [] }, e.prototype.readProjectionFromObject = function (t) { return this.dataProjection }, e }(qm), VS = { Point: function (t, e, r) { var n = t.coordinates; e && r && ZS(n, e, r); return new qn(n) }, LineString: function (t, e) { var r = YS(t.arcs, e); return new Py(r) }, Polygon: function (t, e) { for (var r = [], n = 0, i = t.arcs.length; n < i; ++n) r[n] = YS(t.arcs[n], e); return new fi(r) }, MultiPoint: function (t, e, r) { var n = t.coordinates; if (e && r) for (var i = 0, o = n.length; i < o; ++i) ZS(n[i], e, r); return new Hy(n) }, MultiLineString: function (t, e) { for (var r = [], n = 0, i = t.arcs.length; n < i; ++n) r[n] = YS(t.arcs[n], e); return new Zy(r) }, MultiPolygon: function (t, e) { for (var r = [], n = 0, i = t.arcs.length; n < i; ++n) { for (var o = t.arcs[n], a = [], s = 0, l = o.length; s < l; ++s) a[s] = YS(o[s], e); r[n] = a } return new Jy(r) } }; function YS(t, e) { for (var r, n, i = [], o = 0, a = t.length; o < a; ++o) r = t[o], o > 0 && i.pop(), n = r >= 0 ? e[r] : e[~r].slice().reverse(), i.push.apply(i, n); for (var s = 0, l = i.length; s < l; ++s) i[s] = i[s].slice(); return i } function WS(t, e, r, n, i, o, a) { for (var s = t.geometries, l = [], u = 0, c = s.length; u < c; ++u) l[u] = qS(s[u], e, r, n, i, o, a); return l } function qS(t, e, r, n, i, o, a) { var s, l = t.type, u = VS[l]; s = "Point" === l || "MultiPoint" === l ? u(t, r, n) : u(t, e); var c = new gt; c.setGeometry(Wy(s, !1, a)), void 0 !== t.id && c.setId(t.id); var h = t.properties; return i && (h || (h = {}), h[i] = o), h && c.setProperties(h, !0), c } function XS(t, e, r) { for (var n = 0, i = 0, o = 0, a = t.length; o < a; ++o) { var s = t[o]; n += s[0], i += s[1], s[0] = n, s[1] = i, ZS(s, e, r) } } function ZS(t, e, r) { t[0] = t[0] * e[0] + r[0], t[1] = t[1] * e[1] + r[1] } var KS = BS, HS = function () { function t(t) { this.tagName_ = t } return t.prototype.getTagName = function () { return this.tagName_ }, t }(), $S = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), JS = function (t) { function e(e, r) { var n = t.call(this, e) || this; return n.conditions = r, pt(n.conditions.length >= 2, 57), n } return $S(e, t), e }(HS), QS = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), tE = function (t) { function e(e) { return t.call(this, "And", Array.prototype.slice.call(arguments)) || this } return QS(e, t), e }(JS), eE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), rE = function (t) { function e(e, r, n) { var i = t.call(this, "BBOX") || this; if (i.geometryName = e, i.extent = r, 4 !== r.length) throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])"); return i.srsName = n, i } return eE(e, t), e }(HS), nE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), iE = function (t) { function e(e, r, n, i) { var o = t.call(this, e) || this; return o.geometryName = r || "the_geom", o.geometry = n, o.srsName = i, o } return nE(e, t), e }(HS), oE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), aE = function (t) { function e(e, r, n) { return t.call(this, "Contains", e, r, n) || this } return oE(e, t), e }(iE), sE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), lE = function (t) { function e(e, r, n, i, o) { var a = t.call(this, "DWithin", e, r, o) || this; return a.distance = n, a.unit = i, a } return sE(e, t), e }(iE), uE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), cE = function (t) { function e(e, r, n) { return t.call(this, "Disjoint", e, r, n) || this } return uE(e, t), e }(iE), hE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), pE = function (t) { function e(e, r) { var n = t.call(this, e) || this; return n.propertyName = r, n } return hE(e, t), e }(HS), fE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), dE = function (t) { function e(e, r, n) { var i = t.call(this, "During", e) || this; return i.begin = r, i.end = n, i } return fE(e, t), e }(pE), gE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), yE = function (t) { function e(e, r, n, i) { var o = t.call(this, e, r) || this; return o.expression = n, o.matchCase = i, o } return gE(e, t), e }(pE), mE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), vE = function (t) { function e(e, r, n) { return t.call(this, "PropertyIsEqualTo", e, r, n) || this } return mE(e, t), e }(yE), _E = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), bE = function (t) { function e(e, r) { return t.call(this, "PropertyIsGreaterThan", e, r) || this } return _E(e, t), e }(yE), xE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), wE = function (t) { function e(e, r) { return t.call(this, "PropertyIsGreaterThanOrEqualTo", e, r) || this } return xE(e, t), e }(yE), SE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), EE = function (t) { function e(e, r, n) { return t.call(this, "Intersects", e, r, n) || this } return SE(e, t), e }(iE), TE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), CE = function (t) { function e(e, r, n) { var i = t.call(this, "PropertyIsBetween", e) || this; return i.lowerBoundary = r, i.upperBoundary = n, i } return TE(e, t), e }(pE), OE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), PE = function (t) { function e(e, r, n, i, o, a) { var s = t.call(this, "PropertyIsLike", e) || this; return s.pattern = r, s.wildCard = void 0 !== n ? n : "*", s.singleChar = void 0 !== i ? i : ".", s.escapeChar = void 0 !== o ? o : "!", s.matchCase = a, s } return OE(e, t), e }(pE), RE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), IE = function (t) { function e(e) { return t.call(this, "PropertyIsNull", e) || this } return RE(e, t), e }(pE), LE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ME = function (t) { function e(e, r) { return t.call(this, "PropertyIsLessThan", e, r) || this } return LE(e, t), e }(yE), FE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), AE = function (t) { function e(e, r) { return t.call(this, "PropertyIsLessThanOrEqualTo", e, r) || this } return FE(e, t), e }(yE), kE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), jE = function (t) { function e(e) { var r = t.call(this, "Not") || this; return r.condition = e, r } return kE(e, t), e }(HS), NE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), DE = function (t) { function e(e, r, n) { return t.call(this, "PropertyIsNotEqualTo", e, r, n) || this } return NE(e, t), e }(yE), GE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), zE = function (t) { function e(e) { return t.call(this, "Or", Array.prototype.slice.call(arguments)) || this } return GE(e, t), e }(JS), UE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), BE = function (t) { function e(e) { var r = t.call(this, "ResourceId") || this; return r.rid = e, r } return UE(e, t), e }(HS), VE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), YE = function (t) { function e(e, r, n) { return t.call(this, "Within", e, r, n) || this } return VE(e, t), e }(iE); function WE(t) { var e = [null].concat(Array.prototype.slice.call(arguments)); return new (Function.prototype.bind.apply(tE, e)) } function qE(t, e, r) { return new rE(t, e, r) } var XE = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), ZE = { "http://www.opengis.net/gml": {boundedBy: Fc(F_.prototype.readGeometryElement, "bounds")}, "http://www.opengis.net/wfs/2.0": {member: Ic(F_.prototype.readFeaturesInternal)} }, KE = { "http://www.opengis.net/wfs": {totalInserted: Fc(G_), totalUpdated: Fc(G_), totalDeleted: Fc(G_)}, "http://www.opengis.net/wfs/2.0": {totalInserted: Fc(G_), totalUpdated: Fc(G_), totalDeleted: Fc(G_)} }, HE = { "http://www.opengis.net/wfs": { TransactionSummary: Fc(sT, "transactionSummary"), InsertResults: Fc(hT, "insertIds") }, "http://www.opengis.net/wfs/2.0": { TransactionSummary: Fc(sT, "transactionSummary"), InsertResults: Fc(hT, "insertIds") } }, $E = { "http://www.opengis.net/wfs": {PropertyName: Ac(X_)}, "http://www.opengis.net/wfs/2.0": {PropertyName: Ac(X_)} }, JE = { "http://www.opengis.net/wfs": { Insert: Ac(pT), Update: Ac(yT), Delete: Ac(gT), Property: Ac(mT), Native: Ac(vT) }, "http://www.opengis.net/wfs/2.0": { Insert: Ac(pT), Update: Ac(yT), Delete: Ac(gT), Property: Ac(mT), Native: Ac(vT) } }, QE = "http://www.w3.org/2000/xmlns/", tT = { "2.0.0": "http://www.opengis.net/ogc/1.1", "1.1.0": "http://www.opengis.net/ogc", "1.0.0": "http://www.opengis.net/ogc" }, eT = { "2.0.0": "http://www.opengis.net/wfs/2.0", "1.1.0": "http://www.opengis.net/wfs", "1.0.0": "http://www.opengis.net/wfs" }, rT = { "2.0.0": "http://www.opengis.net/fes/2.0", "1.1.0": "http://www.opengis.net/fes", "1.0.0": "http://www.opengis.net/fes" }, nT = { "2.0.0": "http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd", "1.1.0": "http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd", "1.0.0": "http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd" }, iT = {"2.0.0": ab, "1.1.0": eb, "1.0.0": $_}, oT = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.version_ = n.version ? n.version : "1.1.0", r.featureType_ = n.featureType, r.featureNS_ = n.featureNS, r.gmlFormat_ = n.gmlFormat ? n.gmlFormat : new iT[r.version_], r.schemaLocation_ = n.schemaLocation ? n.schemaLocation : nT[r.version_], r } return XE(e, t), e.prototype.getFeatureType = function () { return this.featureType_ }, e.prototype.setFeatureType = function (t) { this.featureType_ = t }, e.prototype.readFeaturesFromNode = function (t, e) { var r = {node: t}; O(r, {featureType: this.featureType_, featureNS: this.featureNS_}), O(r, this.getReadOptions(t, e || {})); var n = [r], i = Uc([], "2.0.0" === this.version_ ? ZE : this.gmlFormat_.FEATURE_COLLECTION_PARSERS, t, n, this.gmlFormat_); return i || (i = []), i }, e.prototype.readTransactionResponse = function (t) { if (t) { if ("string" == typeof t) { var e = Pc(t); return this.readTransactionResponseFromDocument(e) } return Cc(t) ? this.readTransactionResponseFromDocument(t) : this.readTransactionResponseFromNode(t) } }, e.prototype.readFeatureCollectionMetadata = function (t) { if (t) { if ("string" == typeof t) { var e = Pc(t); return this.readFeatureCollectionMetadataFromDocument(e) } return Cc(t) ? this.readFeatureCollectionMetadataFromDocument(t) : this.readFeatureCollectionMetadataFromNode(t) } }, e.prototype.readFeatureCollectionMetadataFromDocument = function (t) { for (var e = t.firstChild; e; e = e.nextSibling) if (e.nodeType == Node.ELEMENT_NODE) return this.readFeatureCollectionMetadataFromNode(e) }, e.prototype.readFeatureCollectionMetadataFromNode = function (t) { var e = {}, r = z_(t.getAttribute("numberOfFeatures")); return e.numberOfFeatures = r, Uc(e, ZE, t, [], this.gmlFormat_) }, e.prototype.readTransactionResponseFromDocument = function (t) { for (var e = t.firstChild; e; e = e.nextSibling) if (e.nodeType == Node.ELEMENT_NODE) return this.readTransactionResponseFromNode(e) }, e.prototype.readTransactionResponseFromNode = function (t) { return Uc({}, HE, t, []) }, e.prototype.writeGetFeature = function (t) { var e = this, r = Sc(eT[this.version_], "GetFeature"); r.setAttribute("service", "WFS"), r.setAttribute("version", this.version_), t.handle && r.setAttribute("handle", t.handle), t.outputFormat && r.setAttribute("outputFormat", t.outputFormat), void 0 !== t.maxFeatures && r.setAttribute("maxFeatures", String(t.maxFeatures)), t.resultType && r.setAttribute("resultType", t.resultType), void 0 !== t.startIndex && r.setAttribute("startIndex", String(t.startIndex)), void 0 !== t.count && r.setAttribute("count", String(t.count)), void 0 !== t.viewParams && r.setAttribute("viewParams", t.viewParams), r.setAttributeNS(wc, "xsi:schemaLocation", this.schemaLocation_); var n = {node: r}; if (O(n, { version: this.version_, srsName: t.srsName, featureNS: t.featureNS ? t.featureNS : this.featureNS_, featurePrefix: t.featurePrefix, propertyNames: t.propertyNames ? t.propertyNames : [] }), pt(Array.isArray(t.featureTypes), 11), "string" == typeof t.featureTypes[0]) { var i = t.filter; t.bbox && (pt(t.geometryName, 12), i = this.combineBboxAndFilter(t.geometryName, t.bbox, t.srsName, i)), O(n, { geometryName: t.geometryName, filter: i }), jT(r, t.featureTypes, [n]) } else t.featureTypes.forEach((function (i) { var o = e.combineBboxAndFilter(i.geometryName, i.bbox, t.srsName, t.filter); O(n, {geometryName: i.geometryName, filter: o}), jT(r, [i.name], [n]) })); return r }, e.prototype.combineBboxAndFilter = function (t, e, r, n) { var i = qE(t, e, r); return n ? WE(n, i) : i }, e.prototype.writeTransaction = function (t, e, r, n) { var i, o = [], a = n.version ? n.version : this.version_, s = Sc(eT[a], "Transaction"); s.setAttribute("service", "WFS"), s.setAttribute("version", a), n && (i = n.gmlOptions ? n.gmlOptions : {}, n.handle && s.setAttribute("handle", n.handle)), s.setAttributeNS(wc, "xsi:schemaLocation", nT[a]); var l = function (t, e, r, n) { var i, o = n.featurePrefix ? n.featurePrefix : "feature"; "1.0.0" === r ? i = 2 : "1.1.0" === r ? i = 3 : "2.0.0" === r && (i = 3.2); return O({node: t}, { version: r, featureNS: n.featureNS, featureType: n.featureType, featurePrefix: o, gmlVersion: i, hasZ: n.hasZ, srsName: n.srsName }, e) }(s, i, a, n); return t && aT("Insert", t, o, l), e && aT("Update", e, o, l), r && aT("Delete", r, o, l), n.nativeElements && aT("Native", n.nativeElements, o, l), s }, e.prototype.readProjectionFromDocument = function (t) { for (var e = t.firstChild; e; e = e.nextSibling) if (e.nodeType == Node.ELEMENT_NODE) return this.readProjectionFromNode(e); return null }, e.prototype.readProjectionFromNode = function (t) { if (t.firstElementChild && t.firstElementChild.firstElementChild) for (var e = (t = t.firstElementChild.firstElementChild).firstElementChild; e; e = e.nextElementSibling) if (0 !== e.childNodes.length && (1 !== e.childNodes.length || 3 !== e.firstChild.nodeType)) { var r = [{}]; return this.gmlFormat_.readGeometryElement(e, r), Gr(r.pop().srsName) } return null }, e }(P_); function aT(t, e, r, n) { Vc(n, JE, jc(t), e, r) } function sT(t, e) { return Uc({}, KE, t, e) } var lT = { "http://www.opengis.net/ogc": { FeatureId: Ic((function (t, e) { return t.getAttribute("fid") })) }, "http://www.opengis.net/ogc/1.1": { FeatureId: Ic((function (t, e) { return t.getAttribute("fid") })) } }; function uT(t, e) { zc(lT, t, e) } var cT = {"http://www.opengis.net/wfs": {Feature: uT}, "http://www.opengis.net/wfs/2.0": {Feature: uT}}; function hT(t, e) { return Uc([], cT, t, e) } function pT(t, e, r) { var n = r[r.length - 1], i = n.featureType, o = n.featureNS, a = n.gmlVersion, s = Sc(o, i); t.appendChild(s), 2 === a ? $_.prototype.writeFeatureElement(s, e, r) : 3 === a ? eb.prototype.writeFeatureElement(s, e, r) : ab.prototype.writeFeatureElement(s, e, r) } function fT(t, e, r) { var n = r[r.length - 1].version, i = tT[n], o = Sc(i, "Filter"), a = Sc(i, "FeatureId"); o.appendChild(a), a.setAttribute("fid", e), t.appendChild(o) } function dT(t, e) { var r = (t = t || "feature") + ":"; return 0 === e.indexOf(r) ? e : r + e } function gT(t, e, r) { var n = r[r.length - 1]; pt(void 0 !== e.getId(), 26); var i = n.featureType, o = n.featurePrefix, a = n.featureNS, s = dT(o, i); t.setAttribute("typeName", s), t.setAttributeNS(QE, "xmlns:" + o, a); var l = e.getId(); void 0 !== l && fT(t, l, r) } function yT(t, e, r) { var n = r[r.length - 1]; pt(void 0 !== e.getId(), 27); var i = n.version, o = n.featureType, a = n.featurePrefix, s = n.featureNS, l = dT(a, o), u = e.getGeometryName(); t.setAttribute("typeName", l), t.setAttributeNS(QE, "xmlns:" + a, s); var c = e.getId(); if (void 0 !== c) { for (var h = e.getKeys(), p = [], f = 0, d = h.length; f < d; f++) { var g = e.get(h[f]); if (void 0 !== g) { var y = h[f]; g && "function" == typeof g.getSimplifiedGeometry && (y = u), p.push({name: y, value: g}) } } Vc({ version: i, gmlVersion: n.gmlVersion, node: t, hasZ: n.hasZ, srsName: n.srsName }, JE, jc("Property"), p, r), fT(t, c, r) } } function mT(t, e, r) { var n = r[r.length - 1], i = n.version, o = eT[i], a = Sc(o, "Name"), s = n.gmlVersion; if (t.appendChild(a), X_(a, e.name), void 0 !== e.value && null !== e.value) { var l = Sc(o, "Value"); t.appendChild(l), e.value && "function" == typeof e.value.getSimplifiedGeometry ? 2 === s ? $_.prototype.writeGeometryElement(l, e.value, r) : 3 === s ? eb.prototype.writeGeometryElement(l, e.value, r) : ab.prototype.writeGeometryElement(l, e.value, r) : X_(l, e.value) } } function vT(t, e, r) { e.vendorId && t.setAttribute("vendorId", e.vendorId), void 0 !== e.safeToIgnore && t.setAttribute("safeToIgnore", String(e.safeToIgnore)), void 0 !== e.value && X_(t, e.value) } var _T = { "http://www.opengis.net/wfs": {Query: Ac(bT)}, "http://www.opengis.net/wfs/2.0": {Query: Ac(bT)}, "http://www.opengis.net/ogc": { During: Ac(TT), And: Ac(CT), Or: Ac(CT), Not: Ac(OT), BBOX: Ac(wT), Contains: Ac(ST), Intersects: Ac(ST), Within: Ac(ST), DWithin: Ac(ET), PropertyIsEqualTo: Ac(PT), PropertyIsNotEqualTo: Ac(PT), PropertyIsLessThan: Ac(PT), PropertyIsLessThanOrEqualTo: Ac(PT), PropertyIsGreaterThan: Ac(PT), PropertyIsGreaterThanOrEqualTo: Ac(PT), PropertyIsNull: Ac(RT), PropertyIsBetween: Ac(IT), PropertyIsLike: Ac(LT) }, "http://www.opengis.net/fes/2.0": { During: Ac(TT), And: Ac(CT), Or: Ac(CT), Not: Ac(OT), BBOX: Ac(wT), Contains: Ac(ST), Disjoint: Ac(ST), Intersects: Ac(ST), ResourceId: Ac((function (t, e, r) { t.setAttribute("rid", e.rid) })), Within: Ac(ST), DWithin: Ac(ET), PropertyIsEqualTo: Ac(PT), PropertyIsNotEqualTo: Ac(PT), PropertyIsLessThan: Ac(PT), PropertyIsLessThanOrEqualTo: Ac(PT), PropertyIsGreaterThan: Ac(PT), PropertyIsGreaterThanOrEqualTo: Ac(PT), PropertyIsNull: Ac(RT), PropertyIsBetween: Ac(IT), PropertyIsLike: Ac(LT) } }; function bT(t, e, r) { var n, i, o = r[r.length - 1], a = o.version, s = o.featurePrefix, l = o.featureNS, u = o.propertyNames, c = o.srsName; n = s ? dT(s, e) : e, i = "2.0.0" === a ? "typeNames" : "typeName", t.setAttribute(i, n), c && t.setAttribute("srsName", c), l && t.setAttributeNS(QE, "xmlns:" + s, l); var h = O({}, o); h.node = t, Vc(h, $E, jc("PropertyName"), u, r); var p = o.filter; if (p) { var f = Sc(NT(a), "Filter"); t.appendChild(f), xT(f, p, r) } } function xT(t, e, r) { var n = r[r.length - 1], i = {node: t}; O(i, {context: n}), Vc(i, _T, jc(e.getTagName()), [e], r) } function wT(t, e, r) { var n = r[r.length - 1], i = n.context.version; n.srsName = e.srsName; var o = iT[i]; AT(i, t, e.geometryName), o.prototype.writeGeometryElement(t, e.extent, r) } function ST(t, e, r) { var n = r[r.length - 1], i = n.context.version; n.srsName = e.srsName; var o = iT[i]; AT(i, t, e.geometryName), o.prototype.writeGeometryElement(t, e.geometry, r) } function ET(t, e, r) { var n = r[r.length - 1].context.version; ST(t, e, r); var i = Sc(NT(n), "Distance"); X_(i, e.distance.toString()), "2.0.0" === n ? i.setAttribute("uom", e.unit) : i.setAttribute("units", e.unit), t.appendChild(i) } function TT(t, e, r) { var n = r[r.length - 1].context.version; MT(rT[n], "ValueReference", t, e.propertyName); var i = Sc(I_, "TimePeriod"); t.appendChild(i); var o = Sc(I_, "begin"); i.appendChild(o), kT(o, e.begin); var a = Sc(I_, "end"); i.appendChild(a), kT(a, e.end) } function CT(t, e, r) { var n = r[r.length - 1].context, i = {node: t}; O(i, {context: n}); for (var o = e.conditions, a = 0, s = o.length; a < s; ++a) { var l = o[a]; Vc(i, _T, jc(l.getTagName()), [l], r) } } function OT(t, e, r) { var n = r[r.length - 1].context, i = {node: t}; O(i, {context: n}); var o = e.condition; Vc(i, _T, jc(o.getTagName()), [o], r) } function PT(t, e, r) { var n = r[r.length - 1].context.version; void 0 !== e.matchCase && t.setAttribute("matchCase", e.matchCase.toString()), AT(n, t, e.propertyName), FT(n, t, "" + e.expression) } function RT(t, e, r) { AT(r[r.length - 1].context.version, t, e.propertyName) } function IT(t, e, r) { var n = r[r.length - 1].context.version, i = NT(n); AT(n, t, e.propertyName); var o = Sc(i, "LowerBoundary"); t.appendChild(o), FT(n, o, "" + e.lowerBoundary); var a = Sc(i, "UpperBoundary"); t.appendChild(a), FT(n, a, "" + e.upperBoundary) } function LT(t, e, r) { var n = r[r.length - 1].context.version; t.setAttribute("wildCard", e.wildCard), t.setAttribute("singleChar", e.singleChar), t.setAttribute("escapeChar", e.escapeChar), void 0 !== e.matchCase && t.setAttribute("matchCase", e.matchCase.toString()), AT(n, t, e.propertyName), FT(n, t, "" + e.pattern) } function MT(t, e, r, n) { var i = Sc(t, e); X_(i, n), r.appendChild(i) } function FT(t, e, r) { MT(NT(t), "Literal", e, r) } function AT(t, e, r) { "2.0.0" === t ? MT(rT[t], "ValueReference", e, r) : MT(tT[t], "PropertyName", e, r) } function kT(t, e) { var r = Sc(I_, "TimeInstant"); t.appendChild(r); var n = Sc(I_, "timePosition"); r.appendChild(n), X_(n, e) } function jT(t, e, r) { var n = r[r.length - 1], i = O({}, n); i.node = t, Vc(i, _T, jc("Query"), e, r) } function NT(t) { return "2.0.0" === t ? rT[t] : tT[t] } var DT = oT, GT = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), zT = {POINT: qn, LINESTRING: Py, POLYGON: fi, MULTIPOINT: Hy, MULTILINESTRING: Zy, MULTIPOLYGON: Jy}, UT = 1, BT = 2, VT = 3, YT = 4, WT = 5, qT = 6, XT = {}; for (var ZT in bt) XT[ZT] = bt[ZT].toUpperCase(); var KT = function () { function t(t) { this.wkt = t, this.index_ = -1 } return t.prototype.isAlpha_ = function (t) { return t >= "a" && t <= "z" || t >= "A" && t <= "Z" }, t.prototype.isNumeric_ = function (t, e) { return t >= "0" && t <= "9" || "." == t && !(void 0 !== e && e) }, t.prototype.isWhiteSpace_ = function (t) { return " " == t || "\t" == t || "\r" == t || "\n" == t }, t.prototype.nextChar_ = function () { return this.wkt.charAt(++this.index_) }, t.prototype.nextToken = function () { var t, e = this.nextChar_(), r = this.index_, n = e; if ("(" == e) t = BT; else if ("," == e) t = WT; else if (")" == e) t = VT; else if (this.isNumeric_(e) || "-" == e) t = YT, n = this.readNumber_(); else if (this.isAlpha_(e)) t = UT, n = this.readText_(); else { if (this.isWhiteSpace_(e)) return this.nextToken(); if ("" !== e) throw new Error("Unexpected character: " + e); t = qT } return {position: r, value: n, type: t} }, t.prototype.readNumber_ = function () { var t, e = this.index_, r = !1, n = !1; do { "." == t ? r = !0 : "e" != t && "E" != t || (n = !0), t = this.nextChar_() } while (this.isNumeric_(t, r) || !n && ("e" == t || "E" == t) || n && ("-" == t || "+" == t)); return parseFloat(this.wkt.substring(e, this.index_--)) }, t.prototype.readText_ = function () { var t, e = this.index_; do { t = this.nextChar_() } while (this.isAlpha_(t)); return this.wkt.substring(e, this.index_--).toUpperCase() }, t }(), HT = function () { function t(t) { this.lexer_ = t, this.token_, this.layout_ = yt } return t.prototype.consume_ = function () { this.token_ = this.lexer_.nextToken() }, t.prototype.isTokenType = function (t) { return this.token_.type == t }, t.prototype.match = function (t) { var e = this.isTokenType(t); return e && this.consume_(), e }, t.prototype.parse = function () { return this.consume_(), this.parseGeometry_() }, t.prototype.parseGeometryLayout_ = function () { var t = yt, e = this.token_; if (this.isTokenType(UT)) { var r = e.value; "Z" === r ? t = mt : "M" === r ? t = vt : "ZM" === r && (t = _t), t !== yt && this.consume_() } return t }, t.prototype.parseGeometryCollectionText_ = function () { if (this.match(BT)) { var t = []; do { t.push(this.parseGeometry_()) } while (this.match(WT)); if (this.match(VT)) return t } else if (this.isEmptyGeometry_()) return []; throw new Error(this.formatErrorMessage_()) }, t.prototype.parsePointText_ = function () { if (this.match(BT)) { var t = this.parsePoint_(); if (this.match(VT)) return t } else if (this.isEmptyGeometry_()) return null; throw new Error(this.formatErrorMessage_()) }, t.prototype.parseLineStringText_ = function () { if (this.match(BT)) { var t = this.parsePointList_(); if (this.match(VT)) return t } else if (this.isEmptyGeometry_()) return []; throw new Error(this.formatErrorMessage_()) }, t.prototype.parsePolygonText_ = function () { if (this.match(BT)) { var t = this.parseLineStringTextList_(); if (this.match(VT)) return t } else if (this.isEmptyGeometry_()) return []; throw new Error(this.formatErrorMessage_()) }, t.prototype.parseMultiPointText_ = function () { if (this.match(BT)) { var t = void 0; if (t = this.token_.type == BT ? this.parsePointTextList_() : this.parsePointList_(), this.match(VT)) return t } else if (this.isEmptyGeometry_()) return []; throw new Error(this.formatErrorMessage_()) }, t.prototype.parseMultiLineStringText_ = function () { if (this.match(BT)) { var t = this.parseLineStringTextList_(); if (this.match(VT)) return t } else if (this.isEmptyGeometry_()) return []; throw new Error(this.formatErrorMessage_()) }, t.prototype.parseMultiPolygonText_ = function () { if (this.match(BT)) { var t = this.parsePolygonTextList_(); if (this.match(VT)) return t } else if (this.isEmptyGeometry_()) return []; throw new Error(this.formatErrorMessage_()) }, t.prototype.parsePoint_ = function () { for (var t = [], e = this.layout_.length, r = 0; r < e; ++r) { var n = this.token_; if (!this.match(YT)) break; t.push(n.value) } if (t.length == e) return t; throw new Error(this.formatErrorMessage_()) }, t.prototype.parsePointList_ = function () { for (var t = [this.parsePoint_()]; this.match(WT);) t.push(this.parsePoint_()); return t }, t.prototype.parsePointTextList_ = function () { for (var t = [this.parsePointText_()]; this.match(WT);) t.push(this.parsePointText_()); return t }, t.prototype.parseLineStringTextList_ = function () { for (var t = [this.parseLineStringText_()]; this.match(WT);) t.push(this.parseLineStringText_()); return t }, t.prototype.parsePolygonTextList_ = function () { for (var t = [this.parsePolygonText_()]; this.match(WT);) t.push(this.parsePolygonText_()); return t }, t.prototype.isEmptyGeometry_ = function () { var t = this.isTokenType(UT) && "EMPTY" == this.token_.value; return t && this.consume_(), t }, t.prototype.formatErrorMessage_ = function () { return "Unexpected `" + this.token_.value + "` at position " + this.token_.position + " in `" + this.lexer_.wkt + "`" }, t.prototype.parseGeometry_ = function () { var t = this.token_; if (this.match(UT)) { var e = t.value; if (this.layout_ = this.parseGeometryLayout_(), "GEOMETRYCOLLECTION" == e) { var r = this.parseGeometryCollectionText_(); return new Vm(r) } var n = zT[e]; if (!n) throw new Error("Invalid geometry type: " + e); var i = void 0; switch (e) { case"POINT": i = this.parsePointText_(); break; case"LINESTRING": i = this.parseLineStringText_(); break; case"POLYGON": i = this.parsePolygonText_(); break; case"MULTIPOINT": i = this.parseMultiPointText_(); break; case"MULTILINESTRING": i = this.parseMultiLineStringText_(); break; case"MULTIPOLYGON": i = this.parseMultiPolygonText_(); break; default: throw new Error("Invalid geometry type: " + e) } return i || (i = n === zT.POINT ? [NaN, NaN] : []), new n(i, this.layout_) } throw new Error(this.formatErrorMessage_()) }, t }(), $T = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.splitCollection_ = void 0 !== n.splitCollection && n.splitCollection, r } return GT(e, t), e.prototype.parse_ = function (t) { var e = new KT(t); return new HT(e).parse() }, e.prototype.readFeatureFromText = function (t, e) { var r = this.readGeometryFromText(t, e); if (r) { var n = new gt; return n.setGeometry(r), n } return null }, e.prototype.readFeaturesFromText = function (t, e) { for (var r = [], n = this.readGeometryFromText(t, e), i = [], o = 0, a = (r = this.splitCollection_ && n.getType() == bt.GEOMETRY_COLLECTION ? n.getGeometriesArray() : [n]).length; o < a; ++o) { var s = new gt; s.setGeometry(r[o]), i.push(s) } return i }, e.prototype.readGeometryFromText = function (t, e) { var r = this.parse_(t); return r ? Wy(r, !1, e) : null }, e.prototype.writeFeatureText = function (t, e) { var r = t.getGeometry(); return r ? this.writeGeometryText(r, e) : "" }, e.prototype.writeFeaturesText = function (t, e) { if (1 == t.length) return this.writeFeatureText(t[0], e); for (var r = [], n = 0, i = t.length; n < i; ++n) r.push(t[n].getGeometry()); var o = new Vm(r); return this.writeGeometryText(o, e) }, e.prototype.writeGeometryText = function (t, e) { return rC(Wy(t, !0, e)) }, e }(Jb); function JT(t) { var e = t.getCoordinates(); return 0 === e.length ? "" : e.join(" ") } function QT(t) { for (var e = t.getCoordinates(), r = [], n = 0, i = e.length; n < i; ++n) r.push(e[n].join(" ")); return r.join(",") } function tC(t) { for (var e = [], r = t.getLinearRings(), n = 0, i = r.length; n < i; ++n) e.push("(" + QT(r[n]) + ")"); return e.join(",") } var eC = { Point: JT, LineString: QT, Polygon: tC, MultiPoint: function (t) { for (var e = [], r = t.getPoints(), n = 0, i = r.length; n < i; ++n) e.push("(" + JT(r[n]) + ")"); return e.join(",") }, MultiLineString: function (t) { for (var e = [], r = t.getLineStrings(), n = 0, i = r.length; n < i; ++n) e.push("(" + QT(r[n]) + ")"); return e.join(",") }, MultiPolygon: function (t) { for (var e = [], r = t.getPolygons(), n = 0, i = r.length; n < i; ++n) e.push("(" + tC(r[n]) + ")"); return e.join(",") }, GeometryCollection: function (t) { for (var e = [], r = t.getGeometries(), n = 0, i = r.length; n < i; ++n) e.push(rC(r[n])); return e.join(",") } }; function rC(t) { var e = t.getType(), r = (0, eC[e])(t); if (e = e.toUpperCase(), "function" == typeof t.getFlatCoordinates) { var n = function (t) { var e = t.getLayout(), r = ""; return e !== mt && e !== _t || (r += "Z"), e !== vt && e !== _t || (r += "M"), r }(t); n.length > 0 && (e += " " + n) } return 0 === r.length ? e + " EMPTY" : e + "(" + r + ")" } var nC = $T, iC = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), oC = [null, "http://www.opengis.net/wms"], aC = Gc(oC, { Service: Fc((function (t, e) { return Uc({}, uC, t, e) })), Capability: Fc((function (t, e) { return Uc({}, sC, t, e) })) }), sC = Gc(oC, { Request: Fc((function (t, e) { return Uc({}, mC, t, e) })), Exception: Fc((function (t, e) { return Uc([], fC, t, e) })), Layer: Fc((function (t, e) { var r = Uc({}, dC, t, e); if (void 0 === r.Layer) return Object.assign(r, EC(t, e)); return r })) }), lC = function (t) { function e() { var e = t.call(this) || this; return e.version = void 0, e } return iC(e, t), e.prototype.readFromNode = function (t) { this.version = t.getAttribute("version").trim(); var e = Uc({version: this.version}, aC, t, []); return e || null }, e }(cS), uC = Gc(oC, { Name: Fc(U_), Title: Fc(U_), Abstract: Fc(U_), KeywordList: Fc(PC), OnlineResource: Fc(hS), ContactInformation: Fc((function (t, e) { return Uc({}, cC, t, e) })), Fees: Fc(U_), AccessConstraints: Fc(U_), LayerLimit: Fc(G_), MaxWidth: Fc(G_), MaxHeight: Fc(G_) }), cC = Gc(oC, { ContactPersonPrimary: Fc((function (t, e) { return Uc({}, hC, t, e) })), ContactPosition: Fc(U_), ContactAddress: Fc((function (t, e) { return Uc({}, pC, t, e) })), ContactVoiceTelephone: Fc(U_), ContactFacsimileTelephone: Fc(U_), ContactElectronicMailAddress: Fc(U_) }), hC = Gc(oC, {ContactPerson: Fc(U_), ContactOrganization: Fc(U_)}), pC = Gc(oC, { AddressType: Fc(U_), Address: Fc(U_), City: Fc(U_), StateOrProvince: Fc(U_), PostCode: Fc(U_), Country: Fc(U_) }), fC = Gc(oC, {Format: Ic(U_)}), dC = Gc(oC, { Name: Fc(U_), Title: Fc(U_), Abstract: Fc(U_), KeywordList: Fc(PC), CRS: Mc(U_), EX_GeographicBoundingBox: Fc((function (t, e) { var r = Uc({}, yC, t, e); if (!r) return; var n = r.westBoundLongitude, i = r.southBoundLatitude, o = r.eastBoundLongitude, a = r.northBoundLatitude; if (void 0 === n || void 0 === i || void 0 === o || void 0 === a) return; return [n, i, o, a] })), BoundingBox: Mc((function (t, e) { var r = [D_(t.getAttribute("minx")), D_(t.getAttribute("miny")), D_(t.getAttribute("maxx")), D_(t.getAttribute("maxy"))], n = [D_(t.getAttribute("resx")), D_(t.getAttribute("resy"))]; return {crs: t.getAttribute("CRS"), extent: r, res: n} })), Dimension: Mc((function (t, e) { return { name: t.getAttribute("name"), units: t.getAttribute("units"), unitSymbol: t.getAttribute("unitSymbol"), default: t.getAttribute("default"), multipleValues: k_(t.getAttribute("multipleValues")), nearestValue: k_(t.getAttribute("nearestValue")), current: k_(t.getAttribute("current")), values: U_(t) } })), Attribution: Fc((function (t, e) { return Uc({}, gC, t, e) })), AuthorityURL: Mc((function (t, e) { var r = TC(t, e); if (r) return r.name = t.getAttribute("name"), r; return })), Identifier: Mc(U_), MetadataURL: Mc((function (t, e) { var r = TC(t, e); if (r) return r.type = t.getAttribute("type"), r; return })), DataURL: Mc(TC), FeatureListURL: Mc(TC), Style: Mc((function (t, e) { return Uc({}, xC, t, e) })), MinScaleDenominator: Fc(N_), MaxScaleDenominator: Fc(N_), Layer: Mc(EC) }), gC = Gc(oC, {Title: Fc(U_), OnlineResource: Fc(hS), LogoURL: Fc(OC)}), yC = Gc(oC, { westBoundLongitude: Fc(N_), eastBoundLongitude: Fc(N_), southBoundLatitude: Fc(N_), northBoundLatitude: Fc(N_) }), mC = Gc(oC, {GetCapabilities: Fc(CC), GetMap: Fc(CC), GetFeatureInfo: Fc(CC)}), vC = Gc(oC, { Format: Mc(U_), DCPType: Mc((function (t, e) { return Uc({}, _C, t, e) })) }), _C = Gc(oC, { HTTP: Fc((function (t, e) { return Uc({}, bC, t, e) })) }), bC = Gc(oC, {Get: Fc(TC), Post: Fc(TC)}), xC = Gc(oC, { Name: Fc(U_), Title: Fc(U_), Abstract: Fc(U_), LegendURL: Mc(OC), StyleSheetURL: Fc(TC), StyleURL: Fc(TC) }), wC = Gc(oC, {Format: Fc(U_), OnlineResource: Fc(hS)}), SC = Gc(oC, {Keyword: Ic(U_)}); function EC(t, e) { var r = e[e.length - 1], n = Uc({}, dC, t, e); if (n) { var i = k_(t.getAttribute("queryable")); void 0 === i && (i = r.queryable), n.queryable = void 0 !== i && i; var o = z_(t.getAttribute("cascaded")); void 0 === o && (o = r.cascaded), n.cascaded = o; var a = k_(t.getAttribute("opaque")); void 0 === a && (a = r.opaque), n.opaque = void 0 !== a && a; var s = k_(t.getAttribute("noSubsets")); void 0 === s && (s = r.noSubsets), n.noSubsets = void 0 !== s && s; var l = D_(t.getAttribute("fixedWidth")); l || (l = r.fixedWidth), n.fixedWidth = l; var u = D_(t.getAttribute("fixedHeight")); u || (u = r.fixedHeight), n.fixedHeight = u; ["Style", "CRS", "AuthorityURL"].forEach((function (t) { if (t in r) { var e = n[t] || []; n[t] = e.concat(r[t]) } })); return ["EX_GeographicBoundingBox", "BoundingBox", "Dimension", "Attribution", "MinScaleDenominator", "MaxScaleDenominator"].forEach((function (t) { if (!(t in n)) { var e = r[t]; n[t] = e } })), n } } function TC(t, e) { return Uc({}, wC, t, e) } function CC(t, e) { return Uc({}, vC, t, e) } function OC(t, e) { var r = TC(t, e); if (r) { var n = [z_(t.getAttribute("width")), z_(t.getAttribute("height"))]; return r.size = n, r } } function PC(t, e) { return Uc([], SC, t, e) } var RC = lC, IC = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), LC = function (t) { function e(e) { var r = t.call(this) || this, n = e || {}; return r.featureNS_ = "http://mapserver.gis.umn.edu/mapserver", r.gmlFormat_ = new $_, r.layers_ = n.layers ? n.layers : null, r } return IC(e, t), e.prototype.getLayers = function () { return this.layers_ }, e.prototype.setLayers = function (t) { this.layers_ = t }, e.prototype.readFeatures_ = function (t, e) { t.setAttribute("namespaceURI", this.featureNS_); var r = t.localName, n = []; if (0 === t.childNodes.length) return n; if ("msGMLOutput" == r) for (var i = 0, o = t.childNodes.length; i < o; i++) { var a = t.childNodes[i]; if (a.nodeType === Node.ELEMENT_NODE) { var s = a, l = e[0], u = s.localName.replace("_layer", ""); if (!this.layers_ || g(this.layers_, u)) { var c = u + "_feature"; l.featureType = c, l.featureNS = this.featureNS_; var h = {}; h[c] = Ic(this.gmlFormat_.readFeatureElement, this.gmlFormat_); var p = Gc([l.featureNS, null], h); s.setAttribute("namespaceURI", this.featureNS_); var f = Uc([], p, s, e, this.gmlFormat_); f && v(n, f) } } } if ("FeatureCollection" == r) { var d = Uc([], this.gmlFormat_.FEATURE_COLLECTION_PARSERS, t, [{}], this.gmlFormat_); d && (n = d) } return n }, e.prototype.readFeaturesFromNode = function (t, e) { var r = {}; return e && O(r, this.getReadOptions(t, e)), this.readFeatures_(t, [r]) }, e }(P_), MC = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), FC = [null, "http://www.opengis.net/wmts/1.0"], AC = [null, "http://www.opengis.net/ows/1.1"], kC = Gc(FC, { Contents: Fc((function (t, e) { return Uc({}, NC, t, e) })) }), jC = function (t) { function e() { var e = t.call(this) || this; return e.owsParser_ = new RS, e } return MC(e, t), e.prototype.readFromNode = function (t) { var e = t.getAttribute("version"); e && (e = e.trim()); var r = this.owsParser_.readFromNode(t); return r ? (r.version = e, (r = Uc(r, kC, t, [])) || null) : null }, e }(cS), NC = Gc(FC, { Layer: Mc((function (t, e) { return Uc({}, DC, t, e) })), TileMatrixSet: Mc((function (t, e) { return Uc({}, WC, t, e) })) }), DC = Gc(FC, { Style: Mc((function (t, e) { var r = Uc({}, GC, t, e); if (!r) return; var n = "true" === t.getAttribute("isDefault"); return r.isDefault = n, r })), Format: Mc(U_), TileMatrixSetLink: Mc((function (t, e) { return Uc({}, zC, t, e) })), Dimension: Mc((function (t, e) { return Uc({}, VC, t, e) })), ResourceURL: Mc((function (t, e) { var r = t.getAttribute("format"), n = t.getAttribute("template"), i = t.getAttribute("resourceType"), o = {}; r && (o.format = r); n && (o.template = n); i && (o.resourceType = i); return o })) }, Gc(AC, { Title: Fc(U_), Abstract: Fc(U_), WGS84BoundingBox: Fc((function (t, e) { var r = Uc([], YC, t, e); if (2 != r.length) return; return Kt(r) })), Identifier: Fc(U_) })), GC = Gc(FC, { LegendURL: Mc((function (t, e) { var r = {}; return r.format = t.getAttribute("format"), r.href = hS(t), r })) }, Gc(AC, {Title: Fc(U_), Identifier: Fc(U_)})), zC = Gc(FC, { TileMatrixSet: Fc(U_), TileMatrixSetLimits: Fc((function (t, e) { return Uc([], UC, t, e) })) }), UC = Gc(FC, { TileMatrixLimits: Ic((function (t, e) { return Uc({}, BC, t, e) })) }), BC = Gc(FC, {TileMatrix: Fc(U_), MinTileRow: Fc(G_), MaxTileRow: Fc(G_), MinTileCol: Fc(G_), MaxTileCol: Fc(G_)}), VC = Gc(FC, {Default: Fc(U_), Value: Mc(U_)}, Gc(AC, {Identifier: Fc(U_)})), YC = Gc(AC, {LowerCorner: Ic(XC), UpperCorner: Ic(XC)}), WC = Gc(FC, { WellKnownScaleSet: Fc(U_), TileMatrix: Mc((function (t, e) { return Uc({}, qC, t, e) })) }, Gc(AC, {SupportedCRS: Fc(U_), Identifier: Fc(U_)})), qC = Gc(FC, { TopLeftCorner: Fc(XC), ScaleDenominator: Fc(N_), TileWidth: Fc(G_), TileHeight: Fc(G_), MatrixWidth: Fc(G_), MatrixHeight: Fc(G_) }, Gc(AC, {Identifier: Fc(U_)})); function XC(t, e) { var r = U_(t).split(/\s+/); if (r && 2 == r.length) { var n = +r[0], i = +r[1]; if (!isNaN(n) && !isNaN(i)) return [n, i] } } var ZC = jC, KC = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), HC = ["fullscreenchange", "webkitfullscreenchange", "MSFullscreenChange"], $C = "enterfullscreen", JC = "leavefullscreen"; function QC() { var t = document.body; return !!(t.webkitRequestFullscreen || t.msRequestFullscreen && document.msFullscreenEnabled || t.requestFullscreen && document.fullscreenEnabled) } function tO() { return !!(document.webkitIsFullScreen || document.msFullscreenElement || document.fullscreenElement) } function eO(t) { t.requestFullscreen ? t.requestFullscreen() : t.msRequestFullscreen ? t.msRequestFullscreen() : t.webkitRequestFullscreen && t.webkitRequestFullscreen() } var rO = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, { element: document.createElement("div"), target: n.target }) || this).cssClassName_ = void 0 !== n.className ? n.className : "ol-full-screen", r.activeClassName_ = void 0 !== n.activeClassName ? n.activeClassName.split(" ") : [r.cssClassName_ + "-true"], r.inactiveClassName_ = void 0 !== n.inactiveClassName ? n.inactiveClassName.split(" ") : [r.cssClassName_ + "-false"]; var i = void 0 !== n.label ? n.label : "⤢"; r.labelNode_ = "string" == typeof i ? document.createTextNode(i) : i; var o = void 0 !== n.labelActive ? n.labelActive : "×"; r.labelActiveNode_ = "string" == typeof o ? document.createTextNode(o) : o, r.button_ = document.createElement("button"); var a = n.tipLabel ? n.tipLabel : "Toggle full-screen"; r.setClassName_(r.button_, tO()), r.button_.setAttribute("type", "button"), r.button_.title = a, r.button_.appendChild(r.labelNode_), r.button_.addEventListener(N, r.handleClick_.bind(r), !1); var s = r.cssClassName_ + " ol-unselectable ol-control " + (QC() ? "" : "ol-unsupported"), l = r.element; return l.className = s, l.appendChild(r.button_), r.keys_ = void 0 !== n.keys && n.keys, r.source_ = n.source, r } return KC(e, t), e.prototype.handleClick_ = function (t) { t.preventDefault(), this.handleFullScreen_() }, e.prototype.handleFullScreen_ = function () { if (QC()) { var t = this.getMap(); if (t) if (tO()) document.exitFullscreen ? document.exitFullscreen() : document.msExitFullscreen ? document.msExitFullscreen() : document.webkitExitFullscreen && document.webkitExitFullscreen(); else { var e = void 0; e = this.source_ ? "string" == typeof this.source_ ? document.getElementById(this.source_) : this.source_ : t.getTargetElement(), this.keys_ ? function (t) { t.webkitRequestFullscreen ? t.webkitRequestFullscreen() : eO(t) }(e) : eO(e) } } }, e.prototype.handleFullScreenChange_ = function () { var t = this.getMap(); tO() ? (this.setClassName_(this.button_, !0), po(this.labelActiveNode_, this.labelNode_), this.dispatchEvent($C)) : (this.setClassName_(this.button_, !1), po(this.labelNode_, this.labelActiveNode_), this.dispatchEvent(JC)), t && t.updateSize() }, e.prototype.setClassName_ = function (t, e) { var r, n, i, o = this.activeClassName_, a = this.inactiveClassName_, s = e ? o : a; (r = t.classList).remove.apply(r, o), (n = t.classList).remove.apply(n, a), (i = t.classList).add.apply(i, s) }, e.prototype.setMap = function (e) { if (t.prototype.setMap.call(this, e), e) for (var r = 0, n = HC.length; r < n; ++r) this.listenerKeys.push(Z(document, HC[r], this.handleFullScreenChange_, this)) }, e }(As), nO = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), iO = function (t) { function e(e) { var r = this, n = e || {}, i = document.createElement("div"); return i.className = void 0 !== n.className ? n.className : "ol-mouse-position", (r = t.call(this, { element: i, render: n.render, target: n.target }) || this).addEventListener(it("projection"), r.handleProjectionChanged_), n.coordinateFormat && r.setCoordinateFormat(n.coordinateFormat), n.projection && r.setProjection(n.projection), r.undefinedHTML_ = void 0 !== n.undefinedHTML ? n.undefinedHTML : " ", r.renderOnMouseOut_ = !!r.undefinedHTML_, r.renderedHTML_ = i.innerHTML, r.mapProjection_ = null, r.transform_ = null, r } return nO(e, t), e.prototype.handleProjectionChanged_ = function () { this.transform_ = null }, e.prototype.getCoordinateFormat = function () { return this.get("coordinateFormat") }, e.prototype.getProjection = function () { return this.get("projection") }, e.prototype.handleMouseMove = function (t) { var e = this.getMap(); this.updateHTML_(e.getEventPixel(t)) }, e.prototype.handleMouseOut = function (t) { this.updateHTML_(null) }, e.prototype.setMap = function (e) { if (t.prototype.setMap.call(this, e), e) { var r = e.getViewport(); this.listenerKeys.push(Z(r, za, this.handleMouseMove, this)), this.renderOnMouseOut_ && this.listenerKeys.push(Z(r, Va, this.handleMouseOut, this)) } }, e.prototype.setCoordinateFormat = function (t) { this.set("coordinateFormat", t) }, e.prototype.setProjection = function (t) { this.set("projection", Gr(t)) }, e.prototype.updateHTML_ = function (t) { var e = this.undefinedHTML_; if (t && this.mapProjection_) { if (!this.transform_) { var r = this.getProjection(); this.transform_ = r ? Zr(this.mapProjection_, r) : jr } var n = this.getMap().getCoordinateFromPixelInternal(t); if (n) { var i = tn(); i && (this.transform_ = Zr(this.mapProjection_, i)), this.transform_(n, n); var o = this.getCoordinateFormat(); e = o ? o(n) : n.toString() } } this.renderedHTML_ && e === this.renderedHTML_ || (this.element.innerHTML = e, this.renderedHTML_ = e) }, e.prototype.render = function (t) { var e = t.frameState; e ? this.mapProjection_ != e.viewState.projection && (this.mapProjection_ = e.viewState.projection, this.transform_ = null) : this.mapProjection_ = null }, e }(As), oO = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), aO = function (t) { function e() { return null !== t && t.apply(this, arguments) || this } return oO(e, t), e.prototype.createRenderer = function () { return new La(this) }, e }(Ms), sO = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, { element: document.createElement("div"), render: n.render, target: n.target }) || this).boundHandleRotationChanged_ = r.handleRotationChanged_.bind(r), r.collapsed_ = void 0 === n.collapsed || n.collapsed, r.collapsible_ = void 0 === n.collapsible || n.collapsible, r.collapsible_ || (r.collapsed_ = !1), r.rotateWithView_ = void 0 !== n.rotateWithView && n.rotateWithView, r.viewExtent_ = void 0; var i = void 0 !== n.className ? n.className : "ol-overviewmap", o = void 0 !== n.tipLabel ? n.tipLabel : "Overview map", a = void 0 !== n.collapseLabel ? n.collapseLabel : "«"; "string" == typeof a ? (r.collapseLabel_ = document.createElement("span"), r.collapseLabel_.textContent = a) : r.collapseLabel_ = a; var s = void 0 !== n.label ? n.label : "»"; "string" == typeof s ? (r.label_ = document.createElement("span"), r.label_.textContent = s) : r.label_ = s; var l = r.collapsible_ && !r.collapsed_ ? r.collapseLabel_ : r.label_, u = document.createElement("button"); u.setAttribute("type", "button"), u.title = o, u.appendChild(l), u.addEventListener(N, r.handleClick_.bind(r), !1), r.ovmapDiv_ = document.createElement("div"), r.ovmapDiv_.className = "ol-overviewmap-map", r.view_ = n.view, r.ovmap_ = new aO({view: n.view}); var c = r.ovmap_; n.layers && n.layers.forEach((function (t) { c.addLayer(t) })); var h = document.createElement("div"); h.className = "ol-overviewmap-box", h.style.boxSizing = "border-box", r.boxOverlay_ = new su({ position: [0, 0], positioning: Hl, element: h }), r.ovmap_.addOverlay(r.boxOverlay_); var p = i + " ol-unselectable ol-control" + (r.collapsed_ && r.collapsible_ ? " ol-collapsed" : "") + (r.collapsible_ ? "" : " ol-uncollapsible"), f = r.element; f.className = p, f.appendChild(r.ovmapDiv_), f.appendChild(u); var d = r, g = r.boxOverlay_, y = r.boxOverlay_.getElement(), m = function (t) { var e, r = {clientX: (e = t).clientX, clientY: e.clientY}, n = c.getEventCoordinateInternal(r); g.setPosition(n) }, v = function (t) { var e = c.getEventCoordinateInternal(t); d.getMap().getView().setCenterInternal(e), window.removeEventListener("mousemove", m), window.removeEventListener("mouseup", v) }; return y.addEventListener("mousedown", (function () { window.addEventListener("mousemove", m), window.addEventListener("mouseup", v) })), r } return oO(e, t), e.prototype.setMap = function (e) { var r = this.getMap(); if (e !== r) { if (r) { var n = r.getView(); n && this.unbindView_(n), this.ovmap_.setTarget(null) } if (t.prototype.setMap.call(this, e), e) { this.ovmap_.setTarget(this.ovmapDiv_), this.listenerKeys.push(Z(e, h, this.handleMapPropertyChange_, this)); var i = e.getView(); i && (this.bindView_(i), i.isDef() && (this.ovmap_.updateSize(), this.resetExtent_())) } } }, e.prototype.handleMapPropertyChange_ = function (t) { if (t.key === Ja) { var e = t.oldValue; e && this.unbindView_(e); var r = this.getMap().getView(); this.bindView_(r) } }, e.prototype.bindView_ = function (t) { if (!this.view_) { var e = new Cs({projection: t.getProjection()}); this.ovmap_.setView(e) } t.addEventListener(it(ss), this.boundHandleRotationChanged_), this.handleRotationChanged_() }, e.prototype.unbindView_ = function (t) { t.removeEventListener(it(ss), this.boundHandleRotationChanged_) }, e.prototype.handleRotationChanged_ = function () { this.rotateWithView_ && this.ovmap_.getView().setRotation(this.getMap().getView().getRotation()) }, e.prototype.validateExtent_ = function () { var t = this.getMap(), e = this.ovmap_; if (t.isRendered() && e.isRendered()) { var r = t.getSize(), n = t.getView().calculateExtentInternal(r); if (!this.viewExtent_ || !ue(n, this.viewExtent_)) { this.viewExtent_ = n; var i = e.getSize(), o = e.getView().calculateExtentInternal(i), a = e.getPixelFromCoordinateInternal(Ce(n)), s = e.getPixelFromCoordinateInternal(be(n)), l = Math.abs(a[0] - s[0]), u = Math.abs(a[1] - s[1]), c = i[0], h = i[1]; l < .1 * c || u < .1 * h || l > .75 * c || u > .75 * h ? this.resetExtent_() : te(o, n) || this.recenter_() } } }, e.prototype.resetExtent_ = function () { var t = this.getMap(), e = this.ovmap_, r = t.getSize(), n = t.getView().calculateExtentInternal(r), i = e.getView(), o = Math.log(7.5) / Math.LN2; Me(n, 1 / (.1 * Math.pow(2, o / 2))), i.fitInternal(gi(n)) }, e.prototype.recenter_ = function () { var t = this.getMap(), e = this.ovmap_, r = t.getView(); e.getView().setCenterInternal(r.getCenterInternal()) }, e.prototype.updateBox_ = function () { var t = this.getMap(), e = this.ovmap_; if (t.isRendered() && e.isRendered()) { var r = t.getSize(), n = t.getView(), i = e.getView(), o = this.rotateWithView_ ? 0 : -n.getRotation(), a = this.boxOverlay_, s = this.boxOverlay_.getElement(), l = n.getCenterInternal(), u = n.getResolution(), c = i.getResolution(), h = r[0] * u / c, p = r[1] * u / c; if (a.setPosition(l), s) { s.style.width = h + "px", s.style.height = p + "px"; var f = "rotate(" + o + "rad)"; s.style.transform = f } } }, e.prototype.handleClick_ = function (t) { t.preventDefault(), this.handleToggle_() }, e.prototype.handleToggle_ = function () { this.element.classList.toggle("ol-collapsed"), this.collapsed_ ? po(this.collapseLabel_, this.label_) : po(this.label_, this.collapseLabel_), this.collapsed_ = !this.collapsed_; var t = this.ovmap_; if (!this.collapsed_) { if (t.isRendered()) return this.viewExtent_ = void 0, void t.render(); t.updateSize(), this.resetExtent_(), K(t, qa, (function (t) { this.updateBox_() }), this) } }, e.prototype.getCollapsible = function () { return this.collapsible_ }, e.prototype.setCollapsible = function (t) { this.collapsible_ !== t && (this.collapsible_ = t, this.element.classList.toggle("ol-uncollapsible"), !t && this.collapsed_ && this.handleToggle_()) }, e.prototype.setCollapsed = function (t) { this.collapsible_ && this.collapsed_ !== t && this.handleToggle_() }, e.prototype.getCollapsed = function () { return this.collapsed_ }, e.prototype.getRotateWithView = function () { return this.rotateWithView_ }, e.prototype.setRotateWithView = function (t) { this.rotateWithView_ !== t && (this.rotateWithView_ = t, 0 !== this.getMap().getView().getRotation() && (this.rotateWithView_ ? this.handleRotationChanged_() : this.ovmap_.getView().setRotation(0), this.viewExtent_ = void 0, this.validateExtent_(), this.updateBox_())) }, e.prototype.getOverviewMap = function () { return this.ovmap_ }, e.prototype.render = function (t) { this.validateExtent_(), this.updateBox_() }, e }(As), lO = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), uO = "degrees", cO = "imperial", hO = "nautical", pO = "metric", fO = "us", dO = [1, 2, 5], gO = function (t) { function e(e) { var r = this, n = e || {}, i = void 0 !== n.className ? n.className : n.bar ? "ol-scale-bar" : "ol-scale-line"; return (r = t.call(this, { element: document.createElement("div"), render: n.render, target: n.target }) || this).innerElement_ = document.createElement("div"), r.innerElement_.className = i + "-inner", r.element.className = i + " ol-unselectable", r.element.appendChild(r.innerElement_), r.viewState_ = null, r.minWidth_ = void 0 !== n.minWidth ? n.minWidth : 64, r.renderedVisible_ = !1, r.renderedWidth_ = void 0, r.renderedHTML_ = "", r.addEventListener(it("units"), r.handleUnitsChanged_), r.setUnits(n.units || pO), r.scaleBar_ = n.bar || !1, r.scaleBarSteps_ = n.steps || 4, r.scaleBarText_ = n.text || !1, r.dpi_ = n.dpi || void 0, r } return lO(e, t), e.prototype.getUnits = function () { return this.get("units") }, e.prototype.handleUnitsChanged_ = function () { this.updateElement_() }, e.prototype.setUnits = function (t) { this.set("units", t) }, e.prototype.setDpi = function (t) { this.dpi_ = t }, e.prototype.updateElement_ = function () { var t = this.viewState_; if (t) { var e = t.center, r = t.projection, n = this.getUnits(), i = n == uO ? St.DEGREES : St.METERS, o = zr(r, t.resolution, e, i), a = this.minWidth_ * (this.dpi_ || 25.4 / .28) / (25.4 / .28), s = a * o, l = ""; if (n == uO) { var u = wt[St.DEGREES]; (s *= u) < u / 60 ? (l = "″", o *= 3600) : s < u ? (l = "′", o *= 60) : l = "°" } else n == cO ? s < .9144 ? (l = "in", o /= .0254) : s < 1609.344 ? (l = "ft", o /= .3048) : (l = "mi", o /= 1609.344) : n == hO ? (o /= 1852, l = "nm") : n == pO ? s < .001 ? (l = "μm", o *= 1e6) : s < 1 ? (l = "mm", o *= 1e3) : s < 1e3 ? l = "m" : (l = "km", o /= 1e3) : n == fO ? s < .9144 ? (l = "in", o *= 39.37) : s < 1609.344 ? (l = "ft", o /= .30480061) : (l = "mi", o /= 1609.3472) : pt(!1, 33); for (var c, h, p, f, d = 3 * Math.floor(Math.log(a * o) / Math.log(10)); ;) { p = Math.floor(d / 3); var g = Math.pow(10, p); if (c = dO[(d % 3 + 3) % 3] * g, h = Math.round(c / o), isNaN(h)) return this.element.style.display = "none", void (this.renderedVisible_ = !1); if (h >= a) break; ++d } f = this.scaleBar_ ? this.createScaleBar(h, c, l) : c.toFixed(p < 0 ? -p : 0) + " " + l, this.renderedHTML_ != f && (this.innerElement_.innerHTML = f, this.renderedHTML_ = f), this.renderedWidth_ != h && (this.innerElement_.style.width = h + "px", this.renderedWidth_ = h), this.renderedVisible_ || (this.element.style.display = "", this.renderedVisible_ = !0) } else this.renderedVisible_ && (this.element.style.display = "none", this.renderedVisible_ = !1) }, e.prototype.createScaleBar = function (t, e, r) { for (var n = "1 : " + Math.round(this.getScaleForResolution()).toLocaleString(), i = [], o = t / this.scaleBarSteps_, a = "#ffffff", s = 0; s < this.scaleBarSteps_; s++) 0 === s && i.push(this.createMarker("absolute", s)), i.push('
' + this.createMarker("relative", s) + (s % 2 == 0 || 2 === this.scaleBarSteps_ ? this.createStepText(s, t, !1, e, r) : "") + "
"), s === this.scaleBarSteps_ - 1 && i.push(this.createStepText(s + 1, t, !0, e, r)), a = "#ffffff" === a ? "#000000" : "#ffffff"; return '
' + (this.scaleBarText_ ? '
' + n + "
" : "") + i.join("") + "
" }, e.prototype.createMarker = function (t, e) { return '
' }, e.prototype.createStepText = function (t, e, r, n, i) { var o = (0 === t ? 0 : Math.round(n / this.scaleBarSteps_ * t * 100) / 100) + (0 === t ? "" : " " + i); return '
' + o + "
" }, e.prototype.getScaleForResolution = function () { var t = zr(this.viewState_.projection, this.viewState_.resolution, this.viewState_.center), e = this.dpi_ || 25.4 / .28, r = this.viewState_.projection.getMetersPerUnit(); return parseFloat(t.toString()) * r * (1e3 / 25.4) * e }, e.prototype.render = function (t) { var e = t.frameState; this.viewState_ = e ? e.viewState : null, this.updateElement_() }, e }(As), yO = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), mO = 0, vO = 1, _O = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, { element: document.createElement("div"), render: n.render }) || this).dragListenerKeys_ = [], r.currentResolution_ = void 0, r.direction_ = mO, r.dragging_, r.heightLimit_ = 0, r.widthLimit_ = 0, r.startX_, r.startY_, r.thumbSize_ = null, r.sliderInitialized_ = !1, r.duration_ = void 0 !== n.duration ? n.duration : 200; var i = void 0 !== n.className ? n.className : "ol-zoomslider", o = document.createElement("button"); o.setAttribute("type", "button"), o.className = i + "-thumb ol-unselectable"; var a = r.element; return a.className = i + " ol-unselectable ol-control", a.appendChild(o), a.addEventListener(Ua, r.handleDraggerStart_.bind(r), !1), a.addEventListener(za, r.handleDraggerDrag_.bind(r), !1), a.addEventListener(Ba, r.handleDraggerEnd_.bind(r), !1), a.addEventListener(N, r.handleContainerClick_.bind(r), !1), o.addEventListener(N, u, !1), r } return yO(e, t), e.prototype.setMap = function (e) { t.prototype.setMap.call(this, e), e && e.render() }, e.prototype.initSlider_ = function () { var t = this.element, e = t.offsetWidth, r = t.offsetHeight; if (0 === e && 0 === r) return this.sliderInitialized_ = !1; var n = t.firstElementChild, i = getComputedStyle(n), o = n.offsetWidth + parseFloat(i.marginRight) + parseFloat(i.marginLeft), a = n.offsetHeight + parseFloat(i.marginTop) + parseFloat(i.marginBottom); return this.thumbSize_ = [o, a], e > r ? (this.direction_ = vO, this.widthLimit_ = e - o) : (this.direction_ = mO, this.heightLimit_ = r - a), this.sliderInitialized_ = !0 }, e.prototype.handleContainerClick_ = function (t) { var e = this.getMap().getView(), r = this.getRelativePosition_(t.offsetX - this.thumbSize_[0] / 2, t.offsetY - this.thumbSize_[1] / 2), n = this.getResolutionForPosition_(r), i = e.getConstrainedZoom(e.getZoomForResolution(n)); e.animateInternal({zoom: i, duration: this.duration_, easing: io}) }, e.prototype.handleDraggerStart_ = function (t) { if (!this.dragging_ && t.target === this.element.firstElementChild) { var e = this.element.firstElementChild; if (this.getMap().getView().beginInteraction(), this.startX_ = t.clientX - parseFloat(e.style.left), this.startY_ = t.clientY - parseFloat(e.style.top), this.dragging_ = !0, 0 === this.dragListenerKeys_.length) { var r = this.handleDraggerDrag_, n = this.handleDraggerEnd_, i = this.getMap().getOwnerDocument(); this.dragListenerKeys_.push(Z(i, za, r, this), Z(i, Ba, n, this)) } } }, e.prototype.handleDraggerDrag_ = function (t) { if (this.dragging_) { var e = t.clientX - this.startX_, r = t.clientY - this.startY_, n = this.getRelativePosition_(e, r); this.currentResolution_ = this.getResolutionForPosition_(n), this.getMap().getView().setResolution(this.currentResolution_) } }, e.prototype.handleDraggerEnd_ = function (t) { this.dragging_ && (this.getMap().getView().endInteraction(), this.dragging_ = !1, this.startX_ = void 0, this.startY_ = void 0, this.dragListenerKeys_.forEach(H), this.dragListenerKeys_.length = 0) }, e.prototype.setThumbPosition_ = function (t) { var e = this.getPositionForResolution_(t), r = this.element.firstElementChild; this.direction_ == vO ? r.style.left = this.widthLimit_ * e + "px" : r.style.top = this.heightLimit_ * e + "px" }, e.prototype.getRelativePosition_ = function (t, e) { return Ne(this.direction_ === vO ? t / this.widthLimit_ : e / this.heightLimit_, 0, 1) }, e.prototype.getResolutionForPosition_ = function (t) { return this.getMap().getView().getResolutionForValueFunction()(1 - t) }, e.prototype.getPositionForResolution_ = function (t) { return Ne(1 - this.getMap().getView().getValueForResolutionFunction()(t), 0, 1) }, e.prototype.render = function (t) { if (t.frameState && (this.sliderInitialized_ || this.initSlider_())) { var e = t.frameState.viewState.resolution; this.currentResolution_ = e, this.setThumbPosition_(e) } }, e }(As), bO = function () { var t = function (e, r) { return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) { t.__proto__ = e } || function (t, e) { for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]) })(e, r) }; return function (e, r) { function n() { this.constructor = e } t(e, r), e.prototype = null === r ? Object.create(r) : (n.prototype = r.prototype, new n) } }(), xO = function (t) { function e(e) { var r = this, n = e || {}; (r = t.call(this, { element: document.createElement("div"), target: n.target }) || this).extent = n.extent ? n.extent : null; var i = void 0 !== n.className ? n.className : "ol-zoom-extent", o = void 0 !== n.label ? n.label : "E", a = void 0 !== n.tipLabel ? n.tipLabel : "Fit to extent", s = document.createElement("button"); s.setAttribute("type", "button"), s.title = a, s.appendChild("string" == typeof o ? document.createTextNode(o) : o), s.addEventListener(N, r.handleClick_.bind(r), !1); var l = i + " ol-unselectable ol-control", u = r.element; return u.className = l, u.appendChild(s), r } return bO(e, t), e.prototype.handleClick_ = function (t) { t.preventDefault(), this.handleZoomToExtent() }, e.prototype.handleZoomToExtent = function () { var t = this.getMap().getView(), e = this.extent ? this.extent : t.getProjection().getExtent(); t.fitInternal(gi(e)) }, e }(As), wO = {}; wO.AssertionError = l || {}, wO.Collection = ht || {}, wO.Collection.CollectionEvent = ct || {}, wO.Disposable = p || {}, wO.Feature = gt || {}, wO.Feature.createStyleFunction = dt || {}, wO.Geolocation = Ii || {}, wO.Image = Ki || {}, wO.Image.listenImage = Zi || {}, wO.ImageBase = Mi || {}, wO.ImageCanvas = $i || {}, wO.ImageTile = vo || {}, wO.Kinetic = _o || {}, wO.Map = Wl || {}, wO.MapBrowserEvent = Da || {}, wO.MapBrowserEventHandler = Wa || {}, wO.MapEvent = ja || {}, wO.Object = ot || {}, wO.Object.ObjectEvent = et || {}, wO.Object.getChangeEventType = it || {}, wO.Observable = Q || {}, wO.Observable.unByKey = J || {}, wO.Overlay = su || {}, wO.PluggableMap = Ms || {}, wO.Tile = lo || {}, wO.TileCache = yu || {}, wO.TileQueue = es || {}, wO.TileQueue.getTilePriority = rs || {}, wO.TileRange = _u || {}, wO.TileRange.createOrUpdate = vu || {}, wO.VectorRenderTile = wu || {}, wO.VectorTile = Eu || {}, wO.View = Cs || {}, wO.View.createCenterConstraint = xs || {}, wO.View.createResolutionConstraint = ws || {}, wO.View.createRotationConstraint = Ss || {}, wO.View.isNoopAnimation = Es || {}, wO.array = {}, wO.array.binarySearch = f || {}, wO.array.equals = b || {}, wO.array.extend = v || {}, wO.array.find = _ || {}, wO.array.findIndex = x || {}, wO.array.includes = g || {}, wO.array.isSorted = w || {}, wO.array.linearFindNearest = y || {}, wO.array.numberSafeCompareFunction = d || {}, wO.array.remove = function (t, e) { var r = t.indexOf(e), n = r > -1; return n && t.splice(r, 1), n } || {}, wO.array.reverseSubArray = m || {}, wO.array.stableSort = function (t, e) { var r, n = t.length, i = Array(t.length); for (r = 0; r < n; r++) i[r] = {index: r, value: t[r]}; for (i.sort((function (t, r) { return e(t.value, r.value) || t.index - r.index })), r = 0; r < t.length; r++) t[r] = i[r].value } || {}, wO.asserts = {}, wO.asserts.assert = pt || {}, wO.centerconstraint = {}, wO.centerconstraint.createExtent = ls || {}, wO.centerconstraint.none = us || {}, wO.color = {}, wO.color.asArray = Oo || {}, wO.color.asString = wo || {}, wO.color.fromString = Co || {}, wO.color.isStringColor = Io || {}, wO.color.normalize = Po || {}, wO.color.toString = Ro || {}, wO.colorlike = {}, wO.colorlike.asColorLike = Tu || {}, wO.control = {}, wO.control.Attribution = js || {}, wO.control.Control = As || {}, wO.control.FullScreen = rO || {}, wO.control.MousePosition = iO || {}, wO.control.OverviewMap = sO || {}, wO.control.Rotate = Ds || {}, wO.control.ScaleLine = gO || {}, wO.control.Zoom = zs || {}, wO.control.ZoomSlider = _O || {}, wO.control.ZoomToExtent = xO || {}, wO.control.defaults = Us || {}, wO.coordinate = {}, wO.coordinate.add = xr || {}, wO.coordinate.closestOnCircle = wr || {}, wO.coordinate.closestOnSegment = Sr || {}, wO.coordinate.createStringXY = function (t) { return function (e) { return Mr(e, t) } } || {}, wO.coordinate.degreesToStringHDMS = Er || {}, wO.coordinate.distance = Ir || {}, wO.coordinate.equals = Cr || {}, wO.coordinate.format = Tr || {}, wO.coordinate.getWorldsAway = Ar || {}, wO.coordinate.rotate = Or || {}, wO.coordinate.scale = Pr || {}, wO.coordinate.squaredDistance = Rr || {}, wO.coordinate.squaredDistanceToSegment = Lr || {}, wO.coordinate.toStringHDMS = function (t, e) { return t ? Er("NS", t[1], e) + " " + Er("EW", t[0], e) : "" } || {}, wO.coordinate.toStringXY = Mr || {}, wO.coordinate.wrapX = Fr || {}, wO.css = {}, wO.css.CLASS_COLLAPSED = "ol-collapsed", wO.css.CLASS_CONTROL = "ol-control", wO.css.CLASS_HIDDEN = "ol-hidden", wO.css.CLASS_SELECTABLE = "ol-selectable", wO.css.CLASS_UNSELECTABLE = "ol-unselectable", wO.css.CLASS_UNSUPPORTED = "ol-unsupported", wO.css.getFontParameters = ha || {},wO.dom = {},wO.dom.createCanvasContext2D = uo || {},wO.dom.outerHeight = ho || {},wO.dom.outerWidth = co || {},wO.dom.removeChildren = go || {},wO.dom.removeNode = fo || {},wO.dom.replaceChildren = yo || {},wO.dom.replaceNode = po || {},wO.easing = {},wO.easing.easeIn = no || {},wO.easing.easeOut = io || {},wO.easing.inAndOut = oo || {},wO.easing.linear = ao || {},wO.easing.upAndDown = function (t) { return t < .5 ? oo(2 * t) : 1 - oo(2 * (t - .5)) } || {},wO.events = {},wO.events.Event = c || {},wO.events.Event.preventDefault = function (t) { t.preventDefault() } || {},wO.events.Event.stopPropagation = u || {},wO.events.Target = M || {},wO.events.condition = {},wO.events.condition.all = Js || {},wO.events.condition.altKeyOnly = Qs || {},wO.events.condition.altShiftKeysOnly = tl || {},wO.events.condition.always = nl || {},wO.events.condition.click = function (t) { return t.type == Ga.CLICK } || {},wO.events.condition.doubleClick = function (t) { return t.type == Ga.DBLCLICK } || {},wO.events.condition.focus = el || {},wO.events.condition.focusWithTabindex = rl || {},wO.events.condition.mouseActionButton = il || {},wO.events.condition.mouseOnly = cl || {},wO.events.condition.never = ol || {},wO.events.condition.noModifierKeys = sl || {},wO.events.condition.penOnly = function (t) { var e = t.originalEvent; return pt(void 0 !== e, 56), "pen" === e.pointerType } || {},wO.events.condition.platformModifierKeyOnly = function (t) { var e = t.originalEvent; return !e.altKey && (Bi ? e.metaKey : e.ctrlKey) && !e.shiftKey } || {},wO.events.condition.pointerMove = function (t) { return "pointermove" == t.type } || {},wO.events.condition.primaryAction = hl || {},wO.events.condition.shiftKeyOnly = ll || {},wO.events.condition.singleClick = al || {},wO.events.condition.targetNotEditable = ul || {},wO.events.condition.touchOnly = function (t) { var e = t.originalEvent; return pt(void 0 !== e, 56), "touch" === e.pointerType } || {},wO.events.listen = Z || {},wO.events.listenOnce = K || {},wO.events.unlistenByKey = H || {},wO.extent = {},wO.extent.applyTransform = Ae || {},wO.extent.approximatelyEquals = ce || {},wO.extent.boundingExtent = Kt || {},wO.extent.buffer = Ht || {},wO.extent.clone = $t || {},wO.extent.closestSquaredDistanceXY = Jt || {},wO.extent.containsCoordinate = Qt || {},wO.extent.containsExtent = te || {},wO.extent.containsXY = ee || {},wO.extent.coordinateRelationship = re || {},wO.extent.createEmpty = ne || {},wO.extent.createOrUpdate = ie || {},wO.extent.createOrUpdateEmpty = oe || {},wO.extent.createOrUpdateFromCoordinate = ae || {},wO.extent.createOrUpdateFromCoordinates = se || {},wO.extent.createOrUpdateFromFlatCoordinates = le || {},wO.extent.createOrUpdateFromRings = function (t, e) { return ge(oe(e), t) } || {},wO.extent.equals = ue || {},wO.extent.extend = he || {},wO.extent.extendCoordinate = pe || {},wO.extent.extendCoordinates = fe || {},wO.extent.extendFlatCoordinates = de || {},wO.extent.extendRings = ge || {},wO.extent.extendXY = ye || {},wO.extent.forEachCorner = me || {},wO.extent.getArea = ve || {},wO.extent.getBottomLeft = _e || {},wO.extent.getBottomRight = be || {},wO.extent.getCenter = xe || {},wO.extent.getCorner = we || {},wO.extent.getEnlargedArea = function (t, e) { var r = Math.min(t[0], e[0]), n = Math.min(t[1], e[1]); return (Math.max(t[2], e[2]) - r) * (Math.max(t[3], e[3]) - n) } || {},wO.extent.getForViewAndSize = Se || {},wO.extent.getHeight = Ee || {},wO.extent.getIntersection = Te || {},wO.extent.getIntersectionArea = function (t, e) { return ve(Te(t, e)) } || {},wO.extent.getMargin = function (t) { return Pe(t) + Ee(t) } || {},wO.extent.getSize = function (t) { return [t[2] - t[0], t[3] - t[1]] } || {},wO.extent.getTopLeft = Ce || {},wO.extent.getTopRight = Oe || {},wO.extent.getWidth = Pe || {},wO.extent.intersects = Re || {},wO.extent.intersectsSegment = Fe || {},wO.extent.isEmpty = Ie || {},wO.extent.returnOrUpdate = Le || {},wO.extent.scaleFromCenter = Me || {},wO.extent.wrapX = ke || {},wO.featureloader = {},wO.featureloader.loadFeaturesXhr = Lu || {},wO.featureloader.setWithCredentials = function (t) { Iu = t } || {},wO.featureloader.xhr = Mu || {},wO.format = {},wO.format.EsriJSON = C_ || {},wO.format.Feature = Yy || {},wO.format.Feature.transformExtentWithOptions = qy || {},wO.format.Feature.transformGeometryWithOptions = Wy || {},wO.format.GML = nb || {},wO.format.GML2 = $_ || {},wO.format.GML3 = eb || {},wO.format.GML32 = ab || {},wO.format.GMLBase = F_ || {},wO.format.GMLBase.GMLNS = I_,wO.format.GPX = Bb || {},wO.format.GeoJSON = $m || {},wO.format.IGC = sx || {},wO.format.IIIFInfo = Pf || {},wO.format.JSONFeature = qm || {},wO.format.KML = eS || {},wO.format.KML.getDefaultFillStyle = function () { return vx } || {},wO.format.KML.getDefaultImageStyle = function () { return bx } || {},wO.format.KML.getDefaultStrokeStyle = function () { return wx } || {},wO.format.KML.getDefaultStyle = function () { return Ex } || {},wO.format.KML.getDefaultStyleArray = function () { return Cx } || {},wO.format.KML.getDefaultTextStyle = function () { return Sx } || {},wO.format.KML.readFlatCoordinates = Ix || {},wO.format.MVT = am || {},wO.format.OSMXML = uS || {},wO.format.OWS = RS || {},wO.format.Polyline = zS || {},wO.format.Polyline.decodeDeltas = MS || {},wO.format.Polyline.decodeFloats = AS || {},wO.format.Polyline.decodeSignedIntegers = jS || {},wO.format.Polyline.decodeUnsignedIntegers = DS || {},wO.format.Polyline.encodeDeltas = LS || {},wO.format.Polyline.encodeFloats = FS || {},wO.format.Polyline.encodeSignedIntegers = kS || {},wO.format.Polyline.encodeUnsignedInteger = GS || {},wO.format.Polyline.encodeUnsignedIntegers = NS || {},wO.format.TextFeature = Jb || {},wO.format.TopoJSON = KS || {},wO.format.WFS = DT || {},wO.format.WFS.writeFilter = function (t, e) { var r = Sc(tT[e], "Filter"), n = {node: r}; return O(n, {version: e, filter: t}), xT(r, t, [n]), r } || {},wO.format.WKT = nC || {},wO.format.WMSCapabilities = RC || {},wO.format.WMSGetFeatureInfo = LC || {},wO.format.WMTSCapabilities = ZC || {},wO.format.XLink = {},wO.format.XLink.readHref = hS || {},wO.format.XML = cS || {},wO.format.XMLFeature = P_ || {},wO.format.filter = {},wO.format.filter.And = tE || {},wO.format.filter.Bbox = rE || {},wO.format.filter.Comparison = pE || {},wO.format.filter.ComparisonBinary = yE || {},wO.format.filter.Contains = aE || {},wO.format.filter.DWithin = lE || {},wO.format.filter.Disjoint = cE || {},wO.format.filter.During = dE || {},wO.format.filter.EqualTo = vE || {},wO.format.filter.Filter = HS || {},wO.format.filter.GreaterThan = bE || {},wO.format.filter.GreaterThanOrEqualTo = wE || {},wO.format.filter.Intersects = EE || {},wO.format.filter.IsBetween = CE || {},wO.format.filter.IsLike = PE || {},wO.format.filter.IsNull = IE || {},wO.format.filter.LessThan = ME || {},wO.format.filter.LessThanOrEqualTo = AE || {},wO.format.filter.LogicalNary = JS || {},wO.format.filter.Not = jE || {},wO.format.filter.NotEqualTo = DE || {},wO.format.filter.Or = zE || {},wO.format.filter.ResourceId = BE || {},wO.format.filter.Spatial = iE || {},wO.format.filter.Within = YE || {},wO.format.filter.and = WE || {},wO.format.filter.bbox = qE || {},wO.format.filter.between = function (t, e, r) { return new CE(t, e, r) } || {},wO.format.filter.contains = function (t, e, r) { return new aE(t, e, r) } || {},wO.format.filter.disjoint = function (t, e, r) { return new cE(t, e, r) } || {},wO.format.filter.during = function (t, e, r) { return new dE(t, e, r) } || {},wO.format.filter.dwithin = function (t, e, r, n, i) { return new lE(t, e, r, n, i) } || {},wO.format.filter.equalTo = function (t, e, r) { return new vE(t, e, r) } || {},wO.format.filter.greaterThan = function (t, e) { return new bE(t, e) } || {},wO.format.filter.greaterThanOrEqualTo = function (t, e) { return new wE(t, e) } || {},wO.format.filter.intersects = function (t, e, r) { return new EE(t, e, r) } || {},wO.format.filter.isNull = function (t) { return new IE(t) } || {},wO.format.filter.lessThan = function (t, e) { return new ME(t, e) } || {},wO.format.filter.lessThanOrEqualTo = function (t, e) { return new AE(t, e) } || {},wO.format.filter.like = function (t, e, r, n, i, o) { return new PE(t, e, r, n, i, o) } || {},wO.format.filter.not = function (t) { return new jE(t) } || {},wO.format.filter.notEqualTo = function (t, e, r) { return new DE(t, e, r) } || {},wO.format.filter.or = function (t) { var e = [null].concat(Array.prototype.slice.call(arguments)); return new (Function.prototype.bind.apply(zE, e)) } || {},wO.format.filter.resourceId = function (t) { return new BE(t) } || {},wO.format.filter.within = function (t, e, r) { return new YE(t, e, r) } || {},wO.format.xsd = {},wO.format.xsd.readBoolean = A_ || {},wO.format.xsd.readBooleanString = k_ || {},wO.format.xsd.readDateTime = j_ || {},wO.format.xsd.readDecimal = N_ || {},wO.format.xsd.readDecimalString = D_ || {},wO.format.xsd.readNonNegativeInteger = G_ || {},wO.format.xsd.readNonNegativeIntegerString = z_ || {},wO.format.xsd.readString = U_ || {},wO.format.xsd.writeBooleanTextNode = B_ || {},wO.format.xsd.writeCDATASection = V_ || {},wO.format.xsd.writeDateTimeTextNode = Y_ || {},wO.format.xsd.writeDecimalTextNode = W_ || {},wO.format.xsd.writeNonNegativeIntegerTextNode = q_ || {},wO.format.xsd.writeStringTextNode = X_ || {},wO.functions = {},wO.functions.FALSE = E || {},wO.functions.TRUE = S || {},wO.functions.VOID = T || {},wO.functions.memoizeOne = C || {},wO.geom = {},wO.geom.Circle = Rv || {},wO.geom.Geometry = dn || {},wO.geom.GeometryCollection = Vm || {},wO.geom.LineString = Py || {},wO.geom.LinearRing = Yn || {},wO.geom.MultiLineString = Zy || {},wO.geom.MultiPoint = Hy || {},wO.geom.MultiPolygon = Jy || {},wO.geom.Point = qn || {},wO.geom.Polygon = fi || {},wO.geom.Polygon.circular = di || {},wO.geom.Polygon.fromCircle = yi || {},wO.geom.Polygon.fromExtent = gi || {},wO.geom.Polygon.makeRegular = mi || {},wO.geom.SimpleGeometry = vn || {},wO.geom.SimpleGeometry.getStrideForLayout = yn || {},wO.geom.SimpleGeometry.transformGeom2D = mn || {},wO.geom.flat = {},wO.geom.flat.area = {},wO.geom.flat.area.linearRing = zn || {},wO.geom.flat.area.linearRings = Un || {},wO.geom.flat.area.linearRingss = Bn || {},wO.geom.flat.center = {},wO.geom.flat.center.linearRingss = Sy || {},wO.geom.flat.closest = {},wO.geom.flat.closest.arrayMaxSquaredDelta = xn || {},wO.geom.flat.closest.assignClosestArrayPoint = En || {},wO.geom.flat.closest.assignClosestMultiArrayPoint = Tn || {},wO.geom.flat.closest.assignClosestPoint = Sn || {},wO.geom.flat.closest.maxSquaredDelta = bn || {},wO.geom.flat.closest.multiArrayMaxSquaredDelta = wn || {},wO.geom.flat.contains = {},wO.geom.flat.contains.linearRingContainsExtent = Xn || {},wO.geom.flat.contains.linearRingContainsXY = Zn || {},wO.geom.flat.contains.linearRingsContainsXY = Kn || {},wO.geom.flat.contains.linearRingssContainsXY = Hn || {},wO.geom.flat.deflate = {},wO.geom.flat.deflate.deflateCoordinate = Cn || {},wO.geom.flat.deflate.deflateCoordinates = On || {},wO.geom.flat.deflate.deflateCoordinatesArray = Pn || {},wO.geom.flat.deflate.deflateMultiCoordinatesArray = Rn || {},wO.geom.flat.flip = {},wO.geom.flat.flip.flipXY = v_ || {},wO.geom.flat.geodesic = {},wO.geom.flat.geodesic.greatCircleArc = function (t, e, r, n, i, o) { var a = Gr("EPSG:4326"), s = Math.cos(Ye(e)), l = Math.sin(Ye(e)), u = Math.cos(Ye(n)), c = Math.sin(Ye(n)), h = Math.cos(Ye(r - t)), p = Math.sin(Ye(r - t)), f = l * c + s * u * h; return Ly((function (e) { if (1 <= f) return [r, n]; var i = e * Math.acos(f), o = Math.cos(i), a = Math.sin(i), d = p * u, g = s * c - l * u * h, y = Math.atan2(d, g), m = Math.asin(l * o + s * a * Math.cos(y)); return [Ve(Ye(t) + Math.atan2(Math.sin(y) * a * s, o - l * Math.sin(m))), Ve(m)] }), Kr(a, i), o) } || {},wO.geom.flat.geodesic.meridian = My || {},wO.geom.flat.geodesic.parallel = Fy || {},wO.geom.flat.inflate = {},wO.geom.flat.inflate.inflateCoordinates = Nn || {},wO.geom.flat.inflate.inflateCoordinatesArray = Dn || {},wO.geom.flat.inflate.inflateMultiCoordinatesArray = Gn || {},wO.geom.flat.interiorpoint = {},wO.geom.flat.interiorpoint.getInteriorPointOfArray = $n || {},wO.geom.flat.interiorpoint.getInteriorPointsOfMultiArray = Jn || {},wO.geom.flat.interpolate = {},wO.geom.flat.interpolate.interpolatePoint = by || {},wO.geom.flat.interpolate.lineStringCoordinateAtM = xy || {},wO.geom.flat.interpolate.lineStringsCoordinateAtM = wy || {},wO.geom.flat.intersectsextent = {},wO.geom.flat.intersectsextent.intersectsLineString = ti || {},wO.geom.flat.intersectsextent.intersectsLineStringArray = ei || {},wO.geom.flat.intersectsextent.intersectsLinearRing = ri || {},wO.geom.flat.intersectsextent.intersectsLinearRingArray = ni || {},wO.geom.flat.intersectsextent.intersectsLinearRingMultiArray = ii || {},wO.geom.flat.length = {},wO.geom.flat.length.lineStringLength = qg || {},wO.geom.flat.length.linearRingLength = function (t, e, r, n) { var i = qg(t, e, r, n), o = t[r - n] - t[e], a = t[r - n + 1] - t[e + 1]; return i += Math.sqrt(o * o + a * a) } || {},wO.geom.flat.orient = {},wO.geom.flat.orient.linearRingIsClockwise = ai || {},wO.geom.flat.orient.linearRingsAreOriented = si || {},wO.geom.flat.orient.linearRingssAreOriented = li || {},wO.geom.flat.orient.orientLinearRings = ui || {},wO.geom.flat.orient.orientLinearRingsArray = ci || {},wO.geom.flat.reverse = {},wO.geom.flat.reverse.coordinates = oi || {},wO.geom.flat.segments = {},wO.geom.flat.segments.forEach = Qn || {},wO.geom.flat.simplify = {},wO.geom.flat.simplify.douglasPeucker = In || {},wO.geom.flat.simplify.douglasPeuckerArray = Ln || {},wO.geom.flat.simplify.douglasPeuckerMultiArray = function (t, e, r, n, i, o, a, s) { for (var l = 0, u = r.length; l < u; ++l) { var c = r[l], h = []; a = Ln(t, e, c, n, i, o, a, h), s.push(h), e = c[c.length - 1] } return a } || {},wO.geom.flat.simplify.quantize = An || {},wO.geom.flat.simplify.quantizeArray = kn || {},wO.geom.flat.simplify.quantizeMultiArray = jn || {},wO.geom.flat.simplify.radialDistance = Mn || {},wO.geom.flat.simplify.simplifyLineString = function (t, e, r, n, i, o, a) { var s = void 0 !== a ? a : []; return o || (r = Mn(t, e, r, n, i, s, 0), t = s, e = 0, n = 2), s.length = In(t, e, r, n, i, s, 0), s } || {},wO.geom.flat.simplify.snap = Fn || {},wO.geom.flat.straightchunk = {},wO.geom.flat.straightchunk.matchingChunk = Gg || {},wO.geom.flat.textpath = {},wO.geom.flat.textpath.drawTextOnPath = Wg || {},wO.geom.flat.topology = {},wO.geom.flat.topology.lineStringIsClosed = function (t, e, r, n) { var i = r - n; return t[e] === t[i] && t[e + 1] === t[i + 1] && (r - e) / n > 3 && !!zn(t, e, r, n) } || {},wO.geom.flat.transform = {},wO.geom.flat.transform.rotate = un || {},wO.geom.flat.transform.scale = cn || {},wO.geom.flat.transform.transform2D = ln || {},wO.geom.flat.transform.translate = hn || {},wO.has = {},wO.has.DEVICE_PIXEL_RATIO = Vi || {},wO.has.FIREFOX = Gi || {},wO.has.IMAGE_DECODE = Wi || {},wO.has.MAC = Bi || {},wO.has.PASSIVE_EVENT_LISTENERS = qi || {},wO.has.SAFARI = zi || {},wO.has.WEBKIT = Ui || {},wO.has.WORKER_OFFSCREEN_CANVAS = Yi || {},wO.interaction = {},wO.interaction.DoubleClickZoom = Zs || {},wO.interaction.DragAndDrop = Ev || {},wO.interaction.DragAndDrop.DragAndDropEvent = Sv || {},wO.interaction.DragBox = El || {},wO.interaction.DragBox.DragBoxEvent = Sl || {},wO.interaction.DragPan = fl || {},wO.interaction.DragRotate = gl || {},wO.interaction.DragRotateAndZoom = Cv || {},wO.interaction.DragZoom = Cl || {},wO.interaction.Draw = Gv || {},wO.interaction.Draw.DrawEvent = Dv || {},wO.interaction.Draw.createBox = function () { return function (t, e, r) { var n = Kt([t[0], t[t.length - 1]].map((function (t) { return rn(t, r) }))), i = [[_e(n), be(n), Oe(n), Ce(n), _e(n)]], o = e; o ? o.setCoordinates(i) : o = new fi(i); var a = tn(); return a && o.transform(r, a), o } } || {},wO.interaction.Draw.createRegularPolygon = function (t, e) { return function (r, n, i) { var o = rn(r[0], i), a = rn(r[r.length - 1], i), s = Math.sqrt(Rr(o, a)), l = n || yi(new Rv(o), t), u = e; if (!e && 0 !== e) { var c = a[0] - o[0], h = a[1] - o[1]; u = Math.atan2(h, c) } mi(l, o, s, u); var p = tn(); return p && l.transform(i, p), l } } || {},wO.interaction.Extent = qv || {},wO.interaction.Extent.ExtentEvent = Bv || {},wO.interaction.Interaction = qs || {},wO.interaction.Interaction.pan = Ys || {},wO.interaction.Interaction.zoomByDelta = Ws || {},wO.interaction.KeyboardPan = Ml || {},wO.interaction.KeyboardZoom = Al || {},wO.interaction.Modify = r_ || {},wO.interaction.Modify.ModifyEvent = Jv || {},wO.interaction.MouseWheelZoom = Dl || {},wO.interaction.PinchRotate = zl || {},wO.interaction.PinchZoom = Bl || {},wO.interaction.Pointer = $s || {},wO.interaction.Pointer.centroid = Hs || {},wO.interaction.Select = s_ || {},wO.interaction.Select.SelectEvent = o_ || {},wO.interaction.Snap = h_ || {},wO.interaction.Translate = m_ || {},wO.interaction.Translate.TranslateEvent = y_ || {},wO.interaction.defaults = Vl || {},wO.layer = {},wO.layer.Base = Wo || {},wO.layer.BaseImage = ad || {},wO.layer.BaseTile = vd || {},wO.layer.BaseVector = wg || {},wO.layer.Graticule = Ny || {},wO.layer.Group = Aa || {},wO.layer.Heatmap = Vy || {},wO.layer.Image = dd || {},wO.layer.Layer = na || {},wO.layer.Layer.inView = ra || {},wO.layer.MapboxVector = yv || {},wO.layer.MapboxVector.getMapboxPath = uv || {},wO.layer.MapboxVector.normalizeGlyphsUrl = hv || {},wO.layer.MapboxVector.normalizeSourceUrl = fv || {},wO.layer.MapboxVector.normalizeSpriteUrl = cv || {},wO.layer.MapboxVector.normalizeStyleUrl = pv || {},wO.layer.Tile = Sd || {},wO.layer.Vector = Iy || {},wO.layer.VectorImage = vv || {},wO.layer.VectorTile = lm || {},wO.layer.WebGLPoints = bv || {},wO.loadingstrategy = {},wO.loadingstrategy.all = Fu || {},wO.loadingstrategy.bbox = function (t, e) { return [t] } || {},wO.loadingstrategy.tile = function (t) { return function (e, r) { var n = t.getZForResolution(r), i = t.getTileRangeForExtentAndZ(e, n), o = [], a = [n, 0, 0]; for (a[1] = i.minX; a[1] <= i.maxX; ++a[1]) for (a[2] = i.minY; a[2] <= i.maxY; ++a[2]) o.push(t.getTileCoordExtent(a)); return o } } || {},wO.math = {},wO.math.clamp = Ne || {},wO.math.cosh = De || {},wO.math.lerp = qe || {},wO.math.log2 = Ge || {},wO.math.modulo = We || {},wO.math.solveLinearSystem = Be || {},wO.math.squaredDistance = Ue || {},wO.math.squaredSegmentDistance = ze || {},wO.math.toDegrees = Ve || {},wO.math.toRadians = Ye || {},wO.net = {},wO.net.jsonp = Au || {},wO.obj = {},wO.obj.assign = O || {},wO.obj.clear = P || {},wO.obj.getValues = R || {},wO.obj.isEmpty = I || {},wO.proj = {},wO.proj.Projection = je || {},wO.proj.Units = St || {},wO.proj.Units.METERS_PER_UNIT = wt || {},wO.proj.addCommon = sn || {},wO.proj.addCoordinateTransforms = Wr || {},wO.proj.addEquivalentProjections = Ur || {},wO.proj.addEquivalentTransforms = Br || {},wO.proj.addProjection = Nr || {},wO.proj.addProjections = Dr || {},wO.proj.clearAllProjections = function () { lr(), pr() } || {},wO.proj.clearUserProjection = function () { Jr = null } || {},wO.proj.cloneTransform = kr || {},wO.proj.createProjection = Vr || {},wO.proj.createSafeCoordinateTransform = an || {},wO.proj.createTransformFromCoordinateTransform = Yr || {},wO.proj.epsg3857 = {},wO.proj.epsg3857.EXTENT = Ke || {},wO.proj.epsg3857.HALF_SIZE = Ze || {},wO.proj.epsg3857.MAX_SAFE_Y = $e || {},wO.proj.epsg3857.PROJECTIONS = Qe || {},wO.proj.epsg3857.RADIUS = 6378137,wO.proj.epsg3857.WORLD_EXTENT = He || {},wO.proj.epsg3857.fromEPSG4326 = tr || {},wO.proj.epsg3857.toEPSG4326 = er || {},wO.proj.epsg4326 = {},wO.proj.epsg4326.EXTENT = nr || {},wO.proj.epsg4326.METERS_PER_UNIT = ir || {},wO.proj.epsg4326.PROJECTIONS = ar || {},wO.proj.epsg4326.RADIUS = 6378137,wO.proj.equivalent = Xr || {},wO.proj.fromLonLat = qr || {},wO.proj.fromUserCoordinate = rn || {},wO.proj.fromUserExtent = on || {},wO.proj.get = Gr || {},wO.proj.getPointResolution = zr || {},wO.proj.getTransform = Kr || {},wO.proj.getTransformFromProjections = Zr || {},wO.proj.getUserProjection = tn || {},wO.proj.identityTransform = jr || {},wO.proj.proj4 = {},wO.proj.proj4.register = function (t) { var e, r, n = Object.keys(t.defs), i = n.length; for (e = 0; e < i; ++e) { var o = n[e]; if (!Gr(o)) { var a = t.defs(o), s = a.units; s || "longlat" !== a.projName || (s = St.DEGREES), Nr(new je({ code: o, axisOrientation: a.axis, metersPerUnit: a.to_meter, units: s })) } } for (e = 0; e < i; ++e) { var l = n[e], u = Gr(l); for (r = 0; r < i; ++r) { var c = n[r], h = Gr(c); if (!dr(l, c)) { var p = t.defs(l), f = t.defs(c); if (p === f) Ur([u, h]); else { var d = t(O({}, p, {axis: void 0}), O({}, f, {axis: void 0})); Wr(u, h, an(u, h, d.forward), an(h, u, d.inverse)) } } } } } || {},wO.proj.projections = {},wO.proj.projections.add = cr || {},wO.proj.projections.clear = lr || {},wO.proj.projections.get = ur || {},wO.proj.setUserProjection = Qr || {},wO.proj.toLonLat = function (t, e) { var r = Hr(t, void 0 !== e ? e : "EPSG:3857", "EPSG:4326"), n = r[0]; return (n < -180 || n > 180) && (r[0] = We(n + 180, 360) - 180), r } || {},wO.proj.toUserCoordinate = en || {},wO.proj.toUserExtent = nn || {},wO.proj.transform = Hr || {},wO.proj.transformExtent = $r || {},wO.proj.transformWithProjections = function (t, e, r) { return Zr(e, r)(t) } || {},wO.proj.transforms = {},wO.proj.transforms.add = fr || {},wO.proj.transforms.clear = pr || {},wO.proj.transforms.get = dr || {},wO.proj.transforms.remove = function (t, e) { var r = t.getCode(), n = e.getCode(), i = hr[r][n]; return delete hr[r][n], I(hr[r]) && delete hr[r], i } || {},wO.proj.useGeographic = function () { Qr("EPSG:4326") } || {},wO.render = {},wO.render.Box = ml || {},wO.render.Event = la || {},wO.render.Feature = Cy || {},wO.render.VectorContext = ku || {},wO.render.canvas = {},wO.render.canvas.Builder = Mg || {},wO.render.canvas.BuilderGroup = Yg || {},wO.render.canvas.Executor = ey || {},wO.render.canvas.ExecutorGroup = ay || {},wO.render.canvas.ExecutorGroup.getPixelIndexArray = oy || {},wO.render.canvas.ImageBuilder = Ag || {},wO.render.canvas.Immediate = Nu || {},wO.render.canvas.Instruction = Ig || {},wO.render.canvas.Instruction.beginPathInstruction = Pg || {},wO.render.canvas.Instruction.closePathInstruction = Rg || {},wO.render.canvas.Instruction.fillInstruction = Cg || {},wO.render.canvas.Instruction.strokeInstruction = Og || {},wO.render.canvas.LineStringBuilder = jg || {},wO.render.canvas.PolygonBuilder = Dg || {},wO.render.canvas.TextBuilder = Bg || {},wO.render.canvas.checkedFonts = da || {},wO.render.canvas.createTransformString = Ra || {},wO.render.canvas.defaultFillStyle = "#000",wO.render.canvas.defaultFont = "10px sans-serif",wO.render.canvas.defaultLineCap = "round",wO.render.canvas.defaultLineDash = pa || {},wO.render.canvas.defaultLineDashOffset = {},wO.render.canvas.defaultLineJoin = "round",wO.render.canvas.defaultLineWidth = 1,wO.render.canvas.defaultMiterLimit = 10,wO.render.canvas.defaultPadding = fa || {},wO.render.canvas.defaultStrokeStyle = "#000",wO.render.canvas.defaultTextAlign = "center",wO.render.canvas.defaultTextBaseline = "middle",wO.render.canvas.drawImageOrLabel = Oa || {},wO.render.canvas.hitdetect = {},wO.render.canvas.hitdetect.createHitDetectionImageData = sy || {},wO.render.canvas.hitdetect.hitDetect = ly || {},wO.render.canvas.labelCache = ga || {},wO.render.canvas.measureAndCacheTextWidth = Ea || {},wO.render.canvas.measureTextHeight = xa || {},wO.render.canvas.measureTextWidth = Sa || {},wO.render.canvas.measureTextWidths = Ta || {},wO.render.canvas.registerFont = ba || {},wO.render.canvas.rotateAtOffset = Ca || {},wO.render.canvas.textHeights = _a || {},wO.render.getRenderPixel = function (t, e) { var r = e.slice(0); return It(t.inversePixelTransform.slice(), r), r } || {},wO.render.getVectorContext = Ku || {},wO.render.toContext = function (t, e) { var r = t.canvas, n = e || {}, i = n.pixelRatio || Vi, o = n.size; o && (r.width = o[0] * i, r.height = o[1] * i, r.style.width = o[0] + "px", r.style.height = o[1] + "px"); var a = [0, 0, r.width, r.height], s = Mt([1, 0, 0, 1, 0, 0], i, i); return new Nu(t, i, a, s, 0) } || {},wO.renderer = {},wO.renderer.Composite = La || {},wO.renderer.Layer = ld || {},wO.renderer.Map = aa || {},wO.renderer.canvas = {},wO.renderer.canvas.ImageLayer = pd || {},wO.renderer.canvas.Layer = cd || {},wO.renderer.canvas.TileLayer = xd || {},wO.renderer.canvas.VectorImageLayer = py || {},wO.renderer.canvas.VectorLayer = cy || {},wO.renderer.canvas.VectorTileLayer = _y || {},wO.renderer.vector = {},wO.renderer.vector.defaultOrder = Wu || {},wO.renderer.vector.getSquaredTolerance = qu || {},wO.renderer.vector.getTolerance = Xu || {},wO.renderer.vector.renderFeature = Zu || {},wO.renderer.webgl = {},wO.renderer.webgl.Layer = _g || {},wO.renderer.webgl.Layer.colorDecodeId = vg || {},wO.renderer.webgl.Layer.colorEncodeId = mg || {},wO.renderer.webgl.Layer.getBlankImageData = function () { var t = document.createElement("canvas").getContext("2d").createImageData(1, 1); return t.data[0] = 255, t.data[1] = 255, t.data[2] = 255, t.data[3] = 255, t } || {},wO.renderer.webgl.Layer.writePointFeatureToBuffers = function (t, e, r, n, i, o) { var a = 3 + i, s = t[e + 0], l = t[e + 1], u = dg; u.length = i; for (var c = 0; c < u.length; c++) u[c] = t[e + 2 + c]; var h = o ? o.vertexPosition : 0, p = o ? o.indexPosition : 0, f = h / a; return yg(r, h, s, l, 0), u.length && r.set(u, h + 3), yg(r, h += a, s, l, 1), u.length && r.set(u, h + 3), yg(r, h += a, s, l, 2), u.length && r.set(u, h + 3), yg(r, h += a, s, l, 3), u.length && r.set(u, h + 3), h += a, n[p++] = f, n[p++] = f + 1, n[p++] = f + 3, n[p++] = f + 1, n[p++] = f + 2, n[p++] = f + 3, gg.vertexPosition = h, gg.indexPosition = p, gg } || {},wO.renderer.webgl.PointsLayer = Eg || {},wO.reproj = {},wO.reproj.Image = Ff || {},wO.reproj.Tile = Mp || {},wO.reproj.Triangulation = Ip || {},wO.reproj.calculateSourceExtentResolution = ec || {},wO.reproj.calculateSourceResolution = tc || {},wO.reproj.common = {},wO.reproj.common.ENABLE_RASTER_REPROJECTION = !0,wO.reproj.common.ERROR_THRESHOLD = .5,wO.reproj.render = rc || {},wO.resolutionconstraint = {},wO.resolutionconstraint.createMinMaxResolution = ds || {},wO.resolutionconstraint.createSnapToPower = fs || {},wO.resolutionconstraint.createSnapToResolutions = ps || {},wO.rotationconstraint = {},wO.rotationconstraint.createSnapToN = ms || {},wO.rotationconstraint.createSnapToZero = vs || {},wO.rotationconstraint.disable = gs || {},wO.rotationconstraint.none = ys || {},wO.size = {},wO.size.buffer = Os || {},wO.size.hasArea = Ps || {},wO.size.scale = Rs || {},wO.size.toSize = Is || {},wO.source = {},wO.source.BingMaps = Hp || {},wO.source.BingMaps.quadKey = Kp || {},wO.source.CartoDB = tf || {},wO.source.Cluster = ff || {},wO.source.IIIF = Lf || {},wO.source.Image = zf || {},wO.source.Image.ImageSourceEvent = Df || {},wO.source.Image.defaultImageLoadFunction = Gf || {},wO.source.ImageArcGISRest = Bf || {},wO.source.ImageCanvas = Yf || {},wO.source.ImageMapGuide = qf || {},wO.source.ImageStatic = Zf || {},wO.source.ImageWMS = ed || {},wO.source.OSM = id || {},wO.source.OSM.ATTRIBUTION = nd,wO.source.Raster = zd || {},wO.source.Raster.Processor = Id || {},wO.source.Raster.RasterSourceEvent = kd || {},wO.source.Raster.newImageData = Od || {},wO.source.Source = Dp || {},wO.source.Stamen = Wd || {},wO.source.Tile = Bp || {},wO.source.Tile.TileSourceEvent = Up || {},wO.source.TileArcGISRest = Xd || {},wO.source.TileDebug = Hd || {},wO.source.TileImage = Xp || {},wO.source.TileJSON = Jd || {},wO.source.TileWMS = tg || {},wO.source.UTFGrid = ng || {},wO.source.UTFGrid.CustomTile = rg || {},wO.source.UrlTile = Yp || {},wO.source.Vector = hf || {},wO.source.Vector.VectorSourceEvent = cf || {},wO.source.VectorTile = og || {},wO.source.VectorTile.defaultLoadFunction = ag || {},wO.source.WMTS = cg || {},wO.source.WMTS.optionsFromCapabilities = function (t, e) { var r = _(t.Contents.Layer, (function (t, r, n) { return t.Identifier == e.layer })); if (null === r) return null; var n, i = t.Contents.TileMatrixSet; (n = r.TileMatrixSetLink.length > 1 ? x(r.TileMatrixSetLink, "projection" in e ? function (t, r, n) { var o = _(i, (function (e) { return e.Identifier == t.TileMatrixSet })).SupportedCRS, a = Gr(o), s = Gr(e.projection); return a && s ? Xr(a, s) : o == e.projection } : function (t, r, n) { return t.TileMatrixSet == e.matrixSet }) : 0) < 0 && (n = 0); var o = r.TileMatrixSetLink[n].TileMatrixSet, a = r.TileMatrixSetLink[n].TileMatrixSetLimits, s = r.Format[0]; "format" in e && (s = e.format), (n = x(r.Style, (function (t, r, n) { return "style" in e ? t.Title == e.style : t.isDefault }))) < 0 && (n = 0); var l = r.Style[n].Identifier, u = {}; "Dimension" in r && r.Dimension.forEach((function (t, e, r) { var n = t.Identifier, i = t.Default; void 0 === i && (i = t.Value[0]), u[n] = i })); var c, h = _(t.Contents.TileMatrixSet, (function (t, e, r) { return t.Identifier == o })), p = h.SupportedCRS; if (p && (c = Gr(p)), "projection" in e) { var f = Gr(e.projection); f && (c && !Xr(f, c) || (c = f)) } var d = "ne" == c.getAxisOrientation().substr(0, 2), y = h.TileMatrix[0], m = {MinTileCol: 0, MinTileRow: 0, MaxTileCol: y.MatrixWidth - 1, MaxTileRow: y.MatrixHeight - 1}; if (a) { m = a[a.length - 1]; var v = _(h.TileMatrix, (function (t) { return t.Identifier === m.TileMatrix || h.Identifier + ":" + t.Identifier === m.TileMatrix })); v && (y = v) } var b = 28e-5 * y.ScaleDenominator / c.getMetersPerUnit(), w = d ? [y.TopLeftCorner[1], y.TopLeftCorner[0]] : y.TopLeftCorner, S = y.TileWidth * b, E = y.TileHeight * b, T = [w[0] + S * m.MinTileCol, w[1] - E * (1 + m.MaxTileRow), w[0] + S * (1 + m.MaxTileCol), w[1] - E * m.MinTileRow]; null === c.getExtent() && c.setExtent(T); var C = Kh(h, T, a), O = [], P = e.requestEncoding; if (P = void 0 !== P ? P : "", "OperationsMetadata" in t && "GetTile" in t.OperationsMetadata) for (var R = t.OperationsMetadata.GetTile.DCP.HTTP.Get, I = 0, L = R.length; I < L; ++I) if (R[I].Constraint) { var M = _(R[I].Constraint, (function (t) { return "GetEncoding" == t.name })).AllowedValues.Value; if ("" === P && (P = M[0]), P !== sg) break; g(M, sg) && O.push(R[I].href) } else R[I].href && (P = sg, O.push(R[I].href)); return 0 === O.length && (P = lg, r.ResourceURL.forEach((function (t) { "tile" === t.resourceType && (s = t.format, O.push(t.template)) }))), { urls: O, layer: e.layer, matrixSet: o, format: s, projection: c, requestEncoding: P, tileGrid: C, style: l, dimensions: u, wrapX: !1, crossOrigin: e.crossOrigin } } || {},wO.source.XYZ = Jp || {},wO.source.Zoomify = vf || {},wO.source.Zoomify.CustomTile = mf || {},wO.source.common = {},wO.source.common.DEFAULT_WMS_VERSION = "1.3.0",wO.source.common.IMAGE_SMOOTHING_DISABLED = $u || {},wO.sphere = {},wO.sphere.DEFAULT_RADIUS = 6371008.8,wO.sphere.getArea = function t(e, r) { var n = r || {}, i = n.radius || 6371008.8, o = n.projection || "EPSG:3857", a = e.getType(); a !== bt.GEOMETRY_COLLECTION && (e = e.clone().transform(o, "EPSG:4326")); var s, l, u, c, h, p, f = 0; switch (a) { case bt.POINT: case bt.MULTI_POINT: case bt.LINE_STRING: case bt.MULTI_LINE_STRING: case bt.LINEAR_RING: break; case bt.POLYGON: for (s = e.getCoordinates(), f = Math.abs(mr(s[0], i)), u = 1, c = s.length; u < c; ++u) f -= Math.abs(mr(s[u], i)); break; case bt.MULTI_POLYGON: for (u = 0, c = (s = e.getCoordinates()).length; u < c; ++u) for (l = s[u], f += Math.abs(mr(l[0], i)), h = 1, p = l.length; h < p; ++h) f -= Math.abs(mr(l[h], i)); break; case bt.GEOMETRY_COLLECTION: var d = e.getGeometries(); for (u = 0, c = d.length; u < c; ++u) f += t(d[u], r); break; default: throw new Error("Unsupported geometry type: " + a) } return f } || {},wO.sphere.getDistance = gr || {},wO.sphere.getLength = function t(e, r) { var n = r || {}, i = n.radius || 6371008.8, o = n.projection || "EPSG:3857", a = e.getType(); a !== bt.GEOMETRY_COLLECTION && (e = e.clone().transform(o, "EPSG:4326")); var s, l, u, c, h, p, f = 0; switch (a) { case bt.POINT: case bt.MULTI_POINT: break; case bt.LINE_STRING: case bt.LINEAR_RING: f = yr(s = e.getCoordinates(), i); break; case bt.MULTI_LINE_STRING: case bt.POLYGON: for (u = 0, c = (s = e.getCoordinates()).length; u < c; ++u) f += yr(s[u], i); break; case bt.MULTI_POLYGON: for (u = 0, c = (s = e.getCoordinates()).length; u < c; ++u) for (h = 0, p = (l = s[u]).length; h < p; ++h) f += yr(l[h], i); break; case bt.GEOMETRY_COLLECTION: var d = e.getGeometries(); for (u = 0, c = d.length; u < c; ++u) f += t(d[u], r); break; default: throw new Error("Unsupported geometry type: " + a) } return f } || {},wO.sphere.offset = vr || {},wO.string = {},wO.string.compareVersions = br || {},wO.string.padNumber = _r || {},wO.structs = {},wO.structs.LRUCache = lu || {},wO.structs.LinkedList = Cp || {},wO.structs.PriorityQueue = Qa || {},wO.structs.PriorityQueue.DROP = 1 / 0,wO.structs.RBush = Rp || {},wO.style = {},wO.style.Circle = tp || {},wO.style.Fill = ep || {},wO.style.Icon = dp || {},wO.style.IconImage = pp || {},wO.style.IconImage.get = hp || {},wO.style.IconImageCache = Fo || {},wO.style.IconImageCache.shared = Ao || {},wO.style.Image = Hh || {},wO.style.LiteralStyle = {},wO.style.RegularShape = Jh || {},wO.style.Stroke = gp || {},wO.style.Style = wp || {},wO.style.Style.createDefaultStyle = _p || {},wO.style.Style.createEditingStyle = bp || {},wO.style.Style.toFunction = mp || {},wO.style.Text = Tp || {},wO.style.expressions = {},wO.style.expressions.Operators = Eh || {},wO.style.expressions.arrayToGlsl = Ph || {},wO.style.expressions.colorToGlsl = Rh || {},wO.style.expressions.expressionToGlsl = Mh || {},wO.style.expressions.getStringNumberEquivalent = Ih || {},wO.style.expressions.getValueType = Th || {},wO.style.expressions.isTypeUnique = Ch || {},wO.style.expressions.numberToGlsl = Oh || {},wO.style.expressions.stringToGlsl = Lh || {},wO.tilecoord = {},wO.tilecoord.createOrUpdate = uu || {},wO.tilecoord.fromKey = pu || {},wO.tilecoord.getKey = hu || {},wO.tilecoord.getKeyZXY = cu || {},wO.tilecoord.hash = fu || {},wO.tilecoord.withinExtentAndZ = du || {},wO.tilegrid = {},wO.tilegrid.TileGrid = ic || {},wO.tilegrid.WMTS = Zh || {},wO.tilegrid.WMTS.createFromCapabilitiesMatrixSet = Kh || {},wO.tilegrid.common = {},wO.tilegrid.common.DEFAULT_MAX_ZOOM = 42,wO.tilegrid.common.DEFAULT_TILE_SIZE = 256,wO.tilegrid.createForExtent = sc || {},wO.tilegrid.createForProjection = cc || {},wO.tilegrid.createXYZ = lc || {},wO.tilegrid.extentFromProjection = hc || {},wO.tilegrid.getForProjection = oc || {},wO.tilegrid.wrapX = ac || {},wO.tileurlfunction = {},wO.tileurlfunction.createFromTemplate = pc || {},wO.tileurlfunction.createFromTemplates = fc || {},wO.tileurlfunction.createFromTileUrlFunctions = dc || {},wO.tileurlfunction.expandUrl = yc || {},wO.tileurlfunction.nullTileUrlFunction = gc || {},wO.transform = {},wO.transform.apply = It || {},wO.transform.compose = kt || {},wO.transform.composeCssTransform = function (t, e, r, n, i, o, a) { return Dt(kt([1, 0, 0, 1, 0, 0], t, e, r, n, i, o, a)) } || {},wO.transform.create = Tt || {},wO.transform.determinant = Nt || {},wO.transform.invert = function (t) { return jt(t, t) } || {},wO.transform.makeInverse = jt || {},wO.transform.makeScale = Ft || {},wO.transform.multiply = Ot || {},wO.transform.reset = Ct || {},wO.transform.rotate = Lt || {},wO.transform.scale = Mt || {},wO.transform.set = Pt || {},wO.transform.setFromArray = Rt || {},wO.transform.toString = Dt || {},wO.transform.translate = At || {},wO.uri = {},wO.uri.appendParams = mc || {},wO.util = {},wO.util.VERSION = "6.5.0",wO.util.abstract = n || {},wO.util.getUid = o || {},wO.vec = {},wO.vec.mat4 = {},wO.vec.mat4.create = nh || {},wO.vec.mat4.fromTransform = ih || {},wO.webgl = {},wO.webgl.ARRAY_BUFFER = 34962,wO.webgl.Buffer = Qc || {},wO.webgl.Buffer.getArrayClassForType = Jc || {},wO.webgl.DYNAMIC_DRAW = 35048,wO.webgl.ELEMENT_ARRAY_BUFFER = 34963,wO.webgl.FLOAT = 5126,wO.webgl.Helper = gh || {},wO.webgl.Helper.computeAttributesStride = fh || {}; wO.webgl.PostProcessingPass = rh || {}, wO.webgl.RenderTarget = mh || {}, wO.webgl.STATIC_DRAW = 35044, wO.webgl.STREAM_DRAW = 35040, wO.webgl.ShaderBuilder = {}, wO.webgl.ShaderBuilder.ShaderBuilder = Yh || {}, wO.webgl.ShaderBuilder.parseLiteralStyle = Wh || {}, wO.webgl.UNSIGNED_BYTE = 5121, wO.webgl.UNSIGNED_INT = 5125, wO.webgl.UNSIGNED_SHORT = 5123, wO.webgl.getContext = bc || {}, wO.webgl.getSupportedExtensions = xc || {}, wO.worker = {}, wO.worker.version = {}, wO.worker.webgl = {}, wO.xml = {}, wO.xml.OBJECT_PROPERTY_NODE_FACTORY = Nc || {}, wO.xml.XML_SCHEMA_INSTANCE_URI = wc, wO.xml.createElementNS = Sc || {}, wO.xml.getAllTextContent = Ec || {}, wO.xml.getAllTextContent_ = Tc || {}, wO.xml.getAttributeNS = Oc || {}, wO.xml.getDocument = Xc || {}, wO.xml.getXMLSerializer = Wc || {}, wO.xml.isDocument = Cc || {}, wO.xml.makeArrayExtender = Rc || {}, wO.xml.makeArrayPusher = Ic || {}, wO.xml.makeArraySerializer = kc || {}, wO.xml.makeChildAppender = Ac || {}, wO.xml.makeObjectPropertyPusher = Mc || {}, wO.xml.makeObjectPropertySetter = Fc || {}, wO.xml.makeReplacer = Lc || {}, wO.xml.makeSequence = Dc || {}, wO.xml.makeSimpleNodeFactory = jc || {}, wO.xml.makeStructureNS = Gc || {}, wO.xml.parse = Pc || {}, wO.xml.parseNode = zc || {}, wO.xml.pushParseAndPop = Uc || {}, wO.xml.pushSerializeAndPop = Vc || {}, wO.xml.registerDocument = function (t) { qc = t } || {}, wO.xml.registerXMLSerializer = function (t) { Yc = t } || {}, wO.xml.serialize = Bc || {}; e.default = wO }]).default })); //# sourceMappingURL=ol.js.map