@versatiles/svg-renderer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../node_modules/@maplibre/maplibre-gl-style-spec/dist/index.mjs","../src/lib/color.ts","../src/renderer/renderer_svg.ts","../src/lib/geometry.ts","../node_modules/bignumber.js/bignumber.mjs","../node_modules/splaytree-ts/dist/esm/index.js","../node_modules/polyclip-ts/dist/esm/index.js","../node_modules/@turf/helpers/dist/esm/index.js","../node_modules/@turf/meta/dist/esm/index.js","../node_modules/@turf/union/dist/esm/index.js","../src/processor/helper.ts","../node_modules/@mapbox/point-geometry/index.js","../node_modules/@mapbox/vector-tile/index.js","../node_modules/pbf/index.js","../src/processor/vector.ts","../src/lib/style_layer.ts","../src/processor/styles.ts","../src/processor/render.ts","../src/index.ts"],"sourcesContent":["var $version = 8;\nvar $root = {\n\tversion: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: [\n\t\t\t8\n\t\t]\n\t},\n\tname: {\n\t\ttype: \"string\"\n\t},\n\tmetadata: {\n\t\ttype: \"*\"\n\t},\n\tcenter: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2\n\t},\n\tcenterAltitude: {\n\t\ttype: \"number\"\n\t},\n\tzoom: {\n\t\ttype: \"number\"\n\t},\n\tbearing: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\"\n\t},\n\tpitch: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"degrees\"\n\t},\n\troll: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"degrees\"\n\t},\n\tstate: {\n\t\ttype: \"state\",\n\t\t\"default\": {\n\t\t}\n\t},\n\tlight: {\n\t\ttype: \"light\"\n\t},\n\tsky: {\n\t\ttype: \"sky\"\n\t},\n\tprojection: {\n\t\ttype: \"projection\"\n\t},\n\tterrain: {\n\t\ttype: \"terrain\"\n\t},\n\tsources: {\n\t\trequired: true,\n\t\ttype: \"sources\"\n\t},\n\tsprite: {\n\t\ttype: \"sprite\"\n\t},\n\tglyphs: {\n\t\ttype: \"string\"\n\t},\n\t\"font-faces\": {\n\t\ttype: \"fontFaces\"\n\t},\n\ttransition: {\n\t\ttype: \"transition\"\n\t},\n\tlayers: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"layer\"\n\t}\n};\nvar sources = {\n\t\"*\": {\n\t\ttype: \"source\"\n\t}\n};\nvar source = [\n\t\"source_vector\",\n\t\"source_raster\",\n\t\"source_raster_dem\",\n\t\"source_geojson\",\n\t\"source_video\",\n\t\"source_image\"\n];\nvar source_vector = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvector: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t},\n\t\t\ttms: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\"\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tencoding: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmvt: {\n\t\t\t},\n\t\t\tmlt: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"mvt\"\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_raster = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\traster: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\"\n\t},\n\tscheme: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\txyz: {\n\t\t\t},\n\t\t\ttms: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"xyz\"\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_raster_dem = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\t\"raster-dem\": {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\ttype: \"string\"\n\t},\n\ttiles: {\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tbounds: {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t-180,\n\t\t\t-85.051129,\n\t\t\t180,\n\t\t\t85.051129\n\t\t]\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 22\n\t},\n\ttileSize: {\n\t\ttype: \"number\",\n\t\t\"default\": 512,\n\t\tunits: \"pixels\"\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tencoding: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tterrarium: {\n\t\t\t},\n\t\t\tmapbox: {\n\t\t\t},\n\t\t\tcustom: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"mapbox\"\n\t},\n\tredFactor: {\n\t\ttype: \"number\",\n\t\t\"default\": 1\n\t},\n\tblueFactor: {\n\t\ttype: \"number\",\n\t\t\"default\": 1\n\t},\n\tgreenFactor: {\n\t\ttype: \"number\",\n\t\t\"default\": 1\n\t},\n\tbaseShift: {\n\t\ttype: \"number\",\n\t\t\"default\": 0\n\t},\n\tvolatile: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\t\"*\": {\n\t\ttype: \"*\"\n\t}\n};\nvar source_geojson = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tgeojson: {\n\t\t\t}\n\t\t}\n\t},\n\tdata: {\n\t\trequired: true,\n\t\ttype: \"*\"\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\t\"default\": 18\n\t},\n\tattribution: {\n\t\ttype: \"string\"\n\t},\n\tbuffer: {\n\t\ttype: \"number\",\n\t\t\"default\": 128,\n\t\tmaximum: 512,\n\t\tminimum: 0\n\t},\n\tfilter: {\n\t\ttype: \"filter\"\n\t},\n\ttolerance: {\n\t\ttype: \"number\",\n\t\t\"default\": 0.375\n\t},\n\tcluster: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tclusterRadius: {\n\t\ttype: \"number\",\n\t\t\"default\": 50,\n\t\tminimum: 0\n\t},\n\tclusterMaxZoom: {\n\t\ttype: \"number\"\n\t},\n\tclusterMinPoints: {\n\t\ttype: \"number\"\n\t},\n\tclusterProperties: {\n\t\ttype: \"*\"\n\t},\n\tlineMetrics: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tgenerateId: {\n\t\ttype: \"boolean\",\n\t\t\"default\": false\n\t},\n\tpromoteId: {\n\t\ttype: \"promoteId\"\n\t}\n};\nvar source_video = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvideo: {\n\t\t\t}\n\t\t}\n\t},\n\turls: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tvalue: \"string\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\"\n\t\t}\n\t}\n};\nvar source_image = {\n\ttype: {\n\t\trequired: true,\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\timage: {\n\t\t\t}\n\t\t}\n\t},\n\turl: {\n\t\trequired: true,\n\t\ttype: \"string\"\n\t},\n\tcoordinates: {\n\t\trequired: true,\n\t\ttype: \"array\",\n\t\tlength: 4,\n\t\tvalue: {\n\t\t\ttype: \"array\",\n\t\t\tlength: 2,\n\t\t\tvalue: \"number\"\n\t\t}\n\t}\n};\nvar layer = {\n\tid: {\n\t\ttype: \"string\",\n\t\trequired: true\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tfill: {\n\t\t\t},\n\t\t\tline: {\n\t\t\t},\n\t\t\tsymbol: {\n\t\t\t},\n\t\t\tcircle: {\n\t\t\t},\n\t\t\theatmap: {\n\t\t\t},\n\t\t\t\"fill-extrusion\": {\n\t\t\t},\n\t\t\traster: {\n\t\t\t},\n\t\t\thillshade: {\n\t\t\t},\n\t\t\t\"color-relief\": {\n\t\t\t},\n\t\t\tbackground: {\n\t\t\t}\n\t\t},\n\t\trequired: true\n\t},\n\tmetadata: {\n\t\ttype: \"*\"\n\t},\n\tsource: {\n\t\ttype: \"string\"\n\t},\n\t\"source-layer\": {\n\t\ttype: \"string\"\n\t},\n\tminzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24\n\t},\n\tmaxzoom: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\tmaximum: 24\n\t},\n\tfilter: {\n\t\ttype: \"filter\"\n\t},\n\tlayout: {\n\t\ttype: \"layout\"\n\t},\n\tpaint: {\n\t\ttype: \"paint\"\n\t}\n};\nvar layout = [\n\t\"layout_fill\",\n\t\"layout_line\",\n\t\"layout_circle\",\n\t\"layout_heatmap\",\n\t\"layout_fill-extrusion\",\n\t\"layout_symbol\",\n\t\"layout_raster\",\n\t\"layout_hillshade\",\n\t\"layout_color-relief\",\n\t\"layout_background\"\n];\nvar layout_background = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar layout_fill = {\n\t\"fill-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar layout_circle = {\n\t\"circle-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar layout_heatmap = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar layout_line = {\n\t\"line-cap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbutt: {\n\t\t\t},\n\t\t\tround: {\n\t\t\t},\n\t\t\tsquare: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"butt\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-join\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tbevel: {\n\t\t\t},\n\t\t\tround: {\n\t\t\t},\n\t\t\tmiter: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"miter\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-miter-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"miter\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-round-limit\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.05,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"line-join\": \"round\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar layout_symbol = {\n\t\"symbol-placement\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tpoint: {\n\t\t\t},\n\t\t\tline: {\n\t\t\t},\n\t\t\t\"line-center\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"point\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 250,\n\t\tminimum: 1,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"symbol-placement\": \"line\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-avoid-edges\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"symbol-sort-key\": {\n\t\ttype: \"number\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"symbol-z-order\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t},\n\t\t\t\"viewport-y\": {\n\t\t\t},\n\t\t\tsource: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t{\n\t\t\t\t\"!\": \"icon-overlap\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-overlap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnever: {\n\t\t\t},\n\t\t\talways: {\n\t\t\t},\n\t\t\tcooperative: {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tunits: \"factor of the original icon size\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-text-fit\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t},\n\t\t\twidth: {\n\t\t\t},\n\t\t\theight: {\n\t\t\t},\n\t\t\tboth: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-text-fit-padding\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 4,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"icon-text-fit\": [\n\t\t\t\t\t\"both\",\n\t\t\t\t\t\"width\",\n\t\t\t\t\t\"height\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-image\": {\n\t\ttype: \"resolvedImage\",\n\t\ttokens: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-padding\": {\n\t\ttype: \"padding\",\n\t\t\"default\": [\n\t\t\t2\n\t\t],\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t{\n\t\t\t\t\"icon-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-offset\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotation-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t},\n\t\t\t\"viewport-glyph\": {\n\t\t\t},\n\t\t\tauto: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"auto\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-field\": {\n\t\ttype: \"formatted\",\n\t\t\"default\": \"\",\n\t\ttokens: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-font\": {\n\t\ttype: \"array\",\n\t\tvalue: \"string\",\n\t\t\"default\": [\n\t\t\t\"Open Sans Regular\",\n\t\t\t\"Arial Unicode MS Regular\"\n\t\t],\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-size\": {\n\t\ttype: \"number\",\n\t\t\"default\": 16,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 10,\n\t\tminimum: 0,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-line-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1.2,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-letter-spacing\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tunits: \"ems\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-justify\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tauto: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-radial-offset\": {\n\t\ttype: \"number\",\n\t\tunits: \"ems\",\n\t\t\"default\": 0,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\t\"property-type\": \"data-driven\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t}\n\t},\n\t\"text-variable-anchor\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-variable-anchor-offset\": {\n\t\ttype: \"variableAnchorOffsetCollection\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tcenter: {\n\t\t\t},\n\t\t\tleft: {\n\t\t\t},\n\t\t\tright: {\n\t\t\t},\n\t\t\ttop: {\n\t\t\t},\n\t\t\tbottom: {\n\t\t\t},\n\t\t\t\"top-left\": {\n\t\t\t},\n\t\t\t\"top-right\": {\n\t\t\t},\n\t\t\t\"bottom-left\": {\n\t\t\t},\n\t\t\t\"bottom-right\": {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"center\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-variable-anchor\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-max-angle\": {\n\t\ttype: \"number\",\n\t\t\"default\": 45,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-writing-mode\": {\n\t\ttype: \"array\",\n\t\tvalue: \"enum\",\n\t\tvalues: {\n\t\t\thorizontal: {\n\t\t\t},\n\t\t\tvertical: {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"point\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\tunits: \"degrees\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-padding\": {\n\t\ttype: \"number\",\n\t\t\"default\": 2,\n\t\tminimum: 0,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-keep-upright\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"text-rotation-alignment\": \"map\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"symbol-placement\": [\n\t\t\t\t\t\"line\",\n\t\t\t\t\t\"line-center\"\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-transform\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnone: {\n\t\t\t},\n\t\t\tuppercase: {\n\t\t\t},\n\t\t\tlowercase: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"none\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-offset\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tunits: \"ems\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-radial-offset\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-allow-overlap\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t{\n\t\t\t\t\"!\": \"text-overlap\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-overlap\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tnever: {\n\t\t\t},\n\t\t\talways: {\n\t\t\t},\n\t\t\tcooperative: {\n\t\t\t}\n\t\t},\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-ignore-placement\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-optional\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": false,\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar layout_raster = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar layout_hillshade = {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar filter = {\n\ttype: \"boolean\",\n\texpression: {\n\t\tinterpolated: false,\n\t\tparameters: [\n\t\t\t\"zoom\",\n\t\t\t\"feature\"\n\t\t]\n\t},\n\t\"property-type\": \"data-driven\"\n};\nvar filter_operator = {\n\ttype: \"enum\",\n\tvalues: {\n\t\t\"==\": {\n\t\t},\n\t\t\"!=\": {\n\t\t},\n\t\t\">\": {\n\t\t},\n\t\t\">=\": {\n\t\t},\n\t\t\"<\": {\n\t\t},\n\t\t\"<=\": {\n\t\t},\n\t\t\"in\": {\n\t\t},\n\t\t\"!in\": {\n\t\t},\n\t\tall: {\n\t\t},\n\t\tany: {\n\t\t},\n\t\tnone: {\n\t\t},\n\t\thas: {\n\t\t},\n\t\t\"!has\": {\n\t\t}\n\t}\n};\nvar geometry_type = {\n\ttype: \"enum\",\n\tvalues: {\n\t\tPoint: {\n\t\t},\n\t\tLineString: {\n\t\t},\n\t\tPolygon: {\n\t\t}\n\t}\n};\nvar function_stop = {\n\ttype: \"array\",\n\tminimum: 0,\n\tmaximum: 24,\n\tvalue: [\n\t\t\"number\",\n\t\t\"color\"\n\t],\n\tlength: 2\n};\nvar expression$1 = {\n\ttype: \"array\",\n\tvalue: \"expression_name\",\n\tminimum: 1\n};\nvar light = {\n\tanchor: {\n\t\ttype: \"enum\",\n\t\t\"default\": \"viewport\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t},\n\tposition: {\n\t\ttype: \"array\",\n\t\t\"default\": [\n\t\t\t1.15,\n\t\t\t210,\n\t\t\t30\n\t\t],\n\t\tlength: 3,\n\t\tvalue: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t},\n\tcolor: {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\tintensity: {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t}\n};\nvar sky = {\n\t\"sky-color\": {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#88C6FC\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"horizon-color\": {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"fog-color\": {\n\t\ttype: \"color\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": \"#ffffff\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"fog-ground-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"horizon-fog-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.8,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"sky-horizon-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.8,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t},\n\t\"atmosphere-blend\": {\n\t\ttype: \"number\",\n\t\t\"property-type\": \"data-constant\",\n\t\t\"default\": 0.8,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\ttransition: true\n\t}\n};\nvar terrain = {\n\tsource: {\n\t\ttype: \"string\",\n\t\trequired: true\n\t},\n\texaggeration: {\n\t\ttype: \"number\",\n\t\tminimum: 0,\n\t\t\"default\": 1\n\t}\n};\nvar projection = {\n\ttype: {\n\t\ttype: \"projectionDefinition\",\n\t\t\"default\": \"mercator\",\n\t\t\"property-type\": \"data-constant\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t}\n\t}\n};\nvar paint = [\n\t\"paint_fill\",\n\t\"paint_line\",\n\t\"paint_circle\",\n\t\"paint_heatmap\",\n\t\"paint_fill-extrusion\",\n\t\"paint_symbol\",\n\t\"paint_raster\",\n\t\"paint_hillshade\",\n\t\"paint_color-relief\",\n\t\"paint_background\"\n];\nvar paint_fill = {\n\t\"fill-antialias\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-outline-color\": {\n\t\ttype: \"color\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"fill-antialias\": true\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t}\n};\nvar paint_line = {\n\t\"line-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"line-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"line-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-gap-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-offset\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"line-dasharray\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"line widths\",\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"line-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"line-gradient\": {\n\t\ttype: \"color\",\n\t\ttransition: false,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"line-dasharray\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"!\": \"line-pattern\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tsource: \"geojson\",\n\t\t\t\thas: {\n\t\t\t\t\tlineMetrics: true\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"line-progress\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t}\n};\nvar paint_circle = {\n\t\"circle-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 5,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"circle-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-scale\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-pitch-alignment\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"circle-stroke-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"circle-stroke-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t}\n};\nvar paint_heatmap = {\n\t\"heatmap-radius\": {\n\t\ttype: \"number\",\n\t\t\"default\": 30,\n\t\tminimum: 1,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-weight\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"heatmap-intensity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"heatmap-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": [\n\t\t\t\"interpolate\",\n\t\t\t[\n\t\t\t\t\"linear\"\n\t\t\t],\n\t\t\t[\n\t\t\t\t\"heatmap-density\"\n\t\t\t],\n\t\t\t0,\n\t\t\t\"rgba(0, 0, 255, 0)\",\n\t\t\t0.1,\n\t\t\t\"royalblue\",\n\t\t\t0.3,\n\t\t\t\"cyan\",\n\t\t\t0.5,\n\t\t\t\"lime\",\n\t\t\t0.7,\n\t\t\t\"yellow\",\n\t\t\t1,\n\t\t\t\"red\"\n\t\t],\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"heatmap-density\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t},\n\t\"heatmap-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_symbol = {\n\t\"icon-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"icon-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"icon-image\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"icon-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"icon-image\",\n\t\t\t\"icon-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\toverridable: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"rgba(0, 0, 0, 0)\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-width\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-halo-blur\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"text-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\trequires: [\n\t\t\t\"text-field\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"text-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"text-field\",\n\t\t\t\"text-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_raster = {\n\t\"raster-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-hue-rotate\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tperiod: 360,\n\t\ttransition: true,\n\t\tunits: \"degrees\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-min\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-brightness-max\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-saturation\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-contrast\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: -1,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-resampling\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tlinear: {\n\t\t\t},\n\t\t\tnearest: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"linear\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"raster-fade-duration\": {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\ttransition: false,\n\t\tunits: \"milliseconds\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_hillshade = {\n\t\"hillshade-illumination-direction\": {\n\t\ttype: \"numberArray\",\n\t\t\"default\": 335,\n\t\tminimum: 0,\n\t\tmaximum: 359,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-illumination-altitude\": {\n\t\ttype: \"numberArray\",\n\t\t\"default\": 45,\n\t\tminimum: 0,\n\t\tmaximum: 90,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-illumination-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"viewport\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-exaggeration\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0.5,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-shadow-color\": {\n\t\ttype: \"colorArray\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-highlight-color\": {\n\t\ttype: \"colorArray\",\n\t\t\"default\": \"#FFFFFF\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-accent-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"hillshade-method\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tstandard: {\n\t\t\t},\n\t\t\tbasic: {\n\t\t\t},\n\t\t\tcombined: {\n\t\t\t},\n\t\t\tigor: {\n\t\t\t},\n\t\t\tmultidirectional: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"standard\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar paint_background = {\n\t\"background-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"background-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"background-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded\"\n\t},\n\t\"background-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n};\nvar transition = {\n\tduration: {\n\t\ttype: \"number\",\n\t\t\"default\": 300,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\"\n\t},\n\tdelay: {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"milliseconds\"\n\t}\n};\nvar promoteId = {\n\t\"*\": {\n\t\ttype: \"string\"\n\t}\n};\nvar interpolation = {\n\ttype: \"array\",\n\tvalue: \"interpolation_name\",\n\tminimum: 1\n};\nvar interpolation_name = {\n\ttype: \"enum\",\n\tvalues: {\n\t\tlinear: {\n\t\t\tsyntax: {\n\t\t\t\toverloads: [\n\t\t\t\t\t{\n\t\t\t\t\t\tparameters: [\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"output-type\": \"interpolation\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tparameters: [\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\texponential: {\n\t\t\tsyntax: {\n\t\t\t\toverloads: [\n\t\t\t\t\t{\n\t\t\t\t\t\tparameters: [\n\t\t\t\t\t\t\t\"base\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"output-type\": \"interpolation\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tparameters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"base\",\n\t\t\t\t\t\ttype: \"number literal\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t\"cubic-bezier\": {\n\t\t\tsyntax: {\n\t\t\t\toverloads: [\n\t\t\t\t\t{\n\t\t\t\t\t\tparameters: [\n\t\t\t\t\t\t\t\"x1\",\n\t\t\t\t\t\t\t\"y1\",\n\t\t\t\t\t\t\t\"x2\",\n\t\t\t\t\t\t\t\"y2\"\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"output-type\": \"interpolation\"\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\tparameters: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"x1\",\n\t\t\t\t\t\ttype: \"number literal\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"y1\",\n\t\t\t\t\t\ttype: \"number literal\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"x2\",\n\t\t\t\t\t\ttype: \"number literal\"\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"y2\",\n\t\t\t\t\t\ttype: \"number literal\"\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t}\n};\nvar v8Spec = {\n\t$version: $version,\n\t$root: $root,\n\tsources: sources,\n\tsource: source,\n\tsource_vector: source_vector,\n\tsource_raster: source_raster,\n\tsource_raster_dem: source_raster_dem,\n\tsource_geojson: source_geojson,\n\tsource_video: source_video,\n\tsource_image: source_image,\n\tlayer: layer,\n\tlayout: layout,\n\tlayout_background: layout_background,\n\tlayout_fill: layout_fill,\n\tlayout_circle: layout_circle,\n\tlayout_heatmap: layout_heatmap,\n\t\"layout_fill-extrusion\": {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n},\n\tlayout_line: layout_line,\n\tlayout_symbol: layout_symbol,\n\tlayout_raster: layout_raster,\n\tlayout_hillshade: layout_hillshade,\n\t\"layout_color-relief\": {\n\tvisibility: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tvisible: {\n\t\t\t},\n\t\t\tnone: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"visible\",\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"global-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n},\n\tfilter: filter,\n\tfilter_operator: filter_operator,\n\tgeometry_type: geometry_type,\n\t\"function\": {\n\texpression: {\n\t\ttype: \"expression\"\n\t},\n\tstops: {\n\t\ttype: \"array\",\n\t\tvalue: \"function_stop\"\n\t},\n\tbase: {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0\n\t},\n\tproperty: {\n\t\ttype: \"string\",\n\t\t\"default\": \"$zoom\"\n\t},\n\ttype: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tidentity: {\n\t\t\t},\n\t\t\texponential: {\n\t\t\t},\n\t\t\tinterval: {\n\t\t\t},\n\t\t\tcategorical: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"exponential\"\n\t},\n\tcolorSpace: {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\trgb: {\n\t\t\t},\n\t\t\tlab: {\n\t\t\t},\n\t\t\thcl: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"rgb\"\n\t},\n\t\"default\": {\n\t\ttype: \"*\",\n\t\trequired: false\n\t}\n},\n\tfunction_stop: function_stop,\n\texpression: expression$1,\n\tlight: light,\n\tsky: sky,\n\tterrain: terrain,\n\tprojection: projection,\n\tpaint: paint,\n\tpaint_fill: paint_fill,\n\t\"paint_fill-extrusion\": {\n\t\"fill-extrusion-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-color\": {\n\t\ttype: \"color\",\n\t\t\"default\": \"#000000\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t{\n\t\t\t\t\"!\": \"fill-extrusion-pattern\"\n\t\t\t}\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-translate\": {\n\t\ttype: \"array\",\n\t\tvalue: \"number\",\n\t\tlength: 2,\n\t\t\"default\": [\n\t\t\t0,\n\t\t\t0\n\t\t],\n\t\ttransition: true,\n\t\tunits: \"pixels\",\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-translate-anchor\": {\n\t\ttype: \"enum\",\n\t\tvalues: {\n\t\t\tmap: {\n\t\t\t},\n\t\t\tviewport: {\n\t\t\t}\n\t\t},\n\t\t\"default\": \"map\",\n\t\trequires: [\n\t\t\t\"fill-extrusion-translate\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"fill-extrusion-pattern\": {\n\t\ttype: \"resolvedImage\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"cross-faded-data-driven\"\n\t},\n\t\"fill-extrusion-height\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-base\": {\n\t\ttype: \"number\",\n\t\t\"default\": 0,\n\t\tminimum: 0,\n\t\tunits: \"meters\",\n\t\ttransition: true,\n\t\trequires: [\n\t\t\t\"fill-extrusion-height\"\n\t\t],\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\",\n\t\t\t\t\"feature\",\n\t\t\t\t\"feature-state\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-driven\"\n\t},\n\t\"fill-extrusion-vertical-gradient\": {\n\t\ttype: \"boolean\",\n\t\t\"default\": true,\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: false,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t}\n},\n\tpaint_line: paint_line,\n\tpaint_circle: paint_circle,\n\tpaint_heatmap: paint_heatmap,\n\tpaint_symbol: paint_symbol,\n\tpaint_raster: paint_raster,\n\tpaint_hillshade: paint_hillshade,\n\t\"paint_color-relief\": {\n\t\"color-relief-opacity\": {\n\t\ttype: \"number\",\n\t\t\"default\": 1,\n\t\tminimum: 0,\n\t\tmaximum: 1,\n\t\ttransition: true,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"zoom\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"data-constant\"\n\t},\n\t\"color-relief-color\": {\n\t\ttype: \"color\",\n\t\ttransition: false,\n\t\texpression: {\n\t\t\tinterpolated: true,\n\t\t\tparameters: [\n\t\t\t\t\"elevation\"\n\t\t\t]\n\t\t},\n\t\t\"property-type\": \"color-ramp\"\n\t}\n},\n\tpaint_background: paint_background,\n\ttransition: transition,\n\t\"property-type\": {\n\t\"data-driven\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"cross-faded\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"cross-faded-data-driven\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"color-ramp\": {\n\t\ttype: \"property-type\"\n\t},\n\t\"data-constant\": {\n\t\ttype: \"property-type\"\n\t},\n\tconstant: {\n\t\ttype: \"property-type\"\n\t}\n},\n\tpromoteId: promoteId,\n\tinterpolation: interpolation,\n\tinterpolation_name: interpolation_name\n};\n\nconst refProperties = [\n 'type',\n 'source',\n 'source-layer',\n 'minzoom',\n 'maxzoom',\n 'filter',\n 'layout'\n];\n\nfunction deref(layer, parent) {\n const result = {};\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n refProperties.forEach((k) => {\n if (k in parent) {\n result[k] = parent[k];\n }\n });\n return result;\n}\n/**\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @param layers - array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property\n * @returns a new array where such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n */\nfunction derefLayers(layers) {\n layers = layers.slice();\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[layers[i].ref]);\n }\n }\n return layers;\n}\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a, b) {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i]))\n return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object'))\n return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length)\n return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key]))\n return false;\n }\n return true;\n }\n return a === b;\n}\n\n/**\n * The main reason for this method is to allow type check when adding a command to the array.\n * @param commands - The commands array to add to\n * @param command - The command to add\n */\nfunction addCommand(commands, command) {\n commands.push(command);\n}\nfunction addSource(sourceId, after, commands) {\n addCommand(commands, { command: 'addSource', args: [sourceId, after[sourceId]] });\n}\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n addCommand(commands, { command: 'removeSource', args: [sourceId] });\n sourcesRemoved[sourceId] = true;\n}\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!Object.prototype.hasOwnProperty.call(before[sourceId], prop))\n continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!Object.prototype.hasOwnProperty.call(after[sourceId], prop))\n continue;\n if (prop !== 'data' && !deepEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\nfunction diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n let sourceId;\n // look for sources to remove\n for (sourceId in before) {\n if (!Object.prototype.hasOwnProperty.call(before, sourceId))\n continue;\n if (!Object.prototype.hasOwnProperty.call(after, sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n // look for sources to add/update\n for (sourceId in after) {\n if (!Object.prototype.hasOwnProperty.call(after, sourceId))\n continue;\n if (!Object.prototype.hasOwnProperty.call(before, sourceId)) {\n addSource(sourceId, after, commands);\n }\n else if (!deepEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' &&\n after[sourceId].type === 'geojson' &&\n canUpdateGeoJSON(before, after, sourceId)) {\n addCommand(commands, {\n command: 'setGeoJSONSourceData',\n args: [sourceId, after[sourceId].data]\n });\n }\n else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n for (const prop in before) {\n if (!Object.prototype.hasOwnProperty.call(before, prop))\n continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({ command, args: [layerId, prop, after[prop], klass] });\n }\n }\n for (const prop in after) {\n if (!Object.prototype.hasOwnProperty.call(after, prop) ||\n Object.prototype.hasOwnProperty.call(before, prop))\n continue;\n if (!deepEqual(before[prop], after[prop])) {\n commands.push({ command, args: [layerId, prop, after[prop], klass] });\n }\n }\n}\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\nfunction diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n let layerId;\n let beforeLayer;\n let afterLayer;\n let insertBeforeLayerId;\n let prop;\n // remove layers\n for (let i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!Object.prototype.hasOwnProperty.call(afterIndex, layerId)) {\n addCommand(commands, { command: 'removeLayer', args: [layerId] });\n tracker.splice(tracker.indexOf(layerId, d), 1);\n }\n else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n // add/reorder layers\n for (let i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n if (tracker[tracker.length - 1 - i] === layerId)\n continue;\n if (Object.prototype.hasOwnProperty.call(beforeIndex, layerId)) {\n // remove the layer before we insert at the correct position\n addCommand(commands, { command: 'removeLayer', args: [layerId] });\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n }\n else {\n // limit where in tracker we need to look for a match\n d++;\n }\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n addCommand(commands, {\n command: 'addLayer',\n args: [afterIndex[layerId], insertBeforeLayerId]\n });\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n // update layers\n for (let i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n // no need to update if previously added (new or moved)\n if (clean[layerId] || deepEqual(beforeLayer, afterLayer))\n continue;\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!deepEqual(beforeLayer.source, afterLayer.source) ||\n !deepEqual(beforeLayer['source-layer'], afterLayer['source-layer']) ||\n !deepEqual(beforeLayer.type, afterLayer.type)) {\n addCommand(commands, { command: 'removeLayer', args: [layerId] });\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n addCommand(commands, { command: 'addLayer', args: [afterLayer, insertBeforeLayerId] });\n continue;\n }\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, 'setLayoutProperty');\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, 'setPaintProperty');\n if (!deepEqual(beforeLayer.filter, afterLayer.filter)) {\n addCommand(commands, { command: 'setFilter', args: [layerId, afterLayer.filter] });\n }\n if (!deepEqual(beforeLayer.minzoom, afterLayer.minzoom) ||\n !deepEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n addCommand(commands, {\n command: 'setLayerZoomRange',\n args: [layerId, afterLayer.minzoom, afterLayer.maxzoom]\n });\n }\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!Object.prototype.hasOwnProperty.call(beforeLayer, prop))\n continue;\n if (prop === 'layout' ||\n prop === 'paint' ||\n prop === 'filter' ||\n prop === 'metadata' ||\n prop === 'minzoom' ||\n prop === 'maxzoom')\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), 'setPaintProperty');\n }\n else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n addCommand(commands, {\n command: 'setLayerProperty',\n args: [layerId, prop, afterLayer[prop]]\n });\n }\n }\n for (prop in afterLayer) {\n if (!Object.prototype.hasOwnProperty.call(afterLayer, prop) ||\n Object.prototype.hasOwnProperty.call(beforeLayer, prop))\n continue;\n if (prop === 'layout' ||\n prop === 'paint' ||\n prop === 'filter' ||\n prop === 'metadata' ||\n prop === 'minzoom' ||\n prop === 'maxzoom')\n continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), 'setPaintProperty');\n }\n else if (!deepEqual(beforeLayer[prop], afterLayer[prop])) {\n addCommand(commands, {\n command: 'setLayerProperty',\n args: [layerId, prop, afterLayer[prop]]\n });\n }\n }\n }\n}\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the maplibre-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nfunction diff(before, after) {\n if (!before)\n return [{ command: 'setStyle', args: [after] }];\n let commands = [];\n try {\n // Handle changes to top-level properties\n if (!deepEqual(before.version, after.version)) {\n return [{ command: 'setStyle', args: [after] }];\n }\n if (!deepEqual(before.center, after.center)) {\n commands.push({ command: 'setCenter', args: [after.center] });\n }\n if (!deepEqual(before.state, after.state)) {\n commands.push({ command: 'setGlobalState', args: [after.state] });\n }\n if (!deepEqual(before.centerAltitude, after.centerAltitude)) {\n commands.push({ command: 'setCenterAltitude', args: [after.centerAltitude] });\n }\n if (!deepEqual(before.zoom, after.zoom)) {\n commands.push({ command: 'setZoom', args: [after.zoom] });\n }\n if (!deepEqual(before.bearing, after.bearing)) {\n commands.push({ command: 'setBearing', args: [after.bearing] });\n }\n if (!deepEqual(before.pitch, after.pitch)) {\n commands.push({ command: 'setPitch', args: [after.pitch] });\n }\n if (!deepEqual(before.roll, after.roll)) {\n commands.push({ command: 'setRoll', args: [after.roll] });\n }\n if (!deepEqual(before.sprite, after.sprite)) {\n commands.push({ command: 'setSprite', args: [after.sprite] });\n }\n if (!deepEqual(before.glyphs, after.glyphs)) {\n commands.push({ command: 'setGlyphs', args: [after.glyphs] });\n }\n if (!deepEqual(before.transition, after.transition)) {\n commands.push({ command: 'setTransition', args: [after.transition] });\n }\n if (!deepEqual(before.light, after.light)) {\n commands.push({ command: 'setLight', args: [after.light] });\n }\n if (!deepEqual(before.terrain, after.terrain)) {\n commands.push({ command: 'setTerrain', args: [after.terrain] });\n }\n if (!deepEqual(before.sky, after.sky)) {\n commands.push({ command: 'setSky', args: [after.sky] });\n }\n if (!deepEqual(before.projection, after.projection)) {\n commands.push({ command: 'setProjection', args: [after.projection] });\n }\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved = {};\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if ('source' in layer && sourcesRemoved[layer.source]) {\n commands.push({ command: 'removeLayer', args: [layer.id] });\n }\n else {\n beforeLayers.push(layer);\n }\n });\n }\n commands = commands.concat(removeOrAddSourceCommands);\n // Handle changes to `layers`\n diffLayers(beforeLayers, after.layers, commands);\n }\n catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{ command: 'setStyle', args: [after] }];\n }\n return commands;\n}\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\nclass ValidationError {\n constructor(key, value, message, identifier) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier)\n this.identifier = identifier;\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\nclass ParsingError {\n constructor(error) {\n this.error = error;\n this.message = error.message;\n const match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n }\n}\n\nfunction extendBy(output, ...inputs) {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n\nclass ExpressionParsingError extends Error {\n constructor(key, message) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n constructor(parent, bindings = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n concat(bindings) {\n return new Scope(this, bindings);\n }\n get(name) {\n if (this.bindings[name]) {\n return this.bindings[name];\n }\n if (this.parent) {\n return this.parent.get(name);\n }\n throw new Error(`${name} not found in scope.`);\n }\n has(name) {\n if (this.bindings[name])\n return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nconst NullType = { kind: 'null' };\nconst NumberType = { kind: 'number' };\nconst StringType = { kind: 'string' };\nconst BooleanType = { kind: 'boolean' };\nconst ColorType = { kind: 'color' };\nconst ProjectionDefinitionType = {\n kind: 'projectionDefinition'\n};\nconst ObjectType = { kind: 'object' };\nconst ValueType = { kind: 'value' };\nconst ErrorType = { kind: 'error' };\nconst CollatorType = { kind: 'collator' };\nconst FormattedType = { kind: 'formatted' };\nconst PaddingType = { kind: 'padding' };\nconst ColorArrayType = { kind: 'colorArray' };\nconst NumberArrayType = { kind: 'numberArray' };\nconst ResolvedImageType = { kind: 'resolvedImage' };\nconst VariableAnchorOffsetCollectionType = {\n kind: 'variableAnchorOffsetCollection'\n};\nfunction array(itemType, N) {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\nfunction typeToString(type) {\n if (type.kind === 'array') {\n const itemType = typeToString(type.itemType);\n return typeof type.N === 'number'\n ? `array<${itemType}, ${type.N}>`\n : type.itemType.kind === 'value'\n ? 'array'\n : `array<${itemType}>`;\n }\n else {\n return type.kind;\n }\n}\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ProjectionDefinitionType,\n FormattedType,\n ObjectType,\n array(ValueType),\n PaddingType,\n NumberArrayType,\n ColorArrayType,\n ResolvedImageType,\n VariableAnchorOffsetCollectionType\n];\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nfunction checkSubtype(expected, t) {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n }\n else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') ||\n !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n }\n else if (expected.kind === t.kind) {\n return null;\n }\n else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n return `Expected ${typeToString(expected)} but found ${typeToString(t)} instead.`;\n}\nfunction isValidType(provided, allowedTypes) {\n return allowedTypes.some((t) => t.kind === provided.kind);\n}\nfunction isValidNativeType(provided, allowedTypes) {\n return allowedTypes.some((t) => {\n if (t === 'null') {\n return provided === null;\n }\n else if (t === 'array') {\n return Array.isArray(provided);\n }\n else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n }\n else {\n return t === typeof provided;\n }\n });\n}\n/**\n * Verify whether the specified type is of the same type as the specified sample.\n *\n * @param provided Type to verify\n * @param sample Sample type to reference\n * @returns `true` if both objects are of the same type, `false` otherwise\n * @example basic types\n * if (verifyType(outputType, ValueType)) {\n * // type narrowed to:\n * outputType.kind; // 'value'\n * }\n * @example array types\n * if (verifyType(outputType, array(NumberType))) {\n * // type narrowed to:\n * outputType.kind; // 'array'\n * outputType.itemType; // NumberTypeT\n * outputType.itemType.kind; // 'number'\n * }\n */\nfunction verifyType(provided, sample) {\n if (provided.kind === 'array' && sample.kind === 'array') {\n return provided.itemType.kind === sample.itemType.kind && typeof provided.N === 'number';\n }\n return provided.kind === sample.kind;\n}\n\n// See https://observablehq.com/@mbostock/lab-and-rgb\nconst Xn = 0.96422, Yn = 1, Zn = 0.82521, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad = Math.PI / 180, rad2deg = 180 / Math.PI;\nfunction constrainAngle(angle) {\n angle = angle % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction rgbToLab([r, g, b, alpha]) {\n r = rgb2xyz(r);\n g = rgb2xyz(g);\n b = rgb2xyz(b);\n let x, z;\n const y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn);\n if (r === g && g === b) {\n x = z = y;\n }\n else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n const l = 116 * y - 16;\n return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z), alpha];\n}\nfunction rgb2xyz(x) {\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction labToRgb([l, a, b, alpha]) {\n let y = (l + 16) / 116, x = isNaN(a) ? y : y + a / 500, z = isNaN(b) ? y : y - b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return [\n xyz2rgb(3.1338561 * x - 1.6168667 * y - 0.4906146 * z), // D50 -> sRGB\n xyz2rgb(-0.9787684 * x + 1.9161415 * y + 0.033454 * z),\n xyz2rgb(0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n alpha\n ];\n}\nfunction xyz2rgb(x) {\n x = x <= 0.00304 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;\n return x < 0 ? 0 : x > 1 ? 1 : x; // clip to 0..1 range\n}\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction rgbToHcl(rgbColor) {\n const [l, a, b, alpha] = rgbToLab(rgbColor);\n const c = Math.sqrt(a * a + b * b);\n const h = Math.round(c * 10000) ? constrainAngle(Math.atan2(b, a) * rad2deg) : NaN;\n return [h, c, l, alpha];\n}\nfunction hclToRgb([h, c, l, alpha]) {\n h = isNaN(h) ? 0 : h * deg2rad;\n return labToRgb([l, Math.cos(h) * c, Math.sin(h) * c, alpha]);\n}\n// https://drafts.csswg.org/css-color-4/#hsl-to-rgb\nfunction hslToRgb([h, s, l, alpha]) {\n h = constrainAngle(h);\n s /= 100;\n l /= 100;\n function f(n) {\n const k = (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n }\n return [f(0), f(8), f(4), alpha];\n}\n\n// polyfill for Object.hasOwn\nconst hasOwnProperty = Object.hasOwn ||\n function hasOwnProperty(object, key) {\n return Object.prototype.hasOwnProperty.call(object, key);\n };\nfunction getOwn(object, key) {\n return hasOwnProperty(object, key) ? object[key] : undefined;\n}\n\n/**\n * CSS color parser compliant with CSS Color 4 Specification.\n * Supports: named colors, `transparent` keyword, all rgb hex notations,\n * rgb(), rgba(), hsl() and hsla() functions.\n * Does not round the parsed values to integers from the range 0..255.\n *\n * Syntax:\n *\n * <alpha-value> = <number> | <percentage>\n * <hue> = <number> | <angle>\n *\n * rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? )\n * rgb() = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )\n *\n * hsl() = hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? )\n * hsl() = hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )\n *\n * Caveats:\n * - <angle> - <number> with optional `deg` suffix; `grad`, `rad`, `turn` are not supported\n * - `none` keyword is not supported\n * - comments inside rgb()/hsl() are not supported\n * - legacy color syntax rgba() is supported with an identical grammar and behavior to rgb()\n * - legacy color syntax hsla() is supported with an identical grammar and behavior to hsl()\n *\n * @param input CSS color string to parse.\n * @returns Color in sRGB color space, with `red`, `green`, `blue`\n * and `alpha` channels normalized to the range 0..1,\n * or `undefined` if the input is not a valid color string.\n */\nfunction parseCssColor(input) {\n input = input.toLowerCase().trim();\n if (input === 'transparent') {\n return [0, 0, 0, 0];\n }\n // 'white', 'black', 'blue'\n const namedColorsMatch = getOwn(namedColors, input);\n if (namedColorsMatch) {\n const [r, g, b] = namedColorsMatch;\n return [r / 255, g / 255, b / 255, 1];\n }\n // #f0c, #f0cf, #ff00cc, #ff00ccff\n if (input.startsWith('#')) {\n const hexRegexp = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/;\n if (hexRegexp.test(input)) {\n const step = input.length < 6 ? 1 : 2;\n let i = 1;\n return [\n parseHex(input.slice(i, (i += step))),\n parseHex(input.slice(i, (i += step))),\n parseHex(input.slice(i, (i += step))),\n parseHex(input.slice(i, i + step) || 'ff')\n ];\n }\n }\n // rgb(128 0 0), rgb(50% 0% 0%), rgba(255,0,255,0.6), rgb(255 0 255 / 60%), rgb(100% 0% 100% /.6)\n if (input.startsWith('rgb')) {\n const rgbRegExp = /^rgba?\\(\\s*([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)(%)?(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/;\n const rgbMatch = input.match(rgbRegExp);\n if (rgbMatch) {\n const [_, // eslint-disable-line @typescript-eslint/no-unused-vars\n r, // <numeric>\n rp, // % (optional)\n f1, // , (optional)\n g, // <numeric>\n gp, // % (optional)\n f2, // , (optional)\n b, // <numeric>\n bp, // % (optional)\n f3, // ,|/ (optional)\n a, // <numeric> (optional)\n ap // % (optional)\n ] = rgbMatch;\n const argFormat = [f1 || ' ', f2 || ' ', f3].join('');\n if (argFormat === ' ' ||\n argFormat === ' /' ||\n argFormat === ',,' ||\n argFormat === ',,,') {\n const valFormat = [rp, gp, bp].join('');\n const maxValue = valFormat === '%%%' ? 100 : valFormat === '' ? 255 : 0;\n if (maxValue) {\n const rgba = [\n clamp(+r / maxValue, 0, 1),\n clamp(+g / maxValue, 0, 1),\n clamp(+b / maxValue, 0, 1),\n a ? parseAlpha(+a, ap) : 1\n ];\n if (validateNumbers(rgba)) {\n return rgba;\n }\n // invalid numbers\n }\n // values must be all numbers or all percentages\n }\n return; // comma optional syntax requires no commas at all\n }\n }\n // hsl(120 50% 80%), hsla(120deg,50%,80%,.9), hsl(12e1 50% 80% / 90%)\n const hslRegExp = /^hsla?\\(\\s*([\\de.+-]+)(?:deg)?(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s+|\\s*(,)\\s*)([\\de.+-]+)%(?:\\s*([,\\/])\\s*([\\de.+-]+)(%)?)?\\s*\\)$/;\n const hslMatch = input.match(hslRegExp);\n if (hslMatch) {\n const [_, // eslint-disable-line @typescript-eslint/no-unused-vars\n h, // <numeric>\n f1, // , (optional)\n s, // <numeric>\n f2, // , (optional)\n l, // <numeric>\n f3, // ,|/ (optional)\n a, // <numeric> (optional)\n ap // % (optional)\n ] = hslMatch;\n const argFormat = [f1 || ' ', f2 || ' ', f3].join('');\n if (argFormat === ' ' ||\n argFormat === ' /' ||\n argFormat === ',,' ||\n argFormat === ',,,') {\n const hsla = [\n +h,\n clamp(+s, 0, 100),\n clamp(+l, 0, 100),\n a ? parseAlpha(+a, ap) : 1\n ];\n if (validateNumbers(hsla)) {\n return hslToRgb(hsla);\n }\n // invalid numbers\n }\n // comma optional syntax requires no commas at all\n }\n}\nfunction parseHex(hex) {\n return parseInt(hex.padEnd(2, hex), 16) / 255;\n}\nfunction parseAlpha(a, asPercentage) {\n return clamp(asPercentage ? a / 100 : a, 0, 1);\n}\nfunction clamp(n, min, max) {\n return Math.min(Math.max(min, n), max);\n}\n/**\n * The regular expression for numeric values is not super specific, and it may\n * happen that it will accept a value that is not a valid number. In order to\n * detect and eliminate such values this function exists.\n *\n * @param array Array of uncertain numbers.\n * @returns `true` if the specified array contains only valid numbers, `false` otherwise.\n */\nfunction validateNumbers(array) {\n return !array.some(Number.isNaN);\n}\n/**\n * To generate:\n * - visit {@link https://www.w3.org/TR/css-color-4/#named-colors}\n * - run in the console:\n * @example\n * copy(`{\\n${[...document.querySelector('.named-color-table tbody').children].map((tr) => `${tr.cells[2].textContent.trim()}: [${tr.cells[4].textContent.trim().split(/\\s+/).join(', ')}],`).join('\\n')}\\n}`);\n */\nconst namedColors = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\n\nfunction interpolateNumber(from, to, t) {\n return from + t * (to - from);\n}\nfunction interpolateArray(from, to, t) {\n return from.map((d, i) => {\n return interpolateNumber(d, to[i], t);\n });\n}\n\n/**\n * Checks whether the specified color space is one of the supported interpolation color spaces.\n *\n * @param colorSpace Color space key to verify.\n * @returns `true` if the specified color space is one of the supported\n * interpolation color spaces, `false` otherwise\n */\nfunction isSupportedInterpolationColorSpace(colorSpace) {\n return colorSpace === 'rgb' || colorSpace === 'hcl' || colorSpace === 'lab';\n}\n/**\n * Color representation used by WebGL.\n * Defined in sRGB color space and pre-blended with alpha.\n * @private\n */\nclass Color {\n /**\n * @param r Red component premultiplied by `alpha` 0..1\n * @param g Green component premultiplied by `alpha` 0..1\n * @param b Blue component premultiplied by `alpha` 0..1\n * @param [alpha=1] Alpha component 0..1\n * @param [premultiplied=true] Whether the `r`, `g` and `b` values have already\n * been multiplied by alpha. If `true` nothing happens if `false` then they will\n * be multiplied automatically.\n */\n constructor(r, g, b, alpha = 1, premultiplied = true) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = alpha;\n if (!premultiplied) {\n this.r *= alpha;\n this.g *= alpha;\n this.b *= alpha;\n if (!alpha) {\n // alpha = 0 erases completely rgb channels. This behavior is not desirable\n // if this particular color is later used in color interpolation.\n // Because of that, a reference to original color is saved.\n this.overwriteGetter('rgb', [r, g, b, alpha]);\n }\n }\n }\n /**\n * Parses CSS color strings and converts colors to sRGB color space if needed.\n * Officially supported color formats:\n * - keyword, e.g. 'aquamarine' or 'steelblue'\n * - hex (with 3, 4, 6 or 8 digits), e.g. '#f0f' or '#e9bebea9'\n * - rgb and rgba, e.g. 'rgb(0,240,120)' or 'rgba(0%,94%,47%,0.1)' or 'rgb(0 240 120 / .3)'\n * - hsl and hsla, e.g. 'hsl(0,0%,83%)' or 'hsla(0,0%,83%,.5)' or 'hsl(0 0% 83% / 20%)'\n *\n * @param input CSS color string to parse.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input) {\n // in zoom-and-property function input could be an instance of Color class\n if (input instanceof Color) {\n return input;\n }\n if (typeof input !== 'string') {\n return;\n }\n const rgba = parseCssColor(input);\n if (rgba) {\n return new Color(...rgba, false);\n }\n }\n /**\n * Used in color interpolation and by 'to-rgba' expression.\n *\n * @returns Gien color, with reversed alpha blending, in sRGB color space.\n */\n get rgb() {\n const { r, g, b, a } = this;\n const f = a || Infinity; // reverse alpha blending factor\n return this.overwriteGetter('rgb', [r / f, g / f, b / f, a]);\n }\n /**\n * Used in color interpolation.\n *\n * @returns Gien color, with reversed alpha blending, in HCL color space.\n */\n get hcl() {\n return this.overwriteGetter('hcl', rgbToHcl(this.rgb));\n }\n /**\n * Used in color interpolation.\n *\n * @returns Gien color, with reversed alpha blending, in LAB color space.\n */\n get lab() {\n return this.overwriteGetter('lab', rgbToLab(this.rgb));\n }\n /**\n * Lazy getter pattern. When getter is called for the first time lazy value\n * is calculated and then overwrites getter function in given object instance.\n *\n * @example:\n * const redColor = Color.parse('red');\n * let x = redColor.hcl; // this will invoke `get hcl()`, which will calculate\n * // the value of red in HCL space and invoke this `overwriteGetter` function\n * // which in turn will set a field with a key 'hcl' in the `redColor` object.\n * // In other words it will override `get hcl()` from its `Color` prototype\n * // with its own property: hcl = [calculated red value in hcl].\n * let y = redColor.hcl; // next call will no longer invoke getter but simply\n * // return the previously calculated value\n * x === y; // true - `x` is exactly the same object as `y`\n *\n * @param getterKey Getter key\n * @param lazyValue Lazily calculated value to be memoized by current instance\n * @private\n */\n overwriteGetter(getterKey, lazyValue) {\n Object.defineProperty(this, getterKey, { value: lazyValue });\n return lazyValue;\n }\n /**\n * Used by 'to-string' expression.\n *\n * @returns Serialized color in format `rgba(r,g,b,a)`\n * where r,g,b are numbers within 0..255 and alpha is number within 1..0\n *\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString() {\n const [r, g, b, a] = this.rgb;\n return `rgba(${[r, g, b].map((n) => Math.round(n * 255)).join(',')},${a})`;\n }\n static interpolate(from, to, t, spaceKey = 'rgb') {\n switch (spaceKey) {\n case 'rgb': {\n const [r, g, b, alpha] = interpolateArray(from.rgb, to.rgb, t);\n return new Color(r, g, b, alpha, false);\n }\n case 'hcl': {\n const [hue0, chroma0, light0, alphaF] = from.hcl;\n const [hue1, chroma1, light1, alphaT] = to.hcl;\n // https://github.com/gka/chroma.js/blob/cd1b3c0926c7a85cbdc3b1453b3a94006de91a92/src/interpolator/_hsx.js\n let hue, chroma;\n if (!isNaN(hue0) && !isNaN(hue1)) {\n let dh = hue1 - hue0;\n if (hue1 > hue0 && dh > 180) {\n dh -= 360;\n }\n else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh += 360;\n }\n hue = hue0 + t * dh;\n }\n else if (!isNaN(hue0)) {\n hue = hue0;\n if (light1 === 1 || light1 === 0)\n chroma = chroma0;\n }\n else if (!isNaN(hue1)) {\n hue = hue1;\n if (light0 === 1 || light0 === 0)\n chroma = chroma1;\n }\n else {\n hue = NaN;\n }\n const [r, g, b, alpha] = hclToRgb([\n hue,\n chroma !== null && chroma !== void 0 ? chroma : interpolateNumber(chroma0, chroma1, t),\n interpolateNumber(light0, light1, t),\n interpolateNumber(alphaF, alphaT, t)\n ]);\n return new Color(r, g, b, alpha, false);\n }\n case 'lab': {\n const [r, g, b, alpha] = labToRgb(interpolateArray(from.lab, to.lab, t));\n return new Color(r, g, b, alpha, false);\n }\n }\n }\n}\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\n\nclass Collator {\n constructor(caseSensitive, diacriticSensitive, locale) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [], {\n sensitivity: this.sensitivity,\n usage: 'search'\n });\n }\n compare(lhs, rhs) {\n return this.collator.compare(lhs, rhs);\n }\n resolvedLocale() {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;\n }\n}\n\nconst VERTICAL_ALIGN_OPTIONS = ['bottom', 'center', 'top'];\nclass FormattedSection {\n constructor(text, image, scale, fontStack, textColor, verticalAlign) {\n this.text = text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n this.verticalAlign = verticalAlign;\n }\n}\nclass Formatted {\n constructor(sections) {\n this.sections = sections;\n }\n static fromString(unformatted) {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null, null)]);\n }\n isEmpty() {\n if (this.sections.length === 0)\n return true;\n return !this.sections.some((section) => section.text.length !== 0 || (section.image && section.image.name.length !== 0));\n }\n static factory(text) {\n if (text instanceof Formatted) {\n return text;\n }\n else {\n return Formatted.fromString(text);\n }\n }\n toString() {\n if (this.sections.length === 0)\n return '';\n return this.sections.map((section) => section.text).join('');\n }\n}\n\n/**\n * A set of four numbers representing padding around a box. Create instances from\n * bare arrays or numeric values using the static method `Padding.parse`.\n * @private\n */\nclass Padding {\n constructor(values) {\n this.values = values.slice();\n }\n /**\n * Numeric padding values\n * @param input A padding value\n * @returns A `Padding` instance, or `undefined` if the input is not a valid padding value.\n */\n static parse(input) {\n if (input instanceof Padding) {\n return input;\n }\n // Backwards compatibility: bare number is treated the same as array with single value.\n // Padding applies to all four sides.\n if (typeof input === 'number') {\n return new Padding([input, input, input, input]);\n }\n if (!Array.isArray(input)) {\n return undefined;\n }\n if (input.length < 1 || input.length > 4) {\n return undefined;\n }\n for (const val of input) {\n if (typeof val !== 'number') {\n return undefined;\n }\n }\n // Expand shortcut properties into explicit 4-sided values\n switch (input.length) {\n case 1:\n input = [input[0], input[0], input[0], input[0]];\n break;\n case 2:\n input = [input[0], input[1], input[0], input[1]];\n break;\n case 3:\n input = [input[0], input[1], input[2], input[1]];\n break;\n }\n return new Padding(input);\n }\n toString() {\n return JSON.stringify(this.values);\n }\n static interpolate(from, to, t) {\n return new Padding(interpolateArray(from.values, to.values, t));\n }\n}\n\n/**\n * An array of numbers. Create instances from\n * bare arrays or numeric values using the static method `NumberArray.parse`.\n * @private\n */\nclass NumberArray {\n constructor(values) {\n this.values = values.slice();\n }\n /**\n * Numeric NumberArray values\n * @param input A NumberArray value\n * @returns A `NumberArray` instance, or `undefined` if the input is not a valid NumberArray value.\n */\n static parse(input) {\n if (input instanceof NumberArray) {\n return input;\n }\n // Backwards compatibility (e.g. hillshade-illumination-direction): bare number is treated the same as array with single value.\n if (typeof input === 'number') {\n return new NumberArray([input]);\n }\n if (!Array.isArray(input)) {\n return undefined;\n }\n for (const val of input) {\n if (typeof val !== 'number') {\n return undefined;\n }\n }\n return new NumberArray(input);\n }\n toString() {\n return JSON.stringify(this.values);\n }\n static interpolate(from, to, t) {\n return new NumberArray(interpolateArray(from.values, to.values, t));\n }\n}\n\n/**\n * An array of colors. Create instances from\n * bare arrays or strings using the static method `ColorArray.parse`.\n * @private\n */\nclass ColorArray {\n constructor(values) {\n this.values = values.slice();\n }\n /**\n * ColorArray values\n * @param input A ColorArray value\n * @returns A `ColorArray` instance, or `undefined` if the input is not a valid ColorArray value.\n */\n static parse(input) {\n if (input instanceof ColorArray) {\n return input;\n }\n // Backwards compatibility (e.g. hillshade-shadow-color): bare Color is treated the same as array with single value.\n if (typeof input === 'string') {\n const parsed_val = Color.parse(input);\n if (!parsed_val) {\n return undefined;\n }\n return new ColorArray([parsed_val]);\n }\n if (!Array.isArray(input)) {\n return undefined;\n }\n const colors = [];\n for (const val of input) {\n if (typeof val !== 'string') {\n return undefined;\n }\n const parsed_val = Color.parse(val);\n if (!parsed_val) {\n return undefined;\n }\n colors.push(parsed_val);\n }\n return new ColorArray(colors);\n }\n toString() {\n return JSON.stringify(this.values);\n }\n static interpolate(from, to, t, spaceKey = 'rgb') {\n const colors = [];\n if (from.values.length != to.values.length) {\n throw new Error(`colorArray: Arrays have mismatched length (${from.values.length} vs. ${to.values.length}), cannot interpolate.`);\n }\n for (let i = 0; i < from.values.length; i++) {\n colors.push(Color.interpolate(from.values[i], to.values[i], t, spaceKey));\n }\n return new ColorArray(colors);\n }\n}\n\nclass RuntimeError extends Error {\n constructor(message) {\n super(message);\n this.name = 'RuntimeError';\n }\n toJSON() {\n return this.message;\n }\n}\n\n/** Set of valid anchor positions, as a set for validation */\nconst anchors = new Set([\n 'center',\n 'left',\n 'right',\n 'top',\n 'bottom',\n 'top-left',\n 'top-right',\n 'bottom-left',\n 'bottom-right'\n]);\n/**\n * Utility class to assist managing values for text-variable-anchor-offset property. Create instances from\n * bare arrays using the static method `VariableAnchorOffsetCollection.parse`.\n * @private\n */\nclass VariableAnchorOffsetCollection {\n constructor(values) {\n this.values = values.slice();\n }\n static parse(input) {\n if (input instanceof VariableAnchorOffsetCollection) {\n return input;\n }\n if (!Array.isArray(input) || input.length < 1 || input.length % 2 !== 0) {\n return undefined;\n }\n for (let i = 0; i < input.length; i += 2) {\n // Elements in even positions should be anchor positions; Elements in odd positions should be offset values\n const anchorValue = input[i];\n const offsetValue = input[i + 1];\n if (typeof anchorValue !== 'string' || !anchors.has(anchorValue)) {\n return undefined;\n }\n if (!Array.isArray(offsetValue) ||\n offsetValue.length !== 2 ||\n typeof offsetValue[0] !== 'number' ||\n typeof offsetValue[1] !== 'number') {\n return undefined;\n }\n }\n return new VariableAnchorOffsetCollection(input);\n }\n toString() {\n return JSON.stringify(this.values);\n }\n static interpolate(from, to, t) {\n const fromValues = from.values;\n const toValues = to.values;\n if (fromValues.length !== toValues.length) {\n throw new RuntimeError(`Cannot interpolate values of different length. from: ${from.toString()}, to: ${to.toString()}`);\n }\n const output = [];\n for (let i = 0; i < fromValues.length; i += 2) {\n // Anchor entries must match\n if (fromValues[i] !== toValues[i]) {\n throw new RuntimeError(`Cannot interpolate values containing mismatched anchors. from[${i}]: ${fromValues[i]}, to[${i}]: ${toValues[i]}`);\n }\n output.push(fromValues[i]);\n // Interpolate the offset values for each anchor\n const [fx, fy] = fromValues[i + 1];\n const [tx, ty] = toValues[i + 1];\n output.push([interpolateNumber(fx, tx, t), interpolateNumber(fy, ty, t)]);\n }\n return new VariableAnchorOffsetCollection(output);\n }\n}\n\nclass ResolvedImage {\n constructor(options) {\n this.name = options.name;\n this.available = options.available;\n }\n toString() {\n return this.name;\n }\n static fromString(name) {\n if (!name)\n return null; // treat empty values as no image\n return new ResolvedImage({ name, available: false });\n }\n}\n\nclass ProjectionDefinition {\n constructor(from, to, transition) {\n this.from = from;\n this.to = to;\n this.transition = transition;\n }\n static interpolate(from, to, t) {\n return new ProjectionDefinition(from, to, t);\n }\n static parse(input) {\n if (input instanceof ProjectionDefinition) {\n return input;\n }\n if (Array.isArray(input) &&\n input.length === 3 &&\n typeof input[0] === 'string' &&\n typeof input[1] === 'string' &&\n typeof input[2] === 'number') {\n return new ProjectionDefinition(input[0], input[1], input[2]);\n }\n if (typeof input === 'object' &&\n typeof input.from === 'string' &&\n typeof input.to === 'string' &&\n typeof input.transition === 'number') {\n return new ProjectionDefinition(input.from, input.to, input.transition);\n }\n if (typeof input === 'string') {\n return new ProjectionDefinition(input, input, 1);\n }\n return undefined;\n }\n}\n\nfunction validateRGBA(r, g, b, a) {\n if (!(typeof r === 'number' &&\n r >= 0 &&\n r <= 255 &&\n typeof g === 'number' &&\n g >= 0 &&\n g <= 255 &&\n typeof b === 'number' &&\n b >= 0 &&\n b <= 255)) {\n const value = typeof a === 'number' ? [r, g, b, a] : [r, g, b];\n return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n if (!(typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1))) {\n return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n }\n return null;\n}\nfunction isValue(mixed) {\n if (mixed === null ||\n typeof mixed === 'string' ||\n typeof mixed === 'boolean' ||\n typeof mixed === 'number' ||\n mixed instanceof ProjectionDefinition ||\n mixed instanceof Color ||\n mixed instanceof Collator ||\n mixed instanceof Formatted ||\n mixed instanceof Padding ||\n mixed instanceof NumberArray ||\n mixed instanceof ColorArray ||\n mixed instanceof VariableAnchorOffsetCollection ||\n mixed instanceof ResolvedImage) {\n return true;\n }\n else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n }\n else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n }\n else {\n return false;\n }\n}\nfunction typeOf(value) {\n if (value === null) {\n return NullType;\n }\n else if (typeof value === 'string') {\n return StringType;\n }\n else if (typeof value === 'boolean') {\n return BooleanType;\n }\n else if (typeof value === 'number') {\n return NumberType;\n }\n else if (value instanceof Color) {\n return ColorType;\n }\n else if (value instanceof ProjectionDefinition) {\n return ProjectionDefinitionType;\n }\n else if (value instanceof Collator) {\n return CollatorType;\n }\n else if (value instanceof Formatted) {\n return FormattedType;\n }\n else if (value instanceof Padding) {\n return PaddingType;\n }\n else if (value instanceof NumberArray) {\n return NumberArrayType;\n }\n else if (value instanceof ColorArray) {\n return ColorArrayType;\n }\n else if (value instanceof VariableAnchorOffsetCollection) {\n return VariableAnchorOffsetCollectionType;\n }\n else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n }\n else if (Array.isArray(value)) {\n const length = value.length;\n let itemType;\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n }\n else if (itemType === t) {\n continue;\n }\n else {\n itemType = ValueType;\n break;\n }\n }\n return array(itemType || ValueType, length);\n }\n else {\n return ObjectType;\n }\n}\nfunction valueToString(value) {\n const type = typeof value;\n if (value === null) {\n return '';\n }\n else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n }\n else if (value instanceof Color ||\n value instanceof ProjectionDefinition ||\n value instanceof Formatted ||\n value instanceof Padding ||\n value instanceof NumberArray ||\n value instanceof ColorArray ||\n value instanceof VariableAnchorOffsetCollection ||\n value instanceof ResolvedImage) {\n return value.toString();\n }\n else {\n return JSON.stringify(value);\n }\n}\n\nclass Literal {\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (!isValue(args[1]))\n return context.error('invalid value');\n const value = args[1];\n let type = typeOf(value);\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)) {\n type = expected;\n }\n return new Literal(type, value);\n }\n evaluate() {\n return this.value;\n }\n eachChild() { }\n outputDefined() {\n return true;\n }\n}\n\nconst types$1 = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\nclass Assertion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error('Expected at least one argument.');\n let i = 1;\n let type;\n const name = args[0];\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types$1) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types$1[type];\n i++;\n }\n else {\n itemType = ValueType;\n }\n let N;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' || args[2] < 0 || args[2] !== Math.floor(args[2]))) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n type = array(itemType, N);\n }\n else {\n if (!types$1[name])\n throw new Error(`Types doesn't contain name = ${name}`);\n type = types$1[name];\n }\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Assertion(type, parsed);\n }\n evaluate(ctx) {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n }\n else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${typeToString(this.type)}, but found ${typeToString(typeOf(value))} instead.`);\n }\n }\n throw new Error();\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every((arg) => arg.outputDefined());\n }\n}\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error('Expected at least one argument.');\n const name = args[0];\n if (!types[name])\n throw new Error(`Can't parse ${name} as it is not part of the known types`);\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error('Expected one argument.');\n const type = types[name];\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Coercion(type, parsed);\n }\n evaluate(ctx) {\n switch (this.type.kind) {\n case 'boolean':\n return Boolean(this.args[0].evaluate(ctx));\n case 'color': {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n }\n else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c)\n return c;\n }\n else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rgba value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n }\n else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n }\n }\n }\n throw new RuntimeError(error ||\n `Could not parse color from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'padding': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n const pad = Padding.parse(input);\n if (pad) {\n return pad;\n }\n }\n throw new RuntimeError(`Could not parse padding from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'numberArray': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n const val = NumberArray.parse(input);\n if (val) {\n return val;\n }\n }\n throw new RuntimeError(`Could not parse numberArray from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'colorArray': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n const val = ColorArray.parse(input);\n if (val) {\n return val;\n }\n }\n throw new RuntimeError(`Could not parse colorArray from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'variableAnchorOffsetCollection': {\n let input;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n const coll = VariableAnchorOffsetCollection.parse(input);\n if (coll) {\n return coll;\n }\n }\n throw new RuntimeError(`Could not parse variableAnchorOffsetCollection from value '${typeof input === 'string' ? input : JSON.stringify(input)}'`);\n }\n case 'number': {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null)\n return 0;\n const num = Number(value);\n if (isNaN(num))\n continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n }\n case 'formatted':\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n return Formatted.fromString(valueToString(this.args[0].evaluate(ctx)));\n case 'resolvedImage':\n return ResolvedImage.fromString(valueToString(this.args[0].evaluate(ctx)));\n case 'projectionDefinition':\n return this.args[0].evaluate(ctx);\n default:\n return valueToString(this.args[0].evaluate(ctx));\n }\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every((arg) => arg.outputDefined());\n }\n}\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\nclass EvaluationContext {\n constructor() {\n this.globals = null;\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = new Map();\n this.availableImages = null;\n this.canonical = null;\n }\n id() {\n return this.feature && 'id' in this.feature ? this.feature.id : null;\n }\n geometryType() {\n return this.feature\n ? typeof this.feature.type === 'number'\n ? geometryTypes[this.feature.type]\n : this.feature.type\n : null;\n }\n geometry() {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n canonicalID() {\n return this.canonical;\n }\n properties() {\n return (this.feature && this.feature.properties) || {};\n }\n parseColor(input) {\n let cached = this._parseColorCache.get(input);\n if (!cached) {\n cached = Color.parse(input);\n this._parseColorCache.set(input, cached);\n }\n return cached;\n }\n}\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n constructor(registry, isConstantFunc, path = [], expectedType, scope = new Scope(), errors = []) {\n this.registry = registry;\n this.path = path;\n this.key = path.map((part) => `[${part}]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n this._isConstant = isConstantFunc;\n }\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(expr, index, expectedType, bindings, options = {}) {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n _parse(expr, options) {\n if (expr === null ||\n typeof expr === 'string' ||\n typeof expr === 'boolean' ||\n typeof expr === 'number') {\n expr = ['literal', expr];\n }\n function annotate(parsed, type, typeAnnotation) {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n }\n else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n }\n else {\n return parsed;\n }\n }\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error('Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].');\n }\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${typeof op} instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed)\n return null;\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' ||\n expected.kind === 'number' ||\n expected.kind === 'boolean' ||\n expected.kind === 'object' ||\n expected.kind === 'array') &&\n actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n }\n else if (('projectionDefinition' === expected.kind &&\n ['string', 'array'].includes(actual.kind)) ||\n (['color', 'formatted', 'resolvedImage'].includes(expected.kind) &&\n ['value', 'string'].includes(actual.kind)) ||\n (['padding', 'numberArray'].includes(expected.kind) &&\n ['value', 'number', 'array'].includes(actual.kind)) ||\n ('colorArray' === expected.kind &&\n ['value', 'string', 'array'].includes(actual.kind)) ||\n ('variableAnchorOffsetCollection' === expected.kind &&\n ['value', 'array'].includes(actual.kind))) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n }\n else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result. Expressions that expect an image should\n // not be resolved here so we can later get the available images.\n if (!(parsed instanceof Literal) &&\n parsed.type.kind !== 'resolvedImage' &&\n this._isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n }\n catch (e) {\n this.error(e.message);\n return null;\n }\n }\n return parsed;\n }\n return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n else if (typeof expr === 'undefined') {\n return this.error(\"'undefined' value invalid. Use null instead.\");\n }\n else if (typeof expr === 'object') {\n return this.error('Bare objects invalid. Use [\"literal\", {...}] instead.');\n }\n else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`);\n }\n }\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(index, expectedType, bindings) {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(this.registry, this._isConstant, path, expectedType || null, scope, this.errors);\n }\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error, ...keys) {\n const key = `${this.key}${keys.map((k) => `[${k}]`).join('')}`;\n this.errors.push(new ExpressionParsingError(key, error));\n }\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n * @param expected The expected type\n * @param t The actual type\n * @returns null if `t` is a subtype of `expected`; otherwise returns an error message\n */\n checkSubtype(expected, t) {\n const error = checkSubtype(expected, t);\n if (error)\n this.error(error);\n return error;\n }\n}\n\nclass Let {\n constructor(bindings, result) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n evaluate(ctx) {\n return this.result.evaluate(ctx);\n }\n eachChild(fn) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n const bindings = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i);\n }\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(\"Variable names must contain only alphanumeric characters or '_'.\", i);\n }\n const value = context.parse(args[i + 1], i + 1);\n if (!value)\n return null;\n bindings.push([name, value]);\n }\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result)\n return null;\n return new Let(bindings, result);\n }\n outputDefined() {\n return this.result.outputDefined();\n }\n}\n\nclass Var {\n constructor(name, boundExpression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n static parse(args, context) {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(\"'var' expression requires exactly one string literal argument.\");\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n return new Var(name, context.scope.get(name));\n }\n evaluate(ctx) {\n return this.boundExpression.evaluate(ctx);\n }\n eachChild() { }\n outputDefined() {\n return false;\n }\n}\n\nclass At {\n constructor(type, index, input) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n if (!index || !input)\n return null;\n const t = input.type;\n return new At(t.itemType, index, input);\n }\n evaluate(ctx) {\n const index = this.index.evaluate(ctx);\n const array = this.input.evaluate(ctx);\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n }\n return array[index];\n }\n eachChild(fn) {\n fn(this.index);\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n}\n\nclass In {\n constructor(needle, haystack) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n static parse(args, context) {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(needle.type)} instead`);\n }\n return new In(needle, haystack);\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (!haystack)\n return false;\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(typeOf(needle))} instead.`);\n }\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${typeToString(typeOf(haystack))} instead.`);\n }\n return haystack.indexOf(needle) >= 0;\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n }\n outputDefined() {\n return true;\n }\n}\n\nclass IndexOf {\n constructor(needle, haystack, fromIndex) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 2 or 3 arguments, but found ${args.length - 1} instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(needle.type)} instead`);\n }\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex)\n return null;\n return new IndexOf(needle, haystack, fromIndex);\n }\n else {\n return new IndexOf(needle, haystack);\n }\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${typeToString(typeOf(needle))} instead.`);\n }\n let fromIndex;\n if (this.fromIndex) {\n fromIndex = this.fromIndex.evaluate(ctx);\n }\n if (isValidNativeType(haystack, ['string'])) {\n const rawIndex = haystack.indexOf(needle, fromIndex);\n if (rawIndex === -1) {\n return -1;\n }\n else {\n // The index may be affected by surrogate pairs, so get the length of the preceding substring.\n return [...haystack.slice(0, rawIndex)].length;\n }\n }\n else if (isValidNativeType(haystack, ['array'])) {\n return haystack.indexOf(needle, fromIndex);\n }\n else {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${typeToString(typeOf(haystack))} instead.`);\n }\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n outputDefined() {\n return false;\n }\n}\n\nclass Match {\n constructor(inputType, outputType, input, cases, outputs, otherwise) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 1)\n return context.error('Expected an even number of arguments.');\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error('Branch labels must be numbers or strings.');\n }\n else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);\n }\n else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error('Numeric branch labels must be integer values.');\n }\n else if (!inputType) {\n inputType = typeOf(label);\n }\n else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n cases[String(label)] = outputs.length;\n }\n const result = context.parse(value, i, outputType);\n if (!result)\n return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n const input = context.parse(args[1], 1, ValueType);\n if (!input)\n return null;\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n if (input.type.kind !== 'value' &&\n context.concat(1).checkSubtype(inputType, input.type)) {\n return null;\n }\n return new Match(inputType, outputType, input, cases, outputs, otherwise);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n outputDefined() {\n return this.outputs.every((out) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n}\n\nclass Case {\n constructor(type, branches, otherwise) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 0)\n return context.error('Expected an odd number of arguments.');\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test)\n return null;\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result)\n return null;\n branches.push([test, result]);\n outputType = outputType || result.type;\n }\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n if (!outputType)\n throw new Error(\"Can't infer output type\");\n return new Case(outputType, branches, otherwise);\n }\n evaluate(ctx) {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n eachChild(fn) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n outputDefined() {\n return (this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined());\n }\n}\n\nclass Slice {\n constructor(type, input, beginIndex, endIndex) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 2 or 3 arguments, but found ${args.length - 1} instead.`);\n }\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n if (!input || !beginIndex)\n return null;\n if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) {\n return context.error(`Expected first argument to be of type array or string, but found ${typeToString(input.type)} instead`);\n }\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex)\n return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n }\n else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const beginIndex = this.beginIndex.evaluate(ctx);\n let endIndex;\n if (this.endIndex) {\n endIndex = this.endIndex.evaluate(ctx);\n }\n if (isValidNativeType(input, ['string'])) {\n // Indices may be affected by surrogate pairs.\n return [...input].slice(beginIndex, endIndex).join('');\n }\n else if (isValidNativeType(input, ['array'])) {\n return input.slice(beginIndex, endIndex);\n }\n else {\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${typeToString(typeOf(input))} instead.`);\n }\n }\n eachChild(fn) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n outputDefined() {\n return false;\n }\n}\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nfunction findStopLessThanOrEqualTo(stops, input) {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) {\n // Search complete\n return currentIndex;\n }\n lowerIndex = currentIndex + 1;\n }\n else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n }\n else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n return 0;\n}\n\nclass Step {\n constructor(type, input, stops) {\n this.type = type;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static parse(args, context) {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.');\n }\n const input = context.parse(args[1], 1, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n const labelKey = i;\n const valueKey = i + 1;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n return new Step(outputType, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every((out) => out.outputDefined());\n }\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar unitbezier;\nvar hasRequiredUnitbezier;\n\nfunction requireUnitbezier () {\n\tif (hasRequiredUnitbezier) return unitbezier;\n\thasRequiredUnitbezier = 1;\n\n\tunitbezier = UnitBezier;\n\n\tfunction UnitBezier(p1x, p1y, p2x, p2y) {\n\t // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n\t this.cx = 3.0 * p1x;\n\t this.bx = 3.0 * (p2x - p1x) - this.cx;\n\t this.ax = 1.0 - this.cx - this.bx;\n\n\t this.cy = 3.0 * p1y;\n\t this.by = 3.0 * (p2y - p1y) - this.cy;\n\t this.ay = 1.0 - this.cy - this.by;\n\n\t this.p1x = p1x;\n\t this.p1y = p1y;\n\t this.p2x = p2x;\n\t this.p2y = p2y;\n\t}\n\n\tUnitBezier.prototype = {\n\t sampleCurveX: function (t) {\n\t // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n\t return ((this.ax * t + this.bx) * t + this.cx) * t;\n\t },\n\n\t sampleCurveY: function (t) {\n\t return ((this.ay * t + this.by) * t + this.cy) * t;\n\t },\n\n\t sampleCurveDerivativeX: function (t) {\n\t return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n\t },\n\n\t solveCurveX: function (x, epsilon) {\n\t if (epsilon === undefined) epsilon = 1e-6;\n\n\t if (x < 0.0) return 0.0;\n\t if (x > 1.0) return 1.0;\n\n\t var t = x;\n\n\t // First try a few iterations of Newton's method - normally very fast.\n\t for (var i = 0; i < 8; i++) {\n\t var x2 = this.sampleCurveX(t) - x;\n\t if (Math.abs(x2) < epsilon) return t;\n\n\t var d2 = this.sampleCurveDerivativeX(t);\n\t if (Math.abs(d2) < 1e-6) break;\n\n\t t = t - x2 / d2;\n\t }\n\n\t // Fall back to the bisection method for reliability.\n\t var t0 = 0.0;\n\t var t1 = 1.0;\n\t t = x;\n\n\t for (i = 0; i < 20; i++) {\n\t x2 = this.sampleCurveX(t);\n\t if (Math.abs(x2 - x) < epsilon) break;\n\n\t if (x > x2) {\n\t t0 = t;\n\t } else {\n\t t1 = t;\n\t }\n\n\t t = (t1 - t0) * 0.5 + t0;\n\t }\n\n\t return t;\n\t },\n\n\t solve: function (x, epsilon) {\n\t return this.sampleCurveY(this.solveCurveX(x, epsilon));\n\t }\n\t};\n\treturn unitbezier;\n}\n\nvar unitbezierExports = requireUnitbezier();\nvar UnitBezier = /*@__PURE__*/getDefaultExportFromCjs(unitbezierExports);\n\nclass Interpolate {\n constructor(type, operator, interpolation, input, stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static interpolationFactor(interpolation, input, lower, upper) {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n }\n else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n }\n else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new UnitBezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n static parse(args, context) {\n let [operator, interpolation, input, ...rest] = args;\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error('Expected an interpolation type expression.', 1);\n }\n if (interpolation[0] === 'linear') {\n interpolation = { name: 'linear' };\n }\n else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error('Exponential interpolation requires a numeric base.', 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n }\n else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (controlPoints.length !== 4 ||\n controlPoints.some((t) => typeof t !== 'number' || t < 0 || t > 1)) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: controlPoints\n };\n }\n else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n }\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error('Expected an even number of arguments.');\n }\n input = context.parse(input, 2, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if ((operator === 'interpolate-hcl' || operator === 'interpolate-lab') &&\n context.expectedType != ColorArrayType) {\n outputType = ColorType;\n }\n else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n const labelKey = i + 3;\n const valueKey = i + 4;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n if (!verifyType(outputType, NumberType) &&\n !verifyType(outputType, ProjectionDefinitionType) &&\n !verifyType(outputType, ColorType) &&\n !verifyType(outputType, PaddingType) &&\n !verifyType(outputType, NumberArrayType) &&\n !verifyType(outputType, ColorArrayType) &&\n !verifyType(outputType, VariableAnchorOffsetCollectionType) &&\n !verifyType(outputType, array(NumberType))) {\n return context.error(`Type ${typeToString(outputType)} is not interpolatable.`);\n }\n return new Interpolate(outputType, operator, interpolation, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n switch (this.operator) {\n case 'interpolate':\n switch (this.type.kind) {\n case 'number':\n return interpolateNumber(outputLower, outputUpper, t);\n case 'color':\n return Color.interpolate(outputLower, outputUpper, t);\n case 'padding':\n return Padding.interpolate(outputLower, outputUpper, t);\n case 'colorArray':\n return ColorArray.interpolate(outputLower, outputUpper, t);\n case 'numberArray':\n return NumberArray.interpolate(outputLower, outputUpper, t);\n case 'variableAnchorOffsetCollection':\n return VariableAnchorOffsetCollection.interpolate(outputLower, outputUpper, t);\n case 'array':\n return interpolateArray(outputLower, outputUpper, t);\n case 'projectionDefinition':\n return ProjectionDefinition.interpolate(outputLower, outputUpper, t);\n }\n case 'interpolate-hcl':\n switch (this.type.kind) {\n case 'color':\n return Color.interpolate(outputLower, outputUpper, t, 'hcl');\n case 'colorArray':\n return ColorArray.interpolate(outputLower, outputUpper, t, 'hcl');\n }\n case 'interpolate-lab':\n switch (this.type.kind) {\n case 'color':\n return Color.interpolate(outputLower, outputUpper, t, 'lab');\n case 'colorArray':\n return ColorArray.interpolate(outputLower, outputUpper, t, 'lab');\n }\n }\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every((out) => out.outputDefined());\n }\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n }\n else if (base === 1) {\n return progress / difference;\n }\n else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\nconst interpolateFactory = {\n color: Color.interpolate,\n number: interpolateNumber,\n padding: Padding.interpolate,\n numberArray: NumberArray.interpolate,\n colorArray: ColorArray.interpolate,\n variableAnchorOffsetCollection: VariableAnchorOffsetCollection.interpolate,\n array: interpolateArray\n};\n\nclass Coalesce {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error('Expected at least one argument.');\n }\n let outputType = null;\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, {\n typeAnnotation: 'omit'\n });\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n if (!outputType)\n throw new Error('No output type');\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType && parsedArgs.some((arg) => checkSubtype(expectedType, arg.type));\n return needsAnnotation\n ? new Coalesce(ValueType, parsedArgs)\n : new Coalesce(outputType, parsedArgs);\n }\n evaluate(ctx) {\n let result = null;\n let argCount = 0;\n let requestedImageName;\n for (const arg of this.args) {\n argCount++;\n result = arg.evaluate(ctx);\n // we need to keep track of the first requested image in a coalesce statement\n // if coalesce can't find a valid image, we return the first image name so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n if (!requestedImageName) {\n requestedImageName = result.name;\n }\n result = null;\n if (argCount === this.args.length) {\n result = requestedImageName;\n }\n }\n if (result !== null)\n break;\n }\n return result;\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every((arg) => arg.outputDefined());\n }\n}\n\nfunction isComparableType(op, type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return (type.kind === 'boolean' ||\n type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'null' ||\n type.kind === 'value');\n }\n else {\n // ordering operator\n return type.kind === 'string' || type.kind === 'number' || type.kind === 'value';\n }\n}\nfunction eq(ctx, a, b) {\n return a === b;\n}\nfunction neq(ctx, a, b) {\n return a !== b;\n}\nfunction lt(ctx, a, b) {\n return a < b;\n}\nfunction gt(ctx, a, b) {\n return a > b;\n}\nfunction lteq(ctx, a, b) {\n return a <= b;\n}\nfunction gteq(ctx, a, b) {\n return a >= b;\n}\nfunction eqCollate(ctx, a, b, c) {\n return c.compare(a, b) === 0;\n}\nfunction neqCollate(ctx, a, b, c) {\n return !eqCollate(ctx, a, b, c);\n}\nfunction ltCollate(ctx, a, b, c) {\n return c.compare(a, b) < 0;\n}\nfunction gtCollate(ctx, a, b, c) {\n return c.compare(a, b) > 0;\n}\nfunction lteqCollate(ctx, a, b, c) {\n return c.compare(a, b) <= 0;\n}\nfunction gteqCollate(ctx, a, b, c) {\n return c.compare(a, b) >= 0;\n}\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op, compareBasic, compareWithCollator) {\n const isOrderComparison = op !== '==' && op !== '!=';\n return class Comparison {\n constructor(lhs, rhs, collator) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n static parse(args, context) {\n if (args.length !== 3 && args.length !== 4)\n return context.error('Expected two or three arguments.');\n const op = args[0];\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs)\n return null;\n if (!isComparableType(op, lhs.type)) {\n return context\n .concat(1)\n .error(`\"${op}\" comparisons are not supported for type '${typeToString(lhs.type)}'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs)\n return null;\n if (!isComparableType(op, rhs.type)) {\n return context\n .concat(2)\n .error(`\"${op}\" comparisons are not supported for type '${typeToString(rhs.type)}'.`);\n }\n if (lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value') {\n return context.error(`Cannot compare types '${typeToString(lhs.type)}' and '${typeToString(rhs.type)}'.`);\n }\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion(rhs.type, [lhs]);\n }\n else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n let collator = null;\n if (args.length === 4) {\n if (lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value') {\n return context.error('Cannot use collator to compare non-string types.');\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator)\n return null;\n }\n return new Comparison(lhs, rhs, collator);\n }\n evaluate(ctx) {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n }\n }\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n return this.collator\n ? compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx))\n : compareBasic(ctx, lhs, rhs);\n }\n eachChild(fn) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n outputDefined() {\n return true;\n }\n };\n}\nconst Equals = makeComparison('==', eq, eqCollate);\nconst NotEquals = makeComparison('!=', neq, neqCollate);\nconst LessThan = makeComparison('<', lt, ltCollate);\nconst GreaterThan = makeComparison('>', gt, gtCollate);\nconst LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nconst GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\nclass CollatorExpression {\n constructor(caseSensitive, diacriticSensitive, locale) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error('Expected one argument.');\n const options = args[1];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error('Collator options argument must be an object.');\n const caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive)\n return null;\n const diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive)\n return null;\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n evaluate(ctx) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n eachChild(fn) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n outputDefined() {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possible outputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possible outputs anyway, so we can get away with leaving this false for now.\n return false;\n }\n}\n\nclass NumberFormat {\n constructor(number, locale, currency, minFractionDigits, maxFractionDigits) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error('Expected two arguments.');\n const number = context.parse(args[1], 1, NumberType);\n if (!number)\n return null;\n const options = args[2];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error('NumberFormat options argument must be an object.');\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency)\n return null;\n }\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits)\n return null;\n }\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits)\n return null;\n }\n return new NumberFormat(number, locale, currency, minFractionDigits, maxFractionDigits);\n }\n evaluate(ctx) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n style: this.currency ? 'currency' : 'decimal',\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits\n ? this.minFractionDigits.evaluate(ctx)\n : undefined,\n maximumFractionDigits: this.maxFractionDigits\n ? this.maxFractionDigits.evaluate(ctx)\n : undefined\n }).format(this.number.evaluate(ctx));\n }\n eachChild(fn) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n outputDefined() {\n return false;\n }\n}\n\nclass FormatExpression {\n constructor(sections) {\n this.type = FormattedType;\n this.sections = sections;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error('Expected at least one argument.');\n }\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error('First argument must be an image or text section.');\n }\n const sections = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = args[i];\n if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale)\n return null;\n }\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array(StringType));\n if (!font)\n return null;\n }\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor)\n return null;\n }\n let verticalAlign = null;\n if (arg['vertical-align']) {\n if (typeof arg['vertical-align'] === 'string' &&\n !VERTICAL_ALIGN_OPTIONS.includes(arg['vertical-align'])) {\n return context.error(`'vertical-align' must be one of: 'bottom', 'center', 'top' but found '${arg['vertical-align']}' instead.`);\n }\n verticalAlign = context.parse(arg['vertical-align'], 1, StringType);\n if (!verticalAlign)\n return null;\n }\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n lastExpression.verticalAlign = verticalAlign;\n }\n else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content)\n return null;\n const kind = content.type.kind;\n if (kind !== 'string' &&\n kind !== 'value' &&\n kind !== 'null' &&\n kind !== 'resolvedImage')\n return context.error(\"Formatted text type must be 'string', 'value', 'image' or 'null'.\");\n nextTokenMayBeObject = true;\n sections.push({\n content,\n scale: null,\n font: null,\n textColor: null,\n verticalAlign: null\n });\n }\n }\n return new FormatExpression(sections);\n }\n evaluate(ctx) {\n const evaluateSection = (section) => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection('', evaluatedContent, null, null, null, section.verticalAlign ? section.verticalAlign.evaluate(ctx) : null);\n }\n return new FormattedSection(valueToString(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null, section.verticalAlign ? section.verticalAlign.evaluate(ctx) : null);\n };\n return new Formatted(this.sections.map(evaluateSection));\n }\n eachChild(fn) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n if (section.verticalAlign) {\n fn(section.verticalAlign);\n }\n }\n }\n outputDefined() {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n}\n\nclass ImageExpression {\n constructor(input) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2) {\n return context.error('Expected two arguments.');\n }\n const name = context.parse(args[1], 1, StringType);\n if (!name)\n return context.error('No image name provided.');\n return new ImageExpression(name);\n }\n evaluate(ctx) {\n const evaluatedImageName = this.input.evaluate(ctx);\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages)\n value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n return value;\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n}\n\nclass Length {\n constructor(input) {\n this.type = NumberType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n const input = context.parse(args[1], 1);\n if (!input)\n return null;\n if (input.type.kind !== 'array' &&\n input.type.kind !== 'string' &&\n input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${typeToString(input.type)} instead.`);\n return new Length(input);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n // The length may be affected by surrogate pairs.\n return [...input].length;\n }\n else if (Array.isArray(input)) {\n return input.length;\n }\n else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${typeToString(typeOf(input))} instead.`);\n }\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n}\n\nconst EXTENT = 8192;\nfunction getTileCoordinates(p, canonical) {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [Math.round(x * tilesAtZoom * EXTENT), Math.round(y * tilesAtZoom * EXTENT)];\n}\nfunction getLngLatFromTileCoord(coord, canonical) {\n const tilesAtZoom = Math.pow(2, canonical.z);\n const x = (coord[0] / EXTENT + canonical.x) / tilesAtZoom;\n const y = (coord[1] / EXTENT + canonical.y) / tilesAtZoom;\n return [lngFromMercatorXfromLng(x), latFromMercatorY(y)];\n}\nfunction mercatorXfromLng(lng) {\n return (180 + lng) / 360;\n}\nfunction lngFromMercatorXfromLng(mercatorX) {\n return mercatorX * 360 - 180;\n}\nfunction mercatorYfromLat(lat) {\n return (180 - (180 / Math.PI) * Math.log(Math.tan(Math.PI / 4 + (lat * Math.PI) / 360))) / 360;\n}\nfunction latFromMercatorY(mercatorY) {\n return (360 / Math.PI) * Math.atan(Math.exp(((180 - mercatorY * 360) * Math.PI) / 180)) - 90;\n}\nfunction updateBBox(bbox, coord) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\nfunction boxWithinBox(bbox1, bbox2) {\n if (bbox1[0] <= bbox2[0])\n return false;\n if (bbox1[2] >= bbox2[2])\n return false;\n if (bbox1[1] <= bbox2[1])\n return false;\n if (bbox1[3] >= bbox2[3])\n return false;\n return true;\n}\nfunction rayIntersect(p, p1, p2) {\n return (p1[1] > p[1] !== p2[1] > p[1] &&\n p[0] < ((p2[0] - p1[0]) * (p[1] - p1[1])) / (p2[1] - p1[1]) + p1[0]);\n}\nfunction pointOnBoundary(p, p1, p2) {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return x1 * y2 - x2 * y1 === 0 && x1 * x2 <= 0 && y1 * y2 <= 0;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction segmentIntersectSegment(a, b, c, d) {\n // check if two segments are parallel or not\n // precondition is end point a, b is inside polygon, if line a->b is\n // parallel to polygon edge c->d, then a->b won't intersect with c->d\n const vectorP = [b[0] - a[0], b[1] - a[1]];\n const vectorQ = [d[0] - c[0], d[1] - c[1]];\n if (perp(vectorQ, vectorP) === 0)\n return false;\n // If lines are intersecting with each other, the relative location should be:\n // a and b lie in different sides of segment c->d\n // c and d lie in different sides of segment a->b\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b))\n return true;\n return false;\n}\nfunction lineIntersectPolygon(p1, p2, polygon) {\n for (const ring of polygon) {\n // loop through every edge of the ring\n for (let j = 0; j < ring.length - 1; ++j) {\n if (segmentIntersectSegment(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings, trueIfOnBoundary = false) {\n let inside = false;\n for (const ring of rings) {\n for (let j = 0; j < ring.length - 1; j++) {\n if (pointOnBoundary(point, ring[j], ring[j + 1]))\n return trueIfOnBoundary;\n if (rayIntersect(point, ring[j], ring[j + 1]))\n inside = !inside;\n }\n }\n return inside;\n}\nfunction pointWithinPolygons(point, polygons) {\n for (const polygon of polygons) {\n if (pointWithinPolygon(point, polygon))\n return true;\n }\n return false;\n}\nfunction lineStringWithinPolygon(line, polygon) {\n // First, check if geometry points of line segments are all inside polygon\n for (const point of line) {\n if (!pointWithinPolygon(point, polygon)) {\n return false;\n }\n }\n // Second, check if there is line segment intersecting polygon edge\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\nfunction lineStringWithinPolygons(line, polygons) {\n for (const polygon of polygons) {\n if (lineStringWithinPolygon(line, polygon))\n return true;\n }\n return false;\n}\nfunction perp(v1, v2) {\n return v1[0] * v2[1] - v1[1] * v2[0];\n}\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1, p2, q1, q2) {\n // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = x1 * y3 - x3 * y1;\n const det2 = x2 * y3 - x3 * y2;\n if ((det1 > 0 && det2 < 0) || (det1 < 0 && det2 > 0))\n return true;\n return false;\n}\n\nfunction getTilePolygon(coordinates, bbox, canonical) {\n const polygon = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n return polygon;\n}\nfunction getTilePolygons(coordinates, bbox, canonical) {\n const polygons = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n return polygons;\n}\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = p[0] - polyBBox[0] > halfWorldSize\n ? -worldSize\n : polyBBox[0] - p[0] > halfWorldSize\n ? worldSize\n : 0;\n if (shift === 0) {\n shift =\n p[0] - polyBBox[2] > halfWorldSize\n ? -worldSize\n : polyBBox[2] - p[0] > halfWorldSize\n ? worldSize\n : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\nfunction resetBBox(bbox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints = [];\n for (const points of geometry) {\n for (const point of points) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n return tilePoints;\n}\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines = [];\n for (const line of geometry) {\n const tileLine = [];\n for (const point of line) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\nfunction pointsWithinPolygons(ctx, polygonGeometry) {\n const pointBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const canonical = ctx.canonicalID();\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons))\n return false;\n }\n }\n return true;\n}\nfunction linesWithinPolygons(ctx, polygonGeometry) {\n const lineBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const canonical = ctx.canonicalID();\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons))\n return false;\n }\n }\n return true;\n}\nclass Within {\n constructor(geojson, geometries) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (isValue(args[1])) {\n const geojson = args[1];\n if (geojson.type === 'FeatureCollection') {\n const polygonsCoords = [];\n for (const polygon of geojson.features) {\n const { type, coordinates } = polygon.geometry;\n if (type === 'Polygon') {\n polygonsCoords.push(coordinates);\n }\n if (type === 'MultiPolygon') {\n polygonsCoords.push(...coordinates);\n }\n }\n if (polygonsCoords.length) {\n const multipolygonWrapper = {\n type: 'MultiPolygon',\n coordinates: polygonsCoords\n };\n return new Within(geojson, multipolygonWrapper);\n }\n }\n else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n }\n else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error(\"'within' expression requires valid geojson object that contains polygon geometry type.\");\n }\n evaluate(ctx) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n }\n else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n eachChild() { }\n outputDefined() {\n return true;\n }\n}\n\nclass TinyQueue {\n constructor(data = [], compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0)) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this._up(this.length++);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n\n if (--this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let bestChild = (pos << 1) + 1; // initially it is the left child\n const right = bestChild + 1;\n\n if (right < this.length && compare(data[right], data[bestChild]) < 0) {\n bestChild = right;\n }\n if (compare(data[bestChild], item) >= 0) break;\n\n data[pos] = data[bestChild];\n pos = bestChild;\n }\n\n data[pos] = item;\n }\n}\n\n/**\n * Rearranges items so that all items in the [left, k] are the smallest.\n * The k-th element will have the (k - left + 1)-th smallest value in [left, right].\n *\n * @template T\n * @param {T[]} arr the array to partially sort (in place)\n * @param {number} k middle index for partial sorting (as defined above)\n * @param {number} [left=0] left index of the range to sort\n * @param {number} [right=arr.length-1] right index\n * @param {(a: T, b: T) => number} [compare = (a, b) => a - b] compare function\n */\nfunction quickselect(arr, k, left = 0, right = arr.length - 1, compare = defaultCompare) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(arr, k, newLeft, newRight, compare);\n }\n\n const t = arr[k];\n let i = left;\n /** @type {number} */\n let j = right;\n\n swap(arr, left, k);\n if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n while (i < j) {\n swap(arr, i, j);\n i++;\n j--;\n while (compare(arr[i], t) < 0) i++;\n while (compare(arr[j], t) > 0) j--;\n }\n\n if (compare(arr[left], t) === 0) swap(arr, left, j);\n else {\n j++;\n swap(arr, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\n/**\n * @template T\n * @param {T[]} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\n/**\n * @template T\n * @param {T} a\n * @param {T} b\n * @returns {number}\n */\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * Classifies an array of rings into polygons with outer rings and holes\n * @param rings - the rings to classify\n * @param maxRings - the maximum number of rings to include in a polygon, use 0 to include all rings\n * @returns an array of polygons with internal rings as holes\n */\nfunction classifyRings(rings, maxRings) {\n const len = rings.length;\n if (len <= 1)\n return [rings];\n const polygons = [];\n let polygon;\n let ccw;\n for (const ring of rings) {\n const area = calculateSignedArea(ring);\n if (area === 0)\n continue;\n ring.area = Math.abs(area);\n if (ccw === undefined)\n ccw = area < 0;\n if (ccw === area < 0) {\n if (polygon)\n polygons.push(polygon);\n polygon = [ring];\n }\n else {\n polygon.push(ring);\n }\n }\n if (polygon)\n polygons.push(polygon);\n // Earcut performance degrades with the # of rings in a polygon. For this\n // reason, we limit strip out all but the `maxRings` largest rings.\n if (maxRings > 1) {\n for (let j = 0; j < polygons.length; j++) {\n if (polygons[j].length <= maxRings)\n continue;\n quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);\n polygons[j] = polygons[j].slice(0, maxRings);\n }\n }\n return polygons;\n}\nfunction compareAreas(a, b) {\n return b.area - a.area;\n}\n/**\n * Returns the signed area for the polygon ring. Positive areas are exterior rings and\n * have a clockwise winding. Negative areas are interior rings and have a counter clockwise\n * ordering.\n *\n * @param ring - Exterior or interior ring\n * @returns Signed area\n */\nfunction calculateSignedArea(ring) {\n let sum = 0;\n for (let i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n\n// This is taken from https://github.com/mapbox/cheap-ruler/ in order to take only the relevant parts\n// Values that define WGS84 ellipsoid model of the Earth\nconst RE = 6378.137; // equatorial radius\nconst FE = 1 / 298.257223563; // flattening\nconst E2 = FE * (2 - FE);\nconst RAD = Math.PI / 180;\nclass CheapRuler {\n constructor(lat) {\n // Curvature formulas from https://en.wikipedia.org/wiki/Earth_radius#Meridional\n const m = RAD * RE * 1000;\n const coslat = Math.cos(lat * RAD);\n const w2 = 1 / (1 - E2 * (1 - coslat * coslat));\n const w = Math.sqrt(w2);\n // multipliers for converting longitude and latitude degrees into distance\n this.kx = m * w * coslat; // based on normal radius of curvature\n this.ky = m * w * w2 * (1 - E2); // based on meridional radius of curvature\n }\n /**\n * Given two points of the form [longitude, latitude], returns the distance.\n *\n * @param a - point [longitude, latitude]\n * @param b - point [longitude, latitude]\n * @returns distance\n * @example\n * const distance = ruler.distance([30.5, 50.5], [30.51, 50.49]);\n * //=distance\n */\n distance(a, b) {\n const dx = this.wrap(a[0] - b[0]) * this.kx;\n const dy = (a[1] - b[1]) * this.ky;\n return Math.sqrt(dx * dx + dy * dy);\n }\n /**\n * Returns an object of the form {point, index, t}, where point is closest point on the line\n * from the given point, index is the start index of the segment with the closest point,\n * and t is a parameter from 0 to 1 that indicates where the closest point is on that segment.\n *\n * @param line - an array of points that form the line\n * @param p - point [longitude, latitude]\n * @returns the nearest point, its index in the array and the proportion along the line\n * @example\n * const point = ruler.pointOnLine(line, [-67.04, 50.5]).point;\n * //=point\n */\n pointOnLine(line, p) {\n let minDist = Infinity;\n let minX, minY, minI, minT;\n for (let i = 0; i < line.length - 1; i++) {\n let x = line[i][0];\n let y = line[i][1];\n let dx = this.wrap(line[i + 1][0] - x) * this.kx;\n let dy = (line[i + 1][1] - y) * this.ky;\n let t = 0;\n if (dx !== 0 || dy !== 0) {\n t =\n (this.wrap(p[0] - x) * this.kx * dx + (p[1] - y) * this.ky * dy) /\n (dx * dx + dy * dy);\n if (t > 1) {\n x = line[i + 1][0];\n y = line[i + 1][1];\n }\n else if (t > 0) {\n x += (dx / this.kx) * t;\n y += (dy / this.ky) * t;\n }\n }\n dx = this.wrap(p[0] - x) * this.kx;\n dy = (p[1] - y) * this.ky;\n const sqDist = dx * dx + dy * dy;\n if (sqDist < minDist) {\n minDist = sqDist;\n minX = x;\n minY = y;\n minI = i;\n minT = t;\n }\n }\n return {\n point: [minX, minY],\n index: minI,\n t: Math.max(0, Math.min(1, minT))\n };\n }\n wrap(deg) {\n while (deg < -180)\n deg += 360;\n while (deg > 180)\n deg -= 360;\n return deg;\n }\n}\n\nconst MinPointsSize = 100;\nconst MinLinePointsSize = 50;\nfunction compareDistPair(a, b) {\n return b[0] - a[0];\n}\nfunction getRangeSize(range) {\n return range[1] - range[0] + 1;\n}\nfunction isRangeSafe(range, threshold) {\n return range[1] >= range[0] && range[1] < threshold;\n}\nfunction splitRange(range, isLine) {\n if (range[0] > range[1]) {\n return [null, null];\n }\n const size = getRangeSize(range);\n if (isLine) {\n if (size === 2) {\n return [range, null];\n }\n const size1 = Math.floor(size / 2);\n return [\n [range[0], range[0] + size1],\n [range[0] + size1, range[1]]\n ];\n }\n if (size === 1) {\n return [range, null];\n }\n const size1 = Math.floor(size / 2) - 1;\n return [\n [range[0], range[0] + size1],\n [range[0] + size1 + 1, range[1]]\n ];\n}\nfunction getBBox(coords, range) {\n if (!isRangeSafe(range, coords.length)) {\n return [Infinity, Infinity, -Infinity, -Infinity];\n }\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (let i = range[0]; i <= range[1]; ++i) {\n updateBBox(bbox, coords[i]);\n }\n return bbox;\n}\nfunction getPolygonBBox(polygon) {\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n for (const ring of polygon) {\n for (const coord of ring) {\n updateBBox(bbox, coord);\n }\n }\n return bbox;\n}\nfunction isValidBBox(bbox) {\n return (bbox[0] !== -Infinity &&\n bbox[1] !== -Infinity &&\n bbox[2] !== Infinity &&\n bbox[3] !== Infinity);\n}\n// Calculate the distance between two bounding boxes.\n// Calculate the delta in x and y direction, and use two fake points {0.0, 0.0}\n// and {dx, dy} to calculate the distance. Distance will be 0.0 if bounding box are overlapping.\nfunction bboxToBBoxDistance(bbox1, bbox2, ruler) {\n if (!isValidBBox(bbox1) || !isValidBBox(bbox2)) {\n return NaN;\n }\n let dx = 0.0;\n let dy = 0.0;\n // bbox1 in left side\n if (bbox1[2] < bbox2[0]) {\n dx = bbox2[0] - bbox1[2];\n }\n // bbox1 in right side\n if (bbox1[0] > bbox2[2]) {\n dx = bbox1[0] - bbox2[2];\n }\n // bbox1 in above side\n if (bbox1[1] > bbox2[3]) {\n dy = bbox1[1] - bbox2[3];\n }\n // bbox1 in down side\n if (bbox1[3] < bbox2[1]) {\n dy = bbox2[1] - bbox1[3];\n }\n return ruler.distance([0.0, 0.0], [dx, dy]);\n}\nfunction pointToLineDistance(point, line, ruler) {\n const nearestPoint = ruler.pointOnLine(line, point);\n return ruler.distance(point, nearestPoint.point);\n}\nfunction segmentToSegmentDistance(p1, p2, q1, q2, ruler) {\n const dist1 = Math.min(pointToLineDistance(p1, [q1, q2], ruler), pointToLineDistance(p2, [q1, q2], ruler));\n const dist2 = Math.min(pointToLineDistance(q1, [p1, p2], ruler), pointToLineDistance(q2, [p1, p2], ruler));\n return Math.min(dist1, dist2);\n}\nfunction lineToLineDistance(line1, range1, line2, range2, ruler) {\n const rangeSafe = isRangeSafe(range1, line1.length) && isRangeSafe(range2, line2.length);\n if (!rangeSafe) {\n return Infinity;\n }\n let dist = Infinity;\n for (let i = range1[0]; i < range1[1]; ++i) {\n const p1 = line1[i];\n const p2 = line1[i + 1];\n for (let j = range2[0]; j < range2[1]; ++j) {\n const q1 = line2[j];\n const q2 = line2[j + 1];\n if (segmentIntersectSegment(p1, p2, q1, q2)) {\n return 0.0;\n }\n dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n }\n }\n return dist;\n}\nfunction pointsToPointsDistance(points1, range1, points2, range2, ruler) {\n const rangeSafe = isRangeSafe(range1, points1.length) && isRangeSafe(range2, points2.length);\n if (!rangeSafe) {\n return NaN;\n }\n let dist = Infinity;\n for (let i = range1[0]; i <= range1[1]; ++i) {\n for (let j = range2[0]; j <= range2[1]; ++j) {\n dist = Math.min(dist, ruler.distance(points1[i], points2[j]));\n if (dist === 0.0) {\n return dist;\n }\n }\n }\n return dist;\n}\nfunction pointToPolygonDistance(point, polygon, ruler) {\n if (pointWithinPolygon(point, polygon, true)) {\n return 0.0;\n }\n let dist = Infinity;\n for (const ring of polygon) {\n const front = ring[0];\n const back = ring[ring.length - 1];\n if (front !== back) {\n dist = Math.min(dist, pointToLineDistance(point, [back, front], ruler));\n if (dist === 0.0) {\n return dist;\n }\n }\n const nearestPoint = ruler.pointOnLine(ring, point);\n dist = Math.min(dist, ruler.distance(point, nearestPoint.point));\n if (dist === 0.0) {\n return dist;\n }\n }\n return dist;\n}\nfunction lineToPolygonDistance(line, range, polygon, ruler) {\n if (!isRangeSafe(range, line.length)) {\n return NaN;\n }\n for (let i = range[0]; i <= range[1]; ++i) {\n if (pointWithinPolygon(line[i], polygon, true)) {\n return 0.0;\n }\n }\n let dist = Infinity;\n for (let i = range[0]; i < range[1]; ++i) {\n const p1 = line[i];\n const p2 = line[i + 1];\n for (const ring of polygon) {\n for (let j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n const q1 = ring[k];\n const q2 = ring[j];\n if (segmentIntersectSegment(p1, p2, q1, q2)) {\n return 0.0;\n }\n dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n }\n }\n }\n return dist;\n}\nfunction polygonIntersect(poly1, poly2) {\n for (const ring of poly1) {\n for (const point of ring) {\n if (pointWithinPolygon(point, poly2, true)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction polygonToPolygonDistance(polygon1, polygon2, ruler, currentMiniDist = Infinity) {\n const bbox1 = getPolygonBBox(polygon1);\n const bbox2 = getPolygonBBox(polygon2);\n if (currentMiniDist !== Infinity &&\n bboxToBBoxDistance(bbox1, bbox2, ruler) >= currentMiniDist) {\n return currentMiniDist;\n }\n if (boxWithinBox(bbox1, bbox2)) {\n if (polygonIntersect(polygon1, polygon2)) {\n return 0.0;\n }\n }\n else if (polygonIntersect(polygon2, polygon1)) {\n return 0.0;\n }\n let dist = Infinity;\n for (const ring1 of polygon1) {\n for (let i = 0, len1 = ring1.length, l = len1 - 1; i < len1; l = i++) {\n const p1 = ring1[l];\n const p2 = ring1[i];\n for (const ring2 of polygon2) {\n for (let j = 0, len2 = ring2.length, k = len2 - 1; j < len2; k = j++) {\n const q1 = ring2[k];\n const q2 = ring2[j];\n if (segmentIntersectSegment(p1, p2, q1, q2)) {\n return 0.0;\n }\n dist = Math.min(dist, segmentToSegmentDistance(p1, p2, q1, q2, ruler));\n }\n }\n }\n }\n return dist;\n}\nfunction updateQueue(distQueue, miniDist, ruler, points, polyBBox, rangeA) {\n if (!rangeA) {\n return;\n }\n const tempDist = bboxToBBoxDistance(getBBox(points, rangeA), polyBBox, ruler);\n // Insert new pair to the queue if the bbox distance is less than\n // miniDist, The pair with biggest distance will be at the top\n if (tempDist < miniDist) {\n distQueue.push([tempDist, rangeA, [0, 0]]);\n }\n}\nfunction updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, range1, range2) {\n if (!range1 || !range2) {\n return;\n }\n const tempDist = bboxToBBoxDistance(getBBox(pointSet1, range1), getBBox(pointSet2, range2), ruler);\n // Insert new pair to the queue if the bbox distance is less than\n // miniDist, The pair with biggest distance will be at the top\n if (tempDist < miniDist) {\n distQueue.push([tempDist, range1, range2]);\n }\n}\n// Divide and conquer, the time complexity is O(n*lgn), faster than Brute force\n// O(n*n) Most of the time, use index for in-place processing.\nfunction pointsToPolygonDistance(points, isLine, polygon, ruler, currentMiniDist = Infinity) {\n let miniDist = Math.min(ruler.distance(points[0], polygon[0][0]), currentMiniDist);\n if (miniDist === 0.0) {\n return miniDist;\n }\n const distQueue = new TinyQueue([[0, [0, points.length - 1], [0, 0]]], compareDistPair);\n const polyBBox = getPolygonBBox(polygon);\n while (distQueue.length > 0) {\n const distPair = distQueue.pop();\n if (distPair[0] >= miniDist) {\n continue;\n }\n const range = distPair[1];\n // In case the set size are relatively small, we could use brute-force directly\n const threshold = isLine ? MinLinePointsSize : MinPointsSize;\n if (getRangeSize(range) <= threshold) {\n if (!isRangeSafe(range, points.length)) {\n return NaN;\n }\n if (isLine) {\n const tempDist = lineToPolygonDistance(points, range, polygon, ruler);\n if (isNaN(tempDist) || tempDist === 0.0) {\n return tempDist;\n }\n miniDist = Math.min(miniDist, tempDist);\n }\n else {\n for (let i = range[0]; i <= range[1]; ++i) {\n const tempDist = pointToPolygonDistance(points[i], polygon, ruler);\n miniDist = Math.min(miniDist, tempDist);\n if (miniDist === 0.0) {\n return 0.0;\n }\n }\n }\n }\n else {\n const newRangesA = splitRange(range, isLine);\n updateQueue(distQueue, miniDist, ruler, points, polyBBox, newRangesA[0]);\n updateQueue(distQueue, miniDist, ruler, points, polyBBox, newRangesA[1]);\n }\n }\n return miniDist;\n}\nfunction pointSetToPointSetDistance(pointSet1, isLine1, pointSet2, isLine2, ruler, currentMiniDist = Infinity) {\n let miniDist = Math.min(currentMiniDist, ruler.distance(pointSet1[0], pointSet2[0]));\n if (miniDist === 0.0) {\n return miniDist;\n }\n const distQueue = new TinyQueue([[0, [0, pointSet1.length - 1], [0, pointSet2.length - 1]]], compareDistPair);\n while (distQueue.length > 0) {\n const distPair = distQueue.pop();\n if (distPair[0] >= miniDist) {\n continue;\n }\n const rangeA = distPair[1];\n const rangeB = distPair[2];\n const threshold1 = isLine1 ? MinLinePointsSize : MinPointsSize;\n const threshold2 = isLine2 ? MinLinePointsSize : MinPointsSize;\n // In case the set size are relatively small, we could use brute-force directly\n if (getRangeSize(rangeA) <= threshold1 && getRangeSize(rangeB) <= threshold2) {\n if (!isRangeSafe(rangeA, pointSet1.length) && isRangeSafe(rangeB, pointSet2.length)) {\n return NaN;\n }\n let tempDist;\n if (isLine1 && isLine2) {\n tempDist = lineToLineDistance(pointSet1, rangeA, pointSet2, rangeB, ruler);\n miniDist = Math.min(miniDist, tempDist);\n }\n else if (isLine1 && !isLine2) {\n const sublibe = pointSet1.slice(rangeA[0], rangeA[1] + 1);\n for (let i = rangeB[0]; i <= rangeB[1]; ++i) {\n tempDist = pointToLineDistance(pointSet2[i], sublibe, ruler);\n miniDist = Math.min(miniDist, tempDist);\n if (miniDist === 0.0) {\n return miniDist;\n }\n }\n }\n else if (!isLine1 && isLine2) {\n const sublibe = pointSet2.slice(rangeB[0], rangeB[1] + 1);\n for (let i = rangeA[0]; i <= rangeA[1]; ++i) {\n tempDist = pointToLineDistance(pointSet1[i], sublibe, ruler);\n miniDist = Math.min(miniDist, tempDist);\n if (miniDist === 0.0) {\n return miniDist;\n }\n }\n }\n else {\n tempDist = pointsToPointsDistance(pointSet1, rangeA, pointSet2, rangeB, ruler);\n miniDist = Math.min(miniDist, tempDist);\n }\n }\n else {\n const newRangesA = splitRange(rangeA, isLine1);\n const newRangesB = splitRange(rangeB, isLine2);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[0]);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[1]);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[0]);\n updateQueueTwoSets(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[1]);\n }\n }\n return miniDist;\n}\nfunction pointToGeometryDistance(ctx, geometries) {\n const tilePoints = ctx.geometry();\n const pointPosition = tilePoints\n .flat()\n .map((p) => getLngLatFromTileCoord([p.x, p.y], ctx.canonical));\n if (tilePoints.length === 0) {\n return NaN;\n }\n const ruler = new CheapRuler(pointPosition[0][1]);\n let dist = Infinity;\n for (const geometry of geometries) {\n switch (geometry.type) {\n case 'Point':\n dist = Math.min(dist, pointSetToPointSetDistance(pointPosition, false, [geometry.coordinates], false, ruler, dist));\n break;\n case 'LineString':\n dist = Math.min(dist, pointSetToPointSetDistance(pointPosition, false, geometry.coordinates, true, ruler, dist));\n break;\n case 'Polygon':\n dist = Math.min(dist, pointsToPolygonDistance(pointPosition, false, geometry.coordinates, ruler, dist));\n break;\n }\n if (dist === 0.0) {\n return dist;\n }\n }\n return dist;\n}\nfunction lineStringToGeometryDistance(ctx, geometries) {\n const tileLine = ctx.geometry();\n const linePositions = tileLine\n .flat()\n .map((p) => getLngLatFromTileCoord([p.x, p.y], ctx.canonical));\n if (tileLine.length === 0) {\n return NaN;\n }\n const ruler = new CheapRuler(linePositions[0][1]);\n let dist = Infinity;\n for (const geometry of geometries) {\n switch (geometry.type) {\n case 'Point':\n dist = Math.min(dist, pointSetToPointSetDistance(linePositions, true, [geometry.coordinates], false, ruler, dist));\n break;\n case 'LineString':\n dist = Math.min(dist, pointSetToPointSetDistance(linePositions, true, geometry.coordinates, true, ruler, dist));\n break;\n case 'Polygon':\n dist = Math.min(dist, pointsToPolygonDistance(linePositions, true, geometry.coordinates, ruler, dist));\n break;\n }\n if (dist === 0.0) {\n return dist;\n }\n }\n return dist;\n}\nfunction polygonToGeometryDistance(ctx, geometries) {\n const tilePolygon = ctx.geometry();\n if (tilePolygon.length === 0 || tilePolygon[0].length === 0) {\n return NaN;\n }\n const polygons = classifyRings(tilePolygon, 0).map((polygon) => {\n return polygon.map((ring) => {\n return ring.map((p) => getLngLatFromTileCoord([p.x, p.y], ctx.canonical));\n });\n });\n const ruler = new CheapRuler(polygons[0][0][0][1]);\n let dist = Infinity;\n for (const geometry of geometries) {\n for (const polygon of polygons) {\n switch (geometry.type) {\n case 'Point':\n dist = Math.min(dist, pointsToPolygonDistance([geometry.coordinates], false, polygon, ruler, dist));\n break;\n case 'LineString':\n dist = Math.min(dist, pointsToPolygonDistance(geometry.coordinates, true, polygon, ruler, dist));\n break;\n case 'Polygon':\n dist = Math.min(dist, polygonToPolygonDistance(polygon, geometry.coordinates, ruler, dist));\n break;\n }\n if (dist === 0.0) {\n return dist;\n }\n }\n }\n return dist;\n}\nfunction toSimpleGeometry(geometry) {\n if (geometry.type === 'MultiPolygon') {\n return geometry.coordinates.map((polygon) => {\n return {\n type: 'Polygon',\n coordinates: polygon\n };\n });\n }\n if (geometry.type === 'MultiLineString') {\n return geometry.coordinates.map((lineString) => {\n return {\n type: 'LineString',\n coordinates: lineString\n };\n });\n }\n if (geometry.type === 'MultiPoint') {\n return geometry.coordinates.map((point) => {\n return {\n type: 'Point',\n coordinates: point\n };\n });\n }\n return [geometry];\n}\nclass Distance {\n constructor(geojson, geometries) {\n this.type = NumberType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'distance' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (isValue(args[1])) {\n const geojson = args[1];\n if (geojson.type === 'FeatureCollection') {\n return new Distance(geojson, geojson.features.map((feature) => toSimpleGeometry(feature.geometry)).flat());\n }\n else if (geojson.type === 'Feature') {\n return new Distance(geojson, toSimpleGeometry(geojson.geometry));\n }\n else if ('type' in geojson && 'coordinates' in geojson) {\n return new Distance(geojson, toSimpleGeometry(geojson));\n }\n }\n return context.error(\"'distance' expression requires valid geojson object that contains polygon geometry type.\");\n }\n evaluate(ctx) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointToGeometryDistance(ctx, this.geometries);\n }\n else if (ctx.geometryType() === 'LineString') {\n return lineStringToGeometryDistance(ctx, this.geometries);\n }\n else if (ctx.geometryType() === 'Polygon') {\n return polygonToGeometryDistance(ctx, this.geometries);\n }\n }\n return NaN;\n }\n eachChild() { }\n outputDefined() {\n return true;\n }\n}\n\nclass GlobalState {\n constructor(key) {\n this.type = ValueType;\n this.key = key;\n }\n static parse(args, context) {\n if (args.length !== 2) {\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n }\n const key = args[1];\n if (key === undefined || key === null) {\n return context.error('Global state property must be defined.');\n }\n if (typeof key !== 'string') {\n return context.error(`Global state property must be string, but found ${typeof args[1]} instead.`);\n }\n return new GlobalState(key);\n }\n evaluate(ctx) {\n var _a;\n const globalState = (_a = ctx.globals) === null || _a === void 0 ? void 0 : _a.globalState;\n if (!globalState || Object.keys(globalState).length === 0)\n return null;\n return getOwn(globalState, this.key);\n }\n eachChild() { }\n outputDefined() {\n return false;\n }\n}\n\nconst expressions$1 = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n array: Assertion,\n at: At,\n boolean: Assertion,\n case: Case,\n coalesce: Coalesce,\n collator: CollatorExpression,\n format: FormatExpression,\n image: ImageExpression,\n in: In,\n 'index-of': IndexOf,\n interpolate: Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n length: Length,\n let: Let,\n literal: Literal,\n match: Match,\n number: Assertion,\n 'number-format': NumberFormat,\n object: Assertion,\n slice: Slice,\n step: Step,\n string: Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n var: Var,\n within: Within,\n distance: Distance,\n 'global-state': GlobalState\n};\n\nclass CompoundExpression {\n constructor(name, type, evaluate, args) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n evaluate(ctx) {\n return this._evaluate(ctx, this.args);\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return false;\n }\n static parse(args, context) {\n const op = args[0];\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n // Now check argument types against each signature\n const type = Array.isArray(definition) ? definition[0] : definition.type;\n const availableOverloads = Array.isArray(definition)\n ? [[definition[1], definition[2]]]\n : definition.overloads;\n const overloads = availableOverloads.filter(([signature]) => !Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n );\n let signatureContext = null;\n for (const [params, evaluate] of overloads) {\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext(context.registry, isExpressionConstant, context.path, null, context.scope);\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params)\n ? params[i - 1]\n : params.type;\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n continue;\n }\n }\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n }\n else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected\n .map(([params]) => stringifySignature(params))\n .join(' | ');\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed)\n return null;\n actualTypes.push(typeToString(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n return null;\n }\n static register(registry, definitions) {\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error)\n throw new RuntimeError(error);\n return new Color(r / 255, g / 255, b / 255, alpha, false);\n}\nfunction has(key, obj) {\n return key in obj;\n}\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = (i + j) >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\nfunction varargs(type) {\n return { type };\n}\nCompoundExpression.register(expressions$1, {\n error: [\n ErrorType,\n [StringType],\n (ctx, [v]) => {\n throw new RuntimeError(v.evaluate(ctx));\n }\n ],\n typeof: [StringType, [ValueType], (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n const [r, g, b, a] = v.evaluate(ctx).rgb;\n return [r * 255, g * 255, b * 255, a];\n }\n ],\n rgb: [ColorType, [NumberType, NumberType, NumberType], rgba],\n rgba: [ColorType, [NumberType, NumberType, NumberType, NumberType], rgba],\n has: {\n type: BooleanType,\n overloads: [\n [[StringType], (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())],\n [\n [StringType, ObjectType],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n get: {\n type: ValueType,\n overloads: [\n [[StringType], (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())],\n [\n [StringType, ObjectType],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n properties: [ObjectType, [], (ctx) => ctx.properties()],\n 'geometry-type': [StringType, [], (ctx) => ctx.geometryType()],\n id: [ValueType, [], (ctx) => ctx.id()],\n zoom: [NumberType, [], (ctx) => ctx.globals.zoom],\n 'heatmap-density': [NumberType, [], (ctx) => ctx.globals.heatmapDensity || 0],\n elevation: [NumberType, [], (ctx) => ctx.globals.elevation || 0],\n 'line-progress': [NumberType, [], (ctx) => ctx.globals.lineProgress || 0],\n accumulated: [\n ValueType,\n [],\n (ctx) => (ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated)\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [[NumberType, NumberType], (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)],\n [[NumberType], (ctx, [a]) => -a.evaluate(ctx)]\n ]\n },\n '/': [NumberType, [NumberType, NumberType], (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)],\n '%': [NumberType, [NumberType, NumberType], (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)],\n ln2: [NumberType, [], () => Math.LN2],\n pi: [NumberType, [], () => Math.PI],\n e: [NumberType, [], () => Math.E],\n '^': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n sqrt: [NumberType, [NumberType], (ctx, [x]) => Math.sqrt(x.evaluate(ctx))],\n log10: [NumberType, [NumberType], (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10],\n ln: [NumberType, [NumberType], (ctx, [n]) => Math.log(n.evaluate(ctx))],\n log2: [NumberType, [NumberType], (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2],\n sin: [NumberType, [NumberType], (ctx, [n]) => Math.sin(n.evaluate(ctx))],\n cos: [NumberType, [NumberType], (ctx, [n]) => Math.cos(n.evaluate(ctx))],\n tan: [NumberType, [NumberType], (ctx, [n]) => Math.tan(n.evaluate(ctx))],\n asin: [NumberType, [NumberType], (ctx, [n]) => Math.asin(n.evaluate(ctx))],\n acos: [NumberType, [NumberType], (ctx, [n]) => Math.acos(n.evaluate(ctx))],\n atan: [NumberType, [NumberType], (ctx, [n]) => Math.atan(n.evaluate(ctx))],\n min: [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map((arg) => arg.evaluate(ctx)))\n ],\n max: [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map((arg) => arg.evaluate(ctx)))\n ],\n abs: [NumberType, [NumberType], (ctx, [n]) => Math.abs(n.evaluate(ctx))],\n round: [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n floor: [NumberType, [NumberType], (ctx, [n]) => Math.floor(n.evaluate(ctx))],\n ceil: [NumberType, [NumberType], (ctx, [n]) => Math.ceil(n.evaluate(ctx))],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => ctx.properties()[k.value] === v.value\n ],\n 'filter-id-==': [BooleanType, [ValueType], (ctx, [v]) => ctx.id() === v.value],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === v.value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [BooleanType, [ValueType], (ctx, [k]) => k.value in ctx.properties()],\n 'filter-has-id': [BooleanType, [], (ctx) => ctx.id() !== null && ctx.id() !== undefined],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n (ctx, [v]) => v.value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n (ctx, [v]) => v.value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is an array literal\n (ctx, [k, v]) => v.value.indexOf(ctx.properties()[k.value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n (ctx, [k, v]) => binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1)\n ],\n all: {\n type: BooleanType,\n overloads: [\n [[BooleanType, BooleanType], (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n any: {\n type: BooleanType,\n overloads: [\n [[BooleanType, BooleanType], (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [BooleanType, [BooleanType], (ctx, [b]) => !b.evaluate(ctx)],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n upcase: [StringType, [StringType], (ctx, [s]) => s.evaluate(ctx).toUpperCase()],\n downcase: [StringType, [StringType], (ctx, [s]) => s.evaluate(ctx).toLowerCase()],\n concat: [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map((arg) => valueToString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\nfunction stringifySignature(signature) {\n if (Array.isArray(signature)) {\n return `(${signature.map(typeToString).join(', ')})`;\n }\n else {\n return `(${typeToString(signature.type)}...)`;\n }\n}\nfunction isExpressionConstant(expression) {\n if (expression instanceof Var) {\n return isExpressionConstant(expression.boundExpression);\n }\n else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n }\n else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n }\n else if (expression instanceof Within) {\n return false;\n }\n else if (expression instanceof Distance) {\n return false;\n }\n else if (expression instanceof GlobalState) {\n return false;\n }\n const isTypeAnnotation = expression instanceof Coercion || expression instanceof Assertion;\n let childrenConstant = true;\n expression.eachChild((child) => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isExpressionConstant(child);\n }\n else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n return (isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression, [\n 'zoom',\n 'heatmap-density',\n 'elevation',\n 'line-progress',\n 'accumulated',\n 'is-supported-script'\n ]));\n}\nfunction isFeatureConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n }\n else if (e.name === 'feature-state') {\n return false;\n }\n else if (e.name === 'has' && e.args.length === 1) {\n return false;\n }\n else if (e.name === 'properties' || e.name === 'geometry-type' || e.name === 'id') {\n return false;\n }\n else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n if (e instanceof Within) {\n return false;\n }\n if (e instanceof Distance) {\n return false;\n }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isFeatureConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isStateConstant(e) {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isStateConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isGlobalPropertyConstant(e, properties) {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) {\n return false;\n }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) {\n result = false;\n }\n });\n return result;\n}\n\nfunction success(value) {\n return { result: 'success', value };\n}\nfunction error(value) {\n return { result: 'error', value };\n}\n\nfunction supportsPropertyExpression(spec) {\n return (spec['property-type'] === 'data-driven' ||\n spec['property-type'] === 'cross-faded-data-driven');\n}\nfunction supportsZoomExpression(spec) {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\nfunction supportsInterpolation(spec) {\n return !!spec.expression && spec.expression.interpolated;\n}\n\nfunction getType(val) {\n if (val instanceof Number) {\n return 'number';\n }\n else if (val instanceof String) {\n return 'string';\n }\n else if (val instanceof Boolean) {\n return 'boolean';\n }\n else if (Array.isArray(val)) {\n return 'array';\n }\n else if (val === null) {\n return 'null';\n }\n else {\n return typeof val;\n }\n}\n\nfunction isFunction$1(value) {\n return (typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n typeOf(value) === ObjectType);\n}\nfunction identityFunction(x) {\n return x;\n}\nfunction getParseFunction(propertySpec) {\n switch (propertySpec.type) {\n case 'color':\n return Color.parse;\n case 'padding':\n return Padding.parse;\n case 'numberArray':\n return NumberArray.parse;\n case 'colorArray':\n return ColorArray.parse;\n default:\n return null;\n }\n}\nfunction getInnerFunction(type) {\n switch (type) {\n case 'exponential':\n return evaluateExponentialFunction;\n case 'interval':\n return evaluateIntervalFunction;\n case 'categorical':\n return evaluateCategoricalFunction;\n case 'identity':\n return evaluateIdentityFunction;\n default:\n throw new Error(`Unknown function type \"${type}\"`);\n }\n}\nfunction createFunction(parameters, propertySpec) {\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n const parseFn = getParseFunction(propertySpec);\n if (parseFn) {\n parameters = extendBy({}, parameters);\n if (parameters.stops) {\n parameters.stops = parameters.stops.map((stop) => {\n return [stop[0], parseFn(stop[1])];\n });\n }\n if (parameters.default) {\n parameters.default = parseFn(parameters.default);\n }\n else {\n parameters.default = parseFn(propertySpec.default);\n }\n }\n if (parameters.colorSpace && !isSupportedInterpolationColorSpace(parameters.colorSpace)) {\n throw new Error(`Unknown color space: \"${parameters.colorSpace}\"`);\n }\n const innerFun = getInnerFunction(type);\n let hashedStops;\n let categoricalKeyType;\n if (type === 'categorical') {\n // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n hashedStops = Object.create(null);\n for (const stop of parameters.stops) {\n hashedStops[stop[0]] = stop[1];\n }\n // Infer key type based on first stop key-- used to encforce strict type checking later\n categoricalKeyType = typeof parameters.stops[0][0];\n }\n if (zoomAndFeatureDependent) {\n const featureFunctions = {};\n const zoomStops = [];\n for (let s = 0; s < parameters.stops.length; s++) {\n const stop = parameters.stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctions[zoom] === undefined) {\n featureFunctions[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n }\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([\n featureFunctions[z].zoom,\n createFunction(featureFunctions[z], propertySpec)\n ]);\n }\n const interpolationType = { name: 'linear' };\n return {\n kind: 'composite',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: featureFunctionStops.map((s) => s[0]),\n evaluate({ zoom }, properties) {\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n base: parameters.base\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n }\n else if (zoomDependent) {\n const interpolationType = type === 'exponential'\n ? { name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1 }\n : null;\n return {\n kind: 'camera',\n interpolationType,\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n zoomStops: parameters.stops.map((s) => s[0]),\n evaluate: ({ zoom }) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n }\n else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties\n ? feature.properties[parameters.property]\n : undefined;\n if (value === undefined) {\n return coalesce$1(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\nfunction coalesce$1(a, b, c) {\n if (a !== undefined)\n return a;\n if (b !== undefined)\n return b;\n if (c !== undefined)\n return c;\n}\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n return coalesce$1(evaluated, parameters.default, propertySpec.default);\n}\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n if (getType(input) !== 'number')\n return coalesce$1(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1)\n return parameters.stops[0][1];\n if (input <= parameters.stops[0][0])\n return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0])\n return parameters.stops[n - 1][1];\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n return parameters.stops[index][1];\n}\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n // Edge cases\n if (getType(input) !== 'number')\n return coalesce$1(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1)\n return parameters.stops[0][1];\n if (input <= parameters.stops[0][0])\n return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0])\n return parameters.stops[n - 1][1];\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(input, base, parameters.stops[index][0], parameters.stops[index + 1][0]);\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n const interp = interpolateFactory[propertySpec.type] || identityFunction;\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n // Special case for fill-outline-color, which has no spec default.\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n return interp(evaluatedLower, evaluatedUpper, t, parameters.colorSpace);\n }\n };\n }\n return interp(outputLower, outputUpper, t, parameters.colorSpace);\n}\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n switch (propertySpec.type) {\n case 'color':\n input = Color.parse(input);\n break;\n case 'formatted':\n input = Formatted.fromString(input.toString());\n break;\n case 'resolvedImage':\n input = ResolvedImage.fromString(input.toString());\n break;\n case 'padding':\n input = Padding.parse(input);\n break;\n case 'colorArray':\n input = ColorArray.parse(input);\n break;\n case 'numberArray':\n input = NumberArray.parse(input);\n break;\n default:\n if (getType(input) !== propertySpec.type &&\n (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n }\n return coalesce$1(input, parameters.default, propertySpec.default);\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n }\n else if (base === 1) {\n return progress / difference;\n }\n else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nclass StyleExpression {\n constructor(expression, propertySpec, globalState) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues =\n propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n this._globalState = globalState;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n return this.expression.evaluate(this._evaluator);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n try {\n const val = this.expression.evaluate(this._evaluator);\n if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues)\n .map((v) => JSON.stringify(v))\n .join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\n }\n catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\nfunction isExpression(expression) {\n return (Array.isArray(expression) &&\n expression.length > 0 &&\n typeof expression[0] === 'string' &&\n expression[0] in expressions$1);\n}\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nfunction createExpression(expression, propertySpec, globalState) {\n const parser = new ParsingContext(expressions$1, isExpressionConstant, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n if (!parsed) {\n return error(parser.errors);\n }\n return success(new StyleExpression(parsed, propertySpec, globalState));\n}\nclass ZoomConstantExpression {\n constructor(kind, expression, globalState) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent =\n kind !== 'constant' && !isStateConstant(expression.expression);\n this.globalStateRefs = findGlobalStateRefs(expression.expression);\n this._globalState = globalState;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\nclass ZoomDependentExpression {\n constructor(kind, expression, zoomStops, interpolationType, globalState) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent =\n kind !== 'camera' && !isStateConstant(expression.expression);\n this.globalStateRefs = findGlobalStateRefs(expression.expression);\n this.interpolationType = interpolationType;\n this._globalState = globalState;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n if (this._globalState) {\n globals = addGlobalState(globals, this._globalState);\n }\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n interpolationFactor(input, lower, upper) {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n }\n else {\n return 0;\n }\n }\n}\nfunction isZoomExpression(expression) {\n return expression._styleExpression !== undefined;\n}\nfunction createPropertyExpression(expressionInput, propertySpec, globalState) {\n const expression = createExpression(expressionInput, propertySpec, globalState);\n if (expression.result === 'error') {\n return expression;\n }\n const parsed = expression.value.expression;\n const isFeatureConstantResult = isFeatureConstant(parsed);\n if (!isFeatureConstantResult && !supportsPropertyExpression(propertySpec)) {\n return error([new ExpressionParsingError('', 'data expressions not supported')]);\n }\n const isZoomConstant = isGlobalPropertyConstant(parsed, ['zoom']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ExpressionParsingError('', 'zoom expressions not supported')]);\n }\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([\n new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')\n ]);\n }\n else if (zoomCurve instanceof ExpressionParsingError) {\n return error([zoomCurve]);\n }\n else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([\n new ExpressionParsingError('', '\"interpolate\" expressions cannot be used with this property')\n ]);\n }\n if (!zoomCurve) {\n return success(isFeatureConstantResult\n ? new ZoomConstantExpression('constant', expression.value, globalState)\n : new ZoomConstantExpression('source', expression.value, globalState));\n }\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n return success(isFeatureConstantResult\n ? new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType, globalState)\n : new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType, globalState));\n}\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nclass StylePropertyFunction {\n constructor(parameters, specification) {\n this._parameters = parameters;\n this._specification = specification;\n extendBy(this, createFunction(this._parameters, this._specification));\n }\n static deserialize(serialized) {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n }\n static serialize(input) {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\nfunction normalizePropertyExpression(value, specification, globalState) {\n if (isFunction$1(value)) {\n return new StylePropertyFunction(value, specification);\n }\n else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification, globalState);\n if (expression.result === 'error') {\n // this should have been caught in validation\n throw new Error(expression.value.map((err) => `${err.key}: ${err.message}`).join(', '));\n }\n return expression.value;\n }\n else {\n let constant = value;\n if (specification.type === 'color' && typeof value === 'string') {\n constant = Color.parse(value);\n }\n else if (specification.type === 'padding' &&\n (typeof value === 'number' || Array.isArray(value))) {\n constant = Padding.parse(value);\n }\n else if (specification.type === 'numberArray' &&\n (typeof value === 'number' || Array.isArray(value))) {\n constant = NumberArray.parse(value);\n }\n else if (specification.type === 'colorArray' &&\n (typeof value === 'string' || Array.isArray(value))) {\n constant = ColorArray.parse(value);\n }\n else if (specification.type === 'variableAnchorOffsetCollection' &&\n Array.isArray(value)) {\n constant = VariableAnchorOffsetCollection.parse(value);\n }\n else if (specification.type === 'projectionDefinition' && typeof value === 'string') {\n constant = ProjectionDefinition.parse(value);\n }\n return {\n globalStateRefs: new Set(),\n _globalState: null,\n kind: 'constant',\n evaluate: () => constant\n };\n }\n}\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression) {\n let result = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n }\n else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n }\n else if ((expression instanceof Step || expression instanceof Interpolate) &&\n expression.input instanceof CompoundExpression &&\n expression.input.name === 'zoom') {\n result = expression;\n }\n if (result instanceof ExpressionParsingError) {\n return result;\n }\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ExpressionParsingError) {\n result = childResult;\n }\n else if (!result && childResult) {\n result = new ExpressionParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n }\n else if (result && childResult && result !== childResult) {\n result = new ExpressionParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n return result;\n}\nfunction findGlobalStateRefs(expression, results = new Set()) {\n if (expression instanceof GlobalState) {\n results.add(expression.key);\n }\n expression.eachChild((childExpression) => {\n findGlobalStateRefs(childExpression, results);\n });\n return results;\n}\nfunction getExpectedType(spec) {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n padding: PaddingType,\n numberArray: NumberArrayType,\n colorArray: ColorArrayType,\n projectionDefinition: ProjectionDefinitionType,\n resolvedImage: ResolvedImageType,\n variableAnchorOffsetCollection: VariableAnchorOffsetCollectionType\n };\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n return types[spec.type];\n}\nfunction getDefaultValue(spec) {\n if (spec.type === 'color' && isFunction$1(spec.default)) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color(0, 0, 0, 0);\n }\n switch (spec.type) {\n case 'color':\n return Color.parse(spec.default) || null;\n case 'padding':\n return Padding.parse(spec.default) || null;\n case 'numberArray':\n return NumberArray.parse(spec.default) || null;\n case 'colorArray':\n return ColorArray.parse(spec.default) || null;\n case 'variableAnchorOffsetCollection':\n return VariableAnchorOffsetCollection.parse(spec.default) || null;\n case 'projectionDefinition':\n return ProjectionDefinition.parse(spec.default) || null;\n default:\n return spec.default === undefined ? null : spec.default;\n }\n}\nfunction addGlobalState(globals, globalState) {\n const { zoom, heatmapDensity, elevation, lineProgress, isSupportedScript, accumulated } = globals !== null && globals !== void 0 ? globals : {};\n return {\n zoom,\n heatmapDensity,\n elevation,\n lineProgress,\n isSupportedScript,\n accumulated,\n globalState\n };\n}\n\nfunction isExpressionFilter(filter) {\n if (filter === true || filter === false) {\n return true;\n }\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n case 'in':\n return (filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2])));\n case '!in':\n case '!has':\n case 'none':\n return false;\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || Array.isArray(filter[1]) || Array.isArray(filter[2]);\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n default:\n return true;\n }\n}\nconst filterSpec = {\n type: 'boolean',\n default: false,\n transition: false,\n 'property-type': 'data-driven',\n expression: {\n interpolated: false,\n parameters: ['zoom', 'feature']\n }\n};\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param filter MapLibre filter\n * @param [globalState] Global state object to be used for evaluating 'global-state' expressions\n * @returns filter-evaluating function\n */\nfunction featureFilter(filter, globalState) {\n if (filter === null || filter === undefined) {\n return { filter: () => true, needGeometry: false, getGlobalStateRefs: () => new Set() };\n }\n if (!isExpressionFilter(filter)) {\n filter = convertFilter$1(filter);\n }\n const compiled = createExpression(filter, filterSpec, globalState);\n if (compiled.result === 'error') {\n throw new Error(compiled.value.map((err) => `${err.key}: ${err.message}`).join(', '));\n }\n else {\n const needGeometry = geometryNeeded(filter);\n return {\n filter: (globalProperties, feature, canonical) => compiled.value.evaluate(globalProperties, feature, {}, canonical),\n needGeometry,\n getGlobalStateRefs: () => findGlobalStateRefs(compiled.value.expression)\n };\n }\n}\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter))\n return false;\n if (filter[0] === 'within' || filter[0] === 'distance')\n return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index]))\n return true;\n }\n return false;\n}\nfunction convertFilter$1(filter) {\n if (!filter)\n return true;\n const op = filter[0];\n if (filter.length <= 1)\n return op !== 'any';\n const converted = op === '=='\n ? convertComparisonOp$1(filter[1], filter[2], '==')\n : op === '!='\n ? convertNegation(convertComparisonOp$1(filter[1], filter[2], '=='))\n : op === '<' || op === '>' || op === '<=' || op === '>='\n ? convertComparisonOp$1(filter[1], filter[2], op)\n : op === 'any'\n ? convertDisjunctionOp(filter.slice(1))\n : op === 'all'\n ? ['all'].concat(filter.slice(1).map(convertFilter$1))\n : op === 'none'\n ? ['all'].concat(filter.slice(1).map(convertFilter$1).map(convertNegation))\n : op === 'in'\n ? convertInOp$1(filter[1], filter.slice(2))\n : op === '!in'\n ? convertNegation(convertInOp$1(filter[1], filter.slice(2)))\n : op === 'has'\n ? convertHasOp$1(filter[1])\n : op === '!has'\n ? convertNegation(convertHasOp$1(filter[1]))\n : true;\n return converted;\n}\nfunction convertComparisonOp$1(property, value, op) {\n switch (property) {\n case '$type':\n return [`filter-type-${op}`, value];\n case '$id':\n return [`filter-id-${op}`, value];\n default:\n return [`filter-${op}`, property, value];\n }\n}\nfunction convertDisjunctionOp(filters) {\n return ['any'].concat(filters.map(convertFilter$1));\n}\nfunction convertInOp$1(property, values) {\n if (values.length === 0) {\n return false;\n }\n switch (property) {\n case '$type':\n return ['filter-type-in', ['literal', values]];\n case '$id':\n return ['filter-id-in', ['literal', values]];\n default:\n if (values.length > 200 && !values.some((v) => typeof v !== typeof values[0])) {\n return ['filter-in-large', property, ['literal', values.sort(compare)]];\n }\n else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\nfunction convertHasOp$1(property) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return ['filter-has-id'];\n default:\n return ['filter-has', property];\n }\n}\nfunction convertNegation(filter) {\n return ['!', filter];\n}\n\n/*\n * Convert the given filter to an expression, storing the expected types for\n * any feature properties referenced in expectedTypes.\n *\n * These expected types are needed in order to construct preflight type checks\n * needed for handling 'any' filters. A preflight type check is necessary in\n * order to mimic legacy filters' semantics around expected type mismatches.\n * For example, consider the legacy filter:\n *\n * [\"any\", [\"all\", [\">\", \"y\", 0], [\">\", \"y\", 0]], [\">\", \"x\", 0]]\n *\n * Naively, we might convert this to the expression:\n *\n * [\"any\", [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]], [\">\", [\"get\", \"x\"], 0]]\n *\n * But if we tried to evaluate this against, say `{x: 1, y: null, z: 0}`, the\n * [\">\", [\"get\", \"y\"], 0] would cause an evaluation error, leading to the\n * entire filter returning false. Legacy filter semantics, though, ask for\n * [\">\", \"y\", 0] to simply return `false` when `y` is of the wrong type,\n * allowing the subsequent terms of the outer \"any\" expression to be evaluated\n * (resulting, in this case, in a `true` value, because x > 0).\n *\n * We account for this by inserting a preflight type-checking expression before\n * each \"any\" term, allowing us to avoid evaluating the actual converted filter\n * if any type mismatches would cause it to produce an evaluation error:\n *\n * [\"any\",\n * [\"case\",\n * [\"all\", [\"==\", [\"typeof\", [\"get\", \"y\"]], \"number\"], [\"==\", [\"typeof\", [\"get\", \"z\"], \"number]],\n * [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]],\n * false\n * ],\n * [\"case\",\n * [\"==\", [\"typeof\", [\"get\", \"x\"], \"number\"]],\n * [\">\", [\"get\", \"x\"], 0],\n * false\n * ]\n * ]\n *\n * An alternative, possibly more direct approach would be to use type checks\n * in the conversion of each comparison operator, so that the converted version\n * of each individual ==, >=, etc. would mimic the legacy filter semantics. The\n * downside of this approach is that it can lead to many more type checks than\n * would otherwise be necessary: outside the context of an \"any\" expression,\n * bailing out due to a runtime type error (expression semantics) and returning\n * false (legacy filter semantics) are equivalent: they cause the filter to\n * produce a `false` result.\n */\nfunction convertFilter(filter, expectedTypes = {}) {\n if (isExpressionFilter(filter))\n return filter;\n if (!filter)\n return true;\n const legacyFilter = filter;\n const legacyOp = legacyFilter[0];\n if (filter.length <= 1)\n return legacyOp !== 'any';\n switch (legacyOp) {\n case '==':\n case '!=':\n case '<':\n case '>':\n case '<=':\n case '>=': {\n const [, property, value] = filter;\n return convertComparisonOp(property, value, legacyOp, expectedTypes);\n }\n case 'any': {\n const [, ...conditions] = legacyFilter;\n const children = conditions.map((f) => {\n const types = {};\n const child = convertFilter(f, types);\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true\n ? child\n : ['case', typechecks, child, false];\n });\n return ['any', ...children];\n }\n case 'all': {\n const [, ...conditions] = legacyFilter;\n const children = conditions.map((f) => convertFilter(f, expectedTypes));\n return children.length > 1 ? ['all', ...children] : children[0];\n }\n case 'none': {\n const [, ...conditions] = legacyFilter;\n return ['!', convertFilter(['any', ...conditions], {})];\n }\n case 'in': {\n const [, property, ...values] = legacyFilter;\n return convertInOp(property, values);\n }\n case '!in': {\n const [, property, ...values] = legacyFilter;\n return convertInOp(property, values, true);\n }\n case 'has':\n return convertHasOp(legacyFilter[1]);\n case '!has':\n return ['!', convertHasOp(legacyFilter[1])];\n default:\n return true;\n }\n}\n// Given a set of feature properties and an expected type for each one,\n// construct an boolean expression that tests whether each property has the\n// right type.\n// E.g.: for {name: 'string', population: 'number'}, return\n// [ 'all',\n// ['==', ['typeof', ['get', 'name'], 'string']],\n// ['==', ['typeof', ['get', 'population'], 'number]]\n// ]\nfunction runtimeTypeChecks(expectedTypes) {\n const conditions = [];\n for (const property in expectedTypes) {\n const get = property === '$id' ? ['id'] : ['get', property];\n conditions.push(['==', ['typeof', get], expectedTypes[property]]);\n }\n if (conditions.length === 0)\n return true;\n if (conditions.length === 1)\n return conditions[0];\n return ['all', ...conditions];\n}\nfunction convertComparisonOp(property, value, op, expectedTypes) {\n let get;\n if (property === '$type') {\n return [op, ['geometry-type'], value];\n }\n else if (property === '$id') {\n get = ['id'];\n }\n else {\n get = ['get', property];\n }\n if (expectedTypes && value !== null) {\n const type = typeof value;\n expectedTypes[property] = type;\n }\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n ['has', property], // missing property != null for legacy filters\n ['==', get, null]\n ];\n }\n else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n ['!', ['has', property]], // missing property != null for legacy filters\n ['!=', get, null]\n ];\n }\n return [op, get, value];\n}\nfunction convertInOp(property, values, negate = false) {\n if (values.length === 0)\n return negate;\n let get;\n if (property === '$type') {\n get = ['geometry-type'];\n }\n else if (property === '$id') {\n get = ['id'];\n }\n else {\n get = ['get', property];\n }\n // Determine if the list of values to be searched is homogenously typed.\n // If so (and if the type is string or number), then we can use a\n // [match, input, [...values], true, false] construction rather than a\n // bunch of `==` tests.\n let uniformTypes = true;\n const type = typeof values[0];\n for (const value of values) {\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n if (uniformTypes && (type === 'string' || type === 'number')) {\n // Match expressions must have unique values.\n const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n return ['match', get, uniqueValues, !negate, negate];\n }\n if (negate) {\n return ['all', ...values.map((v) => ['!=', get, v])];\n }\n else {\n return ['any', ...values.map((v) => ['==', get, v])];\n }\n}\nfunction convertHasOp(property) {\n if (property === '$type') {\n return true;\n }\n else if (property === '$id') {\n return ['!=', ['id'], null];\n }\n else {\n return ['has', property];\n }\n}\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\nfunction convertFunction(parameters, propertySpec) {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n stops = stops.map((stop) => {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [stop[0], convertTokenString(stop[1])];\n }\n return [stop[0], convertLiteral(stop[1])];\n });\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n }\n else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n }\n else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\nfunction convertIdentityFunction(parameters, propertySpec) {\n const get = ['get', parameters.property];\n if (parameters.default === undefined) {\n // By default, expressions for string-valued properties get coerced. To preserve\n // legacy function semantics, insert an explicit assertion instead.\n return propertySpec.type === 'string' ? ['string', get] : get;\n }\n else if (propertySpec.type === 'enum') {\n return ['match', get, Object.keys(propertySpec.values), get, parameters.default];\n }\n else {\n const expression = [\n propertySpec.type === 'color' ? 'to-color' : propertySpec.type,\n get,\n convertLiteral(parameters.default)\n ];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl':\n return 'interpolate-hcl';\n case 'lab':\n return 'interpolate-lab';\n default:\n return 'interpolate';\n }\n}\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n const featureFunctionParameters = {};\n const featureFunctionStops = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([stop[0].value, stop[1]]);\n }\n // the interpolation type for the zoom dimension of a zoom-and-property\n // function is determined directly from the style property specification\n // for which it's being used: linear for interpolatable properties, step\n // otherwise.\n const functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n const expression = [getInterpolateOperator(parameters), ['linear'], ['zoom']];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n return expression;\n }\n else {\n const expression = ['step', ['zoom']];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n }\n}\nfunction coalesce(a, b) {\n if (a !== undefined)\n return a;\n if (b !== undefined)\n return b;\n}\nfunction getFallback(parameters, propertySpec) {\n const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n /*\n * Some fields with type: resolvedImage have an undefined default.\n * Because undefined is an invalid value for resolvedImage, set fallback to\n * an empty string instead of undefined to ensure output\n * passes validation.\n */\n if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n return '';\n }\n return defaultValue;\n}\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n const type = getFunctionType(parameters, propertySpec);\n const get = ['get', parameters.property];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n const expression = ['case'];\n for (const stop of stops) {\n expression.push(['==', get, stop[0]], stop[1]);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n }\n else if (type === 'categorical') {\n const expression = ['match', get];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n }\n else if (type === 'interval') {\n const expression = ['step', ['number', get]];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined\n ? expression\n : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n }\n else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : ['exponential', base],\n ['number', get]\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined\n ? expression\n : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n }\n else {\n throw new Error(`Unknown property function type ${type}`);\n }\n}\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n const type = getFunctionType(parameters, propertySpec);\n let expression;\n let isStep = false;\n if (type === 'interval') {\n expression = ['step', input];\n isStep = true;\n }\n else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : ['exponential', base],\n input\n ];\n }\n else {\n throw new Error(`Unknown zoom function type \"${type}\"`);\n }\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n}\nfunction fixupDegenerateStepCurve(expression) {\n // degenerate step curve (i.e. a constant function): add a noop stop\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\nfunction appendStopPair(curve, input, output, isStep) {\n // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n // https://github.com/mapbox/mapbox-gl-js/issues/4107\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n // step curves don't get the first input value, as it is redundant.\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n }\n else {\n return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n }\n}\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nfunction convertTokenString(s) {\n const result = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0)\n result.push(literal);\n result.push(['get', match[1]]);\n }\n if (result.length === 1) {\n return s;\n }\n if (pos < s.length) {\n result.push(s.slice(pos));\n }\n else if (result.length === 2) {\n return ['to-string', result[1]];\n }\n return result;\n}\n\nfunction getPropertyReference(propertyName) {\n for (let i = 0; i < v8Spec.layout.length; i++) {\n for (const key in v8Spec[v8Spec.layout[i]]) {\n if (key === propertyName)\n return v8Spec[v8Spec.layout[i]][key];\n }\n }\n for (let i = 0; i < v8Spec.paint.length; i++) {\n for (const key in v8Spec[v8Spec.paint[i]]) {\n if (key === propertyName)\n return v8Spec[v8Spec.paint[i]][key];\n }\n }\n return null;\n}\nfunction eachSource(style, callback) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\nfunction eachLayer(style, callback) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\nfunction eachProperty(style, options, callback) {\n function inner(layer, propertyType) {\n const properties = layer[propertyType];\n if (!properties)\n return;\n Object.keys(properties).forEach((key) => {\n callback({\n path: [layer.id, propertyType, key],\n key,\n value: properties[key],\n reference: getPropertyReference(key),\n set(x) {\n properties[key] = x;\n }\n });\n });\n }\n eachLayer(style, (layer) => {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n}\n\nfunction stringify$1(obj) {\n const type = typeof obj;\n if (type === 'number' ||\n type === 'boolean' ||\n type === 'string' ||\n obj === undefined ||\n obj === null)\n return JSON.stringify(obj);\n if (Array.isArray(obj)) {\n let str = '[';\n for (const val of obj) {\n str += `${stringify$1(val)},`;\n }\n return `${str}]`;\n }\n const keys = Object.keys(obj).sort();\n let str = '{';\n for (let i = 0; i < keys.length; i++) {\n str += `${JSON.stringify(keys[i])}:${stringify$1(obj[keys[i]])},`;\n }\n return `${str}}`;\n}\nfunction getKey(layer) {\n let key = '';\n for (const k of refProperties) {\n key += `/${stringify$1(layer[k])}`;\n }\n return key;\n}\n/**\n * Groups layers by their layout-affecting properties.\n * These are the properties that were formerly used by explicit `ref` mechanism\n * for layers: 'type', 'source', 'source-layer', 'minzoom', 'maxzoom',\n * 'filter', and 'layout'.\n *\n * The input is not modified. The output layers are references to the\n * input layers.\n *\n * @param layers - an array of {@link LayerSpecification}.\n * @param cachedKeys - an object to keep already calculated keys.\n * @returns an array of arrays of {@link LayerSpecification} objects, where each inner array\n * contains layers that share the same layout-affecting properties.\n */\nfunction groupByLayout(layers, cachedKeys) {\n const groups = {};\n for (let i = 0; i < layers.length; i++) {\n const k = (cachedKeys && cachedKeys[layers[i].id]) || getKey(layers[i]);\n // update the cache if there is one\n if (cachedKeys)\n cachedKeys[layers[i].id] = k;\n let group = groups[k];\n if (!group) {\n group = groups[k] = [];\n }\n group.push(layers[i]);\n }\n const result = [];\n for (const k in groups) {\n result.push(groups[k]);\n }\n return result;\n}\n\nfunction emptyStyle() {\n const style = {};\n const version = v8Spec['$version'];\n for (const styleKey in v8Spec['$root']) {\n const specification = v8Spec['$root'][styleKey];\n if (specification.required) {\n let value = null;\n if (styleKey === 'version') {\n value = version;\n }\n else {\n if (specification.type === 'array') {\n value = [];\n }\n else {\n value = {};\n }\n }\n if (value != null) {\n style[styleKey] = value;\n }\n }\n }\n return style;\n}\n\nfunction validateConstants(options) {\n const key = options.key;\n const constants = options.value;\n if (constants) {\n return [new ValidationError(key, constants, 'constants have been deprecated as of v8')];\n }\n else {\n return [];\n }\n}\n\n// Turn jsonlint-lines-primitives objects into primitive objects\nfunction unbundle(value) {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n }\n else {\n return value;\n }\n}\nfunction deepUnbundle(value) {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n }\n else if (value instanceof Object &&\n !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n return unbundle(value);\n}\n\nfunction validateObject(options) {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n const validateSpec = options.validateSpec;\n let errors = [];\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${type} found`)];\n }\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n // objectKey comes from the user controlled style input, so elementSpecKey may be e.g. \"__proto__\"\n const elementSpec = getOwn(elementSpecs, elementSpecKey) || elementSpecs['*'];\n let validateElement;\n if (getOwn(elementValidators, elementSpecKey)) {\n validateElement = elementValidators[elementSpecKey];\n }\n else if (getOwn(elementSpecs, elementSpecKey)) {\n if (object[objectKey] === undefined) {\n // property is possible, set but set to undefined\n // we only check it if it is required and not defaulted in the next loop\n // without skipping here, we would alert to properties being set to undefined\n continue;\n }\n validateElement = validateSpec;\n }\n else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n }\n else if (elementSpecs['*']) {\n validateElement = validateSpec;\n }\n else {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\n errors = errors.concat(validateElement({\n key: (key ? `${key}.` : key) + objectKey,\n value: object[objectKey],\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey,\n validateSpec\n }, object));\n }\n for (const elementSpecKey in elementSpecs) {\n // Don't check `required` when there's a custom validator for that property.\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n if (elementSpecs[elementSpecKey].required &&\n elementSpecs[elementSpecKey]['default'] === undefined &&\n object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n return errors;\n}\n\nfunction validateArray(options) {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const validateSpec = options.validateSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validateSpec;\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [\n new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)\n ];\n }\n let arrayElementSpec = {\n type: arraySpec.value,\n values: arraySpec.values\n };\n if (styleSpec.$version < 7) {\n arrayElementSpec['function'] = arraySpec.function;\n }\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\n let errors = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n value: array[i],\n valueSpec: arrayElementSpec,\n validateSpec: options.validateSpec,\n style,\n styleSpec,\n key: `${key}[${i}]`\n }));\n }\n return errors;\n}\n\nfunction validateNumber(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n let type = getType(value);\n if (type === 'number' && value !== value) {\n type = 'NaN';\n }\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${type} found`)];\n }\n if ('minimum' in valueSpec && value < valueSpec.minimum) {\n return [\n new ValidationError(key, value, `${value} is less than the minimum value ${valueSpec.minimum}`)\n ];\n }\n if ('maximum' in valueSpec && value > valueSpec.maximum) {\n return [\n new ValidationError(key, value, `${value} is greater than the maximum value ${valueSpec.maximum}`)\n ];\n }\n return [];\n}\n\nfunction validateFunction(options) {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction = getType(options.value.stops) === 'array' &&\n getType(options.value.stops[0]) === 'array' &&\n getType(options.value.stops[0][0]) === 'object';\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n if (functionType === 'exponential' &&\n options.valueSpec.expression &&\n !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n }\n else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) &&\n options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n return errors;\n function validateFunctionStops(options) {\n if (functionType === 'identity') {\n return [\n new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')\n ];\n }\n let errors = [];\n const value = options.value;\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n if (getType(value) === 'array' && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n return errors;\n }\n function validateFunctionStop(options) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n if (value.length !== 2) {\n return [\n new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)\n ];\n }\n if (isZoomAndPropertyFunction) {\n if (getType(value[0]) !== 'object') {\n return [\n new ValidationError(key, value, `object expected, ${getType(value[0])} found`)\n ];\n }\n if (value[0].zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (value[0].value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n if (previousStopDomainZoom && previousStopDomainZoom > unbundle(value[0].zoom)) {\n return [\n new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')\n ];\n }\n if (unbundle(value[0].zoom) !== previousStopDomainZoom) {\n previousStopDomainZoom = unbundle(value[0].zoom);\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: { zoom: {} },\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n zoom: validateNumber,\n value: validateStopDomainValue\n }\n }));\n }\n else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([\n new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')\n ]);\n }\n return errors.concat(options.validateSpec({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n function validateStopDomainValue(options, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n const reportValue = options.value !== null ? options.value : stop;\n if (!stopKeyType) {\n stopKeyType = type;\n }\n else if (type !== stopKeyType) {\n return [\n new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)\n ];\n }\n if (type !== 'number' && type !== 'string' && type !== 'boolean') {\n return [\n new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')\n ];\n }\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${type} found`;\n if (supportsPropertyExpression(functionValueSpec) && functionType === undefined) {\n message +=\n '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n if (functionType === 'categorical' &&\n type === 'number' &&\n (!isFinite(value) || Math.floor(value) !== value)) {\n return [\n new ValidationError(options.key, reportValue, `integer expected, found ${value}`)\n ];\n }\n if (functionType !== 'categorical' &&\n type === 'number' &&\n previousStopDomainValue !== undefined &&\n value < previousStopDomainValue) {\n return [\n new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')\n ];\n }\n else {\n previousStopDomainValue = value;\n }\n if (functionType === 'categorical' && value in stopDomainValues) {\n return [\n new ValidationError(options.key, reportValue, 'stop domain values must be unique')\n ];\n }\n else {\n stopDomainValues[value] = true;\n }\n return [];\n }\n function validateFunctionDefault(options) {\n return options.validateSpec({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n\nfunction validateExpression(options) {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec);\n if (expression.result === 'error') {\n return expression.value.map((error) => {\n return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n });\n }\n const expressionObj = expression.value.expression ||\n expression.value._styleExpression.expression;\n if (options.expressionContext === 'property' &&\n options.propertyKey === 'text-font' &&\n !expressionObj.outputDefined()) {\n return [\n new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)\n ];\n }\n if (options.expressionContext === 'property' &&\n options.propertyType === 'layout' &&\n !isStateConstant(expressionObj)) {\n return [\n new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')\n ];\n }\n if (options.expressionContext === 'filter' && !isStateConstant(expressionObj)) {\n return [\n new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with filters.')\n ];\n }\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [\n new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')\n ];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [\n new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')\n ];\n }\n }\n return [];\n}\n\nfunction validateBoolean(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n }\n return [];\n}\n\nfunction validateColor(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${type} found`)];\n }\n if (!Color.parse(String(value))) {\n // cast String object to string primitive\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n return [];\n}\n\nfunction validateEnum(options) {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n if (Array.isArray(valueSpec.values)) {\n // <=v7\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n else {\n // >=v8\n if (Object.keys(valueSpec.values).indexOf(unbundle(value)) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n return errors;\n}\n\nfunction validateFilter(options) {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n return validateExpression(extendBy({}, options, {\n expressionContext: 'filter',\n valueSpec: { value: 'boolean' }\n }));\n }\n else {\n return validateNonExpressionFilter(options);\n }\n}\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n const styleSpec = options.styleSpec;\n let type;\n let errors = [];\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n errors = errors.concat(validateEnum({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: styleSpec.filter_operator,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n }\n /* falls through */\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n /* falls through */\n case 'in':\n case '!in':\n if (value.length >= 2) {\n type = getType(value[1]);\n if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n type = getType(value[i]);\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec.geometry_type,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n else if (type !== 'string' && type !== 'number' && type !== 'boolean') {\n errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${type} found`));\n }\n }\n break;\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${key}[${i}]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n case 'has':\n case '!has':\n type = getType(value[1]);\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n }\n else if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n break;\n }\n return errors;\n}\n\nfunction validateProperty(options, propertyType) {\n const key = options.key;\n const validateSpec = options.validateSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${propertyType}_${options.layerType}`];\n if (!layerSpec)\n return [];\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' &&\n transitionMatch &&\n layerSpec[transitionMatch[1]] &&\n layerSpec[transitionMatch[1]].transition) {\n return validateSpec({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n }\n let tokenMatch;\n if (getType(value) === 'string' &&\n supportsPropertyExpression(valueSpec) &&\n !valueSpec.tokens &&\n (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [\n new ValidationError(key, value, `\"${propertyKey}\" does not support interpolation syntax\\n` +\n `Use an identity property function instead: \\`{ \"type\": \"identity\", \"property\": ${JSON.stringify(tokenMatch[1])} }\\`.`)\n ];\n }\n const errors = [];\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-font' &&\n isFunction$1(deepUnbundle(value)) &&\n unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n return errors.concat(validateSpec({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n\nfunction validatePaintProperty(options) {\n return validateProperty(options, 'paint');\n}\n\nfunction validateLayoutProperty(options) {\n return validateProperty(options, 'layout');\n}\n\nfunction validateLayer(options) {\n let errors = [];\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n if (getType(layer) !== 'object') {\n return [new ValidationError(key, layer, `object expected, ${getType(layer)} found`)];\n }\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n let type = unbundle(layer.type);\n const ref = unbundle(layer.ref);\n if (layer.id) {\n const layerId = unbundle(layer.id);\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n }\n }\n }\n if ('ref' in layer) {\n ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n }\n });\n let parent;\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref)\n parent = layer;\n });\n if (!parent) {\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n }\n else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n }\n else {\n type = unbundle(parent.type);\n }\n }\n else if (type !== 'background') {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n }\n else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n }\n else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n }\n else if (sourceType !== 'raster-dem' && type === 'hillshade') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster-dem source`));\n }\n else if (sourceType !== 'raster-dem' && type === 'color-relief') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster-dem source`));\n }\n else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n }\n else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n }\n else if (sourceType === 'raster-dem' &&\n type !== 'hillshade' &&\n type !== 'color-relief') {\n errors.push(new ValidationError(key, layer.source, \"raster-dem source can only be used with layer type 'hillshade' or 'color-relief'.\"));\n }\n else if (type === 'line' &&\n layer.paint &&\n layer.paint['line-gradient'] &&\n (sourceType !== 'geojson' || !source.lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" specifies a line-gradient, which requires a GeoJSON source with \\`lineMetrics\\` enabled.`));\n }\n }\n }\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n type() {\n return options.validateSpec({\n key: `${key}.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter: validateFilter,\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extendBy({ layerType: type }, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n style: options.style,\n styleSpec: options.styleSpec,\n validateSpec: options.validateSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extendBy({ layerType: type }, options));\n }\n }\n });\n }\n }\n }));\n return errors;\n}\n\nfunction validateString(options) {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${type} found`)];\n }\n return [];\n}\n\nfunction validateRasterDEMSource(options) {\n var _a;\n const sourceName = (_a = options.sourceName) !== null && _a !== void 0 ? _a : '';\n const rasterDEM = options.value;\n const styleSpec = options.styleSpec;\n const rasterDEMSpec = styleSpec.source_raster_dem;\n const style = options.style;\n let errors = [];\n const rootType = getType(rasterDEM);\n if (rasterDEM === undefined) {\n return errors;\n }\n else if (rootType !== 'object') {\n errors.push(new ValidationError('source_raster_dem', rasterDEM, `object expected, ${rootType} found`));\n return errors;\n }\n const encoding = unbundle(rasterDEM.encoding);\n const isCustomEncoding = encoding === 'custom';\n const customEncodingKeys = ['redFactor', 'greenFactor', 'blueFactor', 'baseShift'];\n const encodingName = options.value.encoding ? `\"${options.value.encoding}\"` : 'Default';\n for (const key in rasterDEM) {\n if (!isCustomEncoding && customEncodingKeys.includes(key)) {\n errors.push(new ValidationError(key, rasterDEM[key], `In \"${sourceName}\": \"${key}\" is only valid when \"encoding\" is set to \"custom\". ${encodingName} encoding found`));\n }\n else if (rasterDEMSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: rasterDEM[key],\n valueSpec: rasterDEMSpec[key],\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n }\n else {\n errors.push(new ValidationError(key, rasterDEM[key], `unknown property \"${key}\"`));\n }\n }\n return errors;\n}\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\nfunction validateSource(options) {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n const validateSpec = options.validateSpec;\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n const type = unbundle(value.type);\n let errors;\n switch (type) {\n case 'vector':\n case 'raster':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec,\n objectElementValidators,\n validateSpec\n });\n return errors;\n case 'raster-dem':\n errors = validateRasterDEMSource({\n sourceName: key,\n value,\n style: options.style,\n styleSpec,\n validateSpec\n });\n return errors;\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\n validateSpec,\n objectElementValidators\n });\n if (value.cluster) {\n for (const prop in value.clusterProperties) {\n const [operator, mapExpr] = value.clusterProperties[prop];\n const reduceExpr = typeof operator === 'string'\n ? [operator, ['accumulated'], ['get', prop]]\n : operator;\n errors.push(...validateExpression({\n key: `${key}.${prop}.map`,\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n errors.push(...validateExpression({\n key: `${key}.${prop}.reduce`,\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n return errors;\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n validateSpec,\n styleSpec\n });\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n validateSpec,\n styleSpec\n });\n case 'canvas':\n return [\n new ValidationError(key, null, 'Please use runtime APIs to add canvas sources, rather than including them in stylesheets.', 'source.canvas')\n ];\n default:\n return validateEnum({\n key: `${key}.type`,\n value: value.type,\n valueSpec: {\n values: ['vector', 'raster', 'raster-dem', 'geojson', 'video', 'image']\n }});\n }\n}\nfunction validatePromoteId({ key, value }) {\n if (getType(value) === 'string') {\n return validateString({ key, value });\n }\n else {\n const errors = [];\n for (const prop in value) {\n errors.push(...validateString({ key: `${key}.${prop}`, value: value[prop] }));\n }\n return errors;\n }\n}\n\nfunction validateLight(options) {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n let errors = [];\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n }\n else if (rootType !== 'object') {\n errors = errors.concat([\n new ValidationError('light', light, `object expected, ${rootType} found`)\n ]);\n return errors;\n }\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n if (transitionMatch &&\n lightSpec[transitionMatch[1]] &&\n lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(options.validateSpec({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n }\n else if (lightSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n }\n else {\n errors = errors.concat([\n new ValidationError(key, light[key], `unknown property \"${key}\"`)\n ]);\n }\n }\n return errors;\n}\n\nfunction validateSky(options) {\n const sky = options.value;\n const styleSpec = options.styleSpec;\n const skySpec = styleSpec.sky;\n const style = options.style;\n const rootType = getType(sky);\n if (sky === undefined) {\n return [];\n }\n else if (rootType !== 'object') {\n return [new ValidationError('sky', sky, `object expected, ${rootType} found`)];\n }\n let errors = [];\n for (const key in sky) {\n if (skySpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: sky[key],\n valueSpec: skySpec[key],\n style,\n styleSpec\n }));\n }\n else {\n errors = errors.concat([\n new ValidationError(key, sky[key], `unknown property \"${key}\"`)\n ]);\n }\n }\n return errors;\n}\n\nfunction validateTerrain(options) {\n const terrain = options.value;\n const styleSpec = options.styleSpec;\n const terrainSpec = styleSpec.terrain;\n const style = options.style;\n let errors = [];\n const rootType = getType(terrain);\n if (terrain === undefined) {\n return errors;\n }\n else if (rootType !== 'object') {\n errors = errors.concat([\n new ValidationError('terrain', terrain, `object expected, ${rootType} found`)\n ]);\n return errors;\n }\n for (const key in terrain) {\n if (terrainSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: terrain[key],\n valueSpec: terrainSpec[key],\n validateSpec: options.validateSpec,\n style,\n styleSpec\n }));\n }\n else {\n errors = errors.concat([\n new ValidationError(key, terrain[key], `unknown property \"${key}\"`)\n ]);\n }\n }\n return errors;\n}\n\nfunction validateFormatted(options) {\n if (validateString(options).length === 0) {\n return [];\n }\n return validateExpression(options);\n}\n\nfunction validateImage(options) {\n if (validateString(options).length === 0) {\n return [];\n }\n return validateExpression(options);\n}\n\nfunction validatePadding(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n if (type === 'array') {\n if (value.length < 1 || value.length > 4) {\n return [\n new ValidationError(key, value, `padding requires 1 to 4 values; ${value.length} values found`)\n ];\n }\n const arrayElementSpec = {\n type: 'number'\n };\n let errors = [];\n for (let i = 0; i < value.length; i++) {\n errors = errors.concat(options.validateSpec({\n key: `${key}[${i}]`,\n value: value[i],\n validateSpec: options.validateSpec,\n valueSpec: arrayElementSpec\n }));\n }\n return errors;\n }\n else {\n return validateNumber({\n key,\n value,\n valueSpec: {}\n });\n }\n}\n\nfunction validateNumberArray(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n if (type === 'array') {\n const arrayElementSpec = {\n type: 'number'\n };\n if (value.length < 1) {\n return [\n new ValidationError(key, value, 'array length at least 1 expected, length 0 found')\n ];\n }\n let errors = [];\n for (let i = 0; i < value.length; i++) {\n errors = errors.concat(options.validateSpec({\n key: `${key}[${i}]`,\n value: value[i],\n validateSpec: options.validateSpec,\n valueSpec: arrayElementSpec\n }));\n }\n return errors;\n }\n else {\n return validateNumber({\n key,\n value,\n valueSpec: {}\n });\n }\n}\n\nfunction validateColorArray(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n if (type === 'array') {\n if (value.length < 1) {\n return [\n new ValidationError(key, value, 'array length at least 1 expected, length 0 found')\n ];\n }\n let errors = [];\n for (let i = 0; i < value.length; i++) {\n errors = errors.concat(validateColor({\n key: `${key}[${i}]`,\n value: value[i]}));\n }\n return errors;\n }\n else {\n return validateColor({\n key,\n value});\n }\n}\n\nfunction validateVariableAnchorOffsetCollection(options) {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n const styleSpec = options.styleSpec;\n if (type !== 'array' || value.length < 1 || value.length % 2 !== 0) {\n return [\n new ValidationError(key, value, 'variableAnchorOffsetCollection requires a non-empty array of even length')\n ];\n }\n let errors = [];\n for (let i = 0; i < value.length; i += 2) {\n // Elements in even positions should be values from text-anchor enum\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n valueSpec: styleSpec['layout_symbol']['text-anchor']\n }));\n // Elements in odd positions should be points (2-element numeric arrays)\n errors = errors.concat(validateArray({\n key: `${key}[${i + 1}]`,\n value: value[i + 1],\n valueSpec: {\n length: 2,\n value: 'number'\n },\n validateSpec: options.validateSpec,\n style: options.style,\n styleSpec\n }));\n }\n return errors;\n}\n\nfunction validateSprite(options) {\n let errors = [];\n const sprite = options.value;\n const key = options.key;\n if (!Array.isArray(sprite)) {\n return validateString({\n key,\n value: sprite\n });\n }\n else {\n const allSpriteIds = [];\n const allSpriteURLs = [];\n for (const i in sprite) {\n if (sprite[i].id && allSpriteIds.includes(sprite[i].id))\n errors.push(new ValidationError(key, sprite, `all the sprites' ids must be unique, but ${sprite[i].id} is duplicated`));\n allSpriteIds.push(sprite[i].id);\n if (sprite[i].url && allSpriteURLs.includes(sprite[i].url))\n errors.push(new ValidationError(key, sprite, `all the sprites' URLs must be unique, but ${sprite[i].url} is duplicated`));\n allSpriteURLs.push(sprite[i].url);\n const pairSpec = {\n id: {\n type: 'string',\n required: true\n },\n url: {\n type: 'string',\n required: true\n }\n };\n errors = errors.concat(validateObject({\n key: `${key}[${i}]`,\n value: sprite[i],\n valueSpec: pairSpec,\n validateSpec: options.validateSpec\n }));\n }\n return errors;\n }\n}\n\nfunction validateProjection(options) {\n const projection = options.value;\n const styleSpec = options.styleSpec;\n const projectionSpec = styleSpec.projection;\n const style = options.style;\n const rootType = getType(projection);\n if (projection === undefined) {\n return [];\n }\n else if (rootType !== 'object') {\n return [\n new ValidationError('projection', projection, `object expected, ${rootType} found`)\n ];\n }\n let errors = [];\n for (const key in projection) {\n if (projectionSpec[key]) {\n errors = errors.concat(options.validateSpec({\n key,\n value: projection[key],\n valueSpec: projectionSpec[key],\n style,\n styleSpec\n }));\n }\n else {\n errors = errors.concat([\n new ValidationError(key, projection[key], `unknown property \"${key}\"`)\n ]);\n }\n }\n return errors;\n}\n\nfunction validateProjectionDefinition(options) {\n const key = options.key;\n let value = options.value;\n value = value instanceof String ? value.valueOf() : value;\n const type = getType(value);\n if (type === 'array' &&\n !isProjectionDefinitionValue(value) &&\n !isPropertyValueSpecification(value)) {\n return [\n new ValidationError(key, value, `projection expected, invalid array ${JSON.stringify(value)} found`)\n ];\n }\n else if (!['array', 'string'].includes(type)) {\n return [\n new ValidationError(key, value, `projection expected, invalid type \"${type}\" found`)\n ];\n }\n return [];\n}\nfunction isPropertyValueSpecification(value) {\n if (['interpolate', 'step', 'literal'].includes(value[0])) {\n return true;\n }\n return false;\n}\nfunction isProjectionDefinitionValue(value) {\n return (Array.isArray(value) &&\n value.length === 3 &&\n typeof value[0] === 'string' &&\n typeof value[1] === 'string' &&\n typeof value[2] === 'number');\n}\n\nfunction isObjectLiteral(anything) {\n return Boolean(anything) && anything.constructor === Object;\n}\n\nfunction validateState(options) {\n if (!isObjectLiteral(options.value)) {\n return [\n new ValidationError(options.key, options.value, `object expected, ${getType(options.value)} found`)\n ];\n }\n return [];\n}\n\nfunction validateFontFaces(options) {\n const key = options.key;\n const value = options.value;\n const validateSpec = options.validateSpec;\n const styleSpec = options.styleSpec;\n const style = options.style;\n if (!isObjectLiteral(value)) {\n return [new ValidationError(key, value, `object expected, ${getType(value)} found`)];\n }\n const errors = [];\n for (const fontName in value) {\n const fontValue = value[fontName];\n const fontValueType = getType(fontValue);\n if (fontValueType === 'string') {\n // Validate as a string URL\n errors.push(...validateString({\n key: `${key}.${fontName}`,\n value: fontValue\n }));\n }\n else if (fontValueType === 'array') {\n // Validate as an array of font face objects\n const fontFaceSpec = {\n url: {\n type: 'string',\n required: true\n },\n 'unicode-range': {\n type: 'array',\n value: 'string'\n }\n };\n for (const [i, fontFace] of fontValue.entries()) {\n errors.push(...validateObject({\n key: `${key}.${fontName}[${i}]`,\n value: fontFace,\n valueSpec: fontFaceSpec,\n styleSpec,\n style,\n validateSpec\n }));\n }\n }\n else {\n errors.push(new ValidationError(`${key}.${fontName}`, fontValue, `string or array expected, ${fontValueType} found`));\n }\n }\n return errors;\n}\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n array: validateArray,\n boolean: validateBoolean,\n number: validateNumber,\n color: validateColor,\n constants: validateConstants,\n enum: validateEnum,\n filter: validateFilter,\n function: validateFunction,\n layer: validateLayer,\n object: validateObject,\n source: validateSource,\n light: validateLight,\n sky: validateSky,\n terrain: validateTerrain,\n projection: validateProjection,\n projectionDefinition: validateProjectionDefinition,\n string: validateString,\n formatted: validateFormatted,\n resolvedImage: validateImage,\n padding: validatePadding,\n numberArray: validateNumberArray,\n colorArray: validateColorArray,\n variableAnchorOffsetCollection: validateVariableAnchorOffsetCollection,\n sprite: validateSprite,\n state: validateState,\n fontFaces: validateFontFaces\n};\n/**\n * Main recursive validation function used internally.\n * You should use `validateStyleMin` in the browser or `validateStyle` in node env.\n * @param options - the options object\n * @param options.key - string representing location of validation in style tree. Used only\n * for more informative error reporting.\n * @param options.value - current value from style being evaluated. May be anything from a\n * high level object that needs to be descended into deeper or a simple\n * scalar value.\n * @param options.valueSpec - current spec being evaluated. Tracks value.\n * @param options.styleSpec - current full spec being evaluated.\n * @param options.validateSpec - the validate function itself\n * @param options.style - the style object\n * @param options.objectElementValidators - optional object of functions that will be called\n * @returns an array of errors, or an empty array if no errors are found.\n */\nfunction validate(options) {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n options.validateSpec = validate;\n if (valueSpec.expression && isFunction$1(unbundle(value))) {\n return validateFunction(options);\n }\n else if (valueSpec.expression && isExpression(deepUnbundle(value))) {\n return validateExpression(options);\n }\n else if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n return VALIDATORS[valueSpec.type](options);\n }\n else {\n const valid = validateObject(extendBy({}, options, {\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n return valid;\n }\n}\n\nfunction validateGlyphsUrl(options) {\n const value = options.value;\n const key = options.key;\n const errors = validateString(options);\n if (errors.length)\n return errors;\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n return errors;\n}\n\n/**\n * Validate a MapLibre style against the style specification.\n * Use this when running in the browser.\n *\n * @param style - The style to be validated.\n * @param styleSpec - The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns an array of errors, or an empty array if no errors are found.\n * @example\n * const validate = require('@maplibre/maplibre-gl-style-spec/').validateStyleMin;\n * const errors = validate(style);\n */\nfunction validateStyleMin(style, styleSpec = v8Spec) {\n let errors = [];\n errors = errors.concat(validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n validateSpec: validate,\n objectElementValidators: {\n glyphs: validateGlyphsUrl,\n '*'() {\n return [];\n }\n }\n }));\n if (style['constants']) {\n errors = errors.concat(validateConstants({\n key: 'constants',\n value: style['constants']}));\n }\n return sortErrors(errors);\n}\nvalidateStyleMin.source = wrapCleanErrors(injectValidateSpec(validateSource));\nvalidateStyleMin.sprite = wrapCleanErrors(injectValidateSpec(validateSprite));\nvalidateStyleMin.glyphs = wrapCleanErrors(injectValidateSpec(validateGlyphsUrl));\nvalidateStyleMin.light = wrapCleanErrors(injectValidateSpec(validateLight));\nvalidateStyleMin.sky = wrapCleanErrors(injectValidateSpec(validateSky));\nvalidateStyleMin.terrain = wrapCleanErrors(injectValidateSpec(validateTerrain));\nvalidateStyleMin.state = wrapCleanErrors(injectValidateSpec(validateState));\nvalidateStyleMin.layer = wrapCleanErrors(injectValidateSpec(validateLayer));\nvalidateStyleMin.filter = wrapCleanErrors(injectValidateSpec(validateFilter));\nvalidateStyleMin.paintProperty = wrapCleanErrors(injectValidateSpec(validatePaintProperty));\nvalidateStyleMin.layoutProperty = wrapCleanErrors(injectValidateSpec(validateLayoutProperty));\nfunction injectValidateSpec(validator) {\n return function (options) {\n return validator(Object.assign({}, options, { validateSpec: validate }));\n };\n}\nfunction sortErrors(errors) {\n return [].concat(errors).sort((a, b) => {\n return a.line - b.line;\n });\n}\nfunction wrapCleanErrors(inner) {\n return function (...args) {\n return sortErrors(inner.apply(this, args));\n };\n}\n\n// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nfunction stringify(passedObj, options = {}) {\n const indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n\n const maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n\n let { replacer } = options;\n\n return (function _stringify(obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n const string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n const length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n const prettified = string.replace(\n stringOrChar,\n (match, stringLiteral) => {\n return stringLiteral || `${match} `;\n }\n );\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n const nextIndent = currentIndent + indent;\n const items = [];\n let index = 0;\n let start;\n let end;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n const { length } = obj;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n const keys = Object.keys(obj);\n const { length } = keys;\n for (; index < length; index++) {\n const key = keys[index];\n const keyPart = `${JSON.stringify(key)}: `;\n const value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(`,\\n${nextIndent}`), end].join(\n `\\n${currentIndent}`\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n}\n\nfunction sortKeysBy(obj, reference) {\n const result = {};\n for (const key in reference) {\n if (obj[key] !== undefined) {\n result[key] = obj[key];\n }\n }\n for (const key in obj) {\n if (result[key] === undefined) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n/**\n * Format a MapLibre Style. Returns a stringified style with its keys\n * sorted in the same order as the reference style.\n *\n * The optional `space` argument is passed to\n * [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * to generate formatted output.\n *\n * If `space` is unspecified, a default of `2` spaces will be used.\n *\n * @private\n * @param {Object} style a MapLibre Style\n * @param {number} [space] space argument to pass to `JSON.stringify`\n * @returns {string} stringified formatted JSON\n * @example\n * var fs = require('fs');\n * var format = require('maplibre-gl-style-spec').format;\n * var style = fs.readFileSync('./source.json', 'utf8');\n * fs.writeFileSync('./dest.json', format(style));\n * fs.writeFileSync('./dest.min.json', format(style, 0));\n */\nfunction format(style, space = 2) {\n style = sortKeysBy(style, v8Spec.$root);\n if (style.layers) {\n style.layers = style.layers.map((layer) => sortKeysBy(layer, v8Spec.layer));\n }\n return stringify(style, { indent: space });\n}\n\nfunction eachLayout(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('layout') === 0) {\n callback(layer[k], k);\n }\n }\n}\nfunction eachPaint(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('paint') === 0) {\n callback(layer[k], k);\n }\n }\n}\nfunction resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, style.constants[value]);\n }\n else {\n return value;\n }\n}\nfunction isFunction(value) {\n return Array.isArray(value.stops);\n}\nfunction renameProperty(obj, from, to) {\n obj[to] = obj[from];\n delete obj[from];\n}\nfunction migrateV8(style) {\n style.version = 8;\n // Rename properties, reverse coordinates in source and layers\n eachSource(style, (source) => {\n if (source.type === 'video' && source['url'] !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach((coord) => {\n return coord.reverse();\n });\n }\n });\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n eachPaint(layer, (paint) => {\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n // Inline Constants\n eachProperty(style, { paint: true, layout: true }, (property) => {\n const value = resolveConstant(style, property.value);\n if (isFunction(value)) {\n value.stops.forEach((stop) => {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n property.set(value);\n });\n delete style['constants'];\n eachLayer(style, (layer) => {\n // get rid of text-max-size, icon-max-size\n // turn text-size, icon-size into layout properties\n // https://github.com/mapbox/mapbox-gl-style-spec/issues/255\n eachLayout(layer, (layout) => {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n eachPaint(layer, (paint) => {\n if (paint['text-size']) {\n if (!layer.layout)\n layer.layout = {};\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n if (paint['icon-size']) {\n if (!layer.layout)\n layer.layout = {};\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map((s) => {\n return s.trim();\n });\n }\n if (Array.isArray(font)) {\n // Assume it's a previously migrated font-array.\n return font;\n }\n else if (typeof font === 'string') {\n return splitAndTrim(font);\n }\n else if (typeof font === 'object') {\n font.stops.forEach((stop) => {\n stop[1] = splitAndTrim(stop[1]);\n });\n return font;\n }\n else {\n throw new Error('unexpected font value');\n }\n }\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n if (layout['text-font']) {\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n // Reverse order of symbol layers. This is an imperfect migration.\n //\n // The order of a symbol layer in the layers list affects two things:\n // - how it is drawn relative to other layers (like oneway arrows below bridges)\n // - the placement priority compared to other layers\n //\n // It's impossible to reverse the placement priority without breaking the draw order\n // in some cases. This migration only reverses the order of symbol layers that\n // are above all other types of layers.\n //\n // Symbol layers that are at the top of the map preserve their priority.\n // Symbol layers that are below another type (line, fill) of layer preserve their draw order.\n let firstSymbolLayer = 0;\n for (let i = style.layers.length - 1; i >= 0; i--) {\n const layer = style.layers[i];\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n return style;\n}\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n * @param style The style object to migrate.\n * @returns The migrated style object.\n */\nfunction expressions(style) {\n const converted = [];\n eachLayer(style, (layer) => {\n if (layer.filter) {\n layer.filter = convertFilter(layer.filter);\n }\n });\n eachProperty(style, { paint: true, layout: true }, ({ path, key, value, reference, set }) => {\n if (isExpression(value) || key.endsWith('-transition') || reference === null)\n return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n }\n else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n return style;\n}\n\n/**\n * Migrate color style values to supported format.\n *\n * @param colorToMigrate Color value to migrate, could be a string or an expression.\n * @returns Color style value in supported format.\n */\nfunction migrateColors(colorToMigrate) {\n return JSON.parse(migrateHslColors(JSON.stringify(colorToMigrate)));\n}\n/**\n * Created to migrate from colors supported by the former CSS color parsing\n * library `csscolorparser` but not compliant with the CSS Color specification,\n * like `hsl(900, 0.15, 90%)`.\n *\n * @param colorToMigrate Serialized color style value.\n * @returns A serialized color style value in which all non-standard hsl color values\n * have been converted to a format that complies with the CSS Color specification.\n *\n * @example\n * migrateHslColors('\"hsl(900, 0.15, 90%)\"'); // returns '\"hsl(900, 15%, 90%)\"'\n * migrateHslColors('\"hsla(900, .15, .9)\"'); // returns '\"hsl(900, 15%, 90%)\"'\n * migrateHslColors('\"hsl(900, 15%, 90%)\"'); // returns '\"hsl(900, 15%, 90%)\"' - no changes\n */\nfunction migrateHslColors(colorToMigrate) {\n return colorToMigrate.replace(/\"hsla?\\((.+?)\\)\"/gi, (match, hslArgs) => {\n const argsMatch = hslArgs.match(/^(.+?)\\s*,\\s*(.+?)\\s*,\\s*(.+?)(?:\\s*,\\s*(.+))?$/i);\n if (argsMatch) {\n let [h, s, l, a] = argsMatch.slice(1);\n [s, l] = [s, l].map((v) => (v.endsWith('%') ? v : `${parseFloat(v) * 100}%`));\n return `\"hsl${typeof a === 'string' ? 'a' : ''}(${[h, s, l, a].filter(Boolean).join(',')})\"`;\n }\n return match;\n });\n}\n\n/**\n * Migrate a Mapbox/MapLibre GL Style to the latest version.\n *\n * @param style - a MapLibre Style\n * @returns a migrated style\n * @example\n * const fs = require('fs');\n * const migrate = require('@maplibre/maplibre-gl-style-spec').migrate;\n * const style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nfunction migrate(style) {\n let migrated = false;\n if (style.version === 7) {\n style = migrateV8(style);\n migrated = true;\n }\n if (style.version === 8) {\n migrated = !!expressions(style);\n migrated = true;\n }\n eachProperty(style, { paint: true, layout: true }, ({ value, reference, set }) => {\n if ((reference === null || reference === void 0 ? void 0 : reference.type) === 'color') {\n set(migrateColors(value));\n }\n });\n if (!migrated) {\n throw new Error(`Cannot migrate from ${style.version}`);\n }\n return style;\n}\n\nconst visibilitySpec = {\n type: 'enum',\n 'property-type': 'data-constant',\n expression: {\n interpolated: false,\n parameters: ['global-state']\n },\n values: { visible: {}, none: {} },\n transition: false,\n default: 'visible'\n};\nclass VisibilityExpressionClass {\n constructor(visibility, globalState) {\n this._globalState = globalState;\n this.setValue(visibility);\n }\n evaluate() {\n var _a;\n return (_a = this._literalValue) !== null && _a !== void 0 ? _a : this._compiledValue.evaluate({});\n }\n setValue(visibility) {\n if (visibility === null ||\n visibility === undefined ||\n visibility === 'visible' ||\n visibility === 'none') {\n this._literalValue = visibility === 'none' ? 'none' : 'visible';\n this._compiledValue = undefined;\n this._globalStateRefs = new Set();\n return;\n }\n const compiled = createExpression(visibility, visibilitySpec, this._globalState);\n if (compiled.result === 'error') {\n this._literalValue = 'visible';\n this._compiledValue = undefined;\n throw new Error(compiled.value.map((err) => `${err.key}: ${err.message}`).join(', '));\n }\n this._literalValue = undefined;\n this._compiledValue = compiled.value;\n this._globalStateRefs = findGlobalStateRefs(compiled.value.expression);\n }\n getGlobalStateRefs() {\n return this._globalStateRefs;\n }\n}\n/**\n * Creates a visibility expression from a visibility specification.\n * @param visibility - the visibility specification, literal or expression\n * @param globalState - the global state object\n * @returns visibility expression object\n */\nfunction createVisibility(visibility, globalState) {\n return new VisibilityExpressionClass(visibility, globalState);\n}\n\nconst v8 = v8Spec;\nconst expression = {\n StyleExpression,\n StylePropertyFunction,\n ZoomConstantExpression,\n ZoomDependentExpression,\n createExpression,\n createPropertyExpression,\n isExpression,\n isExpressionFilter,\n isZoomExpression,\n normalizePropertyExpression\n};\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction: isFunction$1\n};\nconst visit = { eachLayer, eachProperty, eachSource };\n\nexport { Color, ColorArray, ColorType, CompoundExpression, EvaluationContext, FormatExpression, Formatted, FormattedSection, FormattedType, Interpolate, Literal, NullType, NumberArray, Padding, ParsingError, ProjectionDefinition, ProjectionDefinitionType, ResolvedImage, Step, StyleExpression, StylePropertyFunction, ValidationError, VariableAnchorOffsetCollection, ZoomConstantExpression, ZoomDependentExpression, classifyRings, convertFilter, convertFunction, createExpression, createFunction, createPropertyExpression, createVisibility as createVisibilityExpression, derefLayers, diff, emptyStyle, expression, expressions$1 as expressions, featureFilter, format, styleFunction as function, groupByLayout, interpolateFactory as interpolates, isExpression, isFunction$1 as isFunction, isZoomExpression, v8Spec as latest, migrate, normalizePropertyExpression, supportsPropertyExpression, typeToString as toString, typeOf, v8, validate, validateStyleMin, visit };\n//# sourceMappingURL=index.mjs.map\n",null,null,null,"/*\r\n * bignumber.js v9.3.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // The index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne + (id === 2 && e > ne);\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","// src/index.ts\nvar SplayTreeNode = class {\n key;\n left = null;\n right = null;\n constructor(key) {\n this.key = key;\n }\n};\nvar SplayTreeSetNode = class extends SplayTreeNode {\n constructor(key) {\n super(key);\n }\n};\nvar SplayTreeMapNode = class _SplayTreeMapNode extends SplayTreeNode {\n value;\n constructor(key, value) {\n super(key);\n this.value = value;\n }\n replaceValue(value) {\n const node = new _SplayTreeMapNode(this.key, value);\n node.left = this.left;\n node.right = this.right;\n return node;\n }\n};\nvar SplayTree = class {\n size = 0;\n modificationCount = 0;\n splayCount = 0;\n splay(key) {\n const root = this.root;\n if (root == null) {\n this.compare(key, key);\n return -1;\n }\n let right = null;\n let newTreeRight = null;\n let left = null;\n let newTreeLeft = null;\n let current = root;\n const compare = this.compare;\n let comp;\n while (true) {\n comp = compare(current.key, key);\n if (comp > 0) {\n let currentLeft = current.left;\n if (currentLeft == null) break;\n comp = compare(currentLeft.key, key);\n if (comp > 0) {\n current.left = currentLeft.right;\n currentLeft.right = current;\n current = currentLeft;\n currentLeft = current.left;\n if (currentLeft == null) break;\n }\n if (right == null) {\n newTreeRight = current;\n } else {\n right.left = current;\n }\n right = current;\n current = currentLeft;\n } else if (comp < 0) {\n let currentRight = current.right;\n if (currentRight == null) break;\n comp = compare(currentRight.key, key);\n if (comp < 0) {\n current.right = currentRight.left;\n currentRight.left = current;\n current = currentRight;\n currentRight = current.right;\n if (currentRight == null) break;\n }\n if (left == null) {\n newTreeLeft = current;\n } else {\n left.right = current;\n }\n left = current;\n current = currentRight;\n } else {\n break;\n }\n }\n if (left != null) {\n left.right = current.left;\n current.left = newTreeLeft;\n }\n if (right != null) {\n right.left = current.right;\n current.right = newTreeRight;\n }\n if (this.root !== current) {\n this.root = current;\n this.splayCount++;\n }\n return comp;\n }\n splayMin(node) {\n let current = node;\n let nextLeft = current.left;\n while (nextLeft != null) {\n const left = nextLeft;\n current.left = left.right;\n left.right = current;\n current = left;\n nextLeft = current.left;\n }\n return current;\n }\n splayMax(node) {\n let current = node;\n let nextRight = current.right;\n while (nextRight != null) {\n const right = nextRight;\n current.right = right.left;\n right.left = current;\n current = right;\n nextRight = current.right;\n }\n return current;\n }\n _delete(key) {\n if (this.root == null) return null;\n const comp = this.splay(key);\n if (comp != 0) return null;\n let root = this.root;\n const result = root;\n const left = root.left;\n this.size--;\n if (left == null) {\n this.root = root.right;\n } else {\n const right = root.right;\n root = this.splayMax(left);\n root.right = right;\n this.root = root;\n }\n this.modificationCount++;\n return result;\n }\n addNewRoot(node, comp) {\n this.size++;\n this.modificationCount++;\n const root = this.root;\n if (root == null) {\n this.root = node;\n return;\n }\n if (comp < 0) {\n node.left = root;\n node.right = root.right;\n root.right = null;\n } else {\n node.right = root;\n node.left = root.left;\n root.left = null;\n }\n this.root = node;\n }\n _first() {\n const root = this.root;\n if (root == null) return null;\n this.root = this.splayMin(root);\n return this.root;\n }\n _last() {\n const root = this.root;\n if (root == null) return null;\n this.root = this.splayMax(root);\n return this.root;\n }\n clear() {\n this.root = null;\n this.size = 0;\n this.modificationCount++;\n }\n has(key) {\n return this.validKey(key) && this.splay(key) == 0;\n }\n defaultCompare() {\n return (a, b) => a < b ? -1 : a > b ? 1 : 0;\n }\n wrap() {\n return {\n getRoot: () => {\n return this.root;\n },\n setRoot: (root) => {\n this.root = root;\n },\n getSize: () => {\n return this.size;\n },\n getModificationCount: () => {\n return this.modificationCount;\n },\n getSplayCount: () => {\n return this.splayCount;\n },\n setSplayCount: (count) => {\n this.splayCount = count;\n },\n splay: (key) => {\n return this.splay(key);\n },\n has: (key) => {\n return this.has(key);\n }\n };\n }\n};\nvar SplayTreeMap = class extends SplayTree {\n root = null;\n compare;\n validKey;\n constructor(compare, isValidKey) {\n super();\n this.compare = compare ?? this.defaultCompare();\n this.validKey = isValidKey ?? ((a) => a != null && a != void 0);\n }\n delete(key) {\n if (!this.validKey(key)) return false;\n return this._delete(key) != null;\n }\n forEach(f) {\n const nodes = new SplayTreeMapEntryIterableIterator(this.wrap());\n let result;\n while (result = nodes.next(), !result.done) {\n f(result.value[1], result.value[0], this);\n }\n }\n get(key) {\n if (!this.validKey(key)) return void 0;\n if (this.root != null) {\n const comp = this.splay(key);\n if (comp == 0) {\n return this.root.value;\n }\n }\n return void 0;\n }\n hasValue(value) {\n const initialSplayCount = this.splayCount;\n const visit = (node) => {\n while (node != null) {\n if (node.value == value) return true;\n if (initialSplayCount != this.splayCount) {\n throw \"Concurrent modification during iteration.\";\n }\n if (node.right != null && visit(node.right)) {\n return true;\n }\n node = node.left;\n }\n return false;\n };\n return visit(this.root);\n }\n set(key, value) {\n const comp = this.splay(key);\n if (comp == 0) {\n this.root = this.root.replaceValue(value);\n this.splayCount += 1;\n return this;\n }\n this.addNewRoot(new SplayTreeMapNode(key, value), comp);\n return this;\n }\n setAll(other) {\n other.forEach((value, key) => {\n this.set(key, value);\n });\n }\n setIfAbsent(key, ifAbsent) {\n let comp = this.splay(key);\n if (comp == 0) {\n return this.root.value;\n }\n const modificationCount = this.modificationCount;\n const splayCount = this.splayCount;\n const value = ifAbsent();\n if (modificationCount != this.modificationCount) {\n throw \"Concurrent modification during iteration.\";\n }\n if (splayCount != this.splayCount) {\n comp = this.splay(key);\n }\n this.addNewRoot(new SplayTreeMapNode(key, value), comp);\n return value;\n }\n isEmpty() {\n return this.root == null;\n }\n isNotEmpty() {\n return !this.isEmpty();\n }\n firstKey() {\n if (this.root == null) return null;\n return this._first().key;\n }\n lastKey() {\n if (this.root == null) return null;\n return this._last().key;\n }\n lastKeyBefore(key) {\n if (key == null) throw \"Invalid arguments(s)\";\n if (this.root == null) return null;\n const comp = this.splay(key);\n if (comp < 0) return this.root.key;\n let node = this.root.left;\n if (node == null) return null;\n let nodeRight = node.right;\n while (nodeRight != null) {\n node = nodeRight;\n nodeRight = node.right;\n }\n return node.key;\n }\n firstKeyAfter(key) {\n if (key == null) throw \"Invalid arguments(s)\";\n if (this.root == null) return null;\n const comp = this.splay(key);\n if (comp > 0) return this.root.key;\n let node = this.root.right;\n if (node == null) return null;\n let nodeLeft = node.left;\n while (nodeLeft != null) {\n node = nodeLeft;\n nodeLeft = node.left;\n }\n return node.key;\n }\n update(key, update, ifAbsent) {\n let comp = this.splay(key);\n if (comp == 0) {\n const modificationCount = this.modificationCount;\n const splayCount = this.splayCount;\n const newValue = update(this.root.value);\n if (modificationCount != this.modificationCount) {\n throw \"Concurrent modification during iteration.\";\n }\n if (splayCount != this.splayCount) {\n this.splay(key);\n }\n this.root = this.root.replaceValue(newValue);\n this.splayCount += 1;\n return newValue;\n }\n if (ifAbsent != null) {\n const modificationCount = this.modificationCount;\n const splayCount = this.splayCount;\n const newValue = ifAbsent();\n if (modificationCount != this.modificationCount) {\n throw \"Concurrent modification during iteration.\";\n }\n if (splayCount != this.splayCount) {\n comp = this.splay(key);\n }\n this.addNewRoot(new SplayTreeMapNode(key, newValue), comp);\n return newValue;\n }\n throw \"Invalid argument (key): Key not in map.\";\n }\n updateAll(update) {\n const root = this.root;\n if (root == null) return;\n const iterator = new SplayTreeMapEntryIterableIterator(this.wrap());\n let node;\n while (node = iterator.next(), !node.done) {\n const newValue = update(...node.value);\n iterator.replaceValue(newValue);\n }\n }\n keys() {\n return new SplayTreeKeyIterableIterator(this.wrap());\n }\n values() {\n return new SplayTreeValueIterableIterator(this.wrap());\n }\n entries() {\n return this[Symbol.iterator]();\n }\n [Symbol.iterator]() {\n return new SplayTreeMapEntryIterableIterator(this.wrap());\n }\n [Symbol.toStringTag] = \"[object Map]\";\n};\nvar SplayTreeSet = class _SplayTreeSet extends SplayTree {\n root = null;\n compare;\n validKey;\n constructor(compare, isValidKey) {\n super();\n this.compare = compare ?? this.defaultCompare();\n this.validKey = isValidKey ?? ((v) => v != null && v != void 0);\n }\n delete(element) {\n if (!this.validKey(element)) return false;\n return this._delete(element) != null;\n }\n deleteAll(elements) {\n for (const element of elements) {\n this.delete(element);\n }\n }\n forEach(f) {\n const nodes = this[Symbol.iterator]();\n let result;\n while (result = nodes.next(), !result.done) {\n f(result.value, result.value, this);\n }\n }\n add(element) {\n const compare = this.splay(element);\n if (compare != 0) this.addNewRoot(new SplayTreeSetNode(element), compare);\n return this;\n }\n addAndReturn(element) {\n const compare = this.splay(element);\n if (compare != 0) this.addNewRoot(new SplayTreeSetNode(element), compare);\n return this.root.key;\n }\n addAll(elements) {\n for (const element of elements) {\n this.add(element);\n }\n }\n isEmpty() {\n return this.root == null;\n }\n isNotEmpty() {\n return this.root != null;\n }\n single() {\n if (this.size == 0) throw \"Bad state: No element\";\n if (this.size > 1) throw \"Bad state: Too many element\";\n return this.root.key;\n }\n first() {\n if (this.size == 0) throw \"Bad state: No element\";\n return this._first().key;\n }\n last() {\n if (this.size == 0) throw \"Bad state: No element\";\n return this._last().key;\n }\n lastBefore(element) {\n if (element == null) throw \"Invalid arguments(s)\";\n if (this.root == null) return null;\n const comp = this.splay(element);\n if (comp < 0) return this.root.key;\n let node = this.root.left;\n if (node == null) return null;\n let nodeRight = node.right;\n while (nodeRight != null) {\n node = nodeRight;\n nodeRight = node.right;\n }\n return node.key;\n }\n firstAfter(element) {\n if (element == null) throw \"Invalid arguments(s)\";\n if (this.root == null) return null;\n const comp = this.splay(element);\n if (comp > 0) return this.root.key;\n let node = this.root.right;\n if (node == null) return null;\n let nodeLeft = node.left;\n while (nodeLeft != null) {\n node = nodeLeft;\n nodeLeft = node.left;\n }\n return node.key;\n }\n retainAll(elements) {\n const retainSet = new _SplayTreeSet(this.compare, this.validKey);\n const modificationCount = this.modificationCount;\n for (const object of elements) {\n if (modificationCount != this.modificationCount) {\n throw \"Concurrent modification during iteration.\";\n }\n if (this.validKey(object) && this.splay(object) == 0) {\n retainSet.add(this.root.key);\n }\n }\n if (retainSet.size != this.size) {\n this.root = retainSet.root;\n this.size = retainSet.size;\n this.modificationCount++;\n }\n }\n lookup(object) {\n if (!this.validKey(object)) return null;\n const comp = this.splay(object);\n if (comp != 0) return null;\n return this.root.key;\n }\n intersection(other) {\n const result = new _SplayTreeSet(this.compare, this.validKey);\n for (const element of this) {\n if (other.has(element)) result.add(element);\n }\n return result;\n }\n difference(other) {\n const result = new _SplayTreeSet(this.compare, this.validKey);\n for (const element of this) {\n if (!other.has(element)) result.add(element);\n }\n return result;\n }\n union(other) {\n const u = this.clone();\n u.addAll(other);\n return u;\n }\n clone() {\n const set = new _SplayTreeSet(this.compare, this.validKey);\n set.size = this.size;\n set.root = this.copyNode(this.root);\n return set;\n }\n copyNode(node) {\n if (node == null) return null;\n function copyChildren(node2, dest) {\n let left;\n let right;\n do {\n left = node2.left;\n right = node2.right;\n if (left != null) {\n const newLeft = new SplayTreeSetNode(left.key);\n dest.left = newLeft;\n copyChildren(left, newLeft);\n }\n if (right != null) {\n const newRight = new SplayTreeSetNode(right.key);\n dest.right = newRight;\n node2 = right;\n dest = newRight;\n }\n } while (right != null);\n }\n const result = new SplayTreeSetNode(node.key);\n copyChildren(node, result);\n return result;\n }\n toSet() {\n return this.clone();\n }\n entries() {\n return new SplayTreeSetEntryIterableIterator(this.wrap());\n }\n keys() {\n return this[Symbol.iterator]();\n }\n values() {\n return this[Symbol.iterator]();\n }\n [Symbol.iterator]() {\n return new SplayTreeKeyIterableIterator(this.wrap());\n }\n [Symbol.toStringTag] = \"[object Set]\";\n};\nvar SplayTreeIterableIterator = class {\n tree;\n path = new Array();\n modificationCount = null;\n splayCount;\n constructor(tree) {\n this.tree = tree;\n this.splayCount = tree.getSplayCount();\n }\n [Symbol.iterator]() {\n return this;\n }\n next() {\n if (this.moveNext()) return { done: false, value: this.current() };\n return { done: true, value: null };\n }\n current() {\n if (!this.path.length) return null;\n const node = this.path[this.path.length - 1];\n return this.getValue(node);\n }\n rebuildPath(key) {\n this.path.splice(0, this.path.length);\n this.tree.splay(key);\n this.path.push(this.tree.getRoot());\n this.splayCount = this.tree.getSplayCount();\n }\n findLeftMostDescendent(node) {\n while (node != null) {\n this.path.push(node);\n node = node.left;\n }\n }\n moveNext() {\n if (this.modificationCount != this.tree.getModificationCount()) {\n if (this.modificationCount == null) {\n this.modificationCount = this.tree.getModificationCount();\n let node2 = this.tree.getRoot();\n while (node2 != null) {\n this.path.push(node2);\n node2 = node2.left;\n }\n return this.path.length > 0;\n }\n throw \"Concurrent modification during iteration.\";\n }\n if (!this.path.length) return false;\n if (this.splayCount != this.tree.getSplayCount()) {\n this.rebuildPath(this.path[this.path.length - 1].key);\n }\n let node = this.path[this.path.length - 1];\n let next = node.right;\n if (next != null) {\n while (next != null) {\n this.path.push(next);\n next = next.left;\n }\n return true;\n }\n this.path.pop();\n while (this.path.length && this.path[this.path.length - 1].right === node) {\n node = this.path.pop();\n }\n return this.path.length > 0;\n }\n};\nvar SplayTreeKeyIterableIterator = class extends SplayTreeIterableIterator {\n getValue(node) {\n return node.key;\n }\n};\nvar SplayTreeSetEntryIterableIterator = class extends SplayTreeIterableIterator {\n getValue(node) {\n return [node.key, node.key];\n }\n};\nvar SplayTreeValueIterableIterator = class extends SplayTreeIterableIterator {\n constructor(map) {\n super(map);\n }\n getValue(node) {\n return node.value;\n }\n};\nvar SplayTreeMapEntryIterableIterator = class extends SplayTreeIterableIterator {\n constructor(map) {\n super(map);\n }\n getValue(node) {\n return [node.key, node.value];\n }\n replaceValue(value) {\n if (this.modificationCount != this.tree.getModificationCount()) {\n throw \"Concurrent modification during iteration.\";\n }\n if (this.splayCount != this.tree.getSplayCount()) {\n this.rebuildPath(this.path[this.path.length - 1].key);\n }\n const last = this.path.pop();\n const newLast = last.replaceValue(value);\n if (!this.path.length) {\n this.tree.setRoot(newLast);\n } else {\n const parent = this.path[this.path.length - 1];\n if (last === parent.left) {\n parent.left = newLast;\n } else {\n parent.right = newLast;\n }\n }\n this.path.push(newLast);\n const count = this.tree.getSplayCount() + 1;\n this.tree.setSplayCount(count);\n this.splayCount = count;\n }\n};\nexport {\n SplayTreeMap,\n SplayTreeSet\n};\n//# sourceMappingURL=index.js.map","// src/geom-in.ts\nimport BigNumber2 from \"bignumber.js\";\n\n// src/constant.ts\nvar constant_default = (x) => {\n return () => {\n return x;\n };\n};\n\n// src/compare.ts\nvar compare_default = (eps) => {\n const almostEqual = eps ? (a, b) => b.minus(a).abs().isLessThanOrEqualTo(eps) : constant_default(false);\n return (a, b) => {\n if (almostEqual(a, b)) return 0;\n return a.comparedTo(b);\n };\n};\n\n// src/orient.ts\nfunction orient_default(eps) {\n const almostCollinear = eps ? (area2, ax, ay, cx, cy) => area2.exponentiatedBy(2).isLessThanOrEqualTo(\n cx.minus(ax).exponentiatedBy(2).plus(cy.minus(ay).exponentiatedBy(2)).times(eps)\n ) : constant_default(false);\n return (a, b, c) => {\n const ax = a.x, ay = a.y, cx = c.x, cy = c.y;\n const area2 = ay.minus(cy).times(b.x.minus(cx)).minus(ax.minus(cx).times(b.y.minus(cy)));\n if (almostCollinear(area2, ax, ay, cx, cy)) return 0;\n return area2.comparedTo(0);\n };\n}\n\n// src/snap.ts\nimport BigNumber from \"bignumber.js\";\nimport { SplayTreeSet } from \"splaytree-ts\";\n\n// src/identity.ts\nvar identity_default = (x) => {\n return x;\n};\n\n// src/snap.ts\nvar snap_default = (eps) => {\n if (eps) {\n const xTree = new SplayTreeSet(compare_default(eps));\n const yTree = new SplayTreeSet(compare_default(eps));\n const snapCoord = (coord, tree) => {\n return tree.addAndReturn(coord);\n };\n const snap = (v) => {\n return {\n x: snapCoord(v.x, xTree),\n y: snapCoord(v.y, yTree)\n };\n };\n snap({ x: new BigNumber(0), y: new BigNumber(0) });\n return snap;\n }\n return identity_default;\n};\n\n// src/precision.ts\nvar set = (eps) => {\n return {\n set: (eps2) => {\n precision = set(eps2);\n },\n reset: () => set(eps),\n compare: compare_default(eps),\n snap: snap_default(eps),\n orient: orient_default(eps)\n };\n};\nvar precision = set();\n\n// src/bbox.ts\nvar isInBbox = (bbox, point) => {\n return bbox.ll.x.isLessThanOrEqualTo(point.x) && point.x.isLessThanOrEqualTo(bbox.ur.x) && bbox.ll.y.isLessThanOrEqualTo(point.y) && point.y.isLessThanOrEqualTo(bbox.ur.y);\n};\nvar getBboxOverlap = (b1, b2) => {\n if (b2.ur.x.isLessThan(b1.ll.x) || b1.ur.x.isLessThan(b2.ll.x) || b2.ur.y.isLessThan(b1.ll.y) || b1.ur.y.isLessThan(b2.ll.y))\n return null;\n const lowerX = b1.ll.x.isLessThan(b2.ll.x) ? b2.ll.x : b1.ll.x;\n const upperX = b1.ur.x.isLessThan(b2.ur.x) ? b1.ur.x : b2.ur.x;\n const lowerY = b1.ll.y.isLessThan(b2.ll.y) ? b2.ll.y : b1.ll.y;\n const upperY = b1.ur.y.isLessThan(b2.ur.y) ? b1.ur.y : b2.ur.y;\n return { ll: { x: lowerX, y: lowerY }, ur: { x: upperX, y: upperY } };\n};\n\n// src/operation.ts\nimport { SplayTreeSet as SplayTreeSet3 } from \"splaytree-ts\";\n\n// src/vector.ts\nvar crossProduct = (a, b) => a.x.times(b.y).minus(a.y.times(b.x));\nvar dotProduct = (a, b) => a.x.times(b.x).plus(a.y.times(b.y));\nvar length = (v) => dotProduct(v, v).sqrt();\nvar sineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = { x: pBase.x.minus(pShared.x), y: pBase.y.minus(pShared.y) };\n const vAngle = { x: pAngle.x.minus(pShared.x), y: pAngle.y.minus(pShared.y) };\n return crossProduct(vAngle, vBase).div(length(vAngle)).div(length(vBase));\n};\nvar cosineOfAngle = (pShared, pBase, pAngle) => {\n const vBase = { x: pBase.x.minus(pShared.x), y: pBase.y.minus(pShared.y) };\n const vAngle = { x: pAngle.x.minus(pShared.x), y: pAngle.y.minus(pShared.y) };\n return dotProduct(vAngle, vBase).div(length(vAngle)).div(length(vBase));\n};\nvar horizontalIntersection = (pt, v, y) => {\n if (v.y.isZero()) return null;\n return { x: pt.x.plus(v.x.div(v.y).times(y.minus(pt.y))), y };\n};\nvar verticalIntersection = (pt, v, x) => {\n if (v.x.isZero()) return null;\n return { x, y: pt.y.plus(v.y.div(v.x).times(x.minus(pt.x))) };\n};\nvar intersection = (pt1, v1, pt2, v2) => {\n if (v1.x.isZero()) return verticalIntersection(pt2, v2, pt1.x);\n if (v2.x.isZero()) return verticalIntersection(pt1, v1, pt2.x);\n if (v1.y.isZero()) return horizontalIntersection(pt2, v2, pt1.y);\n if (v2.y.isZero()) return horizontalIntersection(pt1, v1, pt2.y);\n const kross = crossProduct(v1, v2);\n if (kross.isZero()) return null;\n const ve = { x: pt2.x.minus(pt1.x), y: pt2.y.minus(pt1.y) };\n const d1 = crossProduct(ve, v1).div(kross);\n const d2 = crossProduct(ve, v2).div(kross);\n const x1 = pt1.x.plus(d2.times(v1.x)), x2 = pt2.x.plus(d1.times(v2.x));\n const y1 = pt1.y.plus(d2.times(v1.y)), y2 = pt2.y.plus(d1.times(v2.y));\n const x = x1.plus(x2).div(2);\n const y = y1.plus(y2).div(2);\n return { x, y };\n};\n\n// src/sweep-event.ts\nvar SweepEvent = class _SweepEvent {\n point;\n isLeft;\n segment;\n otherSE;\n consumedBy;\n // for ordering sweep events in the sweep event queue\n static compare(a, b) {\n const ptCmp = _SweepEvent.comparePoints(a.point, b.point);\n if (ptCmp !== 0) return ptCmp;\n if (a.point !== b.point) a.link(b);\n if (a.isLeft !== b.isLeft) return a.isLeft ? 1 : -1;\n return Segment.compare(a.segment, b.segment);\n }\n // for ordering points in sweep line order\n static comparePoints(aPt, bPt) {\n if (aPt.x.isLessThan(bPt.x)) return -1;\n if (aPt.x.isGreaterThan(bPt.x)) return 1;\n if (aPt.y.isLessThan(bPt.y)) return -1;\n if (aPt.y.isGreaterThan(bPt.y)) return 1;\n return 0;\n }\n // Warning: 'point' input will be modified and re-used (for performance)\n constructor(point, isLeft) {\n if (point.events === void 0) point.events = [this];\n else point.events.push(this);\n this.point = point;\n this.isLeft = isLeft;\n }\n link(other) {\n if (other.point === this.point) {\n throw new Error(\"Tried to link already linked events\");\n }\n const otherEvents = other.point.events;\n for (let i = 0, iMax = otherEvents.length; i < iMax; i++) {\n const evt = otherEvents[i];\n this.point.events.push(evt);\n evt.point = this.point;\n }\n this.checkForConsuming();\n }\n /* Do a pass over our linked events and check to see if any pair\n * of segments match, and should be consumed. */\n checkForConsuming() {\n const numEvents = this.point.events.length;\n for (let i = 0; i < numEvents; i++) {\n const evt1 = this.point.events[i];\n if (evt1.segment.consumedBy !== void 0) continue;\n for (let j = i + 1; j < numEvents; j++) {\n const evt2 = this.point.events[j];\n if (evt2.consumedBy !== void 0) continue;\n if (evt1.otherSE.point.events !== evt2.otherSE.point.events) continue;\n evt1.segment.consume(evt2.segment);\n }\n }\n }\n getAvailableLinkedEvents() {\n const events = [];\n for (let i = 0, iMax = this.point.events.length; i < iMax; i++) {\n const evt = this.point.events[i];\n if (evt !== this && !evt.segment.ringOut && evt.segment.isInResult()) {\n events.push(evt);\n }\n }\n return events;\n }\n /**\n * Returns a comparator function for sorting linked events that will\n * favor the event that will give us the smallest left-side angle.\n * All ring construction starts as low as possible heading to the right,\n * so by always turning left as sharp as possible we'll get polygons\n * without uncessary loops & holes.\n *\n * The comparator function has a compute cache such that it avoids\n * re-computing already-computed values.\n */\n getLeftmostComparator(baseEvent) {\n const cache = /* @__PURE__ */ new Map();\n const fillCache = (linkedEvent) => {\n const nextEvent = linkedEvent.otherSE;\n cache.set(linkedEvent, {\n sine: sineOfAngle(this.point, baseEvent.point, nextEvent.point),\n cosine: cosineOfAngle(this.point, baseEvent.point, nextEvent.point)\n });\n };\n return (a, b) => {\n if (!cache.has(a)) fillCache(a);\n if (!cache.has(b)) fillCache(b);\n const { sine: asine, cosine: acosine } = cache.get(a);\n const { sine: bsine, cosine: bcosine } = cache.get(b);\n if (asine.isGreaterThanOrEqualTo(0) && bsine.isGreaterThanOrEqualTo(0)) {\n if (acosine.isLessThan(bcosine)) return 1;\n if (acosine.isGreaterThan(bcosine)) return -1;\n return 0;\n }\n if (asine.isLessThan(0) && bsine.isLessThan(0)) {\n if (acosine.isLessThan(bcosine)) return -1;\n if (acosine.isGreaterThan(bcosine)) return 1;\n return 0;\n }\n if (bsine.isLessThan(asine)) return -1;\n if (bsine.isGreaterThan(asine)) return 1;\n return 0;\n };\n }\n};\n\n// src/geom-out.ts\nvar RingOut = class _RingOut {\n events;\n poly;\n _isExteriorRing;\n _enclosingRing;\n /* Given the segments from the sweep line pass, compute & return a series\n * of closed rings from all the segments marked to be part of the result */\n static factory(allSegments) {\n const ringsOut = [];\n for (let i = 0, iMax = allSegments.length; i < iMax; i++) {\n const segment = allSegments[i];\n if (!segment.isInResult() || segment.ringOut) continue;\n let prevEvent = null;\n let event = segment.leftSE;\n let nextEvent = segment.rightSE;\n const events = [event];\n const startingPoint = event.point;\n const intersectionLEs = [];\n while (true) {\n prevEvent = event;\n event = nextEvent;\n events.push(event);\n if (event.point === startingPoint) break;\n while (true) {\n const availableLEs = event.getAvailableLinkedEvents();\n if (availableLEs.length === 0) {\n const firstPt = events[0].point;\n const lastPt = events[events.length - 1].point;\n throw new Error(\n `Unable to complete output ring starting at [${firstPt.x}, ${firstPt.y}]. Last matching segment found ends at [${lastPt.x}, ${lastPt.y}].`\n );\n }\n if (availableLEs.length === 1) {\n nextEvent = availableLEs[0].otherSE;\n break;\n }\n let indexLE = null;\n for (let j = 0, jMax = intersectionLEs.length; j < jMax; j++) {\n if (intersectionLEs[j].point === event.point) {\n indexLE = j;\n break;\n }\n }\n if (indexLE !== null) {\n const intersectionLE = intersectionLEs.splice(indexLE)[0];\n const ringEvents = events.splice(intersectionLE.index);\n ringEvents.unshift(ringEvents[0].otherSE);\n ringsOut.push(new _RingOut(ringEvents.reverse()));\n continue;\n }\n intersectionLEs.push({\n index: events.length,\n point: event.point\n });\n const comparator = event.getLeftmostComparator(prevEvent);\n nextEvent = availableLEs.sort(comparator)[0].otherSE;\n break;\n }\n }\n ringsOut.push(new _RingOut(events));\n }\n return ringsOut;\n }\n constructor(events) {\n this.events = events;\n for (let i = 0, iMax = events.length; i < iMax; i++) {\n events[i].segment.ringOut = this;\n }\n this.poly = null;\n }\n getGeom() {\n let prevPt = this.events[0].point;\n const points = [prevPt];\n for (let i = 1, iMax = this.events.length - 1; i < iMax; i++) {\n const pt2 = this.events[i].point;\n const nextPt2 = this.events[i + 1].point;\n if (precision.orient(pt2, prevPt, nextPt2) === 0) continue;\n points.push(pt2);\n prevPt = pt2;\n }\n if (points.length === 1) return null;\n const pt = points[0];\n const nextPt = points[1];\n if (precision.orient(pt, prevPt, nextPt) === 0) points.shift();\n points.push(points[0]);\n const step = this.isExteriorRing() ? 1 : -1;\n const iStart = this.isExteriorRing() ? 0 : points.length - 1;\n const iEnd = this.isExteriorRing() ? points.length : -1;\n const orderedPoints = [];\n for (let i = iStart; i != iEnd; i += step)\n orderedPoints.push([points[i].x.toNumber(), points[i].y.toNumber()]);\n return orderedPoints;\n }\n isExteriorRing() {\n if (this._isExteriorRing === void 0) {\n const enclosing = this.enclosingRing();\n this._isExteriorRing = enclosing ? !enclosing.isExteriorRing() : true;\n }\n return this._isExteriorRing;\n }\n enclosingRing() {\n if (this._enclosingRing === void 0) {\n this._enclosingRing = this._calcEnclosingRing();\n }\n return this._enclosingRing;\n }\n /* Returns the ring that encloses this one, if any */\n _calcEnclosingRing() {\n let leftMostEvt = this.events[0];\n for (let i = 1, iMax = this.events.length; i < iMax; i++) {\n const evt = this.events[i];\n if (SweepEvent.compare(leftMostEvt, evt) > 0) leftMostEvt = evt;\n }\n let prevSeg = leftMostEvt.segment.prevInResult();\n let prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n while (true) {\n if (!prevSeg) return null;\n if (!prevPrevSeg) return prevSeg.ringOut;\n if (prevPrevSeg.ringOut !== prevSeg.ringOut) {\n if (prevPrevSeg.ringOut?.enclosingRing() !== prevSeg.ringOut) {\n return prevSeg.ringOut;\n } else return prevSeg.ringOut?.enclosingRing();\n }\n prevSeg = prevPrevSeg.prevInResult();\n prevPrevSeg = prevSeg ? prevSeg.prevInResult() : null;\n }\n }\n};\nvar PolyOut = class {\n exteriorRing;\n interiorRings;\n constructor(exteriorRing) {\n this.exteriorRing = exteriorRing;\n exteriorRing.poly = this;\n this.interiorRings = [];\n }\n addInterior(ring) {\n this.interiorRings.push(ring);\n ring.poly = this;\n }\n getGeom() {\n const geom0 = this.exteriorRing.getGeom();\n if (geom0 === null) return null;\n const geom = [geom0];\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringGeom = this.interiorRings[i].getGeom();\n if (ringGeom === null) continue;\n geom.push(ringGeom);\n }\n return geom;\n }\n};\nvar MultiPolyOut = class {\n rings;\n polys;\n constructor(rings) {\n this.rings = rings;\n this.polys = this._composePolys(rings);\n }\n getGeom() {\n const geom = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polyGeom = this.polys[i].getGeom();\n if (polyGeom === null) continue;\n geom.push(polyGeom);\n }\n return geom;\n }\n _composePolys(rings) {\n const polys = [];\n for (let i = 0, iMax = rings.length; i < iMax; i++) {\n const ring = rings[i];\n if (ring.poly) continue;\n if (ring.isExteriorRing()) polys.push(new PolyOut(ring));\n else {\n const enclosingRing = ring.enclosingRing();\n if (!enclosingRing?.poly) polys.push(new PolyOut(enclosingRing));\n enclosingRing?.poly?.addInterior(ring);\n }\n }\n return polys;\n }\n};\n\n// src/sweep-line.ts\nimport { SplayTreeSet as SplayTreeSet2 } from \"splaytree-ts\";\nvar SweepLine = class {\n queue;\n tree;\n segments;\n constructor(queue, comparator = Segment.compare) {\n this.queue = queue;\n this.tree = new SplayTreeSet2(comparator);\n this.segments = [];\n }\n process(event) {\n const segment = event.segment;\n const newEvents = [];\n if (event.consumedBy) {\n if (event.isLeft) this.queue.delete(event.otherSE);\n else this.tree.delete(segment);\n return newEvents;\n }\n if (event.isLeft) this.tree.add(segment);\n let prevSeg = segment;\n let nextSeg = segment;\n do {\n prevSeg = this.tree.lastBefore(prevSeg);\n } while (prevSeg != null && prevSeg.consumedBy != void 0);\n do {\n nextSeg = this.tree.firstAfter(nextSeg);\n } while (nextSeg != null && nextSeg.consumedBy != void 0);\n if (event.isLeft) {\n let prevMySplitter = null;\n if (prevSeg) {\n const prevInter = prevSeg.getIntersection(segment);\n if (prevInter !== null) {\n if (!segment.isAnEndpoint(prevInter)) prevMySplitter = prevInter;\n if (!prevSeg.isAnEndpoint(prevInter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, prevInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n let nextMySplitter = null;\n if (nextSeg) {\n const nextInter = nextSeg.getIntersection(segment);\n if (nextInter !== null) {\n if (!segment.isAnEndpoint(nextInter)) nextMySplitter = nextInter;\n if (!nextSeg.isAnEndpoint(nextInter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, nextInter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n if (prevMySplitter !== null || nextMySplitter !== null) {\n let mySplitter = null;\n if (prevMySplitter === null) mySplitter = nextMySplitter;\n else if (nextMySplitter === null) mySplitter = prevMySplitter;\n else {\n const cmpSplitters = SweepEvent.comparePoints(\n prevMySplitter,\n nextMySplitter\n );\n mySplitter = cmpSplitters <= 0 ? prevMySplitter : nextMySplitter;\n }\n this.queue.delete(segment.rightSE);\n newEvents.push(segment.rightSE);\n const newEventsFromSplit = segment.split(mySplitter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (newEvents.length > 0) {\n this.tree.delete(segment);\n newEvents.push(event);\n } else {\n this.segments.push(segment);\n segment.prev = prevSeg;\n }\n } else {\n if (prevSeg && nextSeg) {\n const inter = prevSeg.getIntersection(nextSeg);\n if (inter !== null) {\n if (!prevSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(prevSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n if (!nextSeg.isAnEndpoint(inter)) {\n const newEventsFromSplit = this._splitSafely(nextSeg, inter);\n for (let i = 0, iMax = newEventsFromSplit.length; i < iMax; i++) {\n newEvents.push(newEventsFromSplit[i]);\n }\n }\n }\n }\n this.tree.delete(segment);\n }\n return newEvents;\n }\n /* Safely split a segment that is currently in the datastructures\n * IE - a segment other than the one that is currently being processed. */\n _splitSafely(seg, pt) {\n this.tree.delete(seg);\n const rightSE = seg.rightSE;\n this.queue.delete(rightSE);\n const newEvents = seg.split(pt);\n newEvents.push(rightSE);\n if (seg.consumedBy === void 0) this.tree.add(seg);\n return newEvents;\n }\n};\n\n// src/operation.ts\nvar Operation = class {\n type;\n numMultiPolys;\n run(type, geom, moreGeoms) {\n operation.type = type;\n const multipolys = [new MultiPolyIn(geom, true)];\n for (let i = 0, iMax = moreGeoms.length; i < iMax; i++) {\n multipolys.push(new MultiPolyIn(moreGeoms[i], false));\n }\n operation.numMultiPolys = multipolys.length;\n if (operation.type === \"difference\") {\n const subject = multipolys[0];\n let i = 1;\n while (i < multipolys.length) {\n if (getBboxOverlap(multipolys[i].bbox, subject.bbox) !== null) i++;\n else multipolys.splice(i, 1);\n }\n }\n if (operation.type === \"intersection\") {\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const mpA = multipolys[i];\n for (let j = i + 1, jMax = multipolys.length; j < jMax; j++) {\n if (getBboxOverlap(mpA.bbox, multipolys[j].bbox) === null) return [];\n }\n }\n }\n const queue = new SplayTreeSet3(SweepEvent.compare);\n for (let i = 0, iMax = multipolys.length; i < iMax; i++) {\n const sweepEvents = multipolys[i].getSweepEvents();\n for (let j = 0, jMax = sweepEvents.length; j < jMax; j++) {\n queue.add(sweepEvents[j]);\n }\n }\n const sweepLine = new SweepLine(queue);\n let evt = null;\n if (queue.size != 0) {\n evt = queue.first();\n queue.delete(evt);\n }\n while (evt) {\n const newEvents = sweepLine.process(evt);\n for (let i = 0, iMax = newEvents.length; i < iMax; i++) {\n const evt2 = newEvents[i];\n if (evt2.consumedBy === void 0) queue.add(evt2);\n }\n if (queue.size != 0) {\n evt = queue.first();\n queue.delete(evt);\n } else {\n evt = null;\n }\n }\n precision.reset();\n const ringsOut = RingOut.factory(sweepLine.segments);\n const result = new MultiPolyOut(ringsOut);\n return result.getGeom();\n }\n};\nvar operation = new Operation();\nvar operation_default = operation;\n\n// src/segment.ts\nvar segmentId = 0;\nvar Segment = class _Segment {\n id;\n leftSE;\n rightSE;\n rings;\n windings;\n ringOut;\n consumedBy;\n prev;\n _prevInResult;\n _beforeState;\n _afterState;\n _isInResult;\n /* This compare() function is for ordering segments in the sweep\n * line tree, and does so according to the following criteria:\n *\n * Consider the vertical line that lies an infinestimal step to the\n * right of the right-more of the two left endpoints of the input\n * segments. Imagine slowly moving a point up from negative infinity\n * in the increasing y direction. Which of the two segments will that\n * point intersect first? That segment comes 'before' the other one.\n *\n * If neither segment would be intersected by such a line, (if one\n * or more of the segments are vertical) then the line to be considered\n * is directly on the right-more of the two left inputs.\n */\n static compare(a, b) {\n const alx = a.leftSE.point.x;\n const blx = b.leftSE.point.x;\n const arx = a.rightSE.point.x;\n const brx = b.rightSE.point.x;\n if (brx.isLessThan(alx)) return 1;\n if (arx.isLessThan(blx)) return -1;\n const aly = a.leftSE.point.y;\n const bly = b.leftSE.point.y;\n const ary = a.rightSE.point.y;\n const bry = b.rightSE.point.y;\n if (alx.isLessThan(blx)) {\n if (bly.isLessThan(aly) && bly.isLessThan(ary)) return 1;\n if (bly.isGreaterThan(aly) && bly.isGreaterThan(ary)) return -1;\n const aCmpBLeft = a.comparePoint(b.leftSE.point);\n if (aCmpBLeft < 0) return 1;\n if (aCmpBLeft > 0) return -1;\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n return -1;\n }\n if (alx.isGreaterThan(blx)) {\n if (aly.isLessThan(bly) && aly.isLessThan(bry)) return -1;\n if (aly.isGreaterThan(bly) && aly.isGreaterThan(bry)) return 1;\n const bCmpALeft = b.comparePoint(a.leftSE.point);\n if (bCmpALeft !== 0) return bCmpALeft;\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n return 1;\n }\n if (aly.isLessThan(bly)) return -1;\n if (aly.isGreaterThan(bly)) return 1;\n if (arx.isLessThan(brx)) {\n const bCmpARight = b.comparePoint(a.rightSE.point);\n if (bCmpARight !== 0) return bCmpARight;\n }\n if (arx.isGreaterThan(brx)) {\n const aCmpBRight = a.comparePoint(b.rightSE.point);\n if (aCmpBRight < 0) return 1;\n if (aCmpBRight > 0) return -1;\n }\n if (!arx.eq(brx)) {\n const ay = ary.minus(aly);\n const ax = arx.minus(alx);\n const by = bry.minus(bly);\n const bx = brx.minus(blx);\n if (ay.isGreaterThan(ax) && by.isLessThan(bx)) return 1;\n if (ay.isLessThan(ax) && by.isGreaterThan(bx)) return -1;\n }\n if (arx.isGreaterThan(brx)) return 1;\n if (arx.isLessThan(brx)) return -1;\n if (ary.isLessThan(bry)) return -1;\n if (ary.isGreaterThan(bry)) return 1;\n if (a.id < b.id) return -1;\n if (a.id > b.id) return 1;\n return 0;\n }\n /* Warning: a reference to ringWindings input will be stored,\n * and possibly will be later modified */\n constructor(leftSE, rightSE, rings, windings) {\n this.id = ++segmentId;\n this.leftSE = leftSE;\n leftSE.segment = this;\n leftSE.otherSE = rightSE;\n this.rightSE = rightSE;\n rightSE.segment = this;\n rightSE.otherSE = leftSE;\n this.rings = rings;\n this.windings = windings;\n }\n static fromRing(pt1, pt2, ring) {\n let leftPt, rightPt, winding;\n const cmpPts = SweepEvent.comparePoints(pt1, pt2);\n if (cmpPts < 0) {\n leftPt = pt1;\n rightPt = pt2;\n winding = 1;\n } else if (cmpPts > 0) {\n leftPt = pt2;\n rightPt = pt1;\n winding = -1;\n } else\n throw new Error(\n `Tried to create degenerate segment at [${pt1.x}, ${pt1.y}]`\n );\n const leftSE = new SweepEvent(leftPt, true);\n const rightSE = new SweepEvent(rightPt, false);\n return new _Segment(leftSE, rightSE, [ring], [winding]);\n }\n /* When a segment is split, the rightSE is replaced with a new sweep event */\n replaceRightSE(newRightSE) {\n this.rightSE = newRightSE;\n this.rightSE.segment = this;\n this.rightSE.otherSE = this.leftSE;\n this.leftSE.otherSE = this.rightSE;\n }\n bbox() {\n const y1 = this.leftSE.point.y;\n const y2 = this.rightSE.point.y;\n return {\n ll: { x: this.leftSE.point.x, y: y1.isLessThan(y2) ? y1 : y2 },\n ur: { x: this.rightSE.point.x, y: y1.isGreaterThan(y2) ? y1 : y2 }\n };\n }\n /* A vector from the left point to the right */\n vector() {\n return {\n x: this.rightSE.point.x.minus(this.leftSE.point.x),\n y: this.rightSE.point.y.minus(this.leftSE.point.y)\n };\n }\n isAnEndpoint(pt) {\n return pt.x.eq(this.leftSE.point.x) && pt.y.eq(this.leftSE.point.y) || pt.x.eq(this.rightSE.point.x) && pt.y.eq(this.rightSE.point.y);\n }\n /* Compare this segment with a point.\n *\n * A point P is considered to be colinear to a segment if there\n * exists a distance D such that if we travel along the segment\n * from one * endpoint towards the other a distance D, we find\n * ourselves at point P.\n *\n * Return value indicates:\n *\n * 1: point lies above the segment (to the left of vertical)\n * 0: point is colinear to segment\n * -1: point lies below the segment (to the right of vertical)\n */\n comparePoint(point) {\n return precision.orient(this.leftSE.point, point, this.rightSE.point);\n }\n /**\n * Given another segment, returns the first non-trivial intersection\n * between the two segments (in terms of sweep line ordering), if it exists.\n *\n * A 'non-trivial' intersection is one that will cause one or both of the\n * segments to be split(). As such, 'trivial' vs. 'non-trivial' intersection:\n *\n * * endpoint of segA with endpoint of segB --> trivial\n * * endpoint of segA with point along segB --> non-trivial\n * * endpoint of segB with point along segA --> non-trivial\n * * point along segA with point along segB --> non-trivial\n *\n * If no non-trivial intersection exists, return null\n * Else, return null.\n */\n getIntersection(other) {\n const tBbox = this.bbox();\n const oBbox = other.bbox();\n const bboxOverlap = getBboxOverlap(tBbox, oBbox);\n if (bboxOverlap === null) return null;\n const tlp = this.leftSE.point;\n const trp = this.rightSE.point;\n const olp = other.leftSE.point;\n const orp = other.rightSE.point;\n const touchesOtherLSE = isInBbox(tBbox, olp) && this.comparePoint(olp) === 0;\n const touchesThisLSE = isInBbox(oBbox, tlp) && other.comparePoint(tlp) === 0;\n const touchesOtherRSE = isInBbox(tBbox, orp) && this.comparePoint(orp) === 0;\n const touchesThisRSE = isInBbox(oBbox, trp) && other.comparePoint(trp) === 0;\n if (touchesThisLSE && touchesOtherLSE) {\n if (touchesThisRSE && !touchesOtherRSE) return trp;\n if (!touchesThisRSE && touchesOtherRSE) return orp;\n return null;\n }\n if (touchesThisLSE) {\n if (touchesOtherRSE) {\n if (tlp.x.eq(orp.x) && tlp.y.eq(orp.y)) return null;\n }\n return tlp;\n }\n if (touchesOtherLSE) {\n if (touchesThisRSE) {\n if (trp.x.eq(olp.x) && trp.y.eq(olp.y)) return null;\n }\n return olp;\n }\n if (touchesThisRSE && touchesOtherRSE) return null;\n if (touchesThisRSE) return trp;\n if (touchesOtherRSE) return orp;\n const pt = intersection(tlp, this.vector(), olp, other.vector());\n if (pt === null) return null;\n if (!isInBbox(bboxOverlap, pt)) return null;\n return precision.snap(pt);\n }\n /**\n * Split the given segment into multiple segments on the given points.\n * * Each existing segment will retain its leftSE and a new rightSE will be\n * generated for it.\n * * A new segment will be generated which will adopt the original segment's\n * rightSE, and a new leftSE will be generated for it.\n * * If there are more than two points given to split on, new segments\n * in the middle will be generated with new leftSE and rightSE's.\n * * An array of the newly generated SweepEvents will be returned.\n *\n * Warning: input array of points is modified\n */\n split(point) {\n const newEvents = [];\n const alreadyLinked = point.events !== void 0;\n const newLeftSE = new SweepEvent(point, true);\n const newRightSE = new SweepEvent(point, false);\n const oldRightSE = this.rightSE;\n this.replaceRightSE(newRightSE);\n newEvents.push(newRightSE);\n newEvents.push(newLeftSE);\n const newSeg = new _Segment(\n newLeftSE,\n oldRightSE,\n this.rings.slice(),\n this.windings.slice()\n );\n if (SweepEvent.comparePoints(newSeg.leftSE.point, newSeg.rightSE.point) > 0) {\n newSeg.swapEvents();\n }\n if (SweepEvent.comparePoints(this.leftSE.point, this.rightSE.point) > 0) {\n this.swapEvents();\n }\n if (alreadyLinked) {\n newLeftSE.checkForConsuming();\n newRightSE.checkForConsuming();\n }\n return newEvents;\n }\n /* Swap which event is left and right */\n swapEvents() {\n const tmpEvt = this.rightSE;\n this.rightSE = this.leftSE;\n this.leftSE = tmpEvt;\n this.leftSE.isLeft = true;\n this.rightSE.isLeft = false;\n for (let i = 0, iMax = this.windings.length; i < iMax; i++) {\n this.windings[i] *= -1;\n }\n }\n /* Consume another segment. We take their rings under our wing\n * and mark them as consumed. Use for perfectly overlapping segments */\n consume(other) {\n let consumer = this;\n let consumee = other;\n while (consumer.consumedBy) consumer = consumer.consumedBy;\n while (consumee.consumedBy) consumee = consumee.consumedBy;\n const cmp = _Segment.compare(consumer, consumee);\n if (cmp === 0) return;\n if (cmp > 0) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n if (consumer.prev === consumee) {\n const tmp = consumer;\n consumer = consumee;\n consumee = tmp;\n }\n for (let i = 0, iMax = consumee.rings.length; i < iMax; i++) {\n const ring = consumee.rings[i];\n const winding = consumee.windings[i];\n const index = consumer.rings.indexOf(ring);\n if (index === -1) {\n consumer.rings.push(ring);\n consumer.windings.push(winding);\n } else consumer.windings[index] += winding;\n }\n consumee.rings = null;\n consumee.windings = null;\n consumee.consumedBy = consumer;\n consumee.leftSE.consumedBy = consumer.leftSE;\n consumee.rightSE.consumedBy = consumer.rightSE;\n }\n /* The first segment previous segment chain that is in the result */\n prevInResult() {\n if (this._prevInResult !== void 0) return this._prevInResult;\n if (!this.prev) this._prevInResult = null;\n else if (this.prev.isInResult()) this._prevInResult = this.prev;\n else this._prevInResult = this.prev.prevInResult();\n return this._prevInResult;\n }\n beforeState() {\n if (this._beforeState !== void 0) return this._beforeState;\n if (!this.prev)\n this._beforeState = {\n rings: [],\n windings: [],\n multiPolys: []\n };\n else {\n const seg = this.prev.consumedBy || this.prev;\n this._beforeState = seg.afterState();\n }\n return this._beforeState;\n }\n afterState() {\n if (this._afterState !== void 0) return this._afterState;\n const beforeState = this.beforeState();\n this._afterState = {\n rings: beforeState.rings.slice(0),\n windings: beforeState.windings.slice(0),\n multiPolys: []\n };\n const ringsAfter = this._afterState.rings;\n const windingsAfter = this._afterState.windings;\n const mpsAfter = this._afterState.multiPolys;\n for (let i = 0, iMax = this.rings.length; i < iMax; i++) {\n const ring = this.rings[i];\n const winding = this.windings[i];\n const index = ringsAfter.indexOf(ring);\n if (index === -1) {\n ringsAfter.push(ring);\n windingsAfter.push(winding);\n } else windingsAfter[index] += winding;\n }\n const polysAfter = [];\n const polysExclude = [];\n for (let i = 0, iMax = ringsAfter.length; i < iMax; i++) {\n if (windingsAfter[i] === 0) continue;\n const ring = ringsAfter[i];\n const poly = ring.poly;\n if (polysExclude.indexOf(poly) !== -1) continue;\n if (ring.isExterior) polysAfter.push(poly);\n else {\n if (polysExclude.indexOf(poly) === -1) polysExclude.push(poly);\n const index = polysAfter.indexOf(ring.poly);\n if (index !== -1) polysAfter.splice(index, 1);\n }\n }\n for (let i = 0, iMax = polysAfter.length; i < iMax; i++) {\n const mp = polysAfter[i].multiPoly;\n if (mpsAfter.indexOf(mp) === -1) mpsAfter.push(mp);\n }\n return this._afterState;\n }\n /* Is this segment part of the final result? */\n isInResult() {\n if (this.consumedBy) return false;\n if (this._isInResult !== void 0) return this._isInResult;\n const mpsBefore = this.beforeState().multiPolys;\n const mpsAfter = this.afterState().multiPolys;\n switch (operation_default.type) {\n case \"union\": {\n const noBefores = mpsBefore.length === 0;\n const noAfters = mpsAfter.length === 0;\n this._isInResult = noBefores !== noAfters;\n break;\n }\n case \"intersection\": {\n let least;\n let most;\n if (mpsBefore.length < mpsAfter.length) {\n least = mpsBefore.length;\n most = mpsAfter.length;\n } else {\n least = mpsAfter.length;\n most = mpsBefore.length;\n }\n this._isInResult = most === operation_default.numMultiPolys && least < most;\n break;\n }\n case \"xor\": {\n const diff = Math.abs(mpsBefore.length - mpsAfter.length);\n this._isInResult = diff % 2 === 1;\n break;\n }\n case \"difference\": {\n const isJustSubject = (mps) => mps.length === 1 && mps[0].isSubject;\n this._isInResult = isJustSubject(mpsBefore) !== isJustSubject(mpsAfter);\n break;\n }\n }\n return this._isInResult;\n }\n};\n\n// src/geom-in.ts\nvar RingIn = class {\n poly;\n isExterior;\n segments;\n bbox;\n constructor(geomRing, poly, isExterior) {\n if (!Array.isArray(geomRing) || geomRing.length === 0) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.poly = poly;\n this.isExterior = isExterior;\n this.segments = [];\n if (typeof geomRing[0][0] !== \"number\" || typeof geomRing[0][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const firstPoint = precision.snap({ x: new BigNumber2(geomRing[0][0]), y: new BigNumber2(geomRing[0][1]) });\n this.bbox = {\n ll: { x: firstPoint.x, y: firstPoint.y },\n ur: { x: firstPoint.x, y: firstPoint.y }\n };\n let prevPoint = firstPoint;\n for (let i = 1, iMax = geomRing.length; i < iMax; i++) {\n if (typeof geomRing[i][0] !== \"number\" || typeof geomRing[i][1] !== \"number\") {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n const point = precision.snap({ x: new BigNumber2(geomRing[i][0]), y: new BigNumber2(geomRing[i][1]) });\n if (point.x.eq(prevPoint.x) && point.y.eq(prevPoint.y)) continue;\n this.segments.push(Segment.fromRing(prevPoint, point, this));\n if (point.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = point.x;\n if (point.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = point.y;\n if (point.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = point.x;\n if (point.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = point.y;\n prevPoint = point;\n }\n if (!firstPoint.x.eq(prevPoint.x) || !firstPoint.y.eq(prevPoint.y)) {\n this.segments.push(Segment.fromRing(prevPoint, firstPoint, this));\n }\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.segments.length; i < iMax; i++) {\n const segment = this.segments[i];\n sweepEvents.push(segment.leftSE);\n sweepEvents.push(segment.rightSE);\n }\n return sweepEvents;\n }\n};\nvar PolyIn = class {\n multiPoly;\n exteriorRing;\n interiorRings;\n bbox;\n constructor(geomPoly, multiPoly) {\n if (!Array.isArray(geomPoly)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n this.exteriorRing = new RingIn(geomPoly[0], this, true);\n this.bbox = {\n ll: { x: this.exteriorRing.bbox.ll.x, y: this.exteriorRing.bbox.ll.y },\n ur: { x: this.exteriorRing.bbox.ur.x, y: this.exteriorRing.bbox.ur.y }\n };\n this.interiorRings = [];\n for (let i = 1, iMax = geomPoly.length; i < iMax; i++) {\n const ring = new RingIn(geomPoly[i], this, false);\n if (ring.bbox.ll.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = ring.bbox.ll.x;\n if (ring.bbox.ll.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = ring.bbox.ll.y;\n if (ring.bbox.ur.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = ring.bbox.ur.x;\n if (ring.bbox.ur.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = ring.bbox.ur.y;\n this.interiorRings.push(ring);\n }\n this.multiPoly = multiPoly;\n }\n getSweepEvents() {\n const sweepEvents = this.exteriorRing.getSweepEvents();\n for (let i = 0, iMax = this.interiorRings.length; i < iMax; i++) {\n const ringSweepEvents = this.interiorRings[i].getSweepEvents();\n for (let j = 0, jMax = ringSweepEvents.length; j < jMax; j++) {\n sweepEvents.push(ringSweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n};\nvar MultiPolyIn = class {\n isSubject;\n polys;\n bbox;\n constructor(geom, isSubject) {\n if (!Array.isArray(geom)) {\n throw new Error(\"Input geometry is not a valid Polygon or MultiPolygon\");\n }\n try {\n if (typeof geom[0][0][0] === \"number\") geom = [geom];\n } catch (ex) {\n }\n this.polys = [];\n this.bbox = {\n ll: { x: new BigNumber2(Number.POSITIVE_INFINITY), y: new BigNumber2(Number.POSITIVE_INFINITY) },\n ur: { x: new BigNumber2(Number.NEGATIVE_INFINITY), y: new BigNumber2(Number.NEGATIVE_INFINITY) }\n };\n for (let i = 0, iMax = geom.length; i < iMax; i++) {\n const poly = new PolyIn(geom[i], this);\n if (poly.bbox.ll.x.isLessThan(this.bbox.ll.x)) this.bbox.ll.x = poly.bbox.ll.x;\n if (poly.bbox.ll.y.isLessThan(this.bbox.ll.y)) this.bbox.ll.y = poly.bbox.ll.y;\n if (poly.bbox.ur.x.isGreaterThan(this.bbox.ur.x)) this.bbox.ur.x = poly.bbox.ur.x;\n if (poly.bbox.ur.y.isGreaterThan(this.bbox.ur.y)) this.bbox.ur.y = poly.bbox.ur.y;\n this.polys.push(poly);\n }\n this.isSubject = isSubject;\n }\n getSweepEvents() {\n const sweepEvents = [];\n for (let i = 0, iMax = this.polys.length; i < iMax; i++) {\n const polySweepEvents = this.polys[i].getSweepEvents();\n for (let j = 0, jMax = polySweepEvents.length; j < jMax; j++) {\n sweepEvents.push(polySweepEvents[j]);\n }\n }\n return sweepEvents;\n }\n};\n\n// src/index.ts\nvar union = (geom, ...moreGeoms) => operation_default.run(\"union\", geom, moreGeoms);\nvar intersection2 = (geom, ...moreGeoms) => operation_default.run(\"intersection\", geom, moreGeoms);\nvar xor = (geom, ...moreGeoms) => operation_default.run(\"xor\", geom, moreGeoms);\nvar difference = (geom, ...moreGeoms) => operation_default.run(\"difference\", geom, moreGeoms);\nvar setPrecision = precision.set;\nexport {\n difference,\n intersection2 as intersection,\n setPrecision,\n union,\n xor\n};\n//# sourceMappingURL=index.js.map","// index.ts\nvar earthRadius = 63710088e-1;\nvar factors = {\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n degrees: 360 / (2 * Math.PI),\n feet: earthRadius * 3.28084,\n inches: earthRadius * 39.37,\n kilometers: earthRadius / 1e3,\n kilometres: earthRadius / 1e3,\n meters: earthRadius,\n metres: earthRadius,\n miles: earthRadius / 1609.344,\n millimeters: earthRadius * 1e3,\n millimetres: earthRadius * 1e3,\n nauticalmiles: earthRadius / 1852,\n radians: 1,\n yards: earthRadius * 1.0936\n};\nvar areaFactors = {\n acres: 247105e-9,\n centimeters: 1e4,\n centimetres: 1e4,\n feet: 10.763910417,\n hectares: 1e-4,\n inches: 1550.003100006,\n kilometers: 1e-6,\n kilometres: 1e-6,\n meters: 1,\n metres: 1,\n miles: 386e-9,\n nauticalmiles: 29155334959812285e-23,\n millimeters: 1e6,\n millimetres: 1e6,\n yards: 1.195990046\n};\nfunction feature(geom, properties, options = {}) {\n const feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nfunction geometry(type, coordinates, _options = {}) {\n switch (type) {\n case \"Point\":\n return point(coordinates).geometry;\n case \"LineString\":\n return lineString(coordinates).geometry;\n case \"Polygon\":\n return polygon(coordinates).geometry;\n case \"MultiPoint\":\n return multiPoint(coordinates).geometry;\n case \"MultiLineString\":\n return multiLineString(coordinates).geometry;\n case \"MultiPolygon\":\n return multiPolygon(coordinates).geometry;\n default:\n throw new Error(type + \" is invalid\");\n }\n}\nfunction point(coordinates, properties, options = {}) {\n if (!coordinates) {\n throw new Error(\"coordinates is required\");\n }\n if (!Array.isArray(coordinates)) {\n throw new Error(\"coordinates must be an Array\");\n }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be at least 2 numbers long\");\n }\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) {\n throw new Error(\"coordinates must contain numbers\");\n }\n const geom = {\n type: \"Point\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction points(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return point(coords, properties);\n }),\n options\n );\n}\nfunction polygon(coordinates, properties, options = {}) {\n for (const ring of coordinates) {\n if (ring.length < 4) {\n throw new Error(\n \"Each LinearRing of a Polygon must have 4 or more Positions.\"\n );\n }\n if (ring[ring.length - 1].length !== ring[0].length) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n for (let j = 0; j < ring[ring.length - 1].length; j++) {\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n const geom = {\n type: \"Polygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction polygons(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return polygon(coords, properties);\n }),\n options\n );\n}\nfunction lineString(coordinates, properties, options = {}) {\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n const geom = {\n type: \"LineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction lineStrings(coordinates, properties, options = {}) {\n return featureCollection(\n coordinates.map((coords) => {\n return lineString(coords, properties);\n }),\n options\n );\n}\nfunction featureCollection(features, options = {}) {\n const fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nfunction multiLineString(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiLineString\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPoint(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPoint\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction multiPolygon(coordinates, properties, options = {}) {\n const geom = {\n type: \"MultiPolygon\",\n coordinates\n };\n return feature(geom, properties, options);\n}\nfunction geometryCollection(geometries, properties, options = {}) {\n const geom = {\n type: \"GeometryCollection\",\n geometries\n };\n return feature(geom, properties, options);\n}\nfunction round(num, precision = 0) {\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n const multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nfunction radiansToLength(radians, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nfunction lengthToRadians(distance, units = \"kilometers\") {\n const factor = factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nfunction bearingToAzimuth(bearing) {\n let angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nfunction azimuthToBearing(angle) {\n angle = angle % 360;\n if (angle > 180) {\n return angle - 360;\n } else if (angle < -180) {\n return angle + 360;\n }\n return angle;\n}\nfunction radiansToDegrees(radians) {\n const normalisedRadians = radians % (2 * Math.PI);\n return normalisedRadians * 180 / Math.PI;\n}\nfunction degreesToRadians(degrees) {\n const normalisedDegrees = degrees % 360;\n return normalisedDegrees * Math.PI / 180;\n}\nfunction convertLength(length, originalUnit = \"kilometers\", finalUnit = \"kilometers\") {\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nfunction convertArea(area, originalUnit = \"meters\", finalUnit = \"kilometers\") {\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n const startFactor = areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n const finalFactor = areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return area / startFactor * finalFactor;\n}\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\nfunction isObject(input) {\n return input !== null && typeof input === \"object\" && !Array.isArray(input);\n}\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach((num) => {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexport {\n areaFactors,\n azimuthToBearing,\n bearingToAzimuth,\n convertArea,\n convertLength,\n degreesToRadians,\n earthRadius,\n factors,\n feature,\n featureCollection,\n geometry,\n geometryCollection,\n isNumber,\n isObject,\n lengthToDegrees,\n lengthToRadians,\n lineString,\n lineStrings,\n multiLineString,\n multiPoint,\n multiPolygon,\n point,\n points,\n polygon,\n polygons,\n radiansToDegrees,\n radiansToLength,\n round,\n validateBBox,\n validateId\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport { feature, point, lineString, isObject } from \"@turf/helpers\";\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords, geometryMaybeCollection, wrapShrink = 0, coordIndex = 0, isGeometryCollection, type = geojson.type, isFeatureCollection = type === \"FeatureCollection\", isFeature = type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[featureIndex].geometry\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.geometry\n ) : geojson;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n wrapShrink = excludeWrapCoord && (geomType === \"Polygon\" || geomType === \"MultiPolygon\") ? 1 : 0;\n switch (geomType) {\n case null:\n break;\n case \"Point\":\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case \"LineString\":\n case \"MultiPoint\":\n for (j = 0; j < coords.length; j++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords[j],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n if (geomType === \"MultiPoint\") multiFeatureIndex++;\n }\n if (geomType === \"LineString\") multiFeatureIndex++;\n break;\n case \"Polygon\":\n case \"MultiLineString\":\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords[j][k],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n if (geomType === \"MultiLineString\") multiFeatureIndex++;\n if (geomType === \"Polygon\") geometryIndex++;\n }\n if (geomType === \"Polygon\") multiFeatureIndex++;\n break;\n case \"MultiPolygon\":\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n coords[j][k][l],\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case \"GeometryCollection\":\n for (j = 0; j < geometry.geometries.length; j++)\n if (\n // @ts-expect-error: Known type conflict\n coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false\n )\n return false;\n break;\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n }\n}\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(\n geojson,\n function(currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === void 0)\n previousValue = currentCoord;\n else\n previousValue = callback(\n // @ts-expect-error: Known type conflict\n previousValue,\n currentCoord,\n coordIndex,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n },\n excludeWrapCoord\n );\n return previousValue;\n}\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case \"FeatureCollection\":\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case \"Feature\":\n callback(geojson.properties, 0);\n break;\n }\n}\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function(currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentProperties;\n else\n previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\nfunction featureEach(geojson, callback) {\n if (geojson.type === \"Feature\") {\n callback(geojson, 0);\n } else if (geojson.type === \"FeatureCollection\") {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function(currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function(coord) {\n coords.push(coord);\n });\n return coords;\n}\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG, geometryMaybeCollection, isGeometryCollection, featureProperties, featureBBox, featureId, featureIndex = 0, isFeatureCollection = geojson.type === \"FeatureCollection\", isFeature = geojson.type === \"Feature\", stop = isFeatureCollection ? geojson.features.length : 1;\n for (i = 0; i < stop; i++) {\n geometryMaybeCollection = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].geometry\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.geometry\n ) : geojson;\n featureProperties = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].properties\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.properties\n ) : {};\n featureBBox = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].bbox\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.bbox\n ) : void 0;\n featureId = isFeatureCollection ? (\n // @ts-expect-error: Known type conflict\n geojson.features[i].id\n ) : isFeature ? (\n // @ts-expect-error: Known type conflict\n geojson.id\n ) : void 0;\n isGeometryCollection = geometryMaybeCollection ? geometryMaybeCollection.type === \"GeometryCollection\" : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ? geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n if (geometry === null) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n // @ts-expect-error: Known type conflict\n null,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n continue;\n }\n switch (geometry.type) {\n case \"Point\":\n case \"LineString\":\n case \"MultiPoint\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\": {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n geometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n break;\n }\n case \"GeometryCollection\": {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n geometry.geometries[j],\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n ) === false\n )\n return false;\n }\n break;\n }\n default:\n throw new Error(\"Unknown Geometry Type\");\n }\n }\n featureIndex++;\n }\n}\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(\n geojson,\n function(currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentGeometry;\n else\n previousValue = callback(\n // @ts-expect-error: Known type conflict\n previousValue,\n currentGeometry,\n featureIndex,\n featureProperties,\n featureBBox,\n featureId\n );\n }\n );\n return previousValue;\n}\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function(geometry, featureIndex, properties, bbox, id) {\n var type = geometry === null ? null : geometry.type;\n switch (type) {\n case null:\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n if (\n // @ts-expect-error: Known type conflict\n callback(\n feature(geometry, properties, { bbox, id }),\n featureIndex,\n 0\n ) === false\n )\n return false;\n return;\n }\n var geomType;\n switch (type) {\n case \"MultiPoint\":\n geomType = \"Point\";\n break;\n case \"MultiLineString\":\n geomType = \"LineString\";\n break;\n case \"MultiPolygon\":\n geomType = \"Polygon\";\n break;\n }\n for (\n var multiFeatureIndex = 0;\n // @ts-expect-error: Known type conflict\n multiFeatureIndex < geometry.coordinates.length;\n multiFeatureIndex++\n ) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (\n // @ts-expect-error: Known type conflict\n callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false\n )\n return false;\n }\n });\n}\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(\n geojson,\n function(currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === void 0)\n previousValue = currentFeature;\n else\n previousValue = callback(\n // @ts-expect-error: Known type conflict\n previousValue,\n currentFeature,\n featureIndex,\n multiFeatureIndex\n );\n }\n );\n return previousValue;\n}\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n if (!feature2.geometry) return;\n var type = feature2.geometry.type;\n if (type === \"Point\" || type === \"MultiPoint\") return;\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (\n // @ts-expect-error: Known type conflict\n coordEach(\n feature2,\n function(currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n if (\n // @ts-expect-error: Known type conflict\n previousCoords === void 0 || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex\n ) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = lineString(\n // @ts-expect-error: Known type conflict\n [previousCoords, currentCoord],\n feature2.properties\n );\n if (\n // @ts-expect-error: Known type conflict\n callback(\n // @ts-expect-error: Known type conflict\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n ) === false\n )\n return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }\n ) === false\n )\n return false;\n });\n}\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(\n geojson,\n function(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === void 0)\n previousValue = currentSegment;\n else\n previousValue = callback(\n previousValue,\n // @ts-expect-error: Known type conflict\n currentSegment,\n featureIndex,\n multiFeatureIndex,\n geometryIndex,\n segmentIndex\n );\n started = true;\n }\n );\n return previousValue;\n}\nfunction lineEach(geojson, callback) {\n if (!geojson) throw new Error(\"geojson is required\");\n flattenEach(geojson, function(feature2, featureIndex, multiFeatureIndex) {\n if (feature2.geometry === null) return;\n var type = feature2.geometry.type;\n var coords = feature2.geometry.coordinates;\n switch (type) {\n case \"LineString\":\n if (callback(feature2, featureIndex, multiFeatureIndex, 0, 0) === false)\n return false;\n break;\n case \"Polygon\":\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (\n // @ts-expect-error: Known type conflict\n callback(\n // @ts-expect-error: Known type conflict\n lineString(coords[geometryIndex], feature2.properties),\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n ) === false\n )\n return false;\n }\n break;\n }\n });\n}\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(\n geojson,\n function(currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === void 0)\n previousValue = currentLine;\n else\n previousValue = callback(\n previousValue,\n currentLine,\n featureIndex,\n multiFeatureIndex,\n geometryIndex\n );\n }\n );\n return previousValue;\n}\nfunction findSegment(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString(\n // @ts-expect-error: Known type conflict\n [coords[segmentIndex], coords[segmentIndex + 1]],\n properties,\n options\n );\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString(\n [\n // @ts-expect-error: Known type conflict\n coords[geometryIndex][segmentIndex],\n // @ts-expect-error: Known type conflict\n coords[geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0)\n segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString(\n [\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][segmentIndex],\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0)\n segmentIndex = // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString(\n [\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][geometryIndex][segmentIndex],\n // @ts-expect-error: Known type conflict\n coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]\n ],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nfunction findPoint(geojson, options) {\n options = options || {};\n if (!isObject(options)) throw new Error(\"options is invalid\");\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n var properties = options.properties;\n var geometry;\n switch (geojson.type) {\n case \"FeatureCollection\":\n if (featureIndex < 0)\n featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case \"Feature\":\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case \"Point\":\n case \"MultiPoint\":\n return null;\n case \"LineString\":\n case \"Polygon\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n geometry = geojson;\n break;\n default:\n throw new Error(\"geojson is invalid\");\n }\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case \"Point\":\n return point(coords, properties, options);\n case \"MultiPoint\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case \"LineString\":\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case \"Polygon\":\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case \"MultiLineString\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case \"MultiPolygon\":\n if (multiFeatureIndex < 0)\n multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0)\n geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0)\n coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(\n coords[multiFeatureIndex][geometryIndex][coordIndex],\n properties,\n options\n );\n }\n throw new Error(\"geojson is invalid\");\n}\nexport {\n coordAll,\n coordEach,\n coordReduce,\n featureEach,\n featureReduce,\n findPoint,\n findSegment,\n flattenEach,\n flattenReduce,\n geomEach,\n geomReduce,\n lineEach,\n lineReduce,\n propEach,\n propReduce,\n segmentEach,\n segmentReduce\n};\n//# sourceMappingURL=index.js.map","// index.ts\nimport * as polyclip from \"polyclip-ts\";\nimport { multiPolygon, polygon } from \"@turf/helpers\";\nimport { geomEach } from \"@turf/meta\";\nfunction union2(features, options = {}) {\n const geoms = [];\n geomEach(features, (geom) => {\n geoms.push(geom.coordinates);\n });\n if (geoms.length < 2) {\n throw new Error(\"Must have at least 2 geometries\");\n }\n const unioned = polyclip.union(geoms[0], ...geoms.slice(1));\n if (unioned.length === 0) return null;\n if (unioned.length === 1) return polygon(unioned[0], options.properties);\n else return multiPolygon(unioned, options.properties);\n}\nvar index_default = union2;\nexport {\n index_default as default,\n union2 as union\n};\n//# sourceMappingURL=index.js.map",null,"/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class\n * @param {number} x the x-coordinate. This could be longitude or screen pixels, or any other sort of unit.\n * @param {number} y the y-coordinate. This could be latitude or screen pixels, or any other sort of unit.\n *\n * @example\n * const point = new Point(-77, 38);\n */\nexport default function Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {number} k factor\n * @return {Point} output point\n */\n mult(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {number} k factor\n * @return {Point} output point\n */\n div(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround(a, p) { return this.clone()._rotateAround(a, p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {[number, number, number, number]} m transformation matrix\n * @return {Point} output point\n */\n matMult(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round() { return this.clone()._round(); },\n\n /**\n * Return the magnitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {number} magnitude\n */\n mag() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {number} distance\n */\n dist(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {number} distance\n */\n distSqr(p) {\n const dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {number} angle\n */\n angle() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {number} angle\n */\n angleTo(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {number} angle\n */\n angleWith(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /**\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {number} x the x-coordinate\n * @param {number} y the y-coordinate\n * @return {number} the angle in radians\n */\n angleWithSep(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n /** @param {[number, number, number, number]} m */\n _matMult(m) {\n const x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n /** @param {Point} p */\n _add(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n /** @param {Point} p */\n _sub(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n /** @param {number} k */\n _mult(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n /** @param {number} k */\n _div(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n /** @param {Point} p */\n _multByPoint(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n /** @param {Point} p */\n _divByPoint(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit() {\n this._div(this.mag());\n return this;\n },\n\n _perp() {\n const y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n /** @param {number} angle */\n _rotate(angle) {\n const cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n /**\n * @param {number} angle\n * @param {Point} p\n */\n _rotateAround(angle, p) {\n const cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n },\n\n constructor: Point\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, return it unchanged.\n * @param {Point | [number, number] | {x: number, y: number}} p input value\n * @return {Point} constructed point.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (p) {\n if (p instanceof Point) {\n return /** @type {Point} */ (p);\n }\n if (Array.isArray(p)) {\n return new Point(+p[0], +p[1]);\n }\n if (p.x !== undefined && p.y !== undefined) {\n return new Point(+p.x, +p.y);\n }\n throw new Error('Expected [x, y] or {x, y} point format');\n};\n","\nimport Point from '@mapbox/point-geometry';\n\n/** @import Pbf from 'pbf' */\n/** @import {Feature} from 'geojson' */\n\nexport class VectorTileFeature {\n /**\n * @param {Pbf} pbf\n * @param {number} end\n * @param {number} extent\n * @param {string[]} keys\n * @param {(number | string | boolean)[]} values\n */\n constructor(pbf, end, extent, keys, values) {\n // Public\n\n /** @type {Record<string, number | string | boolean>} */\n this.properties = {};\n\n this.extent = extent;\n /** @type {0 | 1 | 2 | 3} */\n this.type = 0;\n\n /** @type {number | undefined} */\n this.id = undefined;\n\n /** @private */\n this._pbf = pbf;\n /** @private */\n this._geometry = -1;\n /** @private */\n this._keys = keys;\n /** @private */\n this._values = values;\n\n pbf.readFields(readFeature, this, end);\n }\n\n loadGeometry() {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n\n /** @type Point[][] */\n const lines = [];\n\n /** @type Point[] | undefined */\n let line;\n\n let cmd = 1;\n let length = 0;\n let x = 0;\n let y = 0;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n\n if (cmd === 1) { // moveTo\n if (line) lines.push(line);\n line = [];\n }\n\n if (line) line.push(new Point(x, y));\n\n } else if (cmd === 7) {\n\n // Workaround for https://github.com/mapbox/mapnik-vector-tile/issues/90\n if (line) {\n line.push(line[0].clone()); // closePolygon\n }\n\n } else {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n if (line) lines.push(line);\n\n return lines;\n }\n\n bbox() {\n const pbf = this._pbf;\n pbf.pos = this._geometry;\n\n const end = pbf.readVarint() + pbf.pos;\n let cmd = 1,\n length = 0,\n x = 0,\n y = 0,\n x1 = Infinity,\n x2 = -Infinity,\n y1 = Infinity,\n y2 = -Infinity;\n\n while (pbf.pos < end) {\n if (length <= 0) {\n const cmdLen = pbf.readVarint();\n cmd = cmdLen & 0x7;\n length = cmdLen >> 3;\n }\n\n length--;\n\n if (cmd === 1 || cmd === 2) {\n x += pbf.readSVarint();\n y += pbf.readSVarint();\n if (x < x1) x1 = x;\n if (x > x2) x2 = x;\n if (y < y1) y1 = y;\n if (y > y2) y2 = y;\n\n } else if (cmd !== 7) {\n throw new Error(`unknown command ${cmd}`);\n }\n }\n\n return [x1, y1, x2, y2];\n }\n\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} z\n * @return {Feature}\n */\n toGeoJSON(x, y, z) {\n const size = this.extent * Math.pow(2, z),\n x0 = this.extent * x,\n y0 = this.extent * y,\n vtCoords = this.loadGeometry();\n\n /** @param {Point} p */\n function projectPoint(p) {\n return [\n (p.x + x0) * 360 / size - 180,\n 360 / Math.PI * Math.atan(Math.exp((1 - (p.y + y0) * 2 / size) * Math.PI)) - 90\n ];\n }\n\n /** @param {Point[]} line */\n function projectLine(line) {\n return line.map(projectPoint);\n }\n\n /** @type {Feature[\"geometry\"]} */\n let geometry;\n\n if (this.type === 1) {\n const points = [];\n for (const line of vtCoords) {\n points.push(line[0]);\n }\n const coordinates = projectLine(points);\n geometry = points.length === 1 ?\n {type: 'Point', coordinates: coordinates[0]} :\n {type: 'MultiPoint', coordinates};\n\n } else if (this.type === 2) {\n\n const coordinates = vtCoords.map(projectLine);\n geometry = coordinates.length === 1 ?\n {type: 'LineString', coordinates: coordinates[0]} :\n {type: 'MultiLineString', coordinates};\n\n } else if (this.type === 3) {\n const polygons = classifyRings(vtCoords);\n const coordinates = [];\n for (const polygon of polygons) {\n coordinates.push(polygon.map(projectLine));\n }\n geometry = coordinates.length === 1 ?\n {type: 'Polygon', coordinates: coordinates[0]} :\n {type: 'MultiPolygon', coordinates};\n } else {\n\n throw new Error('unknown feature type');\n }\n\n /** @type {Feature} */\n const result = {\n type: 'Feature',\n geometry,\n properties: this.properties\n };\n\n if (this.id != null) {\n result.id = this.id;\n }\n\n return result;\n }\n}\n\n/** @type {['Unknown', 'Point', 'LineString', 'Polygon']} */\nVectorTileFeature.types = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\n/**\n * @param {number} tag\n * @param {VectorTileFeature} feature\n * @param {Pbf} pbf\n */\nfunction readFeature(tag, feature, pbf) {\n if (tag === 1) feature.id = pbf.readVarint();\n else if (tag === 2) readTag(pbf, feature);\n else if (tag === 3) feature.type = /** @type {0 | 1 | 2 | 3} */ (pbf.readVarint());\n // @ts-expect-error TS2341 deliberately accessing a private property\n else if (tag === 4) feature._geometry = pbf.pos;\n}\n\n/**\n * @param {Pbf} pbf\n * @param {VectorTileFeature} feature\n */\nfunction readTag(pbf, feature) {\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n // @ts-expect-error TS2341 deliberately accessing a private property\n const key = feature._keys[pbf.readVarint()];\n // @ts-expect-error TS2341 deliberately accessing a private property\n const value = feature._values[pbf.readVarint()];\n feature.properties[key] = value;\n }\n}\n\n/** classifies an array of rings into polygons with outer rings and holes\n * @param {Point[][]} rings\n */\nexport function classifyRings(rings) {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons = [];\n let polygon, ccw;\n\n for (let i = 0; i < len; i++) {\n const area = signedArea(rings[i]);\n if (area === 0) continue;\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else if (polygon) {\n polygon.push(rings[i]);\n }\n }\n if (polygon) polygons.push(polygon);\n\n return polygons;\n}\n\n/** @param {Point[]} ring */\nfunction signedArea(ring) {\n let sum = 0;\n for (let i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n\nexport class VectorTileLayer {\n /**\n * @param {Pbf} pbf\n * @param {number} [end]\n */\n constructor(pbf, end) {\n // Public\n this.version = 1;\n this.name = '';\n this.extent = 4096;\n this.length = 0;\n\n /** @private */\n this._pbf = pbf;\n\n /** @private\n * @type {string[]} */\n this._keys = [];\n\n /** @private\n * @type {(number | string | boolean)[]} */\n this._values = [];\n\n /** @private\n * @type {number[]} */\n this._features = [];\n\n pbf.readFields(readLayer, this, end);\n\n this.length = this._features.length;\n }\n\n /** return feature `i` from this layer as a `VectorTileFeature`\n * @param {number} i\n */\n feature(i) {\n if (i < 0 || i >= this._features.length) throw new Error('feature index out of bounds');\n\n this._pbf.pos = this._features[i];\n\n const end = this._pbf.readVarint() + this._pbf.pos;\n return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);\n }\n}\n\n/**\n * @param {number} tag\n * @param {VectorTileLayer} layer\n * @param {Pbf} pbf\n */\nfunction readLayer(tag, layer, pbf) {\n if (tag === 15) layer.version = pbf.readVarint();\n else if (tag === 1) layer.name = pbf.readString();\n else if (tag === 5) layer.extent = pbf.readVarint();\n // @ts-expect-error TS2341 deliberately accessing a private property\n else if (tag === 2) layer._features.push(pbf.pos);\n // @ts-expect-error TS2341 deliberately accessing a private property\n else if (tag === 3) layer._keys.push(pbf.readString());\n // @ts-expect-error TS2341 deliberately accessing a private property\n else if (tag === 4) layer._values.push(readValueMessage(pbf));\n}\n\n/**\n * @param {Pbf} pbf\n */\nfunction readValueMessage(pbf) {\n let value = null;\n const end = pbf.readVarint() + pbf.pos;\n\n while (pbf.pos < end) {\n const tag = pbf.readVarint() >> 3;\n\n value = tag === 1 ? pbf.readString() :\n tag === 2 ? pbf.readFloat() :\n tag === 3 ? pbf.readDouble() :\n tag === 4 ? pbf.readVarint64() :\n tag === 5 ? pbf.readVarint() :\n tag === 6 ? pbf.readSVarint() :\n tag === 7 ? pbf.readBoolean() : null;\n }\n if (value == null) {\n throw new Error('unknown feature value');\n }\n\n return value;\n}\n\nexport class VectorTile {\n /**\n * @param {Pbf} pbf\n * @param {number} [end]\n */\n constructor(pbf, end) {\n /** @type {Record<string, VectorTileLayer>} */\n this.layers = pbf.readFields(readTile, {}, end);\n }\n}\n\n/**\n * @param {number} tag\n * @param {Record<string, VectorTileLayer>} layers\n * @param {Pbf} pbf\n */\nfunction readTile(tag, layers, pbf) {\n if (tag === 3) {\n const layer = new VectorTileLayer(pbf, pbf.readVarint() + pbf.pos);\n if (layer.length) layers[layer.name] = layer;\n }\n}\n","\nconst SHIFT_LEFT_32 = (1 << 16) * (1 << 16);\nconst SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nconst TEXT_DECODER_MIN_LENGTH = 12;\nconst utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8');\n\nconst PBF_VARINT = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nconst PBF_FIXED64 = 1; // 64-bit: double, fixed64, sfixed64\nconst PBF_BYTES = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nconst PBF_FIXED32 = 5; // 32-bit: float, fixed32, sfixed32\n\nexport default class Pbf {\n /**\n * @param {Uint8Array | ArrayBuffer} [buf]\n */\n constructor(buf = new Uint8Array(16)) {\n this.buf = ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf);\n this.dataView = new DataView(this.buf.buffer);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n }\n\n // === READING =================================================================\n\n /**\n * @template T\n * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n * @param {T} result\n * @param {number} [end]\n */\n readFields(readField, result, end = this.length) {\n while (this.pos < end) {\n const val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n }\n\n /**\n * @template T\n * @param {(tag: number, result: T, pbf: Pbf) => void} readField\n * @param {T} result\n */\n readMessage(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n }\n\n readFixed32() {\n const val = this.dataView.getUint32(this.pos, true);\n this.pos += 4;\n return val;\n }\n\n readSFixed32() {\n const val = this.dataView.getInt32(this.pos, true);\n this.pos += 4;\n return val;\n }\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64() {\n const val = this.dataView.getUint32(this.pos, true) + this.dataView.getUint32(this.pos + 4, true) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n }\n\n readSFixed64() {\n const val = this.dataView.getUint32(this.pos, true) + this.dataView.getInt32(this.pos + 4, true) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n }\n\n readFloat() {\n const val = this.dataView.getFloat32(this.pos, true);\n this.pos += 4;\n return val;\n }\n\n readDouble() {\n const val = this.dataView.getFloat64(this.pos, true);\n this.pos += 8;\n return val;\n }\n\n /**\n * @param {boolean} [isSigned]\n */\n readVarint(isSigned) {\n const buf = this.buf;\n let val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n }\n\n readVarint64() { // for compatibility with v2.0.1\n return this.readVarint(true);\n }\n\n readSVarint() {\n const num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n }\n\n readBoolean() {\n return Boolean(this.readVarint());\n }\n\n readString() {\n const end = this.readVarint() + this.pos;\n const pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return utf8TextDecoder.decode(this.buf.subarray(pos, end));\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n }\n\n readBytes() {\n const end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n }\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n /**\n * @param {number[]} [arr]\n * @param {boolean} [isSigned]\n */\n readPackedVarint(arr = [], isSigned) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedSVarint(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n }\n /** @param {boolean[]} [arr] */\n readPackedBoolean(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedFloat(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedDouble(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedFixed32(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedSFixed32(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedFixed64(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n }\n /** @param {number[]} [arr] */\n readPackedSFixed64(arr = []) {\n const end = this.readPackedEnd();\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n }\n readPackedEnd() {\n return this.type === PBF_BYTES ? this.readVarint() + this.pos : this.pos + 1;\n }\n\n /** @param {number} val */\n skip(val) {\n const type = val & 0x7;\n if (type === PBF_VARINT) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === PBF_BYTES) this.pos = this.readVarint() + this.pos;\n else if (type === PBF_FIXED32) this.pos += 4;\n else if (type === PBF_FIXED64) this.pos += 8;\n else throw new Error(`Unimplemented type: ${type}`);\n }\n\n // === WRITING =================================================================\n\n /**\n * @param {number} tag\n * @param {number} type\n */\n writeTag(tag, type) {\n this.writeVarint((tag << 3) | type);\n }\n\n /** @param {number} min */\n realloc(min) {\n let length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n const buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.dataView = new DataView(buf.buffer);\n this.length = length;\n }\n }\n\n finish() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n }\n\n /** @param {number} val */\n writeFixed32(val) {\n this.realloc(4);\n this.dataView.setInt32(this.pos, val, true);\n this.pos += 4;\n }\n\n /** @param {number} val */\n writeSFixed32(val) {\n this.realloc(4);\n this.dataView.setInt32(this.pos, val, true);\n this.pos += 4;\n }\n\n /** @param {number} val */\n writeFixed64(val) {\n this.realloc(8);\n this.dataView.setInt32(this.pos, val & -1, true);\n this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n this.pos += 8;\n }\n\n /** @param {number} val */\n writeSFixed64(val) {\n this.realloc(8);\n this.dataView.setInt32(this.pos, val & -1, true);\n this.dataView.setInt32(this.pos + 4, Math.floor(val * SHIFT_RIGHT_32), true);\n this.pos += 8;\n }\n\n /** @param {number} val */\n writeVarint(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n }\n\n /** @param {number} val */\n writeSVarint(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n }\n\n /** @param {boolean} val */\n writeBoolean(val) {\n this.writeVarint(+val);\n }\n\n /** @param {string} str */\n writeString(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n const startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n const len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n }\n\n /** @param {number} val */\n writeFloat(val) {\n this.realloc(4);\n this.dataView.setFloat32(this.pos, val, true);\n this.pos += 4;\n }\n\n /** @param {number} val */\n writeDouble(val) {\n this.realloc(8);\n this.dataView.setFloat64(this.pos, val, true);\n this.pos += 8;\n }\n\n /** @param {Uint8Array} buffer */\n writeBytes(buffer) {\n const len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (let i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n }\n\n /**\n * @template T\n * @param {(obj: T, pbf: Pbf) => void} fn\n * @param {T} obj\n */\n writeRawMessage(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n const startPos = this.pos;\n fn(obj, this);\n const len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n }\n\n /**\n * @template T\n * @param {number} tag\n * @param {(obj: T, pbf: Pbf) => void} fn\n * @param {T} obj\n */\n writeMessage(tag, fn, obj) {\n this.writeTag(tag, PBF_BYTES);\n this.writeRawMessage(fn, obj);\n }\n\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedVarint(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedVarint, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedSVarint(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedSVarint, arr);\n }\n /**\n * @param {number} tag\n * @param {boolean[]} arr\n */\n writePackedBoolean(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedBoolean, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedFloat(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedFloat, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedDouble(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedDouble, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedFixed32(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedFixed32, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedSFixed32(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedFixed64(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedFixed64, arr);\n }\n /**\n * @param {number} tag\n * @param {number[]} arr\n */\n writePackedSFixed64(tag, arr) {\n if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr);\n }\n\n /**\n * @param {number} tag\n * @param {Uint8Array} buffer\n */\n writeBytesField(tag, buffer) {\n this.writeTag(tag, PBF_BYTES);\n this.writeBytes(buffer);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeFixed32Field(tag, val) {\n this.writeTag(tag, PBF_FIXED32);\n this.writeFixed32(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeSFixed32Field(tag, val) {\n this.writeTag(tag, PBF_FIXED32);\n this.writeSFixed32(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeFixed64Field(tag, val) {\n this.writeTag(tag, PBF_FIXED64);\n this.writeFixed64(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeSFixed64Field(tag, val) {\n this.writeTag(tag, PBF_FIXED64);\n this.writeSFixed64(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeVarintField(tag, val) {\n this.writeTag(tag, PBF_VARINT);\n this.writeVarint(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeSVarintField(tag, val) {\n this.writeTag(tag, PBF_VARINT);\n this.writeSVarint(val);\n }\n /**\n * @param {number} tag\n * @param {string} str\n */\n writeStringField(tag, str) {\n this.writeTag(tag, PBF_BYTES);\n this.writeString(str);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeFloatField(tag, val) {\n this.writeTag(tag, PBF_FIXED32);\n this.writeFloat(val);\n }\n /**\n * @param {number} tag\n * @param {number} val\n */\n writeDoubleField(tag, val) {\n this.writeTag(tag, PBF_FIXED64);\n this.writeDouble(val);\n }\n /**\n * @param {number} tag\n * @param {boolean} val\n */\n writeBooleanField(tag, val) {\n this.writeVarintField(tag, +val);\n }\n};\n\n/**\n * @param {number} l\n * @param {boolean | undefined} s\n * @param {Pbf} p\n */\nfunction readVarintRemainder(l, s, p) {\n const buf = p.buf;\n let h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\n/**\n * @param {number} low\n * @param {number} high\n * @param {boolean} [isSigned]\n */\nfunction toNum(low, high, isSigned) {\n return isSigned ? high * 0x100000000 + (low >>> 0) : ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\n/**\n * @param {number} val\n * @param {Pbf} pbf\n */\nfunction writeBigVarint(val, pbf) {\n let low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\n/**\n * @param {number} high\n * @param {number} low\n * @param {Pbf} pbf\n */\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\n/**\n * @param {number} high\n * @param {Pbf} pbf\n */\nfunction writeBigVarintHigh(high, pbf) {\n const lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\n/**\n * @param {number} startPos\n * @param {number} len\n * @param {Pbf} pbf\n */\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n const extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (let i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedVarint(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSVarint(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFloat(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedDouble(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]);\n}\n/**\n * @param {boolean[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedBoolean(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed32(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed32(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedFixed64(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]);\n}\n/**\n * @param {number[]} arr\n * @param {Pbf} pbf\n */\nfunction writePackedSFixed64(arr, pbf) {\n for (let i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]);\n}\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\n/**\n * @param {Uint8Array} buf\n * @param {number} pos\n * @param {number} end\n */\nfunction readUtf8(buf, pos, end) {\n let str = '';\n let i = pos;\n\n while (i < end) {\n const b0 = buf[i];\n let c = null; // codepoint\n let bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n let b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\n/**\n * @param {Uint8Array} buf\n * @param {string} str\n * @param {number} pos\n */\nfunction writeUtf8(buf, str, pos) {\n for (let i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n",null,null,null,null,null],"names":["Color","classifyRings","compare","MaplibreColor","SplayTreeSet2","SplayTreeSet3","BigNumber2","polyclip.union","union","Protobuf","latest"],"mappings":"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","x_google_ignoreList":[0,4,5,6,7,8,9,11,12,13]}