{"version":3,"file":"index.cjs","sources":["../../../node_modules/json-stringify-pretty-compact/index.js","../format.js","../../../node_modules/url/node_modules/punycode/punycode.js","../../../node_modules/url/util.js","../../../node_modules/querystring/decode.js","../../../node_modules/querystring/encode.js","../../../node_modules/querystring/index.js","../../../node_modules/url/url.js","../visit.js","../migrate/v8.js","../util/extend.js","../expression/parsing_error.js","../expression/scope.js","../expression/types.js","../../../node_modules/csscolorparser/csscolorparser.js","../util/color.js","../expression/types/collator.js","../expression/types/formatted.js","../expression/types/resolved_image.js","../expression/values.js","../expression/definitions/literal.js","../expression/runtime_error.js","../expression/definitions/assertion.js","../expression/definitions/format.js","../expression/definitions/image.js","../expression/definitions/coercion.js","../expression/evaluation_context.js","../expression/compound_expression.js","../expression/definitions/collator.js","../expression/definitions/within.js","../expression/is_constant.js","../expression/definitions/var.js","../expression/parsing_context.js","../expression/stops.js","../expression/definitions/step.js","../../../node_modules/@mapbox/unitbezier/index.js","../util/interpolate.js","../util/color_spaces.js","../expression/definitions/interpolate.js","../expression/definitions/coalesce.js","../expression/definitions/let.js","../expression/definitions/at.js","../expression/definitions/in.js","../expression/definitions/index_of.js","../expression/definitions/match.js","../expression/definitions/case.js","../expression/definitions/slice.js","../expression/definitions/comparison.js","../expression/definitions/number_format.js","../expression/definitions/length.js","../expression/definitions/index.js","../util/result.js","../util/properties.js","../util/get_type.js","../function/index.js","../expression/index.js","../function/convert.js","../util/unbundle_jsonlint.js","../feature_filter/index.js","../feature_filter/convert.js","../migrate/expressions.js","../migrate.js","../composite.js","../util/ref_properties.js","../deref.js","../util/deep_equal.js","../diff.js","../error/validation_error.js","../error/parsing_error.js","../validate/validate_object.js","../validate/validate_array.js","../validate/validate_number.js","../validate/validate_function.js","../validate/validate_expression.js","../validate/validate_boolean.js","../validate/validate_color.js","../validate/validate_enum.js","../validate/validate_filter.js","../validate/validate_property.js","../validate/validate_paint_property.js","../validate/validate_layout_property.js","../validate/validate_layer.js","../validate/validate_string.js","../validate/validate_source.js","../validate/validate_light.js","../validate/validate_terrain.js","../validate/validate_fog.js","../validate/validate_formatted.js","../validate/validate_image.js","../validate/validate_projection.js","../validate/validate.js","../validate/validate_glyphs_url.js","../validate_style.min.js","../../../node_modules/@mapbox/jsonlint-lines-primitives/lib/jsonlint.js","../read_style.js","../validate_style.js","../validate_mapbox_api_supported.js","../style-spec.js"],"sourcesContent":["// 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\nexport default function 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","\nimport reference from './reference/latest.js';\nimport stringifyPretty from 'json-stringify-pretty-compact';\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/**\n * Format a Mapbox GL 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 Mapbox GL 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('mapbox-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, reference.$root);\n\n if (style.layers) {\n style.layers = style.layers.map((layer) => sortKeysBy(layer, reference.layer));\n }\n\n return stringifyPretty(style, {indent: space});\n}\n\nexport default format;\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","// @flow\n\nimport Reference from './reference/v8.json';\nimport type {StylePropertySpecification} from './style-spec.js';\nimport type {\n StyleSpecification,\n SourceSpecification,\n LayerSpecification,\n PropertyValueSpecification,\n DataDrivenPropertyValueSpecification\n} from './types.js';\n\nfunction getPropertyReference(propertyName): StylePropertySpecification {\n for (let i = 0; i < Reference.layout.length; i++) {\n for (const key in Reference[Reference.layout[i]]) {\n if (key === propertyName) return (Reference[Reference.layout[i]][key]: any);\n }\n }\n for (let i = 0; i < Reference.paint.length; i++) {\n for (const key in Reference[Reference.paint[i]]) {\n if (key === propertyName) return (Reference[Reference.paint[i]][key]: any);\n }\n }\n\n return (null: any);\n}\n\nexport function eachSource(style: StyleSpecification, callback: (_: SourceSpecification) => void) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\n\nexport function eachLayer(style: StyleSpecification, callback: (_: LayerSpecification) => void) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\n\ntype PropertyCallback = ({\n path: [string, 'paint' | 'layout', string], // [layerid, paint/layout, property key]\n key: string,\n value: PropertyValueSpecification | DataDrivenPropertyValueSpecification,\n reference: StylePropertySpecification,\n set: (PropertyValueSpecification | DataDrivenPropertyValueSpecification) => void\n}) => void;\n\nexport function eachProperty(\n style: StyleSpecification,\n options: {paint?: boolean, layout?: boolean},\n callback: PropertyCallback\n) {\n function inner(layer, propertyType: 'paint' | 'layout') {\n const properties = (layer[propertyType]: any);\n if (!properties) 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\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","\nimport URL from 'url';\nimport {eachSource, eachLayer, eachProperty} from '../visit.js';\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}\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}\n\nfunction resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n return resolveConstant(style, style.constants[value]);\n } else {\n return value;\n }\n}\n\nfunction isFunction(value) {\n return Array.isArray(value.stops);\n}\n\nfunction renameProperty(obj, from, to) {\n obj[to] = obj[from]; delete obj[from];\n}\n\nexport default function(style) {\n style.version = 8;\n\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\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\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\n // Inline Constants\n eachProperty(style, {paint: true, layout: true}, (property) => {\n const value = resolveConstant(style, property.value);\n\n if (isFunction(value)) {\n value.stops.forEach((stop) => {\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n\n property.set(value);\n });\n delete style.constants;\n\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\n eachLayout(layer, (layout) => {\n delete layout['text-max-size'];\n delete layout['icon-max-size'];\n });\n\n eachPaint(layer, (paint) => {\n if (paint['text-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['text-size'] = paint['text-size'];\n delete paint['text-size'];\n }\n\n if (paint['icon-size']) {\n if (!layer.layout) layer.layout = {};\n layer.layout['icon-size'] = paint['icon-size'];\n delete paint['icon-size'];\n }\n });\n });\n\n function migrateFontstackURL(input) {\n const inputParsed = URL.parse(input);\n const inputPathnameParts = inputParsed.pathname.split('/');\n\n if (inputParsed.protocol !== 'mapbox:') {\n return input;\n\n } else if (inputParsed.hostname === 'fontstack') {\n assert(decodeURI(inputParsed.pathname) === '/{fontstack}/{range}.pbf');\n return 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf';\n\n } else if (inputParsed.hostname === 'fonts') {\n assert(inputPathnameParts[1] === 'v1');\n assert(decodeURI(inputPathnameParts[3]) === '{fontstack}');\n assert(decodeURI(inputPathnameParts[4]) === '{range}.pbf');\n return `mapbox://fonts/${inputPathnameParts[2]}/{fontstack}/{range}.pbf`;\n\n } else {\n assert(false);\n }\n\n function assert(predicate) {\n if (!predicate) {\n throw new Error(`Invalid font url: \"${input}\"`);\n }\n }\n }\n\n if (style.glyphs) {\n style.glyphs = migrateFontstackURL(style.glyphs);\n }\n\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n return string.split(',').map((s) => {\n return s.trim();\n });\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\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\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\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\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n symbolLayers.reverse();\n style.layers = style.layers.concat(symbolLayers);\n\n return style;\n}\n","// @flow\n\nexport default function (output: any, ...inputs: Array): any {\n for (const input of inputs) {\n for (const k in input) {\n output[k] = input[k];\n }\n }\n return output;\n}\n","// @flow\n\nclass ParsingError extends Error {\n key: string;\n message: string;\n constructor(key: string, message: string) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\nexport default ParsingError;\n","// @flow\n\nimport type {Expression} from './expression.js';\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n parent: ?Scope;\n bindings: {[_: string]: Expression};\n constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n\n concat(bindings: Array<[string, Expression]>): Scope {\n return new Scope(this, bindings);\n }\n\n get(name: string): Expression {\n if (this.bindings[name]) { return this.bindings[name]; }\n if (this.parent) { return this.parent.get(name); }\n throw new Error(`${name} not found in scope.`);\n }\n\n has(name: string): boolean {\n if (this.bindings[name]) return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nexport default Scope;\n","// @flow\n\nexport type NullTypeT = { kind: 'null' };\nexport type NumberTypeT = { kind: 'number' };\nexport type StringTypeT = { kind: 'string' };\nexport type BooleanTypeT = { kind: 'boolean' };\nexport type ColorTypeT = { kind: 'color' };\nexport type ObjectTypeT = { kind: 'object' };\nexport type ValueTypeT = { kind: 'value' };\nexport type ErrorTypeT = { kind: 'error' };\nexport type CollatorTypeT = { kind: 'collator' };\nexport type FormattedTypeT = { kind: 'formatted' };\nexport type ResolvedImageTypeT = { kind: 'resolvedImage' };\n\nexport type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';\n\nexport type Type =\n NullTypeT |\n NumberTypeT |\n StringTypeT |\n BooleanTypeT |\n ColorTypeT |\n ObjectTypeT |\n ValueTypeT |\n ArrayType | // eslint-disable-line no-use-before-define\n ErrorTypeT |\n CollatorTypeT |\n FormattedTypeT |\n ResolvedImageTypeT\n\nexport type ArrayType = {\n kind: 'array',\n itemType: Type,\n N: ?number\n}\n\nexport type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object'\n\nexport const NullType = {kind: 'null'};\nexport const NumberType = {kind: 'number'};\nexport const StringType = {kind: 'string'};\nexport const BooleanType = {kind: 'boolean'};\nexport const ColorType = {kind: 'color'};\nexport const ObjectType = {kind: 'object'};\nexport const ValueType = {kind: 'value'};\nexport const ErrorType = {kind: 'error'};\nexport const CollatorType = {kind: 'collator'};\nexport const FormattedType = {kind: 'formatted'};\nexport const ResolvedImageType = {kind: 'resolvedImage'};\n\nexport function array(itemType: Type, N: ?number): ArrayType {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\n\nexport function toString(type: Type): string {\n if (type.kind === 'array') {\n const itemType = toString(type.itemType);\n return typeof type.N === 'number' ?\n `array<${itemType}, ${type.N}>` :\n type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n } else {\n return type.kind;\n }\n}\n\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array(ValueType),\n ResolvedImageType\n];\n\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nexport function checkSubtype(expected: Type, t: Type): ?string {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n\n return `Expected ${toString(expected)} but found ${toString(t)} instead.`;\n}\n\nexport function isValidType(provided: Type, allowedTypes: Array): boolean {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\n\nexport function isValidNativeType(provided: any, allowedTypes: Array): boolean {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n } else if (t === 'array') {\n return Array.isArray(provided);\n } else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n } else {\n return t === typeof provided;\n }\n });\n}\n","// (c) Dean McNamee , 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n","// @flow\n\nimport {parseCSSColor} from 'csscolorparser';\n\n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n r: number;\n g: number;\n b: number;\n a: number;\n\n constructor(r: number, g: number, b: number, a: number = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n static black: Color;\n static white: Color;\n static transparent: Color;\n static red: Color;\n static blue: Color;\n\n /**\n * Parses valid CSS color strings and returns a `Color` instance.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input?: string | Color | null): Color | void {\n if (!input) {\n return undefined;\n }\n\n if (input instanceof Color) {\n return input;\n }\n\n if (typeof input !== 'string') {\n return undefined;\n }\n\n const rgba = parseCSSColor(input);\n if (!rgba) {\n return undefined;\n }\n\n return new Color(\n rgba[0] / 255 * rgba[3],\n rgba[1] / 255 * rgba[3],\n rgba[2] / 255 * rgba[3],\n rgba[3]\n );\n }\n\n /**\n * Returns an RGBA string representing the color value.\n *\n * @returns An RGBA string.\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(): string {\n const [r, g, b, a] = this.toArray();\n return `rgba(${Math.round(r)},${Math.round(g)},${Math.round(b)},${a})`;\n }\n\n /**\n * Returns an RGBA array of values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 255].\n */\n toArray(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n }\n\n /**\n * Returns a RGBA array of float values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return a === 0 ? [0, 0, 0, 0] : [\n r / a,\n g / a,\n b / a,\n a\n ];\n }\n\n /**\n * Returns an RGBA array of values representing the color, premultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01PremultipliedAlpha(): [number, number, number, number] {\n const {r, g, b, a} = this;\n return [\n r,\n g,\n b,\n a\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);\nColor.blue = new Color(0, 0, 1, 1);\n\nexport default Color;\n","// @flow\n\n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\n\ndeclare var Intl: {\n Collator: Class\n};\n\ndeclare class Intl$Collator {\n constructor (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n static (\n locales?: string | string[],\n options?: CollatorOptions\n ): Intl$Collator;\n\n compare (a: string, b: string): number;\n\n resolvedOptions(): any;\n}\n\ntype CollatorOptions = {\n localeMatcher?: 'lookup' | 'best fit',\n usage?: 'sort' | 'search',\n sensitivity?: 'base' | 'accent' | 'case' | 'variant',\n ignorePunctuation?: boolean,\n numeric?: boolean,\n caseFirst?: 'upper' | 'lower' | 'false'\n}\n\nexport default class Collator {\n locale: string | null;\n sensitivity: 'base' | 'accent' | 'case' | 'variant';\n collator: Intl$Collator;\n\n constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [],\n {sensitivity: this.sensitivity, usage: 'search'});\n }\n\n compare(lhs: string, rhs: string): number {\n return this.collator.compare(lhs, rhs);\n }\n\n resolvedLocale(): string {\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 : [])\n .resolvedOptions().locale;\n }\n}\n","// @flow\nimport type Color from '../../util/color.js';\nimport type ResolvedImage from '../types/resolved_image.js';\n\nexport class FormattedSection {\n text: string;\n image: ResolvedImage | null;\n scale: number | null;\n fontStack: string | null;\n textColor: Color | null;\n\n constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null) {\n // combine characters so that diacritic marks are not separate code points\n this.text = text.normalize ? text.normalize() : text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\n\nexport default class Formatted {\n sections: Array;\n\n constructor(sections: Array) {\n this.sections = sections;\n }\n\n static fromString(unformatted: string): Formatted {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n }\n\n isEmpty(): boolean {\n if (this.sections.length === 0) return true;\n return !this.sections.some(section => section.text.length !== 0 ||\n (section.image && section.image.name.length !== 0));\n }\n\n static factory(text: Formatted | string): Formatted {\n if (text instanceof Formatted) {\n return text;\n } else {\n return Formatted.fromString(text);\n }\n }\n\n toString(): string {\n if (this.sections.length === 0) return '';\n return this.sections.map(section => section.text).join('');\n }\n\n serialize(): Array {\n const serialized: Array = [\"format\"];\n for (const section of this.sections) {\n if (section.image) {\n serialized.push([\"image\", section.image.name]);\n continue;\n }\n serialized.push(section.text);\n const options: { [key: string]: mixed } = {};\n if (section.fontStack) {\n options[\"text-font\"] = [\"literal\", section.fontStack.split(',')];\n }\n if (section.scale) {\n options[\"font-scale\"] = section.scale;\n }\n if (section.textColor) {\n options[\"text-color\"] = ([\"rgba\"]: Array).concat(section.textColor.toArray());\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nexport type ResolvedImageOptions = {\n name: string,\n available: boolean\n};\n\nexport default class ResolvedImage {\n name: string;\n available: boolean;\n\n constructor(options: ResolvedImageOptions) {\n this.name = options.name;\n this.available = options.available;\n }\n\n toString(): string {\n return this.name;\n }\n\n static fromString(name: string): ResolvedImage | null {\n if (!name) return null; // treat empty values as no image\n return new ResolvedImage({name, available: false});\n }\n\n serialize(): Array {\n return [\"image\", this.name];\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport Color from '../util/color.js';\nimport Collator from './types/collator.js';\nimport Formatted from './types/formatted.js';\nimport ResolvedImage from './types/resolved_image.js';\nimport {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, ResolvedImageType, array} from './types.js';\n\nimport type {Type} from './types.js';\n\nexport function validateRGBA(r: mixed, g: mixed, b: mixed, a?: mixed): string | null {\n if (!(\n typeof r === 'number' && r >= 0 && r <= 255 &&\n typeof g === 'number' && g >= 0 && g <= 255 &&\n typeof b === 'number' && b >= 0 && b <= 255\n )) {\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\n if (!(\n typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)\n )) {\n return `Invalid rgba value [${[r, g, b, a].join(', ')}]: 'a' must be between 0 and 1.`;\n }\n\n return null;\n}\n\nexport type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | $ReadOnlyArray | { +[string]: Value }\n\nexport function isValue(mixed: mixed): boolean {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (mixed instanceof ResolvedImage) {\n return true;\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 } 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 } else {\n return false;\n }\n}\n\nexport function typeOf(value: Value): Type {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType: Type | typeof undefined;\n\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n\n return array(itemType || ValueType, length);\n } else {\n assert(typeof value === 'object');\n return ObjectType;\n }\n}\n\nexport function toString(value: Value): string {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color || value instanceof Formatted || value instanceof ResolvedImage) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n\nexport {Color, Collator};\n","// @flow\n\nimport assert from 'assert';\nimport {isValue, typeOf, Color} from '../values.js';\nimport Formatted from '../types/formatted.js';\n\nimport type {Type} from '../types.js';\nimport type {Value} from '../values.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\n\nclass Literal implements Expression {\n type: Type;\n value: Value;\n\n constructor(type: Type, value: Value) {\n this.type = type;\n this.value = value;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): void | Literal {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n\n if (!isValue(args[1]))\n return context.error(`invalid value`);\n\n const value = (args[1]: any);\n let type = typeOf(value);\n\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (\n type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)\n ) {\n type = expected;\n }\n\n return new Literal(type, value);\n }\n\n evaluate(): Value {\n return this.value;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\"literal\", this.value];\n } else if (this.value instanceof Color) {\n // Constant-folding can generate Literal expressions that you\n // couldn't actually generate with a \"literal\" expression,\n // so we have to implement an equivalent serialization here\n return [\"rgba\"].concat(this.value.toArray());\n } else if (this.value instanceof Formatted) {\n // Same as Color\n return this.value.serialize();\n } else {\n assert(this.value === null ||\n typeof this.value === 'string' ||\n typeof this.value === 'number' ||\n typeof this.value === 'boolean');\n return (this.value: any);\n }\n }\n}\n\nexport default Literal;\n","// @flow\n\nclass RuntimeError {\n name: string;\n message: string;\n\n constructor(message: string) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n\n toJSON(): string {\n return this.message;\n }\n}\n\nexport default RuntimeError;\n","// @flow\n\nimport assert from 'assert';\n\nimport {\n ObjectType,\n ValueType,\n StringType,\n NumberType,\n BooleanType,\n checkSubtype,\n toString,\n array\n} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nconst types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\n\nclass Assertion implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n let i = 1;\n let type;\n\n const name: string = (args[0]: any);\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) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types[type];\n i++;\n } else {\n itemType = ValueType;\n }\n\n let N;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' ||\n args[2] < 0 ||\n args[2] !== Math.floor(args[2]))\n ) {\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\n type = array(itemType, N);\n } else {\n assert(types[name], name);\n type = types[name];\n }\n\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Assertion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext): any | null {\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 } else if (i === this.args.length - 1) {\n throw new RuntimeError(`Expected value to be of type ${toString(this.type)}, but found ${toString(typeOf(value))} instead.`);\n }\n }\n\n assert(false);\n return null;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const type = this.type;\n const serialized = [type.kind];\n if (type.kind === 'array') {\n const itemType = type.itemType;\n if (itemType.kind === 'string' ||\n itemType.kind === 'number' ||\n itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n const N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n serialized.push(N);\n }\n }\n }\n return serialized.concat(this.args.map(arg => arg.serialize()));\n }\n}\n\nexport default Assertion;\n","// @flow\n\nimport {NumberType, ValueType, FormattedType, array, StringType, ColorType, ResolvedImageType} from '../types.js';\nimport Formatted, {FormattedSection} from '../types/formatted.js';\nimport {toString, typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\ntype FormattedSectionExpression = {\n // Content of a section may be Image expression or other\n // type of expression that is coercable to 'string'.\n content: Expression,\n scale: Expression | null;\n font: Expression | null;\n textColor: Expression | null;\n}\n\nexport default class FormatExpression implements Expression {\n type: Type;\n sections: Array;\n\n constructor(sections: Array) {\n this.type = FormattedType;\n this.sections = sections;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length < 2) {\n return context.error(`Expected at least one argument.`);\n }\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\n const sections: Array = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = (args[i]: any);\n\n if (nextTokenMayBeObject && typeof arg === \"object\" && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale) return null;\n }\n\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array(StringType));\n if (!font) return null;\n }\n\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor) return null;\n }\n\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n } else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content) return null;\n\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);\n\n nextTokenMayBeObject = true;\n sections.push({content, scale: null, font: null, textColor: null});\n }\n }\n\n return new FormatExpression(sections);\n }\n\n evaluate(ctx: EvaluationContext): Formatted {\n const evaluateSection = section => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection('', evaluatedContent, null, null, null);\n }\n\n return new FormattedSection(\n toString(evaluatedContent),\n null,\n section.scale ? section.scale.evaluate(ctx) : null,\n section.font ? section.font.evaluate(ctx).join(',') : null,\n section.textColor ? section.textColor.evaluate(ctx) : null\n );\n };\n\n return new Formatted(this.sections.map(evaluateSection));\n }\n\n eachChild(fn: (_: Expression) => void) {\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 }\n }\n\n outputDefined(): boolean {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"format\"];\n for (const section of this.sections) {\n serialized.push(section.content.serialize());\n const options = {};\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n if (section.textColor) {\n options['text-color'] = section.textColor.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","// @flow\n\nimport {ResolvedImageType, StringType} from '../types.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\nexport default class ImageExpression implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 2) {\n return context.error(`Expected two arguments.`);\n }\n\n const name = context.parse(args[1], 1, StringType);\n if (!name) return context.error(`No image name provided.`);\n\n return new ImageExpression(name);\n }\n\n evaluate(ctx: EvaluationContext): null | ResolvedImage {\n const evaluatedImageName = this.input.evaluate(ctx);\n\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages) value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n\n return value;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined(): boolean {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"image\", this.input.serialize()];\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType, ColorType, NumberType, StringType, ValueType} from '../types.js';\nimport {Color, toString as valueToString, validateRGBA} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\nimport Formatted from '../types/formatted.js';\nimport FormatExpression from '../definitions/format.js';\nimport ImageExpression from '../definitions/image.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\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 implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n const name: string = (args[0]: any);\n assert(types[name], name);\n\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const type = types[name];\n\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n return new Coercion(type, parsed);\n }\n\n evaluate(ctx: EvaluationContext): null | boolean | number | string | Color | Formatted | ResolvedImage {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === '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 } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c) return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color((input[0]: any) / 255, (input[1]: any) / 255, (input[2]: any) / 255, (input[3]: any));\n }\n }\n }\n throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : String(JSON.stringify(input))}'`);\n } else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null) return 0;\n const num = Number(value);\n if (isNaN(num)) continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n } else if (this.type.kind === '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 } else if (this.type.kind === 'resolvedImage') {\n return ResolvedImage.fromString(valueToString(this.args[0].evaluate(ctx)));\n } else {\n return valueToString(this.args[0].evaluate(ctx));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{content: this.args[0], scale: null, font: null, textColor: null}]).serialize();\n }\n\n if (this.type.kind === 'resolvedImage') {\n return new ImageExpression(this.args[0]).serialize();\n }\n\n const serialized = [`to-${this.type.kind}`];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coercion;\n","// @flow\n\nimport {Color} from './values.js';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {FormattedSection} from './types/formatted.js';\nimport type {GlobalProperties, Feature, FeatureState} from './index.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {FeatureDistanceData} from '../feature_filter/index.js';\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nclass EvaluationContext {\n globals: GlobalProperties;\n feature: ?Feature;\n featureState: ?FeatureState;\n formattedSection: ?FormattedSection;\n availableImages: ?Array;\n canonical: null | CanonicalTileID;\n featureTileCoord: ?Point;\n featureDistanceData: ?FeatureDistanceData;\n\n _parseColorCache: {[_: string]: ?Color};\n\n constructor() {\n this.globals = (null: any);\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n this.availableImages = null;\n this.canonical = null;\n this.featureTileCoord = null;\n this.featureDistanceData = null;\n }\n\n id(): number | null {\n return this.feature && this.feature.id !== undefined ? this.feature.id : null;\n }\n\n geometryType(): null | string {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n\n geometry(): ?Array> {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n\n canonicalID(): null | CanonicalTileID {\n return this.canonical;\n }\n\n properties(): {[string]: any} {\n return (this.feature && this.feature.properties) || {};\n }\n\n distanceFromCenter(): number {\n if (this.featureTileCoord && this.featureDistanceData) {\n\n const c = this.featureDistanceData.center;\n const scale = this.featureDistanceData.scale;\n const {x, y} = this.featureTileCoord;\n\n // Calculate the distance vector `d` (left handed)\n const dX = x * scale - c[0];\n const dY = y * scale - c[1];\n\n // The bearing vector `b` (left handed)\n const bX = this.featureDistanceData.bearing[0];\n const bY = this.featureDistanceData.bearing[1];\n\n // Distance is calculated as `dot(d, v)`\n const dist = (bX * dX + bY * dY);\n return dist;\n }\n\n return 0;\n }\n\n parseColor(input: string): ?Color {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n }\n}\n\nexport default EvaluationContext;\n","// @flow\n\nimport {toString} from './types.js';\n\nimport ParsingContext from './parsing_context.js';\nimport EvaluationContext from './evaluation_context.js';\nimport assert from 'assert';\n\nimport type {Expression, ExpressionRegistry} from './expression.js';\nimport type {Type} from './types.js';\nimport type {Value} from './values.js';\n\nexport type Varargs = {| type: Type |};\ntype Signature = Array | Varargs;\ntype Evaluate = (EvaluationContext, Array) => Value;\ntype Definition = [Type, Signature, Evaluate] |\n {|type: Type, overloads: Array<[Signature, Evaluate]>|};\n\nclass CompoundExpression implements Expression {\n name: string;\n type: Type;\n _evaluate: Evaluate;\n args: Array;\n\n static definitions: {[_: string]: Definition };\n\n constructor(name: string, type: Type, evaluate: Evaluate, args: Array) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n\n evaluate(ctx: EvaluationContext): Value {\n return this._evaluate(ctx, this.args);\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): Array {\n return [this.name].concat(this.args.map(arg => arg.serialize()));\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n const op: string = (args[0]: any);\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\n // Now check argument types against each signature\n const type = Array.isArray(definition) ?\n definition[0] : definition.type;\n\n const availableOverloads = Array.isArray(definition) ?\n [[definition[1], definition[2]]] :\n definition.overloads;\n\n const overloads = availableOverloads.filter(([signature]) => (\n !Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n ));\n\n let signatureContext: ParsingContext = (null: any);\n\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, context.path, null, context.scope);\n\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs: Array = [];\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\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\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\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\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n\n assert(!signatureContext || signatureContext.errors.length > 0);\n\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected\n .map(([params]) => stringifySignature(params))\n .join(' | ');\n\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) return null;\n actualTypes.push(toString(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n\n return null;\n }\n\n static register(\n registry: ExpressionRegistry,\n definitions: {[_: string]: Definition }\n ) {\n assert(!CompoundExpression.definitions);\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\n\nfunction stringifySignature(signature: Signature): string {\n if (Array.isArray(signature)) {\n return `(${signature.map(toString).join(', ')})`;\n } else {\n return `(${toString(signature.type)}...)`;\n }\n}\n\nexport default CompoundExpression;\n","// @flow\n\nimport {StringType, BooleanType, CollatorType} from '../types.js';\nimport Collator from '../types/collator.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\nexport default class CollatorExpression implements Expression {\n type: Type;\n caseSensitive: Expression;\n diacriticSensitive: Expression;\n locale: Expression | null;\n\n constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 2)\n return context.error(`Expected one argument.`);\n\n const options = (args[1]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`Collator options argument must be an object.`);\n\n const caseSensitive = context.parse(\n options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive) return null;\n\n const diacriticSensitive = context.parse(\n options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive) return null;\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n\n evaluate(ctx: EvaluationContext): Collator {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n\n outputDefined(): boolean {\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 serialize(): SerializedExpression {\n const options = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\"collator\", options];\n }\n}\n","// @flow\n\nimport {isValue} from '../values.js';\nimport type {Type} from '../types.js';\nimport {BooleanType} from '../types.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {GeoJSON, GeoJSONPolygon, GeoJSONMultiPolygon} from '@mapbox/geojson-types';\nimport type {CanonicalTileID} from '../../../source/tile_id.js';\n\ntype GeoJSONPolygons =| GeoJSONPolygon | GeoJSONMultiPolygon;\n\n// minX, minY, maxX, maxY\ntype BBox = [number, number, number, number];\nconst EXTENT = 8192;\n\nfunction updateBBox(bbox: BBox, coord: [number, number]) {\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}\n\nfunction mercatorXfromLng(lng: number) {\n return (180 + lng) / 360;\n}\n\nfunction mercatorYfromLat(lat: number) {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\n\nfunction boxWithinBox(bbox1: BBox, bbox2: BBox) {\n if (bbox1[0] <= bbox2[0]) return false;\n if (bbox1[2] >= bbox2[2]) return false;\n if (bbox1[1] <= bbox2[1]) return false;\n if (bbox1[3] >= bbox2[3]) return false;\n return true;\n}\n\nfunction getTileCoordinates(p, canonical: CanonicalTileID) {\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}\n\nfunction onBoundary(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\nfunction rayIntersect(p, p1, p2) {\n return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\n\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings) {\n let inside = false;\n for (let i = 0, len = rings.length; i < len; i++) {\n const ring = rings[i];\n for (let j = 0, len2 = ring.length; j < len2 - 1; j++) {\n if (onBoundary(point, ring[j], ring[j + 1])) return false;\n if (rayIntersect(point, ring[j], ring[j + 1])) inside = !inside;\n }\n }\n return inside;\n}\n\nfunction pointWithinPolygons(point, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (pointWithinPolygon(point, polygons[i])) return true;\n }\n return false;\n}\n\nfunction perp(v1, v2) {\n return (v1[0] * v2[1] - v1[1] * v2[0]);\n}\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)) return true;\n return false;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction lineIntersectLine(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) return false;\n\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)) return true;\n return false;\n}\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 (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction lineStringWithinPolygon(line, polygon) {\n // First, check if geometry points of line segments are all inside polygon\n for (let i = 0; i < line.length; ++i) {\n if (!pointWithinPolygon(line[i], polygon)) {\n return false;\n }\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}\n\nfunction lineStringWithinPolygons(line, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (lineStringWithinPolygon(line, polygons[i])) return true;\n }\n return false;\n}\n\nfunction getTilePolygon(coordinates, bbox: BBox, canonical: CanonicalTileID) {\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}\n\nfunction getTilePolygons(coordinates, bbox, canonical: CanonicalTileID) {\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}\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) ? -worldSize : (polyBBox[0] - p[0] > halfWorldSize) ? worldSize : 0;\n if (shift === 0) {\n shift = (p[0] - polyBBox[2] > halfWorldSize) ? -worldSize : (polyBBox[2] - p[0] > halfWorldSize) ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\n\nfunction resetBBox(bbox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\n\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical: CanonicalTileID) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints = [];\n if (!geometry) return 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}\n\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical: CanonicalTileID) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines = [];\n if (!geometry) return 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}\n\nfunction pointsWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const pointBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n\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)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon)) 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)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons)) return false;\n }\n }\n\n return true;\n}\n\nfunction linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons) {\n const lineBBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n\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)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon)) 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)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons)) return false;\n }\n }\n return true;\n}\n\nclass Within implements Expression {\n type: Type;\n geojson: GeoJSON\n geometries: GeoJSONPolygons;\n\n constructor(geojson: GeoJSON, geometries: GeoJSONPolygons) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Within {\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]: Object);\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n const type = geojson.features[i].geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.features[i].geometry);\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 } 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\n evaluate(ctx: EvaluationContext): boolean {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n return [\"within\", this.geojson];\n }\n\n}\n\nexport default Within;\n","// @flow\n\nimport CompoundExpression from './compound_expression.js';\nimport Within from './definitions/within.js';\nimport type {Expression} from './expression.js';\n\nfunction isFeatureConstant(e: Expression): boolean {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (\n e.name === 'properties' ||\n e.name === 'geometry-type' ||\n e.name === 'id'\n ) {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n\n if (e instanceof Within) {\n return false;\n }\n\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isStateConstant(e: Expression): boolean {\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)) { result = false; }\n });\n return result;\n}\n\nfunction isGlobalPropertyConstant(e: Expression, properties: Array): boolean {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) { return false; }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) { result = false; }\n });\n return result;\n}\n\nexport {isFeatureConstant, isGlobalPropertyConstant, isStateConstant};\n","// @flow\n\nimport type {Type} from '../types.js';\nimport type {Expression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\n\nclass Var implements Expression {\n type: Type;\n name: string;\n boundExpression: Expression;\n\n constructor(name: string, boundExpression: Expression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): void | Var {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(`'var' expression requires exactly one string literal argument.`);\n\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\n return new Var(name, context.scope.get(name));\n }\n\n evaluate(ctx: EvaluationContext): any {\n return this.boundExpression.evaluate(ctx);\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): Array {\n return [\"var\", this.name];\n }\n}\n\nexport default Var;\n","// @flow\n\nimport Scope from './scope.js';\nimport {checkSubtype} from './types.js';\nimport ParsingError from './parsing_error.js';\nimport Literal from './definitions/literal.js';\nimport Assertion from './definitions/assertion.js';\nimport Coercion from './definitions/coercion.js';\nimport EvaluationContext from './evaluation_context.js';\nimport CompoundExpression from './compound_expression.js';\nimport CollatorExpression from './definitions/collator.js';\nimport Within from './definitions/within.js';\nimport {isGlobalPropertyConstant, isFeatureConstant} from './is_constant.js';\nimport Var from './definitions/var.js';\n\nimport type {Expression, ExpressionRegistry} from './expression.js';\nimport type {Type} from './types.js';\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n registry: ExpressionRegistry;\n path: Array;\n key: string;\n scope: Scope;\n errors: Array;\n\n // The expected type of this expression. Provided only to allow Expression\n // implementations to infer argument types: Expression#parse() need not\n // check that the output type of the parsed expression matches\n // `expectedType`.\n expectedType: ?Type;\n\n constructor(\n registry: ExpressionRegistry,\n path: Array = [],\n expectedType: ?Type,\n scope: Scope = new Scope(),\n errors: Array = []\n ) {\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 }\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(\n expr: mixed,\n index?: number,\n expectedType?: ?Type,\n bindings?: Array<[string, Expression]>,\n options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'} = {}\n ): ?Expression {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n\n _parse(expr: mixed, options: {typeAnnotation?: 'assert' | 'coerce' | 'omit'}): ?Expression {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = ['literal', expr];\n }\n\n function annotate(parsed, type, typeAnnotation: 'assert' | 'coerce' | 'omit') {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\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\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\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed) return null;\n\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n\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' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\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) && (parsed.type.kind !== 'resolvedImage') && isConstant(parsed)) {\n const ec = new EvaluationContext();\n try {\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n\n return parsed;\n }\n\n return this.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n } else if (typeof expr === 'undefined') {\n return this.error(`'undefined' value invalid. Use null instead.`);\n } else if (typeof expr === 'object') {\n return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n } else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`);\n }\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: number, expectedType?: ?Type, bindings?: Array<[string, Expression]>): ParsingContext {\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(\n this.registry,\n path,\n expectedType || null,\n scope,\n this.errors\n );\n }\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: string, ...keys: Array) {\n const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n this.errors.push(new ParsingError(key, error));\n }\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 */\n checkSubtype(expected: Type, t: Type): ?string {\n const error = checkSubtype(expected, t);\n if (error) this.error(error);\n return error;\n }\n}\n\nexport default ParsingContext;\n\nfunction isConstant(expression: Expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\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 } else if (expression instanceof Within) {\n return false;\n }\n\n const isTypeAnnotation = expression instanceof Coercion ||\n expression instanceof Assertion;\n\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\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 && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n\n return isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression, ['zoom', 'heatmap-density', 'line-progress', 'sky-radial-progress', 'accumulated', 'is-supported-script', 'pitch', 'distance-from-center']);\n}\n","// @flow\n\nimport RuntimeError from './runtime_error.js';\n\nimport type {Expression} from './expression.js';\n\nexport type Stops = Array<[number, Expression]>;\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nexport function findStopLessThanOrEqualTo(stops: Array, input: number): number {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) { // Search complete\n return currentIndex;\n }\n\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n\n return 0;\n}\n","// @flow\n\nimport {NumberType} from '../types.js';\n\nimport {findStopLessThanOrEqualTo} from '../stops.js';\n\nimport type {Stops} from '../stops.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Step implements Expression {\n type: Type;\n\n input: Expression;\n labels: Array;\n outputs: Array;\n\n constructor(type: Type, input: Expression, stops: Stops) {\n this.type = type;\n this.input = input;\n\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\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Step {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n const input = context.parse(args[1], 1, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\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\n const labelKey = i;\n const valueKey = i + 1;\n\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\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\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n return new Step(outputType, input, stops);\n }\n\n evaluate(ctx: EvaluationContext): any {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"step\", this.input.serialize()];\n for (let i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n }\n}\n\nexport default Step;\n","'use strict';\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p1y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype = {\n sampleCurveX: function (t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n },\n\n sampleCurveY: function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n },\n\n sampleCurveDerivativeX: function (t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n },\n\n solveCurveX: function (x, epsilon) {\n if (epsilon === undefined) epsilon = 1e-6;\n\n if (x < 0.0) return 0.0;\n if (x > 1.0) return 1.0;\n\n var t = x;\n\n // First try a few iterations of Newton's method - normally very fast.\n for (var i = 0; i < 8; i++) {\n var x2 = this.sampleCurveX(t) - x;\n if (Math.abs(x2) < epsilon) return t;\n\n var d2 = this.sampleCurveDerivativeX(t);\n if (Math.abs(d2) < 1e-6) break;\n\n t = t - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n var t0 = 0.0;\n var t1 = 1.0;\n t = x;\n\n for (i = 0; i < 20; i++) {\n x2 = this.sampleCurveX(t);\n if (Math.abs(x2 - x) < epsilon) break;\n\n if (x > x2) {\n t0 = t;\n } else {\n t1 = t;\n }\n\n t = (t1 - t0) * 0.5 + t0;\n }\n\n return t;\n },\n\n solve: function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n }\n};\n","// @flow\n\nimport Color from './color.js';\n\nexport function number(a: number, b: number, t: number): number {\n return (a * (1 - t)) + (b * t);\n}\n\nexport function color(from: Color, to: Color, t: number): Color {\n return new Color(\n number(from.r, to.r, t),\n number(from.g, to.g, t),\n number(from.b, to.b, t),\n number(from.a, to.a, t)\n );\n}\n\nexport function array(from: Array, to: Array, t: number): Array {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\n","// @flow\n\nimport Color from './color.js';\n\nimport {number as interpolateNumber} from './interpolate.js';\n\ntype LABColor = {\n l: number,\n a: number,\n b: number,\n alpha: number\n};\n\ntype HCLColor = {\n h: number,\n c: number,\n l: number,\n alpha: number\n};\n\n// Constants\nconst Xn = 0.950470, // D65 standard referent\n Yn = 1,\n Zn = 1.088830,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1,\n deg2rad = Math.PI / 180,\n rad2deg = 180 / Math.PI;\n\n// Utilities\nfunction xyz2lab(t: number) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t: number) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction xyz2rgb(x: number) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(x: number) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\n// LAB\nfunction rgbToLab(rgbColor: Color): LABColor {\n const b = rgb2xyz(rgbColor.r),\n a = rgb2xyz(rgbColor.g),\n l = rgb2xyz(rgbColor.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\n\nfunction labToRgb(labColor: LABColor): Color {\n let y = (labColor.l + 16) / 116,\n x = isNaN(labColor.a) ? y : y + labColor.a / 500,\n z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(\n xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n labColor.alpha\n );\n}\n\nfunction interpolateLab(from: LABColor, to: LABColor, t: number): LABColor {\n return {\n l: interpolateNumber(from.l, to.l, t),\n a: interpolateNumber(from.a, to.a, t),\n b: interpolateNumber(from.b, to.b, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\n// HCL\nfunction rgbToHcl(rgbColor: Color): HCLColor {\n const {l, a, b} = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\n\nfunction hclToRgb(hclColor: HCLColor): Color {\n const h = hclColor.h * deg2rad,\n c = hclColor.c,\n l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\n\nfunction interpolateHue(a: number, b: number, t: number) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\n\nfunction interpolateHcl(from: HCLColor, to: HCLColor, t: number): HCLColor {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: interpolateNumber(from.c, to.c, t),\n l: interpolateNumber(from.l, to.l, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\nexport const lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n};\n\nexport const hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n};\n","// @flow\n\nimport UnitBezier from '@mapbox/unitbezier';\n\nimport * as interpolate from '../../util/interpolate.js';\nimport {toString, NumberType, ColorType} from '../types.js';\nimport {findStopLessThanOrEqualTo} from '../stops.js';\nimport {hcl, lab} from '../../util/color_spaces.js';\nimport Color from '../../util/color.js';\n\nimport type {Stops} from '../stops.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nexport type InterpolationType =\n { name: 'linear' } |\n { name: 'exponential', base: number } |\n { name: 'cubic-bezier', controlPoints: [number, number, number, number] };\n\nclass Interpolate implements Expression {\n type: Type;\n\n operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab';\n interpolation: InterpolationType;\n input: Expression;\n labels: Array;\n outputs: Array;\n\n constructor(type: Type, operator: 'interpolate' | 'interpolate-hcl' | 'interpolate-lab', interpolation: InterpolationType, input: Expression, stops: Stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n\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\n static interpolationFactor(interpolation: InterpolationType, input: number, lower: number, upper: number): number {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\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\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Interpolate {\n let [operator, interpolation, input, ...rest] = args;\n\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error(`Expected an interpolation type expression.`, 1);\n }\n\n if (interpolation[0] === 'linear') {\n interpolation = {name: 'linear'};\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 } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (\n controlPoints.length !== 4 ||\n controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)\n ) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: (controlPoints: any)\n };\n } else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n }\n\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n input = context.parse(input, 2, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = (null: any);\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n\n const labelKey = i + 3;\n const valueKey = i + 4;\n\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\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\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n if (outputType.kind !== 'number' &&\n outputType.kind !== 'color' &&\n !(\n outputType.kind === 'array' &&\n outputType.itemType.kind === 'number' &&\n typeof outputType.N === 'number'\n )\n ) {\n return context.error(`Type ${toString(outputType)} is not interpolatable.`);\n }\n\n return new Interpolate(outputType, (operator: any), interpolation, input, stops);\n }\n\n evaluate(ctx: EvaluationContext): Color {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = ((this.input.evaluate(ctx): any): number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\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\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n\n if (this.operator === 'interpolate') {\n return (interpolate[this.type.kind.toLowerCase()]: any)(outputLower, outputUpper, t); // eslint-disable-line import/namespace\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize(): SerializedExpression {\n let interpolation;\n if (this.interpolation.name === 'linear') {\n interpolation = [\"linear\"];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = [\"linear\"];\n } else {\n interpolation = [\"exponential\", this.interpolation.base];\n }\n } else {\n interpolation = [\"cubic-bezier\" ].concat(this.interpolation.controlPoints);\n }\n\n const serialized = [this.operator, interpolation, this.input.serialize()];\n\n for (let i = 0; i < this.labels.length; i++) {\n serialized.push(\n this.labels[i],\n this.outputs[i].serialize()\n );\n }\n return serialized;\n }\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\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nexport default Interpolate;\n","// @flow\n\nimport assert from 'assert';\n\nimport {checkSubtype, ValueType} from '../types.js';\nimport ResolvedImage from '../types/resolved_image.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Coalesce implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Coalesce {\n if (args.length < 2) {\n return context.error(\"Expectected at least one argument.\");\n }\n let outputType: Type = (null: any);\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, {typeAnnotation: 'omit'});\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n assert(outputType);\n\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 &&\n parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n\n return needsAnnotation ?\n new Coalesce(ValueType, parsedArgs) :\n new Coalesce((outputType: any), parsedArgs);\n }\n\n evaluate(ctx: EvaluationContext): any | null {\n let result = null;\n let argCount = 0;\n let firstImage;\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 so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n // set to first image\n if (!firstImage) {\n firstImage = result;\n }\n result = null;\n // if we reach the end, return the first image\n if (argCount === this.args.length) {\n return firstImage;\n }\n }\n\n if (result !== null) break;\n }\n return result;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"coalesce\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coalesce;\n","// @flow\n\nimport type {Type} from '../types.js';\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\n\nclass Let implements Expression {\n type: Type;\n bindings: Array<[string, Expression]>;\n result: Expression;\n\n constructor(bindings: Array<[string, Expression]>, result: Expression) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n\n evaluate(ctx: EvaluationContext): any {\n return this.result.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Let {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n\n const bindings: Array<[string, Expression]> = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i);\n }\n\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n }\n\n const value = context.parse(args[i + 1], i + 1);\n if (!value) return null;\n\n bindings.push([name, value]);\n }\n\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result) return null;\n\n return new Let(bindings, result);\n }\n\n outputDefined(): boolean {\n return this.result.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"let\"];\n for (const [name, expr] of this.bindings) {\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n }\n}\n\nexport default Let;\n","// @flow\n\nimport {array, ValueType, NumberType} from '../types.js';\n\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type, ArrayType} from '../types.js';\nimport type {Value} from '../values.js';\n\nclass At implements Expression {\n type: Type;\n index: Expression;\n input: Expression;\n\n constructor(type: Type, index: Expression, input: Expression) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?At {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n\n if (!index || !input) return null;\n\n const t: ArrayType = (input.type: any);\n return new At(t.itemType, index, input);\n }\n\n evaluate(ctx: EvaluationContext): Value {\n const index = ((this.index.evaluate(ctx): any): number);\n const array = ((this.input.evaluate(ctx): any): Array);\n\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer, but found ${index} instead.`);\n }\n\n return array[index];\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.index);\n fn(this.input);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"at\", this.index.serialize(), this.input.serialize()];\n }\n}\n\nexport default At;\n","// @flow\n\nimport {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass In implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n\n constructor(needle: Expression, haystack: Expression) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?In {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n\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 ${toString(needle.type)} instead`);\n }\n\n return new In(needle, haystack);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n const needle = (this.needle.evaluate(ctx): any);\n const haystack = (this.haystack.evaluate(ctx): any);\n\n if (haystack == null) return false;\n\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 ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n return haystack.indexOf(needle) >= 0;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n }\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n return [\"in\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default In;\n","// @flow\n\nimport {BooleanType, StringType, ValueType, NullType, toString, NumberType, isValidType, isValidNativeType} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass IndexOf implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n fromIndex: ?Expression;\n\n constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?IndexOf {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) 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 ${toString(needle.type)} instead`);\n }\n\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex) return null;\n return new IndexOf(needle, haystack, fromIndex);\n } else {\n return new IndexOf(needle, haystack);\n }\n }\n\n evaluate(ctx: EvaluationContext): any {\n const needle = (this.needle.evaluate(ctx): any);\n const haystack = (this.haystack.evaluate(ctx): any);\n\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 ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n if (this.fromIndex) {\n const fromIndex = (this.fromIndex.evaluate(ctx): number);\n return haystack.indexOf(needle, fromIndex);\n }\n\n return haystack.indexOf(needle);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n if (this.fromIndex != null && this.fromIndex !== undefined) {\n const fromIndex = this.fromIndex.serialize();\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize(), fromIndex];\n }\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default IndexOf;\n","// @flow\n\nimport assert from 'assert';\n\nimport {typeOf} from '../values.js';\nimport {ValueType, type Type} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\n\n// Map input label values to output expression index\ntype Cases = {[number | string]: number};\n\nclass Match implements Expression {\n type: Type;\n inputType: Type;\n\n input: Expression;\n cases: Cases;\n outputs: Array;\n otherwise: Expression;\n\n constructor(inputType: Type, outputType: Type, input: Expression, cases: Cases, outputs: Array, otherwise: Expression) {\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\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Match {\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\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\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\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 } 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 } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n\n cases[String(label)] = outputs.length;\n }\n\n const result = context.parse(value, i, outputType);\n if (!result) return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n if (!input) return null;\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(inputType && outputType);\n\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype((inputType: any), input.type)) {\n return null;\n }\n\n return new Match((inputType: any), (outputType: any), input, cases, outputs, otherwise);\n }\n\n evaluate(ctx: EvaluationContext): any {\n const input = (this.input.evaluate(ctx): any);\n const output = (typeOf(input) === this.inputType && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"match\", this.input.serialize()];\n\n // Sort so serialization has an arbitrary defined order, even though\n // branch order doesn't affect evaluation\n const sortedLabels = Object.keys(this.cases).sort();\n\n // Group branches by unique match expression to support condensed\n // serializations of the form [case1, case2, ...] -> matchExpression\n const groupedByOutput: Array<[number, Array]> = [];\n const outputLookup: {[index: number]: number} = {}; // lookup index into groupedByOutput for a given output expression\n for (const label of sortedLabels) {\n const outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n // First time seeing this output, add it to the end of the grouped list\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([this.cases[label], [label]]);\n } else {\n // We've seen this expression before, add the label to that output's group\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n\n const coerceLabel = (label) => this.inputType.kind === 'number' ? Number(label) : label;\n\n for (const [outputIndex, labels] of groupedByOutput) {\n if (labels.length === 1) {\n // Only a single label matches this output expression\n serialized.push(coerceLabel(labels[0]));\n } else {\n // Array of literal labels pointing to this output expression\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n }\n}\n\nexport default Match;\n","// @flow\n\nimport assert from 'assert';\n\nimport {BooleanType} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\ntype Branches = Array<[Expression, Expression]>;\n\nclass Case implements Expression {\n type: Type;\n\n branches: Branches;\n otherwise: Expression;\n\n constructor(type: Type, branches: Branches, otherwise: Expression) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Case {\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\n let outputType: ?Type;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\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) return null;\n\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result) return null;\n\n branches.push([test, result]);\n\n outputType = outputType || result.type;\n }\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(outputType);\n return new Case((outputType: any), branches, otherwise);\n }\n\n evaluate(ctx: EvaluationContext): any {\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\n eachChild(fn: (_: Expression) => void) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"case\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Case;\n","// @flow\n\nimport {ValueType, NumberType, StringType, array, toString, isValidType, isValidNativeType} from '../types.js';\nimport RuntimeError from '../runtime_error.js';\nimport {typeOf} from '../values.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Slice implements Expression {\n type: Type;\n input: Expression;\n beginIndex: Expression;\n endIndex: ?Expression;\n\n constructor(type: Type, input: Expression, beginIndex: Expression, endIndex?: Expression) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Slice {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n\n if (!input || !beginIndex) return null;\n\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 ${toString(input.type)} instead`);\n }\n\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex) return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n } else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n\n evaluate(ctx: EvaluationContext): any {\n const input = (this.input.evaluate(ctx): any);\n const beginIndex = (this.beginIndex.evaluate(ctx): number);\n\n if (!isValidNativeType(input, ['string', 'array'])) {\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${toString(typeOf(input))} instead.`);\n }\n\n if (this.endIndex) {\n const endIndex = (this.endIndex.evaluate(ctx): number);\n return input.slice(beginIndex, endIndex);\n }\n\n return input.slice(beginIndex);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n if (this.endIndex != null && this.endIndex !== undefined) {\n const endIndex = this.endIndex.serialize();\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize(), endIndex];\n }\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize()];\n }\n}\n\nexport default Slice;\n","// @flow\n\nimport {toString, ValueType, BooleanType, CollatorType} from '../types.js';\nimport Assertion from './assertion.js';\nimport {typeOf} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression, ExpressionRegistration} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\ntype ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>=' ;\n\nfunction isComparableType(op: ComparisonOperator, type: 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 } else {\n // ordering operator\n return type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'value';\n }\n}\n\nfunction eq(ctx: EvaluationContext, a: any, b: any): boolean { return a === b; }\nfunction neq(ctx: EvaluationContext, a: any, b: any): boolean { return a !== b; }\nfunction lt(ctx: EvaluationContext, a: any, b: any): boolean { return a < b; }\nfunction gt(ctx: EvaluationContext, a: any, b: any): boolean { return a > b; }\nfunction lteq(ctx: EvaluationContext, a: any, b: any): boolean { return a <= b; }\nfunction gteq(ctx: EvaluationContext, a: any, b: any): boolean { return a >= b; }\n\nfunction eqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) === 0; }\nfunction neqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return !eqCollate(ctx, a, b, c); }\nfunction ltCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) < 0; }\nfunction gtCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) > 0; }\nfunction lteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) <= 0; }\nfunction gteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { 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: ComparisonOperator, compareBasic: (EvaluationContext, any, any) => boolean, compareWithCollator: (EvaluationContext, any, any, any) => boolean): ExpressionRegistration {\n const isOrderComparison = op !== '==' && op !== '!=';\n\n return class Comparison implements Expression {\n type: Type;\n lhs: Expression;\n rhs: Expression;\n collator: ?Expression;\n hasUntypedArgument: boolean;\n\n constructor(lhs: Expression, rhs: Expression, collator: ?Expression) {\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\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 3 && args.length !== 4)\n return context.error(`Expected two or three arguments.`);\n\n const op: ComparisonOperator = (args[0]: any);\n\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs) return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${toString(lhs.type)}'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs) return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${toString(rhs.type)}'.`);\n }\n\n if (\n lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot compare types '${toString(lhs.type)}' and '${toString(rhs.type)}'.`);\n }\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 } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n\n let collator = null;\n if (args.length === 4) {\n if (\n lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot use collator to compare non-string types.`);\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator) return null;\n }\n\n return new Comparison(lhs, rhs, collator);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n\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\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\n return this.collator ?\n compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n compareBasic(ctx, lhs, rhs);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n const serialized = [op];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n };\n}\n\nexport const Equals: $Call = makeComparison('==', eq, eqCollate);\nexport const NotEquals: $Call = makeComparison('<', lt, ltCollate);\nexport const GreaterThan: $Call', typeof gt, typeof gtCollate> = makeComparison('>', gt, gtCollate);\nexport const LessThanOrEqual: $Call=', typeof gteq, typeof gteqCollate> = makeComparison('>=', gteq, gteqCollate);\n","// @flow\n\nimport {StringType, NumberType} from '../types.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type {Type} from '../types.js';\n\ndeclare var Intl: {\n NumberFormat: Class\n};\n\ndeclare class Intl$NumberFormat {\n constructor (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n static (\n locales?: string | string[],\n options?: NumberFormatOptions\n ): Intl$NumberFormat;\n\n format(a: number): string;\n\n resolvedOptions(): any;\n}\n\ntype NumberFormatOptions = {\n style?: 'decimal' | 'currency' | 'percent' | 'unit';\n currency?: null | string;\n unit?: null | string;\n minimumFractionDigits?: null | string;\n maximumFractionDigits?: null | string;\n};\n\nexport default class NumberFormat implements Expression {\n type: Type;\n number: Expression;\n locale: Expression | null; // BCP 47 language tag\n currency: Expression | null; // ISO 4217 currency code, required if style=currency\n unit: Expression | null; // Simple units sanctioned for use in ECMAScript, required if style=unit. https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n minFractionDigits: Expression | null; // Default 0\n maxFractionDigits: Expression | null; // Default 3\n\n constructor(number: Expression,\n locale: Expression | null,\n currency: Expression | null,\n unit: Expression | null,\n minFractionDigits: Expression | null,\n maxFractionDigits: Expression | null) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.unit = unit;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Expression {\n if (args.length !== 3)\n return context.error(`Expected two arguments.`);\n\n const number = context.parse(args[1], 1, NumberType);\n if (!number) return null;\n\n const options = (args[2]: any);\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`NumberFormat options argument must be an object.`);\n\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale) return null;\n }\n\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency) return null;\n }\n\n let unit = null;\n if (options['unit']) {\n unit = context.parse(options['unit'], 1, StringType);\n if (!unit) return null;\n }\n\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits) return null;\n }\n\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits) return null;\n }\n\n return new NumberFormat(number, locale, currency, unit, minFractionDigits, maxFractionDigits);\n }\n\n evaluate(ctx: EvaluationContext): string {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [],\n {\n style:\n (this.currency && \"currency\") ||\n (this.unit && \"unit\") ||\n \"decimal\",\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n unit: this.unit ? this.unit.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n }).format(this.number.evaluate(ctx));\n }\n\n eachChild(fn: (_: Expression) => void) {\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.unit) {\n fn(this.unit);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n const options = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.unit) {\n options['unit'] = this.unit.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\"number-format\", this.number.serialize(), options];\n }\n}\n","// @flow\n\nimport {NumberType, toString} from '../types.js';\n\nimport {typeOf} from '../values.js';\nimport RuntimeError from '../runtime_error.js';\n\nimport type {Expression, SerializedExpression} from '../expression.js';\nimport type ParsingContext from '../parsing_context.js';\nimport type EvaluationContext from '../evaluation_context.js';\nimport type {Type} from '../types.js';\n\nclass Length implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = NumberType;\n this.input = input;\n }\n\n static parse(args: $ReadOnlyArray, context: ParsingContext): ?Length {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n\n const input = context.parse(args[1], 1);\n if (!input) return null;\n\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`);\n\n return new Length(input);\n }\n\n evaluate(ctx: EvaluationContext): any | number {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError(`Expected value to be of type string or array, but found ${toString(typeOf(input))} instead.`);\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"length\"];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Length;\n","// @flow\n\nimport {\n type Type,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ObjectType,\n ValueType,\n ErrorType,\n CollatorType,\n array,\n toString as typeToString\n} from '../types.js';\n\nimport {typeOf, Color, validateRGBA, toString as valueToString} from '../values.js';\nimport CompoundExpression from '../compound_expression.js';\nimport RuntimeError from '../runtime_error.js';\nimport Let from './let.js';\nimport Var from './var.js';\nimport Literal from './literal.js';\nimport Assertion from './assertion.js';\nimport Coercion from './coercion.js';\nimport At from './at.js';\nimport In from './in.js';\nimport IndexOf from './index_of.js';\nimport Match from './match.js';\nimport Case from './case.js';\nimport Slice from './slice.js';\nimport Step from './step.js';\nimport Interpolate from './interpolate.js';\nimport Coalesce from './coalesce.js';\nimport {\n Equals,\n NotEquals,\n LessThan,\n GreaterThan,\n LessThanOrEqual,\n GreaterThanOrEqual\n} from './comparison.js';\nimport CollatorExpression from './collator.js';\nimport NumberFormat from './number_format.js';\nimport FormatExpression from './format.js';\nimport ImageExpression from './image.js';\nimport Length from './length.js';\nimport Within from './within.js';\n\nimport type {Varargs} from '../compound_expression.js';\nimport type {ExpressionRegistry} from '../expression.js';\n\nconst expressions: ExpressionRegistry = {\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};\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) throw new RuntimeError(error);\n return new Color(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\n\nfunction has(key, obj) {\n return key in obj;\n}\n\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\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}\n\nfunction varargs(type: Type): Varargs {\n return {type};\n}\n\nCompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [NumberType, NumberType, NumberType],\n rgba\n ],\n 'rgba': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (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 [\n [StringType],\n (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': [\n ObjectType,\n [],\n (ctx) => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n (ctx) => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n (ctx) => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n (ctx) => ctx.globals.zoom\n ],\n 'pitch': [\n NumberType,\n [],\n (ctx) => ctx.globals.pitch || 0\n ],\n 'distance-from-center': [\n NumberType,\n [],\n (ctx) => ctx.distanceFromCenter()\n ],\n 'heatmap-density': [\n NumberType,\n [],\n (ctx) => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.lineProgress || 0\n ],\n 'sky-radial-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.skyRadialProgress || 0\n ],\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 [\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ], [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\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': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\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': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => ctx.properties()[(k: any).value] === (v: any).value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === (v: any).value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === (v: any).value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n const a = ctx.properties()[(k: any).value];\n const b = (v: any).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: any).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: any).value];\n const b = (v: any).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: any).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: any).value];\n const b = (v: any).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: any).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: any).value];\n const b = (v: any).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: any).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => (k: any).value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n (ctx) => (ctx.id() !== null && ctx.id() !== undefined)\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n (ctx, [v]) => (v: any).value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n (ctx, [v]) => (v: any).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: any).value.indexOf(ctx.properties()[(k: any).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: any).value], (v: any).value, 0, (v: any).value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\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 [\n [BooleanType, BooleanType],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\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 '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\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': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\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});\n\nexport default expressions;\n","// @flow\n\n/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nexport type Result =\n | {| result: 'success', value: T |}\n | {| result: 'error', value: E |};\n\nexport function success(value: T): Result {\n return {result: 'success', value};\n}\n\nexport function error(value: E): Result {\n return {result: 'error', value};\n}\n","// @flow\n\nimport type {StylePropertySpecification} from '../style-spec.js';\n\nexport function supportsPropertyExpression(spec: StylePropertySpecification): boolean {\n return spec['property-type'] === 'data-driven';\n}\n\nexport function supportsZoomExpression(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\n\nexport function supportsInterpolation(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.interpolated;\n}\n","// @flow\n\nexport default function getType(val: mixed): string {\n if (val instanceof Number) {\n return 'number';\n } else if (val instanceof String) {\n return 'string';\n } else if (val instanceof Boolean) {\n return 'boolean';\n } else if (Array.isArray(val)) {\n return 'array';\n } else if (val === null) {\n return 'null';\n } else {\n return typeof val;\n }\n}\n","\nimport * as colorSpaces from '../util/color_spaces.js';\nimport Color from '../util/color.js';\nimport extend from '../util/extend.js';\nimport getType from '../util/get_type.js';\nimport * as interpolate from '../util/interpolate.js';\nimport Interpolate from '../expression/definitions/interpolate.js';\nimport Formatted from '../expression/types/formatted.js';\nimport ResolvedImage from '../expression/types/resolved_image.js';\nimport {supportsInterpolation} from '../util/properties.js';\nimport {findStopLessThanOrEqualTo} from '../expression/stops.js';\n\nexport function isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction identityFunction(x) {\n return x;\n}\n\nexport function createFunction(parameters, propertySpec) {\n const isColor = propertySpec.type === 'color';\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\n if (isColor) {\n parameters = extend({}, parameters);\n\n if (parameters.stops) {\n parameters.stops = parameters.stops.map((stop) => {\n return [stop[0], Color.parse(stop[1])];\n });\n }\n\n if (parameters.default) {\n parameters.default = Color.parse(parameters.default);\n } else {\n parameters.default = Color.parse(propertySpec.default);\n }\n }\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) { // eslint-disable-line import/namespace\n throw new Error(`Unknown color space: ${parameters.colorSpace}`);\n }\n\n let innerFun;\n let hashedStops;\n let categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n } else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n } else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n\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\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 } else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n } else {\n throw new Error(`Unknown function type \"${type}\"`);\n }\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\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n featureFunctionStops.push([featureFunctions[z].zoom, 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 } else if (zoomDependent) {\n const interpolationType = type === 'exponential' ?\n {name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1} : 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 } else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n return coalesce(parameters.default, propertySpec.default);\n }\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\n\nfunction coalesce(a, b, c) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n if (c !== undefined) return c;\n}\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(evaluated, parameters.default, propertySpec.default);\n}\n\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n\n return parameters.stops[index][1];\n}\n\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n const base = parameters.base !== undefined ? parameters.base : 1;\n\n // Edge cases\n if (getType(input) !== 'number') return coalesce(parameters.default, propertySpec.default);\n const n = parameters.stops.length;\n if (n === 1) return parameters.stops[0][1];\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(\n input, base,\n parameters.stops[index][0],\n parameters.stops[index + 1][0]);\n\n const outputLower = parameters.stops[index][1];\n const outputUpper = parameters.stops[index + 1][1];\n let interp = interpolate[propertySpec.type] || identityFunction; // eslint-disable-line import/namespace\n\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n const colorspace = colorSpaces[parameters.colorSpace]; // eslint-disable-line import/namespace\n interp = (a, b) => colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n }\n\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);\n }\n };\n }\n\n return interp(outputLower, outputUpper, t);\n}\n\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n if (propertySpec.type === 'color') {\n input = Color.parse(input);\n } else if (propertySpec.type === 'formatted') {\n input = Formatted.fromString(input.toString());\n } else if (propertySpec.type === 'resolvedImage') {\n input = ResolvedImage.fromString(input.toString());\n } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n return coalesce(input, parameters.default, propertySpec.default);\n}\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\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport extend from '../util/extend.js';\nimport ParsingError from './parsing_error.js';\nimport ParsingContext from './parsing_context.js';\nimport EvaluationContext from './evaluation_context.js';\nimport CompoundExpression from './compound_expression.js';\nimport Step from './definitions/step.js';\nimport Interpolate from './definitions/interpolate.js';\nimport Coalesce from './definitions/coalesce.js';\nimport Let from './definitions/let.js';\nimport definitions from './definitions/index.js';\nimport * as isConstant from './is_constant.js';\nimport RuntimeError from './runtime_error.js';\nimport {success, error} from '../util/result.js';\nimport {supportsPropertyExpression, supportsZoomExpression, supportsInterpolation} from '../util/properties.js';\n\nimport type {Type, EvaluationKind} from './types.js';\nimport type {Value} from './values.js';\nimport type {Expression} from './expression.js';\nimport type {StylePropertySpecification} from '../style-spec.js';\nimport type {Result} from '../util/result.js';\nimport type {InterpolationType} from './definitions/interpolate.js';\nimport type {PropertyValueSpecification} from '../types.js';\nimport type {FormattedSection} from './types/formatted.js';\nimport type Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type {FeatureDistanceData} from '../feature_filter/index.js';\n\nexport type Feature = {\n +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'LineString' | 'Polygon',\n +id?: number | null,\n +properties: {[_: string]: any},\n +patterns?: {[_: string]: string},\n +geometry?: Array>\n};\n\nexport type FeatureState = {[_: string]: any};\n\nexport type GlobalProperties = $ReadOnly<{\n zoom: number,\n pitch?: number,\n heatmapDensity?: number,\n lineProgress?: number,\n skyRadialProgress?: number,\n isSupportedScript?: (_: string) => boolean,\n accumulated?: Value\n}>;\n\nexport class StyleExpression {\n expression: Expression;\n\n _evaluator: EvaluationContext;\n _defaultValue: Value;\n _warningHistory: {[key: string]: boolean};\n _enumValues: ?{[_: string]: any};\n\n constructor(expression: Expression, propertySpec: ?StylePropertySpecification) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n\n return this.expression.evaluate(this._evaluator);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n\n try {\n const val = this.expression.evaluate(this._evaluator);\n // eslint-disable-next-line no-self-compare\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).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\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}\n\nexport function isExpression(expression: mixed): boolean {\n return Array.isArray(expression) && expression.length > 0 &&\n typeof expression[0] === 'string' && expression[0] in definitions;\n}\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 */\nexport function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification): Result> {\n const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined,\n propertySpec && propertySpec.type === 'string' ? {typeAnnotation: 'coerce'} : undefined);\n\n if (!parsed) {\n assert(parser.errors.length > 0);\n return error(parser.errors);\n }\n\n return success(new StyleExpression(parsed, propertySpec));\n}\n\nexport class ZoomConstantExpression {\n kind: Kind;\n isStateDependent: boolean;\n _styleExpression: StyleExpression;\n\n constructor(kind: Kind, expression: StyleExpression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('constant': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\n\nexport class ZoomDependentExpression {\n kind: Kind;\n zoomStops: Array;\n isStateDependent: boolean;\n\n _styleExpression: StyleExpression;\n interpolationType: ?InterpolationType;\n\n constructor(kind: Kind, expression: StyleExpression, zoomStops: Array, interpolationType?: InterpolationType) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('camera': EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n this.interpolationType = interpolationType;\n }\n\n evaluateWithoutErrorHandling(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n interpolationFactor(input: number, lower: number, upper: number): number {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\n\nexport type ConstantExpression = {\n kind: 'constant',\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array) => any,\n}\n\nexport type SourceExpression = {\n kind: 'source',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection) => any,\n};\n\nexport type CameraExpression = {\n kind: 'camera',\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array,\n interpolationType: ?InterpolationType\n};\n\nexport type CompositeExpression = {\n kind: 'composite',\n isStateDependent: boolean,\n +evaluate: (globals: GlobalProperties, feature?: Feature, featureState?: FeatureState, canonical?: CanonicalTileID, availableImages?: Array, formattedSection?: FormattedSection) => any,\n +interpolationFactor: (input: number, lower: number, upper: number) => number,\n zoomStops: Array,\n interpolationType: ?InterpolationType\n};\n\nexport type StylePropertyExpression =\n | ConstantExpression\n | SourceExpression\n | CameraExpression\n | CompositeExpression;\n\nexport function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification): Result> {\n expression = createExpression(expression, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n\n const parsed = expression.value.expression;\n\n const isFeatureConstant = isConstant.isFeatureConstant(parsed);\n if (!isFeatureConstant && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError('', 'data expressions not supported')]);\n }\n\n const isZoomConstant = isConstant.isGlobalPropertyConstant(parsed, ['zoom', 'pitch', 'distance-from-center']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError('', 'zoom expressions not supported')]);\n }\n\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n\n if (!zoomCurve) {\n return success(isFeatureConstant ?\n (new ZoomConstantExpression('constant', expression.value): ConstantExpression) :\n (new ZoomConstantExpression('source', expression.value): SourceExpression));\n }\n\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n\n return success(isFeatureConstant ?\n (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType): CameraExpression) :\n (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType): CompositeExpression));\n}\n\nimport {isFunction, createFunction} from '../function/index.js';\nimport {Color} from './values.js';\n\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nexport class StylePropertyFunction {\n _parameters: PropertyValueSpecification;\n _specification: StylePropertySpecification;\n\n kind: EvaluationKind;\n evaluate: (globals: GlobalProperties, feature?: Feature) => any;\n interpolationFactor: ?(input: number, lower: number, upper: number) => number;\n zoomStops: ?Array;\n\n constructor(parameters: PropertyValueSpecification, specification: StylePropertySpecification) {\n this._parameters = parameters;\n this._specification = specification;\n extend(this, createFunction(this._parameters, this._specification));\n }\n\n static deserialize(serialized: {_parameters: PropertyValueSpecification, _specification: StylePropertySpecification}): StylePropertyFunction {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n }\n\n static serialize(input: StylePropertyFunction): {_parameters: PropertyValueSpecification, _specification: StylePropertySpecification} {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\n\nexport function normalizePropertyExpression(value: PropertyValueSpecification, specification: StylePropertySpecification): StylePropertyExpression {\n if (isFunction(value)) {\n return (new StylePropertyFunction(value, specification): any);\n\n } else if (isExpression(value)) {\n const expression = createPropertyExpression(value, specification);\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: any = value;\n if (typeof value === 'string' && specification.type === 'color') {\n constant = Color.parse(value);\n }\n return {\n kind: 'constant',\n evaluate: () => constant\n };\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: Expression): Step | Interpolate | ParsingError | null {\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\n result = expression;\n }\n\n if (result instanceof ParsingError) {\n return result;\n }\n\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n\n return result;\n}\n\nimport {ColorType, StringType, NumberType, BooleanType, ValueType, FormattedType, ResolvedImageType, array} from './types.js';\n\nfunction getExpectedType(spec: StylePropertySpecification): Type {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n resolvedImage: ResolvedImageType\n };\n\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n\n return types[spec.type];\n}\n\nfunction getDefaultValue(spec: StylePropertySpecification): Value {\n if (spec.type === 'color' && (isFunction(spec.default) || Array.isArray(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 } else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n}\n","// @flow\n\nimport assert from 'assert';\n\nimport type {StylePropertySpecification} from '../style-spec.js';\nimport type {ExpressionSpecification} from '../types.js';\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\n\nexport default function convertFunction(parameters: any, propertySpec: StylePropertySpecification): ExpressionSpecification {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n\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\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n } else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\n\nfunction convertIdentityFunction(parameters, propertySpec): Array {\n const get = ['get', parameters.property];\n\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 } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n const expression = [propertySpec.type === 'color' ? 'to-color' : propertySpec.type, get, convertLiteral(parameters.default)];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\n\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl': return 'interpolate-hcl';\n case 'lab': return 'interpolate-lab';\n default: return 'interpolate';\n }\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\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\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n\n return expression;\n } else {\n const expression = ['step', ['zoom']];\n\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n }\n}\n\nfunction coalesce(a, b) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n}\n\nfunction getFallback(parameters, propertySpec) {\n const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n\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}\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 assert(parameters.stops.length > 0 && parameters.stops.length <= 2);\n const expression = ['case'];\n for (const stop of stops) {\n expression.push(['==', get, stop[0]], stop[1]);\n }\n\n expression.push(getFallback(parameters, propertySpec));\n return expression;\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 } 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 ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\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\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error(`Unknown property function type ${type}`);\n }\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 } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [getInterpolateOperator(parameters), base === 1 ? [\"linear\"] : [\"exponential\", base], input];\n\n } else {\n throw new Error(`Unknown zoom function type \"${type}\"`);\n }\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n}\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}\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}\n\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n } else {\n assert(propertySpec.expression);\n return (propertySpec.expression: any).interpolated ? 'exponential' : 'interval';\n }\n}\n\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nexport function convertTokenString(s: string): string | ExpressionSpecification {\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) result.push(literal);\n result.push(['get', match[1]]);\n }\n\n if (result.length === 1) {\n return s;\n }\n\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return ['to-string', result[1]];\n }\n\n return result;\n}\n\n","// @flow\n\n// Turn jsonlint-lines-primitives objects into primitive objects\nexport function unbundle(value: mixed): mixed {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n}\n\nexport function deepUnbundle(value: mixed): mixed {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue: { [key: string]: mixed } = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n\n return unbundle(value);\n}\n","// @flow\n\nimport {createExpression} from '../expression/index.js';\nimport {isFeatureConstant} from '../expression/is_constant.js';\nimport {deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport latest from '../reference/latest.js';\nimport type {GlobalProperties, Feature} from '../expression/index.js';\nimport type {CanonicalTileID} from '../../source/tile_id.js';\nimport type Point from '@mapbox/point-geometry';\n\nexport type FeatureDistanceData = {bearing: [number, number], center: [number, number], scale: number};\nexport type FilterExpression = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData) => boolean;\nexport type FeatureFilter = {filter: FilterExpression, dynamicFilter?: FilterExpression, needGeometry: boolean, needFeature: boolean};\n\nexport default createFilter;\nexport {isExpressionFilter, isDynamicFilter, extractStaticFilter};\n\nfunction isExpressionFilter(filter: any): boolean {\n if (filter === true || filter === false) {\n return true;\n }\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\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n\n case '!in':\n case '!has':\n case 'none':\n return false;\n\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\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\n default:\n return true;\n }\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 {Array} filter mapbox gl filter\n * @param {string} layerType the type of the layer this filter will be applied to.\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter: any, layerType?: string = 'fill'): FeatureFilter {\n if (filter === null || filter === undefined) {\n return {filter: () => true, needGeometry: false, needFeature: false};\n }\n\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n const filterExp = ((filter: any): string[] | string | boolean);\n\n let staticFilter = true;\n try {\n staticFilter = extractStaticFilter(filterExp);\n } catch (e) {\n console.warn(\n`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${JSON.stringify(filterExp, null, 2)}\n `);\n }\n\n // Compile the static component of the filter\n const filterSpec = latest[`filter_${layerType}`];\n const compiledStaticFilter = createExpression(staticFilter, filterSpec);\n\n let filterFunc = null;\n if (compiledStaticFilter.result === 'error') {\n throw new Error(compiledStaticFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n filterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID) => compiledStaticFilter.value.evaluate(globalProperties, feature, {}, canonical);\n }\n\n // If the static component is not equal to the entire filter then we have a dynamic component\n // Compile the dynamic component separately\n let dynamicFilterFunc = null;\n let needFeature = null;\n if (staticFilter !== filterExp) {\n const compiledDynamicFilter = createExpression(filterExp, filterSpec);\n\n if (compiledDynamicFilter.result === 'error') {\n throw new Error(compiledDynamicFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n dynamicFilterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData) => compiledDynamicFilter.value.evaluate(globalProperties, feature, {}, canonical, undefined, undefined, featureTileCoord, featureDistanceData);\n needFeature = !isFeatureConstant(compiledDynamicFilter.value.expression);\n }\n }\n\n filterFunc = ((filterFunc: any): FilterExpression);\n const needGeometry = geometryNeeded(staticFilter);\n\n return {\n filter: filterFunc,\n dynamicFilter: dynamicFilterFunc ? dynamicFilterFunc : undefined,\n needGeometry,\n needFeature: !!needFeature\n };\n}\n\nfunction extractStaticFilter(filter: any): any {\n if (!isDynamicFilter(filter)) {\n return filter;\n }\n\n // Shallow copy so we can replace expressions in-place\n let result = deepUnbundle(filter);\n\n // 1. Union branches\n unionDynamicBranches(result);\n\n // 2. Collapse dynamic conditions to `true`\n result = collapseDynamicBooleanExpressions(result);\n\n return result;\n}\n\nfunction collapseDynamicBooleanExpressions(expression: any): any {\n if (!Array.isArray(expression)) {\n return expression;\n }\n\n const collapsed = collapsedExpression(expression);\n if (collapsed === true) {\n return collapsed;\n } else {\n return collapsed.map((subExpression) => collapseDynamicBooleanExpressions(subExpression));\n }\n}\n\n/**\n * Traverses the expression and replaces all instances of branching on a\n * `dynamic` conditional (such as `['pitch']` or `['distance-from-center']`)\n * into an `any` expression.\n * This ensures that all possible outcomes of a `dynamic` branch are considered\n * when evaluating the expression upfront during filtering.\n *\n * @param {Array} filter the filter expression mutated in-place.\n */\nfunction unionDynamicBranches(filter: any) {\n let isBranchingDynamically = false;\n const branches = [];\n\n if (filter[0] === 'case') {\n for (let i = 1; i < filter.length - 1; i += 2) {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[i]);\n branches.push(filter[i + 1]);\n }\n\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'match') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n for (let i = 2; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'step') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n for (let i = 1; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n }\n\n if (isBranchingDynamically) {\n filter.length = 0;\n filter.push('any', ...branches);\n }\n\n // traverse and recurse into children\n for (let i = 1; i < filter.length; i++) {\n unionDynamicBranches(filter[i]);\n }\n}\n\nfunction isDynamicFilter(filter: any): boolean {\n // Base Cases\n if (!Array.isArray(filter)) {\n return false;\n }\n if (isRootExpressionDynamic(filter[0])) {\n return true;\n }\n\n for (let i = 1; i < filter.length; i++) {\n const child = filter[i];\n if (isDynamicFilter(child)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isRootExpressionDynamic(expression: string): boolean {\n return expression === 'pitch' ||\n expression === 'distance-from-center';\n}\n\nconst dynamicConditionExpressions = new Set([\n 'in',\n '==',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'to-boolean'\n]);\n\nfunction collapsedExpression(expression: any): any {\n if (dynamicConditionExpressions.has(expression[0])) {\n\n for (let i = 1; i < expression.length; i++) {\n const param = expression[i];\n if (isDynamicFilter(param)) {\n return true;\n }\n }\n }\n return expression;\n}\n\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter)) return false;\n if (filter[0] === 'within') return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index])) return true;\n }\n return false;\n}\n\nfunction convertFilter(filter: ?Array): mixed {\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n const converted =\n op === '==' ? convertComparisonOp(filter[1], filter[2], '==') :\n op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) :\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>=' ? convertComparisonOp(filter[1], filter[2], op) :\n op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) :\n op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) :\n op === 'in' ? convertInOp(filter[1], filter.slice(2)) :\n op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) :\n op === 'has' ? convertHasOp(filter[1]) :\n op === '!has' ? convertNegation(convertHasOp(filter[1])) :\n op === 'within' ? filter :\n true;\n return converted;\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string) {\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}\n\nfunction convertDisjunctionOp(filters: Array>) {\n return ['any'].concat(filters.map(convertFilter));\n}\n\nfunction convertInOp(property: string, values: Array) {\n if (values.length === 0) { return false; }\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 } else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\n\nfunction convertHasOp(property: string) {\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}\n\nfunction convertNegation(filter: mixed) {\n return ['!', filter];\n}\n","// @flow\n\nimport {isExpressionFilter} from './index.js';\n\nimport type {FilterSpecification} from '../types.js';\n\ntype ExpectedTypes = {[_: string]: 'string' | 'number' | 'boolean'};\n\n/**\n * Convert the given legacy filter to (the JSON representation of) an\n * equivalent expression\n * @private\n */\nexport default function convertFilter(filter: FilterSpecification): mixed {\n return _convertFilter(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 evalaution 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: FilterSpecification, expectedTypes: ExpectedTypes): mixed {\n if (isExpressionFilter(filter)) { return filter; }\n\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n\n let converted;\n\n if (\n op === '==' ||\n op === '!=' ||\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>='\n ) {\n const [, property, value] = (filter: any);\n converted = convertComparisonOp(property, value, op, expectedTypes);\n } else if (op === 'any') {\n const children = (filter: any).slice(1).map(f => {\n const types = {};\n const child = _convertFilter(f, types);\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : ['case', typechecks, child, false];\n });\n return ['any'].concat(children);\n } else if (op === 'all') {\n const children = (filter: any).slice(1).map(f => _convertFilter(f, expectedTypes));\n return children.length > 1 ? ['all'].concat(children) : [].concat(...children);\n } else if (op === 'none') {\n return ['!', _convertFilter(['any'].concat((filter: any).slice(1)), {})];\n } else if (op === 'in') {\n converted = convertInOp((filter[1]: any), filter.slice(2));\n } else if (op === '!in') {\n converted = convertInOp((filter[1]: any), filter.slice(2), true);\n } else if (op === 'has') {\n converted = convertHasOp((filter[1]: any));\n } else if (op === '!has') {\n converted = ['!', convertHasOp((filter[1]: any))];\n } else {\n converted = true;\n }\n\n return converted;\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: 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) return true;\n if (conditions.length === 1) return conditions[0];\n return ['all'].concat(conditions);\n}\n\nfunction convertComparisonOp(property: string, value: any, op: string, expectedTypes: ?ExpectedTypes) {\n let get;\n if (property === '$type') {\n return [op, ['geometry-type'], value];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n if (expectedTypes && value !== null) {\n const type = ((typeof value): any);\n expectedTypes[property] = type;\n }\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 } 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\n return [op, get, value];\n}\n\nfunction convertInOp(property: string, values: Array, negate = false) {\n if (values.length === 0) return negate;\n\n let get;\n if (property === '$type') {\n get = ['geometry-type'];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\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\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\n return [ negate ? 'all' : 'any' ].concat(\n values.map(v => [negate ? '!=' : '==', get, v])\n );\n}\n\nfunction convertHasOp(property: string) {\n if (property === '$type') {\n return true;\n } else if (property === '$id') {\n return ['!=', ['id'], null];\n } else {\n return ['has', property];\n }\n}\n","// @flow\n\nimport {\n eachLayer,\n eachProperty\n} from '../visit.js';\nimport {isExpression} from '../expression/index.js';\nimport convertFunction, {convertTokenString} from '../function/convert.js';\nimport convertFilter from '../feature_filter/convert.js';\n\nimport type {StyleSpecification} from '../types.js';\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 */\nexport default function(style: StyleSpecification): StyleSpecification {\n const converted = [];\n\n eachLayer(style, (layer) => {\n if (layer.filter) {\n layer.filter = (convertFilter(layer.filter): any);\n }\n });\n\n eachProperty(style, {paint: true, layout: true}, ({path, value, reference, set}) => {\n if (isExpression(value)) return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value, reference));\n converted.push(path.join('.'));\n } else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n\n return style;\n}\n\n","\nimport migrateToV8 from './migrate/v8.js';\nimport migrateToExpressions from './migrate/expressions.js';\n\n/**\n * Migrate a Mapbox GL Style to the latest version.\n *\n * @private\n * @alias migrate\n * @param {object} style a Mapbox GL Style\n * @returns {Object} a migrated style\n * @example\n * var fs = require('fs');\n * var migrate = require('mapbox-gl-style-spec').migrate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nexport default function(style) {\n let migrated = false;\n\n if (style.version === 7) {\n style = migrateToV8(style);\n migrated = true;\n }\n\n if (style.version === 8) {\n migrated = migrateToExpressions(style);\n migrated = true;\n }\n\n if (!migrated) {\n throw new Error('cannot migrate from', style.version);\n }\n\n return style;\n}\n","\nexport default function (style) {\n const styleIDs = [];\n const sourceIDs = [];\n const compositedSourceLayers = [];\n\n for (const id in style.sources) {\n const source = style.sources[id];\n\n if (source.type !== \"vector\")\n continue;\n\n const match = /^mapbox:\\/\\/(.*)/.exec(source.url);\n if (!match)\n continue;\n\n styleIDs.push(id);\n sourceIDs.push(match[1]);\n }\n\n if (styleIDs.length < 2)\n return style;\n\n styleIDs.forEach((id) => {\n delete style.sources[id];\n });\n\n const compositeID = sourceIDs.join(\",\");\n\n style.sources[compositeID] = {\n \"type\": \"vector\",\n \"url\": `mapbox://${compositeID}`\n };\n\n style.layers.forEach((layer) => {\n if (styleIDs.indexOf(layer.source) >= 0) {\n layer.source = compositeID;\n\n if ('source-layer' in layer) {\n if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {\n throw new Error('Conflicting source layer names');\n } else {\n compositedSourceLayers.push(layer['source-layer']);\n }\n }\n }\n });\n\n return style;\n}\n","// @flow\nexport default ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n","// @flow\n\nimport refProperties from './util/ref_properties.js';\n\nimport type {LayerSpecification} from './types.js';\n\nfunction deref(layer: LayerSpecification, parent: LayerSpecification): LayerSpecification {\n const result = {};\n\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n\n refProperties.forEach((k) => {\n if (k in parent) {\n result[k] = (parent: any)[k];\n }\n });\n\n return ((result: any): LayerSpecification);\n}\n\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array} layers\n * @returns {Array}\n */\nexport default function derefLayers(layers: Array): Array {\n layers = layers.slice();\n\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\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]: any).ref]);\n }\n }\n\n return layers;\n}\n","// @flow\n\n/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a: ?mixed, b: ?mixed): boolean {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n return a === b;\n}\n\nexport default deepEqual;\n","// @flow\n\nimport isEqual from './util/deep_equal.js';\n\nimport type {StyleSpecification} from './types.js';\n\ntype Command = {\n command: string;\n args: Array;\n};\n\nexport const operations: {[_: string]: string} = {\n\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight',\n\n /*\n * { command: 'setTerrain', args: [terrainProperties] }\n */\n setTerrain: 'setTerrain',\n\n /*\n * { command: 'setFog', args: [fogProperties] }\n */\n setFog: 'setFog',\n\n /*\n * { command: 'setProjection', args: [projectionProperties] }\n */\n setProjection: 'setProjection'\n};\n\nfunction addSource(sourceId, after, commands) {\n commands.push({command: operations.addSource, args: [sourceId, after[sourceId]]});\n}\n\nfunction removeSource(sourceId, commands, sourcesRemoved) {\n commands.push({command: operations.removeSource, args: [sourceId]});\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId, after, commands, sourcesRemoved) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before, after, sourceId) {\n let prop;\n for (prop in before[sourceId]) {\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before, after, commands, sourcesRemoved) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n if (!before.hasOwnProperty(sourceId)) continue;\n if (!after.hasOwnProperty(sourceId)) {\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n if (!after.hasOwnProperty(sourceId)) continue;\n if (!before.hasOwnProperty(sourceId)) {\n addSource(sourceId, after, commands);\n } else if (!isEqual(before[sourceId], after[sourceId])) {\n if (before[sourceId].type === 'geojson' && after[sourceId].type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({command: operations.setGeoJSONSourceData, args: [sourceId, after[sourceId].data]});\n } else {\n // no update command, must remove then add\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(before, after, commands, layerId, klass, command) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n if (!before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n for (prop in after) {\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n if (!isEqual(before[prop], after[prop])) {\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n}\n\nfunction pluckId(layer) {\n return layer.id;\n}\nfunction indexById(group, layer) {\n group[layer.id] = layer;\n return group;\n}\n\nfunction diffLayers(before, after, commands) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n const clean = Object.create(null);\n\n let i, d, layerId, beforeLayer, afterLayer, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n layerId = beforeOrder[i];\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (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\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n\n if (beforeIndex.hasOwnProperty(layerId)) {\n // remove the layer before we insert at the correct position\n commands.push({command: operations.removeLayer, args: [layerId]});\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n commands.push({command: operations.addLayer, args: [afterIndex[layerId], insertBeforeLayerId]});\n tracker.splice(tracker.length - i, 0, layerId);\n clean[layerId] = true;\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n layerId = afterOrder[i];\n beforeLayer = beforeIndex[layerId];\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!isEqual(beforeLayer.source, afterLayer.source) || !isEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !isEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({command: operations.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 commands.push({command: operations.addLayer, args: [afterLayer, insertBeforeLayerId]});\n continue;\n }\n\n // layout, paint, filter, minzoom, maxzoom\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({command: operations.setFilter, args: [layerId, afterLayer.filter]});\n }\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom) || !isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({command: operations.setLayerZoomRange, args: [layerId, afterLayer.minzoom, afterLayer.maxzoom]});\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n for (prop in afterLayer) {\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom') continue;\n if (prop.indexOf('paint.') === 0) {\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n commands.push({command: operations.setLayerProperty, 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 mapbox-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 */\nexport default function diffStyles(before: StyleSpecification, after: StyleSpecification): Array {\n if (!before) return [{command: operations.setStyle, args: [after]}];\n\n let commands = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{command: operations.setStyle, args: [after]}];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({command: operations.setCenter, args: [after.center]});\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({command: operations.setZoom, args: [after.zoom]});\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({command: operations.setBearing, args: [after.bearing]});\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({command: operations.setPitch, args: [after.pitch]});\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({command: operations.setSprite, args: [after.sprite]});\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({command: operations.setGlyphs, args: [after.glyphs]});\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({command: operations.setTransition, args: [after.transition]});\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({command: operations.setLight, args: [after.light]});\n }\n if (!isEqual(before.fog, after.fog)) {\n commands.push({command: operations.setFog, args: [after.fog]});\n }\n if (!isEqual(before.projection, after.projection)) {\n commands.push({command: operations.setProjection, args: [after.projection]});\n }\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\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n\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 (layer.source && sourcesRemoved[layer.source]) {\n commands.push({command: operations.removeLayer, args: [layer.id]});\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n\n // Remove the terrain if the source for that terrain is being removed\n let beforeTerrain = before.terrain;\n if (beforeTerrain) {\n if (sourcesRemoved[beforeTerrain.source]) {\n commands.push({command: operations.setTerrain, args: [undefined]});\n beforeTerrain = undefined;\n }\n }\n\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Even though terrain is a top-level property\n // Its like a layer in the sense that it depends on a source being present.\n if (!isEqual(beforeTerrain, after.terrain)) {\n commands.push({command: operations.setTerrain, args: [after.terrain]});\n }\n\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: operations.setStyle, args: [after]}];\n }\n\n return commands;\n}\n","// @flow\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport default class ValidationError {\n message: string;\n identifier: ?string;\n line: ?number;\n\n constructor(key: ?string, value: ?{ __line__: number }, message: string, identifier: ?string) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier) this.identifier = identifier;\n\n if (value !== null && value !== undefined && value.__line__) {\n this.line = value.__line__;\n }\n }\n}\n","// @flow\n\n// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport default class ParsingError {\n message: string;\n error: Error;\n line: number;\n\n constructor(error: 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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validateSpec from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n objectElementValidators?: Function;\n};\n\nexport default function validateObject(options: Options): Array {\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 let errors = [];\n\n const type = getType(object);\n if (type !== 'object') {\n return [new ValidationError(key, object, `object expected, ${type} found`)];\n }\n\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n const elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n\n let validateElement;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n } else if (elementSpecs[elementSpecKey]) {\n validateElement = validateSpec;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validateSpec;\n }\n\n if (!validateElement) {\n errors.push(new ValidationError(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\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 // $FlowFixMe[extra-arg]\n }, object));\n }\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\n if (elementSpecs[elementSpecKey].required && elementSpecs[elementSpecKey]['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n arrayElementValidator: Function;\n};\n\nexport default function validateArray(options: Options): Array {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validate;\n\n if (getType(array) !== 'array') {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n }\n\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n }\n\n let arrayElementSpec = {\n \"type\": arraySpec.value,\n \"values\": arraySpec.values,\n \"minimum\": arraySpec.minimum,\n \"maximum\": arraySpec.maximum,\n function: undefined\n };\n\n if (styleSpec.$version < 7) {\n arrayElementSpec.function = arraySpec.function;\n }\n\n if (getType(arraySpec.value) === 'object') {\n arrayElementSpec = arraySpec.value;\n }\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 style,\n styleSpec,\n key: `${key}[${i}]`\n }));\n }\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n arrayIndex: number;\n}\n\nexport default function validateNumber(options: Options): Array {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n let type = getType(value);\n\n // eslint-disable-next-line no-self-compare\n if (type === 'number' && value !== value) {\n type = 'NaN';\n }\n\n if (type !== 'number') {\n return [new ValidationError(key, value, `number expected, ${type} found`)];\n }\n\n if ('minimum' in valueSpec) {\n let specMin = valueSpec.minimum;\n if (getType(valueSpec.minimum) === 'array') {\n const i = options.arrayIndex;\n specMin = valueSpec.minimum[i];\n }\n if (value < specMin) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${specMin}`)];\n }\n }\n\n if ('maximum' in valueSpec) {\n let specMax = valueSpec.maximum;\n if (getType(valueSpec.maximum) === 'array') {\n const i = options.arrayIndex;\n specMax = valueSpec.maximum[i];\n }\n if (value > specMax) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${specMax}`)];\n }\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\nimport validateObject from './validate_object.js';\nimport validateArray from './validate_array.js';\nimport validateNumber from './validate_number.js';\nimport {isExpression} from '../expression/index.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsInterpolation\n} from '../util/properties.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateFunction(options: ValidationOptions): any {\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(options.value.type);\n let stopKeyType;\n let stopDomainValues: {[string | number]: boolean} = {};\n let previousStopDomainValue;\n let previousStopDomainZoom;\n\n const isZoomFunction = functionType !== 'categorical' && options.value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction =\n getType(options.value.stops) === 'array' &&\n getType(options.value.stops[0]) === 'array' &&\n getType(options.value.stops[0][0]) === 'object';\n\n const errors = validateObject({\n key: options.key,\n value: options.value,\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n\n if (functionType !== 'identity' && !options.value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n\n if (functionType === 'exponential' && options.valueSpec.expression && !supportsInterpolation(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\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 } else if (isZoomFunction && !supportsZoomExpression(options.valueSpec)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && options.value.property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n\n return errors;\n\n function validateFunctionStops(options: ValidationOptions) {\n if (functionType === 'identity') {\n return [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\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\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\n return errors;\n }\n\n function validateFunctionStop(options: ValidationOptions) {\n let errors = [];\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n if (value.length !== 2) {\n return [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 [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\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\n const nextStopDomainZoom = unbundle(value[0].zoom);\n if (typeof nextStopDomainZoom !== 'number') {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must be numbers')];\n }\n\n if (previousStopDomainZoom && previousStopDomainZoom > nextStopDomainZoom) {\n return [new ValidationError(key, value[0].zoom, 'stop zoom values must appear in ascending order')];\n }\n if (nextStopDomainZoom !== previousStopDomainZoom) {\n previousStopDomainZoom = nextStopDomainZoom;\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {zoom: {}},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {zoom: validateNumber, value: validateStopDomainValue}\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n\n return errors.concat(validate({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n\n function validateStopDomainValue(options: ValidationOptions, stop) {\n const type = getType(options.value);\n const value = unbundle(options.value);\n\n const reportValue = options.value !== null ? options.value : stop;\n\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [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' && typeof value !== 'number' && typeof value !== 'string' && typeof value !== 'boolean') {\n return [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 += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n\n if (functionType === 'categorical' && type === 'number' && (typeof value !== 'number' || !isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${String(value)}`)];\n }\n\n if (functionType !== 'categorical' && type === 'number' && typeof value === 'number' && typeof previousStopDomainValue === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n\n if (functionType === 'categorical' && (value: any) in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[(value: any)] = true;\n }\n\n return [];\n }\n\n function validateFunctionDefault(options: ValidationOptions) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\n\nimport {createExpression, createPropertyExpression} from '../expression/index.js';\nimport {deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {isStateConstant, isGlobalPropertyConstant, isFeatureConstant} from '../expression/is_constant.js';\nimport CompoundExpression from '../expression/compound_expression.js';\n\nimport type {Expression} from '../expression/expression.js';\n\nexport default function validateExpression(options: any): Array {\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\n const expressionObj = (expression.value: any).expression || (expression.value: any)._styleExpression.expression;\n\n if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n !expressionObj.outputDefined()) {\n return [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' && options.propertyType === 'layout' &&\n (!isStateConstant(expressionObj))) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n\n if (options.expressionContext === 'filter') {\n return disallowedFilterParameters(expressionObj, options);\n }\n\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [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\nexport function disallowedFilterParameters(e: Expression, options: any): Array {\n const disallowedParameters = new Set([\n 'zoom',\n 'feature-state',\n 'pitch',\n 'distance-from-center'\n ]);\n\n if (options.valueSpec && options.valueSpec.expression) {\n for (const param of options.valueSpec.expression.parameters) {\n disallowedParameters.delete(param);\n }\n }\n\n if (disallowedParameters.size === 0) {\n return [];\n }\n const errors = [];\n\n if (e instanceof CompoundExpression) {\n if (disallowedParameters.has(e.name)) {\n return [new ValidationError(options.key, options.value, `[\"${e.name}\"] expression is not supported in a filter for a ${options.object.type} layer with id: ${options.object.id}`)];\n }\n }\n e.eachChild((arg) => {\n errors.push(...disallowedFilterParameters(arg, options));\n });\n\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateBoolean(options: ValidationOptions): Array {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'boolean') {\n return [new ValidationError(key, value, `boolean expected, ${type} found`)];\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport {parseCSSColor} from 'csscolorparser';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateColor(options: ValidationOptions): Array {\n const key = options.key;\n const value = options.value;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `color expected, ${type} found`)];\n }\n\n if (parseCSSColor(value) === null) {\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateEnum(options: ValidationOptions): Array {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n const errors = [];\n\n if (Array.isArray(valueSpec.values)) { // <=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 } else { // >=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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validateExpression from './validate_expression.js';\nimport validateEnum from './validate_enum.js';\nimport getType from '../util/get_type.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport extend from '../util/extend.js';\nimport {isExpressionFilter} from '../feature_filter/index.js';\n\nimport type {ValidationOptions} from './validate.js';\n\ntype Options = ValidationOptions & {\n layerType: string;\n}\n\nexport default function validateFilter(options: Options): Array {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n // We default to a layerType of `fill` because that points to a non-dynamic filter definition within the style-spec.\n const layerType = options.layerType || 'fill';\n\n return validateExpression(extend({}, options, {\n expressionContext: 'filter',\n valueSpec: options.styleSpec[`filter_${layerType}`]\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n}\n\nfunction validateNonExpressionFilter(options) {\n const value = options.value;\n const key = options.key;\n\n if (getType(value) !== 'array') {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n const styleSpec = options.styleSpec;\n let type;\n\n let errors = [];\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\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\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 } 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\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\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 } else if (type !== 'string') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${type} found`));\n }\n break;\n case 'within':\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 } else if (type !== 'object') {\n errors.push(new ValidationError(`${key}[1]`, value[1], `object expected, ${type} found`));\n }\n break;\n }\n return errors;\n}\n","// @flow\n\nimport validate from './validate.js';\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport {isFunction} from '../function/index.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {supportsPropertyExpression} from '../util/properties.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport type PropertyValidationOptions = ValidationOptions & {\n objectKey: string;\n layerType: string;\n}\n\nexport default function validateProperty(options: PropertyValidationOptions, propertyType: string): Array {\n const key = options.key;\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\n if (!layerSpec) return [];\n\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key,\n value,\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationError(key, value, `unknown property \"${propertyKey}\"`)];\n }\n\n let tokenMatch;\n if (getType(value) === 'string' && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n return [new ValidationError(\n key, value,\n `\"${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\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle(value.type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n }\n\n return errors.concat(validate({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n","// @flow\n\nimport validateProperty from './validate_property.js';\n\nimport type ValidationError from '../error/validation_error.js';\nimport type {PropertyValidationOptions} from './validate_property.js';\n\nexport default function validatePaintProperty(options: PropertyValidationOptions): Array {\n return validateProperty(options, 'paint');\n}\n","// @flow\n\nimport validateProperty from './validate_property.js';\n\nimport type ValidationError from '../error/validation_error.js';\nimport type {PropertyValidationOptions} from './validate_property.js';\n\nexport default function validateLayoutProperty(options: PropertyValidationOptions): Array {\n return validateProperty(options, 'layout');\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\nimport validateObject from './validate_object.js';\nimport validateFilter from './validate_filter.js';\nimport validatePaintProperty from './validate_paint_property.js';\nimport validateLayoutProperty from './validate_layout_property.js';\nimport validateSpec from './validate.js';\nimport extend from '../util/extend.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type {LayerSpecification} from '../types.js';\n\ntype Options = ValidationOptions & {\n value: LayerSpecification;\n arrayIndex: number;\n}\n\nexport default function validateLayer(options: Options): Array {\n let errors = [];\n\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\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\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 // $FlowFixMe[prop-missing] - id.__line__ is added dynamically during the readStyle step\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layer.id}\", previously used at line ${otherLayer.id.__line__}`));\n }\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\n let parent;\n\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref) parent = layer;\n });\n\n if (!parent) {\n if (typeof ref === 'string')\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n type = unbundle(parent.type);\n }\n } else if (!(type === 'background' || type === 'sky')) {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\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 } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a raster source`));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id}\" requires a vector source`));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id}\" must specify a \"source-layer\"`));\n } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n } else if (type === 'line' && layer.paint && (layer.paint['line-gradient'] || layer.paint['line-trim-offset']) &&\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\n errors = errors.concat(validateObject({\n key,\n value: layer,\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\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 validateSpec({\n key: `${key}.type`,\n value: layer.type,\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter(options) {\n return validateFilter(extend({layerType: type}, options));\n },\n layout(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validateLayoutProperty(extend({layerType: type}, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer,\n key: options.key,\n value: options.value,\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options) {\n return validatePaintProperty(extend({layerType: type}, options));\n }\n }\n });\n }\n }\n }));\n\n return errors;\n}\n","// @flow\n\nimport getType from '../util/get_type.js';\nimport ValidationError from '../error/validation_error.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateString(options: $Shape): Array {\n const value = options.value;\n const key = options.key;\n const type = getType(value);\n\n if (type !== 'string') {\n return [new ValidationError(key, value, `string expected, ${type} found`)];\n }\n\n return [];\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\nimport validateObject from './validate_object.js';\nimport validateEnum from './validate_enum.js';\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\nimport getType from '../util/get_type.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\n\nexport default function validateSource(options: ValidationOptions): Array {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n\n if (!value.type) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n\n const type = unbundle(value.type);\n let errors;\n\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec,\n objectElementValidators\n });\n return errors;\n\n case 'geojson':\n errors = validateObject({\n key,\n value,\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\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' ? [operator, ['accumulated'], ['get', prop]] : operator;\n\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\n case 'video':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_video,\n style,\n styleSpec\n });\n\n case 'image':\n return validateObject({\n key,\n value,\n valueSpec: styleSpec.source_image,\n style,\n styleSpec\n });\n\n case 'canvas':\n return [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: {values: getSourceTypeValues(styleSpec)},\n style,\n styleSpec\n });\n }\n}\n\nfunction getSourceTypeValues(styleSpec) {\n return styleSpec.source.reduce((memo, source) => {\n const sourceType = styleSpec[source];\n if (sourceType.type.type === 'enum') {\n memo = memo.concat(Object.keys(sourceType.type.values));\n }\n return memo;\n }, []);\n}\n\nfunction validatePromoteId({key, value}) {\n if (getType(value) === 'string') {\n return validateString({key, value});\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","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateLight(options: ValidationOptions): Array {\n const light = options.value;\n const styleSpec = options.styleSpec;\n const lightSpec = styleSpec.light;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(light);\n if (light === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('light', light, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validate from './validate.js';\nimport getType from '../util/get_type.js';\nimport {unbundle} from '../util/unbundle_jsonlint.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateTerrain(options: ValidationOptions): Array {\n const terrain = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const terrainSpec = styleSpec.terrain;\n let errors = [];\n\n const rootType = getType(terrain);\n if (terrain === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('terrain', terrain, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in terrain) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && terrainSpec[transitionMatch[1]] && terrainSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (terrainSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: terrainSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, terrain[key], `unknown property \"${key}\"`)]);\n }\n }\n\n if (!terrain.source) {\n errors.push(new ValidationError(key, terrain, `terrain is missing required property \"source\"`));\n } else {\n const source = style.sources && style.sources[terrain.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, terrain.source, `source \"${terrain.source}\" not found`));\n } else if (sourceType !== 'raster-dem') {\n errors.push(new ValidationError(key, terrain.source, `terrain cannot be used with a source of type ${String(sourceType)}, it only be used with a \"raster-dem\" source type`));\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validate from './validate.js';\nimport getType from '../util/get_type.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateFog(options: ValidationOptions): Array {\n const fog = options.value;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const fogSpec = styleSpec.fog;\n let errors = [];\n\n const rootType = getType(fog);\n if (fog === undefined) {\n return errors;\n } else if (rootType !== 'object') {\n errors = errors.concat([new ValidationError('fog', fog, `object expected, ${rootType} found`)]);\n return errors;\n }\n\n for (const key in fog) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n\n if (transitionMatch && fogSpec[transitionMatch[1]] && fogSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n } else if (fogSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n valueSpec: fogSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, fog[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","// @flow\n\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type ValidationError from '../error/validation_error.js';\n\nexport default function validateFormatted(options: ValidationOptions): Array {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","// @flow\n\nimport validateExpression from './validate_expression.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\nimport type ValidationError from '../error/validation_error.js';\n\nexport default function validateImage(options: ValidationOptions): Array {\n if (validateString(options).length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport getType from '../util/get_type.js';\nimport validate from './validate.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function validateProjection(options: ValidationOptions): Array {\n const projection = options.value;\n const styleSpec = options.styleSpec;\n const projectionSpec = styleSpec.projection;\n const style = options.style;\n\n let errors = [];\n\n const rootType = getType(projection);\n\n if (rootType === 'object') {\n for (const key in projection) {\n errors = errors.concat(validate({\n key,\n value: projection[key],\n valueSpec: projectionSpec[key],\n style,\n styleSpec\n }));\n }\n } else if (rootType !== 'string') {\n errors = errors.concat([new ValidationError('projection', projection, `object or string expected, ${rootType} found`)]);\n }\n\n return errors;\n}\n","// @flow\n\nimport extend from '../util/extend.js';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js';\nimport {isExpression} from '../expression/index.js';\nimport {isFunction} from '../function/index.js';\n\nimport validateFunction from './validate_function.js';\nimport validateExpression from './validate_expression.js';\nimport validateObject from './validate_object.js';\nimport validateArray from './validate_array.js';\nimport validateBoolean from './validate_boolean.js';\nimport validateNumber from './validate_number.js';\nimport validateColor from './validate_color.js';\nimport validateEnum from './validate_enum.js';\nimport validateFilter from './validate_filter.js';\nimport validateLayer from './validate_layer.js';\nimport validateSource from './validate_source.js';\nimport validateLight from './validate_light.js';\nimport validateTerrain from './validate_terrain.js';\nimport validateFog from './validate_fog.js';\nimport validateString from './validate_string.js';\nimport validateFormatted from './validate_formatted.js';\nimport validateImage from './validate_image.js';\nimport validateProjection from './validate_projection.js';\n\nimport type {StyleReference} from '../reference/latest.js';\nimport type {StyleSpecification} from '../types.js';\nimport type ValidationError from '../error/validation_error.js';\n\nconst VALIDATORS = {\n '*'() {\n return [];\n },\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'light': validateLight,\n 'terrain': validateTerrain,\n 'fog': validateFog,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage,\n 'projection': validateProjection\n};\n\n// Main recursive validation function. Tracks:\n//\n// - key: string representing location of validation in style tree. Used only\n// for more informative error reporting.\n// - 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// - valueSpec: current spec being evaluated. Tracks value.\n// - styleSpec: current full spec being evaluated.\nexport type ValidationOptions = {\n key: string;\n value: Object;\n valueSpec: Object;\n style: $Shape;\n styleSpec: StyleReference;\n}\n\nexport default function validate(options: ValidationOptions): Array {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n\n if (valueSpec.expression && isFunction(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(extend({}, options, {\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n return valid;\n }\n}\n","// @flow\n\nimport ValidationError from '../error/validation_error.js';\nimport validateString from './validate_string.js';\n\nimport type {ValidationOptions} from './validate.js';\n\nexport default function(options: ValidationOptions): Array {\n const value = options.value;\n const key = options.key;\n\n const errors = validateString(options);\n if (errors.length) return errors;\n\n if (value.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n\n if (value.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n\n return errors;\n}\n","// @flow\nimport validate from './validate/validate.js';\nimport latestStyleSpec from './reference/latest.js';\nimport validateGlyphsURL from './validate/validate_glyphs_url.js';\n\nimport _validateSource from './validate/validate_source.js';\nimport _validateLight from './validate/validate_light.js';\nimport _validateTerrain from './validate/validate_terrain.js';\nimport _validateFog from './validate/validate_fog.js';\nimport _validateLayer from './validate/validate_layer.js';\nimport _validateFilter from './validate/validate_filter.js';\nimport _validatePaintProperty from './validate/validate_paint_property.js';\nimport _validateLayoutProperty from './validate/validate_layout_property.js';\n\nimport type {StyleSpecification} from './types.js';\n\nexport type ValidationError = {\n message: string;\n identifier?: ?string;\n line?: ?number;\n};\nexport type ValidationErrors = $ReadOnlyArray;\nexport type Validator = (Object) => ValidationErrors;\n\n/**\n * Validate a Mapbox GL style against the style specification. This entrypoint,\n * `mapbox-gl-style-spec/lib/validate_style.min`, is designed to produce as\n * small a browserify bundle as possible by omitting unnecessary functionality\n * and legacy style specifications.\n *\n * @private\n * @param {Object} style The style to be validated.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns {Array}\n * @example\n * var validate = require('mapbox-gl-style-spec/lib/validate_style.min');\n * var errors = validate(style);\n */\nexport function validateStyle(style: StyleSpecification, styleSpec: Object = latestStyleSpec): ValidationErrors {\n\n const errors = validate({\n key: '',\n value: style,\n valueSpec: styleSpec.$root,\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsURL,\n '*': () => []\n }\n });\n return sortErrors(errors);\n}\n\nexport const validateSource: Validator = opts => sortErrors(_validateSource(opts));\nexport const validateLight: Validator = opts => sortErrors(_validateLight(opts));\nexport const validateTerrain: Validator = opts => sortErrors(_validateTerrain(opts));\nexport const validateFog: Validator = opts => sortErrors(_validateFog(opts));\nexport const validateLayer: Validator = opts => sortErrors(_validateLayer(opts));\nexport const validateFilter: Validator = opts => sortErrors(_validateFilter(opts));\nexport const validatePaintProperty: Validator = opts => sortErrors(_validatePaintProperty(opts));\nexport const validateLayoutProperty: Validator = opts => sortErrors(_validateLayoutProperty(opts));\n\nfunction sortErrors(errors) {\n return errors.slice().sort((a, b) => a.line && b.line ? a.line - b.line : 0);\n}\n","/* parser generated by jison 0.4.15 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,12],$V1=[1,13],$V2=[1,9],$V3=[1,10],$V4=[1,11],$V5=[1,14],$V6=[1,15],$V7=[14,18,22,24],$V8=[18,22],$V9=[22,24];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\nproductions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n // replace escaped characters with actual character\n this.$ = new String(yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\n .replace(/\\\\n/g,'\\n')\n .replace(/\\\\r/g,'\\r')\n .replace(/\\\\t/g,'\\t')\n .replace(/\\\\v/g,'\\v')\n .replace(/\\\\f/g,'\\f')\n .replace(/\\\\b/g,'\\b'));\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 2:\n\n this.$ = new Number(yytext);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 3:\n\n this.$ = null;\n \nbreak;\ncase 4:\n\n this.$ = new Boolean(true);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 5:\n\n this.$ = new Boolean(false);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 6:\nreturn this.$ = $$[$0-1];\nbreak;\ncase 13:\nthis.$ = {}; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 14: case 19:\nthis.$ = $$[$0-1]; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0]];\nbreak;\ncase 16:\nthis.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\nbreak;\ncase 17:\nthis.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\nbreak;\ncase 18:\nthis.$ = []; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 20:\nthis.$ = [$$[$0]];\nbreak;\ncase 21:\nthis.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,12:1,13:2,15:7,16:8,17:$V5,23:$V6},{1:[3]},{14:[1,16]},o($V7,[2,7]),o($V7,[2,8]),o($V7,[2,9]),o($V7,[2,10]),o($V7,[2,11]),o($V7,[2,12]),o($V7,[2,3]),o($V7,[2,4]),o($V7,[2,5]),o([14,18,21,22,24],[2,1]),o($V7,[2,2]),{3:20,4:$V0,18:[1,17],19:18,20:19},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:23,15:7,16:8,17:$V5,23:$V6,24:[1,21],25:22},{1:[2,6]},o($V7,[2,13]),{18:[1,24],22:[1,25]},o($V8,[2,16]),{21:[1,26]},o($V7,[2,18]),{22:[1,28],24:[1,27]},o($V9,[2,20]),o($V7,[2,14]),{3:20,4:$V0,20:29},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:30,15:7,16:8,17:$V5,23:$V6},o($V7,[2,19]),{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:31,15:7,16:8,17:$V5,23:$V6},o($V8,[2,17]),o($V8,[2,15]),o($V9,[2,21])],\ndefaultActions: {16:[2,6]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n throw new Error(str);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip whitespace */\nbreak;\ncase 1:return 6\nbreak;\ncase 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\nbreak;\ncase 3:return 17\nbreak;\ncase 4:return 18\nbreak;\ncase 5:return 23\nbreak;\ncase 6:return 24\nbreak;\ncase 7:return 22\nbreak;\ncase 8:return 21\nbreak;\ncase 9:return 10\nbreak;\ncase 10:return 11\nbreak;\ncase 11:return 8\nbreak;\ncase 12:return 14\nbreak;\ncase 13:return 'INVALID'\nbreak;\n}\n},\nrules: [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\n}\n","import ParsingError from './error/parsing_error.js';\nimport jsonlint from '@mapbox/jsonlint-lines-primitives';\n\nexport default function readStyle(style) {\n if (style instanceof String || typeof style === 'string' || style instanceof Buffer) {\n try {\n return jsonlint.parse(style.toString());\n } catch (e) {\n throw new ParsingError(e);\n }\n }\n\n return style;\n}\n","// @flow\nimport {validateStyle as validateStyleMin} from './validate_style.min.js';\nimport {v8} from './style-spec.js';\nimport readStyle from './read_style.js';\n\nimport type {ValidationErrors} from './validate_style.min.js';\nimport type {StyleSpecification} from './types.js';\n\n/**\n * Validate a Mapbox GL style against the style specification.\n *\n * @private\n * @alias validate\n * @param {Object|String|Buffer} style The style to be validated. If a `String`\n * or `Buffer` is provided, the returned errors will contain line numbers.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the spec version is inferred from the stylesheet.\n * @returns {Array}\n * @example\n * var validate = require('mapbox-gl-style-spec').validate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * var errors = validate(style);\n */\n\nexport default function validateStyle(style: StyleSpecification | string | Buffer, styleSpec: Object = v8): ValidationErrors {\n let s = style;\n\n try {\n s = readStyle(s);\n } catch (e) {\n return [e];\n }\n\n return validateStyleMin(s, styleSpec);\n}\n\nexport {\n validateSource as source,\n validateLight as light,\n validateLayer as layer,\n validateFilter as filter,\n validatePaintProperty as paintProperty,\n validateLayoutProperty as layoutProperty\n} from './validate_style.min.js';\n","// @flow\n\nimport {validateStyle} from './validate_style.min.js';\nimport {v8} from './style-spec.js';\nimport readStyle from './read_style.js';\nimport ValidationError from './error/validation_error.js';\nimport getType from './util/get_type.js';\n\nimport type {ValidationErrors} from './validate_style.min.js';\n\nconst SUPPORTED_SPEC_VERSION = 8;\nconst MAX_SOURCES_IN_STYLE = 15;\n\nfunction isValid(value: ?string, regex: RegExp): boolean {\n if (!value || getType(value) !== 'string') return true;\n return !!value.match(regex);\n}\n\nfunction getSourceCount(source: Object): number {\n if (source.url) {\n return source.url.split(',').length;\n } else {\n return 0;\n }\n}\n\nfunction getAllowedKeyErrors(obj: Object, keys: Array<*>, path: ?string): Array {\n const allowed = new Set(keys);\n const errors = [];\n Object.keys(obj).forEach(k => {\n if (!allowed.has(k)) {\n const prop = path ? `${path}.${k}` : null;\n errors.push(new ValidationError(prop, obj[k], `Unsupported property \"${k}\"`));\n }\n });\n return errors;\n}\n\nconst acceptedSourceTypes = new Set([\"vector\", \"raster\", \"raster-dem\"]);\nfunction getSourceErrors(source: Object, i: number): Array {\n const errors = [];\n\n /*\n * Inlined sources are not supported by the Mapbox Styles API, so only\n * \"type\", \"url\", and \"tileSize\" properties are valid\n */\n const sourceKeys = ['type', 'url', 'tileSize'];\n errors.push(...getAllowedKeyErrors(source, sourceKeys, 'source'));\n\n /*\n * \"type\" is required and must be one of \"vector\", \"raster\", \"raster-dem\"\n */\n if (!acceptedSourceTypes.has(String(source.type))) {\n errors.push(new ValidationError(`sources[${i}].type`, source.type, `Expected one of [${Array.from(acceptedSourceTypes).join(\", \")}]`));\n }\n\n /*\n * \"source\" is required. Valid examples:\n * mapbox://mapbox.abcd1234\n * mapbox://penny.abcd1234\n * mapbox://mapbox.abcd1234,penny.abcd1234\n */\n const sourceUrlPattern = /^mapbox:\\/\\/([^/]*)$/;\n if (!source.url || !isValid(source.url, sourceUrlPattern)) {\n errors.push(new ValidationError(`sources[${i}].url`, source.url, 'Expected a valid Mapbox tileset url'));\n }\n\n return errors;\n}\n\nfunction getSourcesErrors(sources: Object): Array {\n const errors = [];\n let count = 0;\n\n Object.keys(sources).forEach((s: string, i: number) => {\n const sourceErrors = getSourceErrors(sources[s], i);\n\n // If source has errors, skip counting\n if (!sourceErrors.length) {\n count = count + getSourceCount(sources[s]);\n }\n\n errors.push(...sourceErrors);\n });\n\n if (count > MAX_SOURCES_IN_STYLE) {\n errors.push(new ValidationError('sources', null, `Styles must contain ${MAX_SOURCES_IN_STYLE} or fewer sources`));\n }\n\n return errors;\n}\n\nfunction getRootErrors(style: Object, specKeys: Array): Array {\n const errors = [];\n\n /*\n * The following keys are optional but fully managed by the Mapbox Styles\n * API. Values on stylesheet on POST or PATCH will be ignored: \"owner\",\n * \"id\", \"cacheControl\", \"draft\", \"created\", \"modified\", \"protected\"\n *\n * The following keys are optional. The Mapbox Styles API respects value on\n * stylesheet on PATCH, but ignores the value on POST: \"visibility\"\n */\n const optionalRootProperties = [\n 'owner',\n 'id',\n 'cacheControl',\n 'draft',\n 'created',\n 'modified',\n 'visibility',\n 'protected'\n ];\n\n const allowedKeyErrors = getAllowedKeyErrors(style, [...specKeys, ...optionalRootProperties]);\n errors.push(...allowedKeyErrors);\n\n if (style.version > SUPPORTED_SPEC_VERSION || style.version < SUPPORTED_SPEC_VERSION) {\n errors.push(new ValidationError('version', style.version, `Style version must be ${SUPPORTED_SPEC_VERSION}`));\n }\n\n /*\n * \"glyphs\" is optional. If present, valid examples:\n * mapbox://fonts/penny/{fontstack}/{range}.pbf\n * mapbox://fonts/mapbox/{fontstack}/{range}.pbf\n */\n const glyphUrlPattern = /^mapbox:\\/\\/fonts\\/([^/]*)\\/{fontstack}\\/{range}.pbf$/;\n if (!isValid(style.glyphs, glyphUrlPattern)) {\n errors.push(new ValidationError('glyphs', style.glyphs, 'Styles must reference glyphs hosted by Mapbox'));\n }\n\n /*\n * \"sprite\" is optional. If present, valid examples:\n * mapbox://sprites/penny/abcd1234\n * mapbox://sprites/mapbox/abcd1234/draft\n * mapbox://sprites/cyrus/abcd1234/abcd1234\n */\n const spriteUrlPattern = /^mapbox:\\/\\/sprites\\/([^/]*)\\/([^/]*)\\/?([^/]*)?$/;\n if (!isValid(style.sprite, spriteUrlPattern)) {\n errors.push(new ValidationError('sprite', style.sprite, 'Styles must reference sprites hosted by Mapbox'));\n }\n\n /*\n * \"visibility\" is optional. If present, valid examples:\n * \"private\"\n * \"public\"\n */\n const visibilityPattern = /^(public|private)$/;\n if (!isValid(style.visibility, visibilityPattern)) {\n errors.push(new ValidationError('visibility', style.visibility, 'Style visibility must be public or private'));\n }\n\n if (style.protected !== undefined && getType(style.protected) !== 'boolean') {\n errors.push(new ValidationError('protected', style.protected, 'Style protection must be true or false'));\n }\n\n return errors;\n}\n\n/**\n * Validate a Mapbox GL style against the style specification and check for\n * compatibility with the Mapbox Styles API.\n *\n * @param {Object} style The style to be validated.\n * @returns {Array}\n * @example\n * var validateMapboxApiSupported = require('mapbox-gl-style-spec/lib/validate_style_mapbox_api_supported.js');\n * var errors = validateMapboxApiSupported(style);\n */\nexport default function validateMapboxApiSupported(style: Object, styleSpec: Object = v8): ValidationErrors {\n let s = style;\n try {\n s = readStyle(s);\n } catch (e) {\n return [e];\n }\n\n let errors = validateStyle(s, styleSpec)\n .concat(getRootErrors(s, Object.keys(v8.$root)));\n\n if (s.sources) {\n errors = errors.concat(getSourcesErrors(s.sources));\n }\n\n return errors;\n}\n\n","// @flow\n\ntype ExpressionType = 'data-driven' | 'color-ramp' | 'data-constant' | 'constant';\ntype ExpressionParameters = Array<'zoom' | 'feature' | 'feature-state' | 'heatmap-density' | 'line-progress' | 'sky-radial-progress' | 'pitch' | 'distance-from-center'>;\n\ntype ExpressionSpecification = {\n interpolated: boolean,\n parameters: ExpressionParameters\n}\n\nexport type StylePropertySpecification = {\n type: 'number',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: number\n} | {\n type: 'string',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string,\n tokens?: boolean\n} | {\n type: 'boolean',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: boolean\n} | {\n type: 'enum',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n values: {[_: string]: {}},\n transition: boolean,\n default?: string\n} | {\n type: 'color',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string,\n overridable: boolean\n} | {\n type: 'array',\n value: 'number',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n length?: number,\n transition: boolean,\n default?: Array\n} | {\n type: 'array',\n value: 'string',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n length?: number,\n transition: boolean,\n default?: Array\n} | {\n type: 'resolvedImage',\n 'property-type': ExpressionType,\n expression?: ExpressionSpecification,\n transition: boolean,\n default?: string\n};\n\nimport v8 from './reference/v8.json';\nimport latest from './reference/latest.js';\nimport format from './format.js';\nimport migrate from './migrate.js';\nimport composite from './composite.js';\nimport derefLayers from './deref.js';\nimport diff from './diff.js';\nimport ValidationError from './error/validation_error.js';\nimport ParsingError from './error/parsing_error.js';\nimport {StyleExpression, isExpression, createExpression, createPropertyExpression, normalizePropertyExpression, ZoomConstantExpression, ZoomDependentExpression, StylePropertyFunction} from './expression/index.js';\nimport featureFilter, {isExpressionFilter} from './feature_filter/index.js';\n\nimport convertFilter from './feature_filter/convert.js';\nimport Color from './util/color.js';\nimport {createFunction, isFunction} from './function/index.js';\nimport convertFunction from './function/convert.js';\nimport {eachSource, eachLayer, eachProperty} from './visit.js';\n\nimport validate from './validate_style.js';\nimport validateMapboxApiSupported from './validate_mapbox_api_supported.js';\n\nconst expression = {\n StyleExpression,\n isExpression,\n isExpressionFilter,\n createExpression,\n createPropertyExpression,\n normalizePropertyExpression,\n ZoomConstantExpression,\n ZoomDependentExpression,\n StylePropertyFunction\n};\n\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction\n};\n\nconst visit = {eachSource, eachLayer, eachProperty};\n\nexport {\n v8,\n latest,\n format,\n migrate,\n composite,\n derefLayers,\n diff,\n ValidationError,\n ParsingError,\n expression,\n featureFilter,\n convertFilter,\n Color,\n styleFunction as function,\n validate,\n validateMapboxApiSupported,\n visit\n};\n"],"names":["stringOrChar","stringify","passedObj","options","indent","JSON","undefined","slice","maxLength","Infinity","replacer","_stringify","obj","currentIndent","reserved","toJSON","string","length","prettified","replace","match","stringLiteral","parse","nextIndent","items","index","start","end","Array","isArray","push","keys","Object","key","keyPart","value","join","sortKeysBy","reference","result","format","style","space","$root","layers","map","layer","stringifyPretty","root","freeExports","exports","nodeType","freeModule","module","freeGlobal","global","window","self","punycode","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","floor","Math","stringFromCharCode","String","fromCharCode","error","type","RangeError","array","fn","mapDomain","parts","split","labels","encoded","ucs2decode","output","counter","extra","charCodeAt","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","decode","input","inputLength","out","i","n","bias","basic","j","oldi","w","t","baseMinusT","lastIndexOf","splice","encode","handledCPCount","basicLength","m","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","test","toLowerCase","toASCII","hasOwnProperty","this","isString","arg","isObject","isNull","isNullOrUndefined","prop","prototype","call","qs","sep","eq","regexp","maxKeys","len","x","idx","indexOf","kstr","vstr","v","substr","decodeURIComponent","stringifyPrimitive","isFinite","name","ks","encodeURIComponent","require","querystring","util","urlParse","urlResolve","urlResolveObject","urlFormat","Url","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","protocolPattern","portPattern","simplePathPattern","delims","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","url","parseQueryString","slashesDenoteHost","u","TypeError","queryIndex","splitter","uSplit","slashRegex","rest","trim","simplePath","exec","proto","lowerProto","hostEnd","hec","atSign","parseHost","ipv6Hostname","hostparts","l","part","newpart","validParts","notHost","bit","unshift","p","h","ae","esc","escape","qm","s","charAt","source","relative","resolve","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","isAbsolute","getPropertyReference","propertyName","Reference","layout","paint","eachSource","callback","sources","eachLayer","eachProperty","inner","propertyType","properties","forEach","id","set","eachLayout","eachPaint","resolveConstant","constants","isFunction","stops","renameProperty","from","to","version","coordinates","coord","reverse","property","stop","migrateFontstackURL","inputParsed","URL","inputPathnameParts","assert","decodeURI","predicate","Error","glyphs","migrateFontStack","font","splitAndTrim","firstSymbolLayer","symbolLayers","inputs","ParsingError","constructor","message","Scope","parent","bindings","expression","get","has","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","ErrorType","CollatorType","FormattedType","ResolvedImageType","itemType","N","toString","valueMemberTypes","checkSubtype","expected","memberType","isValidType","provided","allowedTypes","some","isValidNativeType","kCSSColorTable","clamp_css_byte","round","clamp_css_float","f","parse_css_int","str","parseFloat","parseInt","parse_css_float","css_hue_to_rgb","m1","m2","parseCSSColor","css_str","iv","op","ep","fname","params","alpha","e","Color","r","g","b","a","rgba","toArray","toArray01","toArray01PremultipliedAlpha","black","white","transparent","red","blue","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","collator","Intl","usage","compare","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","text","image","scale","fontStack","textColor","normalize","Formatted","sections","fromString","unformatted","isEmpty","section","factory","serialize","serialized","ResolvedImage","available","validateRGBA","isValue","mixed","item","typeOf","Literal","args","context","expectedType","evaluate","eachChild","outputDefined","RuntimeError","types","number","boolean","object","Assertion","parsed","ctx","every","FormatExpression","firstArg","nextTokenMayBeObject","lastExpression","content","evaluateSection","evaluatedContent","ImageExpression","evaluatedImageName","availableImages","Coercion","Boolean","c","parseColor","num","Number","isNaN","valueToString","child","geometryTypes","EvaluationContext","globals","feature","featureState","formattedSection","_parseColorCache","canonical","featureTileCoord","featureDistanceData","geometryType","geometry","canonicalID","distanceFromCenter","center","y","dX","dY","bX","bearing","bY","dist","cached","CompoundExpression","_evaluate","definition","definitions","availableOverloads","overloads","filter","signature","signatureContext","ParsingContext","registry","scope","parsedArgs","argParseFailed","signatures","stringifySignature","actualTypes","register","CollatorExpression","EXTENT","updateBBox","bbox","min","max","mercatorXfromLng","lng","mercatorYfromLat","lat","PI","log","tan","boxWithinBox","bbox1","bbox2","getTileCoordinates","tilesAtZoom","pow","z","onBoundary","p1","p2","x1","y1","x2","y2","rayIntersect","pointWithinPolygon","point","rings","inside","ring","len2","pointWithinPolygons","polygons","perp","v1","v2","twoSided","q1","q2","x3","y3","det1","det2","lineIntersectLine","d","vectorP","vectorQ","lineIntersectPolygon","polygon","lineStringWithinPolygon","line","lineStringWithinPolygons","getTilePolygon","getTilePolygons","updatePoint","polyBBox","worldSize","halfWorldSize","resetBBox","getTilePoints","pointBBox","shifts","tilePoints","points","getTileLines","lineBBox","tileLines","tileLine","pointsWithinPolygons","polygonGeometry","tilePolygon","tilePolygons","linesWithinPolygons","Within","geojson","geometries","features","isFeatureConstant","isStateConstant","isGlobalPropertyConstant","Var","boundExpression","expr","_parse","annotate","typeAnnotation","Expr","actual","isConstant","ec","isTypeAnnotation","childrenConstant","findStopLessThanOrEqualTo","lastIndex","lowerIndex","upperIndex","currentIndex","nextValue","Step","outputs","label","outputType","labelKey","valueKey","stopCount","UnitBezier","p1x","p1y","p2x","p2y","cx","bx","ax","cy","by","ay","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","epsilon","abs","d2","t0","t1","solve","color","Xn","Yn","Zn","t2","t3","deg2rad","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateLab","interpolateNumber","rgbToHcl","atan2","sqrt","hclToRgb","hclColor","cos","sin","interpolateHue","interpolateHcl","lab","forward","interpolate","hcl","Interpolate","operator","interpolation","interpolationFactor","lower","upper","exponentialInterpolation","controlPoints","ub","outputLower","outputUpper","lowerValue","upperValue","difference","progress","Coalesce","needsAnnotation","argCount","firstImage","Let","binding","At","In","needle","haystack","IndexOf","fromIndex","Match","inputType","cases","otherwise","labelContext","MAX_SAFE_INTEGER","sortedLabels","sort","groupedByOutput","outputLookup","outputIndex","coerceLabel","Case","branches","_","Slice","beginIndex","endIndex","isComparableType","neq","lt","gt","lteq","gteq","eqCollate","neqCollate","ltCollate","gtCollate","lteqCollate","gteqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","hasUntypedArgument","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","unit","minFractionDigits","maxFractionDigits","minimumFractionDigits","maximumFractionDigits","Length","expressions","binarySearch","varargs","typeToString","zoom","pitch","heatmapDensity","lineProgress","skyRadialProgress","accumulated","LN2","E","LN10","asin","acos","atan","ceil","isSupportedScript","toUpperCase","success","supportsPropertyExpression","spec","supportsZoomExpression","parameters","supportsInterpolation","interpolated","getType","val","identityFunction","createFunction","propertySpec","isColor","zoomAndFeatureDependent","featureDependent","zoomDependent","extend","default","colorSpace","colorSpaces","innerFun","hashedStops","categoricalKeyType","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","create","evaluateIdentityFunction","featureFunctions","zoomStops","featureFunctionStops","interpolationType","bind","coalesce","keyType","evaluated","interp","colorspace","evaluatedLower","apply","evaluatedUpper","values","StyleExpression","_warningHistory","_evaluator","_defaultValue","getDefaultValue","_enumValues","evaluateWithoutErrorHandling","console","warn","isExpression","createExpression","parser","getExpectedType","ZoomConstantExpression","_styleExpression","isStateDependent","ZoomDependentExpression","createPropertyExpression","isZoomConstant","zoomCurve","findZoomCurve","StylePropertyFunction","specification","_parameters","_specification","deserialize","normalizePropertyExpression","err","constant","childResult","enum","formatted","resolvedImage","convertLiteral","convertFunction","convertIdentityFunction","tokens","convertTokenString","convertZoomAndPropertyFunction","convertZoomFunction","convertPropertyFunction","getInterpolateOperator","featureFunctionParameters","functionType","getFunctionType","appendStopPair","fixupDegenerateStepCurve","getFallback","defaultValue","isStep","curve","re","pos","literal","unbundle","valueOf","deepUnbundle","unbundledValue","isExpressionFilter","createFilter","layerType","needGeometry","needFeature","convertFilter","filterExp","staticFilter","extractStaticFilter","filterSpec","latest","compiledStaticFilter","filterFunc","globalProperties","dynamicFilterFunc","compiledDynamicFilter","geometryNeeded","dynamicFilter","isDynamicFilter","unionDynamicBranches","collapseDynamicBooleanExpressions","collapsed","collapsedExpression","subExpression","isBranchingDynamically","isRootExpressionDynamic","dynamicConditionExpressions","Set","param","converted","convertComparisonOp","convertNegation","convertDisjunctionOp","convertInOp","convertHasOp","filters","_convertFilter","expectedTypes","children","typechecks","runtimeTypeChecks","conditions","negate","uniformTypes","uniqueValues","migrated","migrateToV8","migrateToExpressions","styleIDs","sourceIDs","compositedSourceLayers","compositeID","deref","refProperties","derefLayers","ref","deepEqual","operations","setStyle","addLayer","removeLayer","setPaintProperty","setLayoutProperty","setFilter","addSource","removeSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","setTransition","setLight","setTerrain","setFog","setProjection","sourceId","after","commands","command","sourcesRemoved","updateSource","canUpdateGeoJSON","before","isEqual","diffSources","data","diffLayerPropertyChanges","layerId","klass","pluckId","indexById","group","diffLayers","beforeOrder","afterOrder","beforeIndex","reduce","afterIndex","tracker","clean","beforeLayer","afterLayer","insertBeforeLayerId","minzoom","maxzoom","diffStyles","sprite","transition","light","fog","projection","removeOrAddSourceCommands","beforeLayers","beforeTerrain","terrain","ValidationError","identifier","__line__","validateObject","elementSpecs","valueSpec","elementValidators","objectElementValidators","styleSpec","objectKey","elementSpecKey","elementSpec","validateElement","validateSpec","required","validateArray","arraySpec","validateArrayElement","arrayElementValidator","validate","arrayElementSpec","minimum","maximum","function","$version","arrayIndex","validateNumber","specMin","specMax","validateFunction","functionValueSpec","stopKeyType","stopDomainValues","previousStopDomainValue","previousStopDomainZoom","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","validateFunctionStops","validateFunctionDefault","validateFunctionStop","nextStopDomainZoom","validateStopDomainValue","reportValue","validateExpression","expressionContext","expressionObj","propertyKey","disallowedFilterParameters","disallowedParameters","delete","size","validateBoolean","validateColor","validateEnum","validateFilter","validateNonExpressionFilter","filter_operator","geometry_type","validateProperty","layerSpec","transitionMatch","tokenMatch","validatePaintProperty","validateLayoutProperty","validateLayer","otherLayer","sourceType","lineMetrics","validateString","promoteId","validatePromoteId","validateSource","source_geojson","cluster","clusterProperties","mapExpr","reduceExpr","source_video","source_image","getSourceTypeValues","memo","validateLight","lightSpec","rootType","validateTerrain","terrainSpec","validateFog","fogSpec","validateFormatted","validateImage","validateProjection","projectionSpec","VALIDATORS","valid","validateStyle","latestStyleSpec","validateGlyphsURL","sortErrors","o","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","trace","yy","symbols_","terminals_","productions_","performAction","anonymous","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","first_line","defineProperty","enumerable","table","defaultActions","parseError","recoverable","stack","tstack","vstack","lstack","recovering","TERROR","EOF","arguments","lexer","sharedState","setInput","yylloc","yyloc","ranges","getPrototypeOf","lex","token","symbol","state","action","yyval","newState","errStr","showPosition","loc","last_line","first_column","last_column","range","_input","_more","_backtrack","done","matched","conditionStack","offset","ch","lines","unput","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","pre","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","condition","popState","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","readStyle","Buffer","jsonlint","v8","validateStyleMin","SUPPORTED_SPEC_VERSION","MAX_SOURCES_IN_STYLE","isValid","regex","getSourceCount","getAllowedKeyErrors","allowed","acceptedSourceTypes","getSourceErrors","sourceKeys","sourceUrlPattern","getSourcesErrors","count","sourceErrors","getRootErrors","specKeys","optionalRootProperties","allowedKeyErrors","glyphUrlPattern","spriteUrlPattern","visibilityPattern","visibility","protected","validateMapboxApiSupported","styleFunction","visit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}