{"version":3,"file":"index.modern.mjs","sources":["../node_modules/shortcss/lib/list.js","../node_modules/css-shorthand-properties/index.js","../node_modules/shortcss/lib/index.js","../node_modules/postcss-value-parser/lib/parse.js","../node_modules/postcss-value-parser/lib/walk.js","../node_modules/postcss-value-parser/lib/stringify.js","../node_modules/postcss-value-parser/lib/unit.js","../node_modules/postcss-value-parser/lib/index.js","../node_modules/css-values/dist/index.js","../node_modules/ends-with/index.js","../src/defaults.ts","../src/lib/validation.ts","../src/unsafe-quiet-stylelint-deprecation-warning.ts","../src/index.ts"],"sourcesContent":["var SPACES = [' ', '\\n', '\\t'];\nvar COMMAS = [','];\n\nvar list = module.exports = {\n\n    split: function(string, separators, last) {\n        var array   = [];\n        var current = '';\n        var split   = false;\n\n        var func    = 0;\n        var quote   = false;\n        var escape  = false;\n\n        for ( var i = 0; i < string.length; i++ ) {\n            var letter = string[i];\n\n            if ( quote ) {\n                if ( escape ) {\n                    escape = false;\n                } else if ( letter === '\\\\' ) {\n                    escape = true;\n                } else if ( letter === quote ) {\n                    quote = false;\n                }\n            } else if ( letter === '\"' || letter === \"'\" ) {\n                quote = letter;\n            } else if ( letter === '(' ) {\n                func += 1;\n            } else if ( letter === ')' ) {\n                if ( func > 0 ) func -= 1;\n            } else if ( func === 0 ) {\n                if ( separators.indexOf(letter) !== -1 ) split = true;\n            }\n\n            if ( split ) {\n                if ( current !== '' ) array.push(current.trim());\n                current = '';\n                split   = false;\n            } else {\n                current += letter;\n            }\n        }\n\n        if ( last || current !== '' ) array.push(current.trim());\n        return array;\n    },\n\n    space: function(string) {\n        return list.split(string, SPACES);\n    },\n\n    comma: function(string) {\n        return list.split(string, COMMAS, true);\n    }\n\n};\n","/*!\n * https://github.com/gilmoreorless/css-shorthand-properties\n * MIT Licensed: https://gilmoreorless.mit-license.org/\n */\n(function (exports) {\n    /**\n     * Data collated from multiple W3C specs: https://www.w3.org/Style/CSS/current-work\n     * Only specs that are Candidate Recommendations or better are counted, with the\n     * exception of some Working Drafts that have a lot of traction in browser implementations.\n     * So far the WD specs included here are Animation and Transitions.\n     *\n     * @type {Object}\n     */\n    var props = exports.shorthandProperties = {\n        // CSS 2.1: https://www.w3.org/TR/CSS2/propidx.html\n        'list-style':      ['-type', '-position', '-image'],\n        'margin':          ['-top', '-right', '-bottom', '-left'],\n        'outline':         ['-width', '-style', '-color'],\n        'padding':         ['-top', '-right', '-bottom', '-left'],\n\n        // CSS Backgrounds and Borders Module Level 3: https://www.w3.org/TR/css3-background/\n        'background':           ['-image', '-position', '-size', '-repeat', '-origin', '-clip', '-attachment', '-color'],\n        'background-position':  ['-x', '-y'],  // Not found in the spec, but already implemented by every stable browser\n        'border':               ['-width', '-style', '-color'],\n        'border-color':         ['border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color'],\n        'border-style':         ['border-top-style', 'border-right-style', 'border-bottom-style', 'border-left-style'],\n        'border-width':         ['border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'],\n        'border-top':           ['-width', '-style', '-color'],\n        'border-right':         ['-width', '-style', '-color'],\n        'border-bottom':        ['-width', '-style', '-color'],\n        'border-left':          ['-width', '-style', '-color'],\n        'border-radius':        ['border-top-left-radius', 'border-top-right-radius', 'border-bottom-right-radius', 'border-bottom-left-radius'],\n        'border-image':         ['-source', '-slice', '-width', '-outset', '-repeat'],\n\n        // CSS Fonts Module Level 3: https://www.w3.org/TR/css3-fonts/\n        'font':            ['-style', '-variant', '-weight', '-stretch', '-size', 'line-height', '-family'],\n        'font-variant':    ['-ligatures', '-alternates', '-caps', '-numeric', '-east-asian'],\n\n        // CSS Flexible Box Layout Module Level 1: https://www.w3.org/TR/css3-flexbox-1/\n        'flex':            ['-grow', '-shrink', '-basis'],\n        'flex-flow':       ['flex-direction', 'flex-wrap'],\n\n        // CSS Grid Layout Module Level 1: https://www.w3.org/TR/css-grid-1/\n        'grid':            ['-template-rows', '-template-columns', '-template-areas', '-auto-rows', '-auto-columns', '-auto-flow'],\n        'grid-template':   ['-rows', '-columns', '-areas'],\n        'grid-row':        ['-start', '-end'],\n        'grid-column':     ['-start', '-end'],\n        'grid-area':       ['grid-row-start', 'grid-column-start', 'grid-row-end', 'grid-column-end'],\n        'grid-gap':        ['grid-row-gap', 'grid-column-gap'],\n\n        // CSS Masking Module Level 1: https://www.w3.org/TR/css-masking/\n        'mask':            ['-image', '-mode', '-position', '-size', '-repeat', '-origin', '-clip'],\n        'mask-border':     ['-source', '-slice', '-width', '-outset', '-repeat', '-mode'],\n\n        // CSS Multi-column Layout Module: https://www.w3.org/TR/css3-multicol/\n        'columns':         ['column-width', 'column-count'],\n        'column-rule':     ['-width', '-style', '-color'],\n\n        // CSS Scroll Snap Module Level 1: https://www.w3.org/TR/css-scroll-snap-1/\n        'scroll-padding':            ['-top', '-right', '-bottom', '-left'],\n        'scroll-padding-block':      ['-start', '-end'],\n        'scroll-padding-inline':     ['-start', '-end'],\n        'scroll-snap-margin':        ['-top', '-right', '-bottom', '-left'],\n        'scroll-snap-margin-block':  ['-start', '-end'],\n        'scroll-snap-margin-inline': ['-start', '-end'],\n\n        // CSS Speech Module: https://www.w3.org/TR/css3-speech/\n        'cue':             ['-before', '-after'],\n        'pause':           ['-before', '-after'],\n        'rest':            ['-before', '-after'],\n\n        // CSS Text Decoration Module Level 3: https://www.w3.org/TR/css-text-decor-3/\n        'text-decoration': ['-line', '-style', '-color'],\n        'text-emphasis':   ['-style', '-color'],\n\n        // CSS Animations (WD): https://www.w3.org/TR/css3-animations\n        'animation':       ['-name', '-duration', '-timing-function', '-delay', '-iteration-count', '-direction', '-fill-mode', '-play-state'],\n\n        // CSS Transitions (WD): https://www.w3.org/TR/css3-transitions/\n        'transition':      ['-property', '-duration', '-timing-function', '-delay'],\n    };\n\n    /**\n     * Check if a CSS property is a shorthand value\n     * @param  {string} property CSS property name\n     * @return {boolean} True if the property is a shorthand value\n     */\n    exports.isShorthand = function (property) {\n        return props.hasOwnProperty(property);\n    };\n\n    /**\n     * Expand a shorthand property into an array of longhand properties\n     * @param  {string} property CSS property name\n     * @param  {boolean} recurse Expand sub-properties, when applicable - default false\n     * @return {array}           List of longhand properties, or the original property if it's not a shorthand\n     */\n    exports.expand = function (property, recurse) {\n        if (!props.hasOwnProperty(property)) {\n            return [property];\n        }\n        return props[property].map(function (p) {\n            var longhand = p.substr(0, 1) === '-' ? property + p : p;\n            return recurse ? exports.expand(longhand, recurse) : longhand;\n        });\n    };\n})((function (root) {\n    // CommonJS\n    if (typeof module !== 'undefined' && module.exports !== undefined) return module.exports;\n    // Global `cssShorthandProps`\n    return (root.cssShorthandProps = {});\n})(this));\n","var ASSERT = require('assert');\nvar list = require('./list');\nvar props = require('css-shorthand-properties').shorthandProperties;\n\nexports.isShorthand = isShorthand;\nexports.expand = expand;\n\n/**\n * Expand a property to an array of parts or property and value to object\n *\n * @param {string} property\n * @param {?string} value\n * @param {?boolean} recurse\n * @returns {Array|Object}\n */\nfunction expand(property, value, recurse) {\n    ASSERT(arguments.length, 'property argument is required');\n\n    if (arguments.length < 3) {\n        if (typeof value === 'boolean') {\n            recurse = value;\n            value = undefined;\n        } else {\n            recurse = true;\n        }\n    }\n\n    var undefvalue = typeof value === 'undefined';\n\n    return undefvalue?\n        expandAsArray(property, recurse)\n        : expandAsObject(property, value, recurse);\n}\n\nfunction expandAsArray(property, recurse) {\n    if (!props.hasOwnProperty(property)) {\n        return [property];\n    }\n\n    return props[property]\n        .map(function (p) {\n            var longhand = p.substr(0, 1) === '-' ? property + p : p;\n            return recurse ? expand(longhand, recurse) : longhand;\n        })\n        .reduce(function (res, cur) {\n            return res.concat(cur);\n        }, []);\n}\n\n/**\n * expandAsObject\n *\n * @param {string} property - Source property name\n * @param {string|string[]} value - Source property value\n * @param {boolean} recurse - Flag to expand recursively\n * @return {Object} - Resulting object\n */\nfunction expandAsObject(property, value, recurse) {\n    var res = {};\n    if (!props.hasOwnProperty(property)) {\n        res[property] = value;\n        return res;\n    }\n\n    var subs = expandAsArray(property, false);\n    if (typeof value === 'string') {\n        value = list.space(value);\n    }\n\n    for (var i = 0, j, l = subs.length, jl = value.length; i < l; i++) {\n        j = i < jl ? i : (jl < 2 ? 0 : i % 2);\n\n        if (recurse) {\n            var recRes = expandAsObject(subs[i], value[j], recurse);\n            var keys = Object.keys(recRes);\n            for (var ri = 0, rl = keys.length; ri < rl; ri++) {\n                res[keys[ri]] = recRes[keys[ri]];\n            }\n        } else {\n            res[subs[i]] = value[j];\n        }\n    }\n\n    return res;\n}\n\nfunction isShorthand(property) {\n    if (props.hasOwnProperty(property)) {\n        return true;\n    }\n    return false;\n}\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\n\nmodule.exports = function(input) {\n  var tokens = [];\n  var value = input;\n\n  var next, quote, prev, token, escape, escapePos, whitespacePos;\n  var pos = 0;\n  var code = value.charCodeAt(pos);\n  var max = value.length;\n  var stack = [{ nodes: tokens }];\n  var balanced = 0;\n  var parent;\n\n  var name = \"\";\n  var before = \"\";\n  var after = \"\";\n\n  while (pos < max) {\n    // Whitespaces\n    if (code <= 32) {\n      next = pos;\n      do {\n        next += 1;\n        code = value.charCodeAt(next);\n      } while (code <= 32);\n      token = value.slice(pos, next);\n\n      prev = tokens[tokens.length - 1];\n      if (code === closeParentheses && balanced) {\n        after = token;\n      } else if (prev && prev.type === \"div\") {\n        prev.after = token;\n      } else if (\n        code === comma ||\n        code === colon ||\n        (code === slash && value.charCodeAt(next + 1) !== star)\n      ) {\n        before = token;\n      } else {\n        tokens.push({\n          type: \"space\",\n          sourceIndex: pos,\n          value: token\n        });\n      }\n\n      pos = next;\n\n      // Quotes\n    } else if (code === singleQuote || code === doubleQuote) {\n      next = pos;\n      quote = code === singleQuote ? \"'\" : '\"';\n      token = {\n        type: \"string\",\n        sourceIndex: pos,\n        quote: quote\n      };\n      do {\n        escape = false;\n        next = value.indexOf(quote, next + 1);\n        if (~next) {\n          escapePos = next;\n          while (value.charCodeAt(escapePos - 1) === backslash) {\n            escapePos -= 1;\n            escape = !escape;\n          }\n        } else {\n          value += quote;\n          next = value.length - 1;\n          token.unclosed = true;\n        }\n      } while (escape);\n      token.value = value.slice(pos + 1, next);\n\n      tokens.push(token);\n      pos = next + 1;\n      code = value.charCodeAt(pos);\n\n      // Comments\n    } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n      token = {\n        type: \"comment\",\n        sourceIndex: pos\n      };\n\n      next = value.indexOf(\"*/\", pos);\n      if (next === -1) {\n        token.unclosed = true;\n        next = value.length;\n      }\n\n      token.value = value.slice(pos + 2, next);\n      tokens.push(token);\n\n      pos = next + 2;\n      code = value.charCodeAt(pos);\n\n      // Dividers\n    } else if (code === slash || code === comma || code === colon) {\n      token = value[pos];\n\n      tokens.push({\n        type: \"div\",\n        sourceIndex: pos - before.length,\n        value: token,\n        before: before,\n        after: \"\"\n      });\n      before = \"\";\n\n      pos += 1;\n      code = value.charCodeAt(pos);\n\n      // Open parentheses\n    } else if (openParentheses === code) {\n      // Whitespaces after open parentheses\n      next = pos;\n      do {\n        next += 1;\n        code = value.charCodeAt(next);\n      } while (code <= 32);\n      token = {\n        type: \"function\",\n        sourceIndex: pos - name.length,\n        value: name,\n        before: value.slice(pos + 1, next)\n      };\n      pos = next;\n\n      if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n        next -= 1;\n        do {\n          escape = false;\n          next = value.indexOf(\")\", next + 1);\n          if (~next) {\n            escapePos = next;\n            while (value.charCodeAt(escapePos - 1) === backslash) {\n              escapePos -= 1;\n              escape = !escape;\n            }\n          } else {\n            value += \")\";\n            next = value.length - 1;\n            token.unclosed = true;\n          }\n        } while (escape);\n        // Whitespaces before closed\n        whitespacePos = next;\n        do {\n          whitespacePos -= 1;\n          code = value.charCodeAt(whitespacePos);\n        } while (code <= 32);\n        if (pos !== whitespacePos + 1) {\n          token.nodes = [\n            {\n              type: \"word\",\n              sourceIndex: pos,\n              value: value.slice(pos, whitespacePos + 1)\n            }\n          ];\n        } else {\n          token.nodes = [];\n        }\n        if (token.unclosed && whitespacePos + 1 !== next) {\n          token.after = \"\";\n          token.nodes.push({\n            type: \"space\",\n            sourceIndex: whitespacePos + 1,\n            value: value.slice(whitespacePos + 1, next)\n          });\n        } else {\n          token.after = value.slice(whitespacePos + 1, next);\n        }\n        pos = next + 1;\n        code = value.charCodeAt(pos);\n        tokens.push(token);\n      } else {\n        balanced += 1;\n        token.after = \"\";\n        tokens.push(token);\n        stack.push(token);\n        tokens = token.nodes = [];\n        parent = token;\n      }\n      name = \"\";\n\n      // Close parentheses\n    } else if (closeParentheses === code && balanced) {\n      pos += 1;\n      code = value.charCodeAt(pos);\n\n      parent.after = after;\n      after = \"\";\n      balanced -= 1;\n      stack.pop();\n      parent = stack[balanced];\n      tokens = parent.nodes;\n\n      // Words\n    } else {\n      next = pos;\n      do {\n        if (code === backslash) {\n          next += 1;\n        }\n        next += 1;\n        code = value.charCodeAt(next);\n      } while (\n        next < max &&\n        !(\n          code <= 32 ||\n          code === singleQuote ||\n          code === doubleQuote ||\n          code === comma ||\n          code === colon ||\n          code === slash ||\n          code === openParentheses ||\n          (code === closeParentheses && balanced)\n        )\n      );\n      token = value.slice(pos, next);\n\n      if (openParentheses === code) {\n        name = token;\n      } else {\n        tokens.push({\n          type: \"word\",\n          sourceIndex: pos,\n          value: token\n        });\n      }\n\n      pos = next;\n    }\n  }\n\n  for (pos = stack.length - 1; pos; pos -= 1) {\n    stack[pos].unclosed = true;\n  }\n\n  return stack[0].nodes;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n  var i, max, node, result;\n\n  for (i = 0, max = nodes.length; i < max; i += 1) {\n    node = nodes[i];\n    if (!bubble) {\n      result = cb(node, i, nodes);\n    }\n\n    if (\n      result !== false &&\n      node.type === \"function\" &&\n      Array.isArray(node.nodes)\n    ) {\n      walk(node.nodes, cb, bubble);\n    }\n\n    if (bubble) {\n      cb(node, i, nodes);\n    }\n  }\n};\n","function stringifyNode(node, custom) {\n  var type = node.type;\n  var value = node.value;\n  var buf;\n  var customResult;\n\n  if (custom && (customResult = custom(node)) !== undefined) {\n    return customResult;\n  } else if (type === \"word\" || type === \"space\") {\n    return value;\n  } else if (type === \"string\") {\n    buf = node.quote || \"\";\n    return buf + value + (node.unclosed ? \"\" : buf);\n  } else if (type === \"comment\") {\n    return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n  } else if (type === \"div\") {\n    return (node.before || \"\") + value + (node.after || \"\");\n  } else if (Array.isArray(node.nodes)) {\n    buf = stringify(node.nodes);\n    if (type !== \"function\") {\n      return buf;\n    }\n    return (\n      value +\n      \"(\" +\n      (node.before || \"\") +\n      buf +\n      (node.after || \"\") +\n      (node.unclosed ? \"\" : \")\")\n    );\n  }\n  return value;\n}\n\nfunction stringify(nodes, custom) {\n  var result, i;\n\n  if (Array.isArray(nodes)) {\n    result = \"\";\n    for (i = nodes.length - 1; ~i; i -= 1) {\n      result = stringifyNode(nodes[i], custom) + result;\n    }\n    return result;\n  }\n  return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\nmodule.exports = function(value) {\n  var pos = 0;\n  var length = value.length;\n  var dotted = false;\n  var sciPos = -1;\n  var containsNumber = false;\n  var code;\n\n  while (pos < length) {\n    code = value.charCodeAt(pos);\n\n    if (code >= 48 && code <= 57) {\n      containsNumber = true;\n    } else if (code === exp || code === EXP) {\n      if (sciPos > -1) {\n        break;\n      }\n      sciPos = pos;\n    } else if (code === dot) {\n      if (dotted) {\n        break;\n      }\n      dotted = true;\n    } else if (code === plus || code === minus) {\n      if (pos !== 0) {\n        break;\n      }\n    } else {\n      break;\n    }\n\n    pos += 1;\n  }\n\n  if (sciPos + 1 === pos) pos--;\n\n  return containsNumber\n    ? {\n        number: value.slice(0, pos),\n        unit: value.slice(pos)\n      }\n    : false;\n};\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n  if (this instanceof ValueParser) {\n    this.nodes = parse(value);\n    return this;\n  }\n  return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n  return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n  walk(this.nodes, cb, bubble);\n  return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _postcssValueParser = require('postcss-value-parser');\n\nvar _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);\n\nvar _cssColorNames = require('css-color-names');\n\nvar _cssColorNames2 = _interopRequireDefault(_cssColorNames);\n\nvar _endsWith = require('ends-with');\n\nvar _endsWith2 = _interopRequireDefault(_endsWith);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction lowercase(value) {\n    return value.toLowerCase();\n}\n\nfunction isKeyword(_ref, values) {\n    var type = _ref.type;\n    var value = _ref.value;\n\n    if (type !== 'word') {\n        return false;\n    }\n    if (Array.isArray(values)) {\n        return ~values.map(lowercase).indexOf(lowercase(value));\n    }\n    return lowercase(value) === values;\n}\n\nfunction isFunction(node, values) {\n    if (node.type !== 'function') {\n        return false;\n    }\n    if (Array.isArray(values)) {\n        return ~values.map(lowercase).indexOf(lowercase(node.value));\n    }\n    return lowercase(node.value) === values;\n}\n\nvar isVariable = function isVariable(node) {\n    return isFunction(node, 'var');\n};\n\nfunction isKeywordFactory(keywords) {\n    return function wrappedIsKeyword(parsed) {\n        if (parsed.nodes.length === 1) {\n            return isKeyword(parsed.nodes[0], keywords);\n        }\n        return false;\n    };\n}\n\nvar isUrl = function isUrl(node) {\n    return isFunction(node, 'url');\n};\n\nvar isInteger = function isInteger(_ref) {\n    var type = _ref.type;\n    var value = _ref.value;\n\n    if (type !== 'word') {\n        return false;\n    }\n    var int = (0, _postcssValueParser.unit)(value);\n    return int && !~value.indexOf('.') && !int.unit;\n};\n\nvar isComma = function isComma(_ref) {\n    var type = _ref.type;\n    var value = _ref.value;\n\n    return type === 'div' && value === ',';\n};\n\nvar isNumber = function isNumber(node) {\n    var value = node.value;\n\n    if (node.type !== 'word') {\n        return false;\n    }\n\n    return !isNaN(value) && !(0, _endsWith2.default)(value, '.');\n};\n\nvar isPercentage = function isPercentage(_ref) {\n    var value = _ref.value;\n\n    var int = (0, _postcssValueParser.unit)(value);\n    return int && !(0, _endsWith2.default)(int.number, '.') && !~int.unit.indexOf('.') && int.unit === '%';\n};\n\nvar namedColours = Object.keys(_cssColorNames2.default);\n\nfunction isRgb(node) {\n    if (!isFunction(node, 'rgb')) {\n        return;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && !isInteger(child) && !isPercentage(child) || !even && !isComma(child)) {\n            valid = false;\n        }\n        return false;\n    });\n\n    return valid && node.nodes.length === 5;\n}\n\nfunction isRgba(node) {\n    if (!isFunction(node, 'rgba')) {\n        return;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && (index < 6 && !isInteger(child) && !isPercentage(child) || index > 5 && !isNumber(child)) || !even && !isComma(child)) {\n            valid = false;\n        }\n        return false;\n    });\n\n    return valid && node.nodes.length === 7;\n}\n\nfunction isHsl(node) {\n    if (!isFunction(node, 'hsl')) {\n        return;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && (index < 1 && !isNumber(child) || index > 1 && !isPercentage(child)) || !even && !isComma(child)) {\n            valid = false;\n        }\n        return false;\n    });\n\n    return valid && node.nodes.length === 5;\n}\n\nfunction isHsla(node) {\n    if (!isFunction(node, 'hsla')) {\n        return;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && ((index === 0 || index === 6) && !isNumber(child) || (index === 2 || index === 4) && !isPercentage(child)) || !even && !isComma(child)) {\n            valid = false;\n        }\n        return false;\n    });\n\n    return valid && node.nodes.length === 7;\n}\n\nfunction isHex(node) {\n    if (node.type !== 'word' || node.value[0] !== '#') {\n        return false;\n    }\n    var range = node.value.slice(1);\n    return ~[3, 4, 6, 8].indexOf(range.length) && !isNaN(parseInt(range, 16));\n}\n\nfunction isNamedColor(node) {\n    return isKeyword(node, namedColours);\n}\n\nfunction isCurrentColor(node) {\n    return isKeyword(node, 'currentcolor');\n}\n\nfunction isColor(node) {\n    return isRgb(node) || isRgba(node) || isHsl(node) || isHsla(node) || isHex(node) || isNamedColor(node) || isCurrentColor(node);\n}\n\nvar brStyles = ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'];\n\nvar isBrStyle = function isBrStyle(node) {\n    return isKeyword(node, brStyles);\n};\n\nvar isSpace = function isSpace(_ref) {\n    var type = _ref.type;\n\n    return type === 'space';\n};\n\nvar angles = ['deg', 'grad', 'rad', 'turn'];\n\nvar isAngle = function isAngle(_ref) {\n    var value = _ref.value;\n\n    var int = (0, _postcssValueParser.unit)(value);\n    return int && !(0, _endsWith2.default)(int.number, '.') && !~int.unit.indexOf('.') && (int.number === '0' || ~angles.indexOf(int.unit));\n};\n\nvar units = ['s', 'ms'];\n\nvar isTime = function isTime(_ref) {\n    var value = _ref.value;\n\n    var int = (0, _postcssValueParser.unit)(value);\n    return int && !(0, _endsWith2.default)(int.number, '.') && !~int.unit.indexOf('.') && ~units.indexOf(int.unit);\n};\n\nvar operators = ['+', '-', '*', '/'];\nvar operatorsRegExp = /[+\\-\\*\\/]/i;\n\nfunction isCalc(node) {\n    if (!isFunction(node, 'calc') || !node.nodes || !node.nodes.length) {\n        return false;\n    }\n\n    var valid = true;\n    var lastNonSpaceValue = false;\n\n    (0, _postcssValueParser.walk)(node.nodes, function (child) {\n        var type = child.type;\n        var value = child.value;\n        // if an expression starts with operator\n\n        if (!lastNonSpaceValue && ~operators.indexOf(value)) {\n            valid = false;\n        }\n        // store last non space node\n        if (type !== 'space') {\n            lastNonSpaceValue = value;\n        }\n        // only variables and () functions are allowed\n        if (!isVariable(child) && type === 'function') {\n            if (value.length > 0) {\n                valid = false;\n            }\n            if (!child.nodes.length || !child.nodes) {\n                valid = false;\n            }\n        }\n        // invalidate any invalid word node\n        if (type === 'word' && !isAngle(child) && !isLength(child) && !isTime(child) && !isInteger(child) && !isNumber(child) && !isPercentage(child) && operators.indexOf(value) < 0) {\n            // + and - must be surrounded by spaces\n            if (value.indexOf('+') > 0 || value.indexOf('-') > 0) {\n                valid = false;\n            }\n            // expression can't endwith operator\n            if (~operators.indexOf(value[value.length - 1])) {\n                valid = false;\n            }\n            // unknown word node w/o operators is invalid\n            if (!operatorsRegExp.test(value)) {\n                valid = false;\n            }\n        }\n    });\n    // if an expression ends with operator\n    if (~operators.indexOf(lastNonSpaceValue)) {\n        valid = false;\n    }\n\n    return valid;\n}\n\nvar lengths = ['em', 'ex', 'ch', 'rem', 'vh', 'vw', 'vmin', 'vmax', 'px', 'q', 'mm', 'cm', 'in', 'pt', 'pc'];\n\nvar isLength = function isLength(node) {\n    if (isCalc(node)) {\n        return true;\n    }\n    if (node.type !== 'word') {\n        return false;\n    }\n    var int = (0, _postcssValueParser.unit)(node.value);\n    return int && !(0, _endsWith2.default)(int.number, '.') && !~int.unit.indexOf('.') && (int.number === '0' || ~lengths.indexOf(int.unit));\n};\n\nvar brWidths = ['thin', 'medium', 'thick'];\n\nvar isBrWidth = function isBrWidth(node) {\n    return isLength(node) || isKeyword(node, brWidths);\n};\n\nvar attachments = ['scroll', 'fixed', 'local'];\n\nvar isAttachment = function isAttachment(node) {\n    return isKeyword(node, attachments);\n};\n\nvar singleValues = ['repeat-x', 'repeat-y'];\n\nvar multipleValues = ['repeat', 'space', 'round', 'no-repeat'];\n\nvar isRepeatStyle = function isRepeatStyle(parsed) {\n    var group = [];\n    var valid = true;\n    if (parsed.nodes[parsed.nodes.length - 1].type === 'div') {\n        return false;\n    }\n    parsed.walk(function (node) {\n        if (isKeyword(node, singleValues)) {\n            if (group.length) {\n                valid = false;\n                return false;\n            }\n            group.push(node);\n        } else if (isKeyword(node, multipleValues) || isVariable(node)) {\n            if (group.some(function (n) {\n                return isKeyword(n, singleValues);\n            }) || group.length === 2) {\n                valid = false;\n                return false;\n            }\n            group.push(node);\n        } else if (isComma(node)) {\n            group = [];\n            return false;\n        } else if (!isSpace(node)) {\n            valid = false;\n        }\n        return false;\n    });\n    return valid;\n};\n\nvar singleAnimationDirections = ['normal', 'reverse', 'alternate', 'alternate-reverse'];\n\nvar isSingleAnimationDirection = function isSingleAnimationDirection(node) {\n    return isKeyword(node, singleAnimationDirections);\n};\n\nvar singleAnimationFillModes = ['none', 'forwards', 'backwards', 'both'];\n\nvar isSingleAnimationFillMode = function isSingleAnimationFillMode(node) {\n    return isKeyword(node, singleAnimationFillModes);\n};\n\nvar value = ['infinite'];\n\nvar isSingleAnimationIterationCount = function isSingleAnimationIterationCount(node) {\n    return isKeyword(node, value) || isNumber(node);\n};\n\nfunction isInvalid(value) {\n    return (/[^a-z0-9_-]/ig.test(value)\n    );\n}\n\nfunction isCodepoint(value) {\n    return (/\\\\u[a-f0-9]{1,6}/ig.test(value) || /\\\\[a-f0-9]{1,6}/ig.test(value)\n    );\n}\n\nfunction isValid(value) {\n    return !isInvalid(value) || isCodepoint(value);\n}\n\nvar isCustomIdent = function isCustomIdent(_ref) {\n    var type = _ref.type;\n    var value = _ref.value;\n\n    if (type !== 'word') {\n        return false;\n    }\n    if (value[0] === '-') {\n        if (/[0-9]/.test(value[1])) {\n            return false;\n        }\n        if (value[1] === '-' && value[2] !== '-') {\n            return false;\n        }\n        return isValid(value);\n    }\n    return !/[0-9]/.test(value[0]) && isValid(value);\n};\n\nvar isSingleAnimationName = function isSingleAnimationName(node) {\n    return isKeyword(node, 'none') || isCustomIdent(node);\n};\n\nvar singleAnimationPlayStates = ['running', 'paused'];\n\nvar isSingleAnimationPlayState = function isSingleAnimationPlayState(node) {\n    return isKeyword(node, singleAnimationPlayStates);\n};\n\nvar keywords = ['ease', 'linear', 'ease-in', 'ease-out', 'ease-in-out', 'step-start', 'step-end'];\n\nvar stepsKeywords = ['start', 'end'];\n\nfunction isTimingKeyword(node) {\n    return isKeyword(node, keywords);\n}\n\nfunction isSteps(node) {\n    if (!isFunction(node, 'steps') || !isInteger(node.nodes[0])) {\n        return false;\n    }\n    var one = node.nodes[1];\n    var two = node.nodes[2];\n    if (one && !isComma(one)) {\n        return false;\n    }\n    if (two) {\n        return isKeyword(two, stepsKeywords);\n    }\n    return true;\n}\n\nfunction isValidAbscissa(_ref) {\n    var type = _ref.type;\n    var value = _ref.value;\n\n    return type === 'word' && value >= 0 && value <= 1;\n}\n\nfunction isCubicBezier(node) {\n    if (!isFunction(node, 'cubic-bezier')) {\n        return false;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && ((index === 0 || index === 4) && !isValidAbscissa(child) || (index === 2 || index === 6) && !isNumber(child)) || !even && !isComma(child)) {\n            valid = false;\n        }\n        return false;\n    });\n\n    return valid && node.nodes.length === 7;\n}\n\nvar isSingleTransitionTimingFunction = function isSingleTransitionTimingFunction(node) {\n    return isTimingKeyword(node) || isSteps(node) || isCubicBezier(node);\n};\n\nvar numberPercentages = ['brightness', 'contrast', 'grayscale', 'invert', 'opacity', 'sepia', 'saturate'];\n\nfunction isNumberOrPercentage(node) {\n    if (!isFunction(node, numberPercentages)) {\n        return false;\n    }\n    var nodes = node.nodes;\n\n    return nodes.length === 1 && (isNumber(nodes[0]) || isPercentage(nodes[0]));\n}\n\nfunction isBlur(node) {\n    if (!isFunction(node, 'blur')) {\n        return false;\n    }\n    var nodes = node.nodes;\n\n    return nodes.length === 1 && isLength(nodes[0]);\n}\n\nfunction isDropShadow(node) {\n    if (!isFunction(node, 'drop-shadow')) {\n        return false;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && index <= 2 && !isLength(child)) {\n            valid = false;\n            return false;\n        }\n        if (even && index === 4 && !isLength(child) && !isColor(child)) {\n            valid = false;\n            return false;\n        }\n        if (even && index === 6 && !isColor(child)) {\n            valid = false;\n            return false;\n        }\n        if (!even && !isSpace(child)) {\n            valid = false;\n            return false;\n        }\n    });\n    return valid && node.nodes.length <= 7;\n}\n\nfunction isHueRotate(node) {\n    if (!isFunction(node, 'hue-rotate')) {\n        return false;\n    }\n    var nodes = node.nodes;\n\n    return nodes.length === 1 && isAngle(nodes[0]);\n}\n\nfunction isFilterFunction(node) {\n    return isBlur(node) || isDropShadow(node) || isHueRotate(node) || isNumberOrPercentage(node);\n}\n\nfunction isFilterFunctionList(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n        if (even && !isFilterFunction(node) && !isVariable(node)) {\n            valid = false;\n        }\n        if (!even && !isSpace(node)) {\n            valid = false;\n        }\n        return false;\n    });\n    return valid;\n}\n\nvar blendValues = ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n\nvar isBlendMode = function isBlendMode(node) {\n    return isKeyword(node, blendValues);\n};\n\nvar boxes = ['border-box', 'padding-box', 'content-box'];\n\nvar isBox = function isBox(node) {\n    return isKeyword(node, boxes);\n};\n\nfunction getArguments(node) {\n    return node.nodes.reduce(function (list, child) {\n        if (isComma(child)) {\n            list.push([]);\n        } else {\n            list[list.length - 1].push(child);\n        }\n        return list;\n    }, [[]]);\n}\n\nvar isLengthPercentage = function isLengthPercentage(node) {\n    return isLength(node) || isPercentage(node);\n};\n\nvar left$1 = 'left';\nvar center = 'center';\nvar right$1 = 'right';\nvar top$1 = 'top';\nvar bottom$1 = 'bottom';\n\nvar horizontals$1 = [left$1, right$1, center];\nvar verticals$1 = [top$1, bottom$1, center];\n\nfunction isKeywordOrVar(node, keywords) {\n    return isKeyword(node, keywords) || isVariable(node);\n}\n\nfunction isLengthPercentageOrVar(node) {\n    return isLengthPercentage(node) || isVariable(node);\n}\n\nfunction validateGroup(group) {\n    var length = group.length;\n\n    if (length === 1) {\n        if (!isKeywordOrVar(group[0], [left$1, center, right$1, top$1, bottom$1]) && !isLengthPercentage(group[0])) {\n            return false;\n        }\n    }\n    if (length === 3) {\n        if (!isSpace(group[1])) {\n            return false;\n        }\n        if (isKeywordOrVar(group[0], horizontals$1) && isKeywordOrVar(group[2], verticals$1) || isKeywordOrVar(group[0], verticals$1) && isKeywordOrVar(group[2], horizontals$1)) {\n            return true;\n        }\n        if (!isKeywordOrVar(group[0], horizontals$1) && !isLengthPercentage(group[0])) {\n            return false;\n        }\n        if (!isKeywordOrVar(group[2], verticals$1) && !isLengthPercentage(group[2])) {\n            return false;\n        }\n    }\n    if (length >= 5 && length <= 7) {\n        if (isKeywordOrVar(group[0], [left$1, right$1]) && isSpace(group[1]) && isLengthPercentageOrVar(group[2]) && isSpace(group[3]) && isKeywordOrVar(group[4], verticals$1)) {\n            if (group[6] && isSpace(group[5]) && (!isLengthPercentageOrVar(group[6]) || group[4].value === center)) {\n                return false;\n            }\n            return true;\n        }\n        if (isKeywordOrVar(group[0], [top$1, bottom$1]) && isSpace(group[1]) && isLengthPercentageOrVar(group[2]) && isSpace(group[3]) && isKeywordOrVar(group[4], horizontals$1)) {\n            if (group[6] && isSpace(group[5]) && (!isLengthPercentageOrVar(group[6]) || group[4].value === center)) {\n                return false;\n            }\n            return true;\n        }\n        return false;\n    }\n    return length < 8;\n}\n\nfunction isPositionFactory(repeating) {\n    return function isPosition(parsed) {\n        if (repeating && parsed.nodes[parsed.nodes.length - 1].type === 'div') {\n            return false;\n        }\n\n        return getArguments(parsed).every(validateGroup);\n    };\n}\n\nvar resolutions = ['dpi', 'dpcm', 'dppx'];\n\nfunction isResolution(_ref) {\n    var type = _ref.type;\n    var value = _ref.value;\n\n    if (type !== 'word') {\n        return false;\n    }\n    var int = (0, _postcssValueParser.unit)(value);\n    return int && !(0, _endsWith2.default)(int.number, '.') && !~int.unit.indexOf('.') && ~resolutions.indexOf(int.unit);\n};\n\nvar isString = function isString(_ref) {\n    var type = _ref.type;\n    return type === 'string';\n};\n\nfunction isMultiplier(_ref) {\n    var type = _ref.type;\n    var value = _ref.value;\n\n    if (type !== 'word') {\n        return false;\n    }\n    var int = (0, _postcssValueParser.unit)(value);\n    return int && !(0, _endsWith2.default)(int.number, '.') && !~int.unit.indexOf('.') && int.unit === 'x';\n};\n\nfunction isImageFunction(node) {\n    if (!isFunction(node, 'image')) {\n        return false;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        if (index === 0 && !isImage(child) && !isString(child) && !isColor(child)) {\n            valid = false;\n        }\n        if (index === 1 && !isComma(child)) {\n            valid = false;\n        }\n        if (index === 2 && (isColor(node.nodes[0]) || !isColor(child))) {\n            valid = false;\n        }\n        return false;\n    });\n    return valid && node.nodes.length <= 3;\n}\n\nfunction validateImageSet(group) {\n    if (!isImage(group[0]) && !isString(group[0]) || isFunction(group[0], 'image-set') || !group[2] || !isResolution(group[2]) && !isMultiplier(group[2])) {\n        return false;\n    }\n    return group.length === 3;\n}\n\nfunction isImageSet(node) {\n    if (!isFunction(node, 'image-set')) {\n        return false;\n    }\n    return getArguments(node).every(validateImageSet);\n}\n\nfunction isElement(node) {\n    if (!isFunction(node, 'element')) {\n        return false;\n    }\n    if (node.nodes.length !== 1) {\n        return false;\n    }\n    var _node$nodes$ = node.nodes[0];\n    var type = _node$nodes$.type;\n    var value = _node$nodes$.value;\n\n    return value[0] === '#' && type === 'word';\n}\n\nfunction isCrossFade(node) {\n    if (!isFunction(node, 'cross-fade')) {\n        return false;\n    }\n    var valid = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        if (index === 0 && !isPercentage(child) && !isImage(child)) {\n            valid = false;\n        }\n        if (index === 2 && !isPercentage(child) && !isImage(child)) {\n            valid = false;\n        }\n        if (index === 4 && !isImage(child) && !isColor(child)) {\n            valid = false;\n        }\n        return false;\n    });\n    return valid;\n}\n\nfunction isColourStop(group) {\n    var length = group.length;\n\n    if (length === 1) {\n        return isColor(group[0]);\n    }\n    if (length === 3) {\n        return isColor(group[0]) && isLengthPercentage(group[2]);\n    }\n    return false;\n}\n\nvar top = 'top';\nvar right = 'right';\nvar bottom = 'bottom';\nvar left = 'left';\n\nvar verticals = [top, bottom];\nvar horizontals = [right, left];\nvar directions = [].concat(horizontals, verticals);\n\nfunction isLinearGradient(node) {\n    if (!isFunction(node, ['linear-gradient', 'repeating-linear-gradient'])) {\n        return false;\n    }\n    var colours = 0;\n    var valid = getArguments(node).every(function (group, index) {\n        if (index === 0) {\n            var length = group.length;\n\n            if (length === 1 && isAngle(group[0])) {\n                return true;\n            }\n            if (length > 1 && group[0].value === 'to' && length <= 5) {\n                return !group[4] && isKeyword(group[2], directions) || isKeyword(group[2], horizontals) && isKeyword(group[4], verticals) || isKeyword(group[2], verticals) && isKeyword(group[4], horizontals);\n            }\n        }\n        var colour = isColourStop(group);\n        if (colour) {\n            colours++;\n        }\n        return colour;\n    });\n    return valid && colours > 1;\n}\n\nvar at = 'at';\nvar circle = 'circle';\nvar ellipse = 'ellipse';\nvar endingShapes = [circle, ellipse];\n\nvar extentKeywords = ['closest-corner', 'closest-side', 'farthest-corner', 'farthest-side'];\n\nvar isRadialGradientPosition = isPositionFactory(false);\n\nfunction isAt(_ref2) {\n    var value = _ref2.value;\n\n    return value === at;\n}\n\nfunction isRadialGradient(node) {\n    if (!isFunction(node, ['radial-gradient', 'repeating-radial-gradient'])) {\n        return false;\n    }\n    var colours = 0;\n    var valid = getArguments(node).every(function (group, index) {\n        if (index === 0) {\n            var length = group.length;\n\n            var firstIsEndingShape = isKeyword(group[0], endingShapes);\n            var firstIsLength = isLength(group[0]);\n            var firstIsExtent = isKeyword(group[0], extentKeywords);\n            if (length === 1 && (firstIsEndingShape || firstIsLength || firstIsExtent)) {\n                return true;\n            }\n            var position2 = isRadialGradientPosition({ nodes: group.slice(2) });\n            if (isAt(group[0]) && position2) {\n                return true;\n            }\n            var firstIsCircle = group[0].value === circle;\n            var secondIsExtent = group[2] && isKeyword(group[2], extentKeywords);\n            var secondIsEndingShape = group[2] && isKeyword(group[2], endingShapes);\n            if (length === 3 && (firstIsCircle && isLength(group[2]) || firstIsLength && group[2].value === circle || firstIsExtent && secondIsEndingShape || firstIsEndingShape && secondIsExtent)) {\n                return true;\n            }\n            var firstIsEllipse = group[0].value === ellipse;\n            var firstIsLP = isLengthPercentage(group[0]);\n            var secondIsLP = group[2] && isLengthPercentage(group[2]);\n            var thirdIsLP = group[4] && isLengthPercentage(group[4]);\n            var position4 = isRadialGradientPosition({ nodes: group.slice(4) });\n            var position6 = isRadialGradientPosition({ nodes: group.slice(6) });\n            var position8 = isRadialGradientPosition({ nodes: group.slice(8) });\n            if (length === 5 && (firstIsEllipse && secondIsLP && thirdIsLP || firstIsLP && secondIsLP && group[4].value === ellipse)) {\n                return true;\n            }\n            if (length > 3 && (firstIsEndingShape && isAt(group[2]) && position4 || firstIsExtent && isAt(group[2]) && position4 || firstIsLength && isAt(group[2]) && position4 || firstIsLP && secondIsLP && isAt(group[4]) && position6 || firstIsCircle && isLength(group[2]) && isAt(group[4]) && position6 || firstIsEndingShape && secondIsExtent && isAt(group[4]) && position6 || firstIsExtent && secondIsEndingShape && isAt(group[4]) && position6 || firstIsEllipse && secondIsLP && thirdIsLP && isAt(group[6]) && position8 || firstIsLP && secondIsLP && group[4].value === ellipse && isAt(group[6]) && position8)) {\n                return true;\n            }\n        }\n        var colour = isColourStop(group);\n        if (colour) {\n            colours++;\n        }\n        return colour;\n    });\n    return valid && colours > 1;\n}\n\nfunction isGradient(node) {\n    return isLinearGradient(node) || isRadialGradient(node);\n}\n\nfunction isImage(node) {\n    return isUrl(node) || isImageFunction(node) || isImageSet(node) || isElement(node) || isCrossFade(node) || isGradient(node);\n}\n\nfunction isBgImage(node) {\n    return isImage(node) || isKeyword(node, 'none');\n}\n\nvar sizeKeywords = ['cover', 'contain'];\n\nvar auto = 'auto';\n\nfunction validateNode(node) {\n    return isKeyword(node, auto) || isLengthPercentage(node) || isVariable(node);\n}\n\nfunction validateGroup$1(group) {\n    var length = group.length;\n\n    if (length && length < 4) {\n        if (!validateNode(group[0])) {\n            return false;\n        }\n        if (group[2] && !validateNode(group[2])) {\n            return false;\n        }\n        return true;\n    }\n    return false;\n}\n\nfunction isBgSize(parsed) {\n    if (parsed.nodes.length === 1 && isKeyword(parsed.nodes[0], sizeKeywords)) {\n        return true;\n    }\n\n    return getArguments(parsed).every(validateGroup$1);\n}\n\nvar absoluteSizes = ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'];\n\nvar isAbsoluteSize = function isAbsoluteSize(node) {\n    return isKeyword(node, absoluteSizes);\n};\n\nvar relativeSizes = ['larger', 'smaller'];\n\nvar isRelativeSize = function isRelativeSize(node) {\n    return isKeyword(node, relativeSizes);\n};\n\nvar isNegative = function isNegative(num) {\n    return num < 0;\n};\n\nvar isFlex = function isFlex(_ref) {\n    var value = _ref.value;\n\n    var int = (0, _postcssValueParser.unit)(value);\n    return int && !(0, _endsWith2.default)(int.number, '.') && !~int.unit.indexOf('.') && int.unit === 'fr' && !isNegative(int.number);\n};\n\nvar isMinMax = function isMinMax(node) {\n    if (isFunction(node, 'minmax') && node.nodes.length === 3) {\n\n        var firstChild = node.nodes[0];\n        var secondChild = node.nodes[1];\n        var thirdChild = node.nodes[2];\n\n        if (!isKeyword(firstChild, keywords$1) && !isLengthPercentage(firstChild)) {\n            return false;\n        }\n\n        if (!isComma(secondChild)) {\n            return false;\n        }\n\n        if (!isKeyword(thirdChild, keywords$1) && !isLengthPercentage(thirdChild) && !isFlex(thirdChild)) {\n            return false;\n        }\n\n        return true;\n    }\n\n    return false;\n};\n\nvar keywords$1 = ['min-content', 'max-content', 'auto'];\n\nvar isTrackSize = function isTrackSize(node) {\n    return isMinMax(node) || isFlex(node) || isLengthPercentage(node) || isKeyword(node, keywords$1);\n};\n\nvar standard = ['disc', 'circle', 'square', 'decimal', 'cjk-decimal', 'decimal-leading-zero', 'lower-roman', 'upper-roman', 'lower-greek', 'lower-alpha', 'lower-latin', 'upper-alpha', 'upper-latin', 'arabic-indic', '-moz-arabic-indic', 'armenian', 'bengali', '-moz-bengali', 'cambodian', 'cjk-earthly-branch', '-moz-cjk-earthly-branch', 'cjk-heavenly-stem', '-moz-cjk-heavenly-stem', 'cjk-ideographic', 'devanagari', '-moz-devanagari', 'ethiopic-numeric', 'georgian', 'gujarati', '-moz-gujarati', 'gurmukhi', '-moz-gurmukhi', 'hebrew', 'hiragana', 'hiragana-iroha', 'japanese-formal', 'japanese-informal', 'kannada', '-moz-kannada', 'katakana', 'katakana-iroha', 'khmer', '-moz-khmer', 'korean-hangul-formal', 'korean-hanja-formal', 'korean-hanja-informal', 'lao', '-moz-lao', 'lower-armenian', 'malayalam', '-moz-malayalam', 'mongolian', 'myanmar', '-moz-myanmar', 'oriya', '-moz-oriya', 'persian', '-moz-persian', 'simp-chinese-formal', 'simp-chinese-informal', 'tamil', '-moz-tamil', 'telugu', '-moz-telugu', 'thai', '-moz-thai', 'tibetan', 'trad-chinese-formal', 'trad-chinese-informal', 'upper-armenian', 'disclosure-open', 'disclosure-closed'];\n\nvar nonStandard = ['-moz-ethiopic-halehame', '-moz-ethiopic-halehame-am', 'ethiopic-halehame-ti-er', '-moz-ethiopic-halehame-ti-er', 'ethiopic-halehame-ti-et', '-moz-ethiopic-halehame-ti-et', 'hangul', '-moz-hangul', 'hangul-consonant', '-moz-hangul-consonant', 'urdu', '-moz-urdu'];\n\nvar valid = [].concat(standard, nonStandard);\n\nvar symbolTypes = ['cyclic', 'numeric', 'alphabetic', 'symbolic', 'fixed'];\n\nfunction isSymbols(node) {\n    if (!isFunction(node, 'symbols')) {\n        return false;\n    }\n    var validSym = true;\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && (index === 0 && !isKeyword(child, symbolTypes) && !isString(child) && !isImage(child) || index > 1 && !isString(child) && !isImage(child)) || !even && !isSpace(child)) {\n            validSym = false;\n        }\n        return false;\n    });\n    return validSym;\n}\n\nfunction isCounterStyle(node) {\n    return isCustomIdent(node) || isKeyword(node, valid) || isSymbols(node);\n}\n\nvar compositingOperators = ['add', 'subtract', 'intersect', 'exclude'];\n\nvar isCompositingOperator = function isCompositingOperator(node) {\n    return isKeyword(node, compositingOperators);\n};\n\nvar maskingModes = ['alpha', 'luminance', 'match-source'];\n\nvar isMaskingMode = function isMaskingMode(node) {\n    return isKeyword(node, maskingModes);\n};\n\nvar geometryBoxes = ['margin-box', 'fill-box', 'stroke-box', 'view-box'];\n\nvar nonStandardKeywords = ['content', 'padding', 'border'];\n\nvar isGeometryBox = function isGeometryBox(node) {\n    return isBox(node) || isKeyword(node, geometryBoxes) || isKeyword(node, nonStandardKeywords);\n};\n\nfunction validateShadow(nodes) {\n    var hasColor = false;\n    var hasLength = 0;\n    var hasVariable = false;\n    var startsWithLength = false;\n    var valid = true;\n\n    (0, _postcssValueParser.walk)(nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even) {\n            if (isLength(child)) {\n                if (!index) {\n                    startsWithLength = true;\n                }\n                if (hasLength && hasColor && startsWithLength) {\n                    valid = false;\n                    return false;\n                }\n                hasLength++;\n                if (hasLength > 3) {\n                    valid = false;\n                }\n            } else if (isColor(child)) {\n                if (hasColor) {\n                    valid = false;\n                } else {\n                    hasColor = true;\n                }\n            } else if (isVariable(child)) {\n                hasVariable = true;\n            } else {\n                valid = false;\n            }\n        } else if (!even && !isSpace(child)) {\n            valid = false;\n        }\n\n        return false;\n    });\n\n    if (!hasVariable && hasLength < 2 || nodes.length > 7) {\n        return false;\n    }\n\n    return valid;\n}\n\nfunction isShadowT(parsed) {\n    return getArguments(parsed).every(validateShadow);\n}\n\nvar matrix = 'matrix';\nvar matrix3d = 'matrix3d';\n\nfunction isMatrix(node) {\n    if (!isFunction(node, [matrix, matrix3d])) {\n        return false;\n    }\n    if (node.value === matrix && node.nodes.length !== 11 || node.value === matrix3d && node.nodes.length !== 31) {\n        return false;\n    }\n\n    var valid = true;\n\n    (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n        var even = index % 2 === 0;\n        if (even && !isNumber(child) || !even && !isComma(child)) {\n            valid = false;\n        }\n        return false;\n    });\n\n    return valid;\n}\n\nfunction isMultipleValue(name, fn) {\n    return function (node) {\n        if (!isFunction(node, name)) {\n            return false;\n        }\n        if (node.nodes.length > 3) {\n            return false;\n        }\n\n        var valid = true;\n\n        (0, _postcssValueParser.walk)(node.nodes, function (child, index) {\n            var even = index % 2 === 0;\n            if (even && !fn(child) || !even && !isComma(child)) {\n                valid = false;\n            }\n            return false;\n        });\n\n        if (isComma(node.nodes[node.nodes.length - 1])) {\n            return false;\n        }\n        return valid;\n    };\n}\n\nvar isTranslate = isMultipleValue('translate', isLengthPercentage);\nvar isScale = isMultipleValue('scale', isNumber);\nvar isSkew = isMultipleValue('skew', isAngle);\n\nvar singleNumbers = ['scaleX', 'scaleY', 'scaleZ'];\n\nvar singleAngles = ['rotate', 'skewX', 'skewY', 'rotateX', 'rotateY', 'rotateZ'];\n\nvar singleLengths = ['perspective', 'translateZ'];\n\nvar singleLPs = ['translateX', 'translateY'];\n\nfunction isSingleValidator(name, fn) {\n    return function (node) {\n        if (!isFunction(node, name)) {\n            return false;\n        }\n        if (node.nodes.length !== 1) {\n            return false;\n        }\n        return fn(node.nodes[0]);\n    };\n}\n\nvar isSingleLP = isSingleValidator(singleLPs, isLengthPercentage);\nvar isSingleNumber = isSingleValidator(singleNumbers, isNumber);\nvar isSingleAngle = isSingleValidator(singleAngles, isAngle);\nvar isSingleLength = isSingleValidator(singleLengths, isLength);\n\nfunction isTranslate3d(node) {\n    if (!isFunction(node, 'translate3d')) {\n        return false;\n    }\n    var nodes = node.nodes;\n\n    if (nodes.length !== 5) {\n        return false;\n    }\n    return isLengthPercentage(nodes[0]) && isComma(nodes[1]) && isLengthPercentage(nodes[2]) && isComma(nodes[3]) && isLength(nodes[4]);\n}\n\nfunction isScale3d(node) {\n    if (!isFunction(node, 'scale3d')) {\n        return false;\n    }\n    var nodes = node.nodes;\n\n    if (nodes.length !== 5) {\n        return false;\n    }\n    return isNumber(nodes[0]) && isComma(nodes[1]) && isNumber(nodes[2]) && isComma(nodes[3]) && isNumber(nodes[4]);\n}\n\nfunction isRotate3d(node) {\n    if (!isFunction(node, 'rotate3d')) {\n        return false;\n    }\n    var nodes = node.nodes;\n\n    if (nodes.length !== 7) {\n        return false;\n    }\n    return isNumber(nodes[0]) && isComma(nodes[1]) && isNumber(nodes[2]) && isComma(nodes[3]) && isNumber(nodes[4]) && isComma(nodes[5]) && isAngle(nodes[6]);\n}\n\nfunction validateNode$1(node) {\n    return isMatrix(node) || isRotate3d(node) || isScale(node) || isScale3d(node) || isSkew(node) || isSingleAngle(node) || isSingleLength(node) || isSingleLP(node) || isSingleNumber(node) || isTranslate(node) || isTranslate3d(node) || isVariable(node);\n}\n\nfunction isTransformList(parsed) {\n    var valid = true;\n\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n        if (even && !validateNode$1(node) || !even && !isSpace(node)) {\n            valid = false;\n        }\n        return false;\n    });\n\n    return valid;\n}\n\nvar animateableFeatures = ['scroll-position', 'contents'];\n\nvar isAnimateableFeature = function isAnimateableFeature(node) {\n    return isKeyword(node, animateableFeatures) || isCustomIdent(node);\n};\n\nvar msOverflowStyleValidator = isKeywordFactory([\"auto\", \"none\", \"scrollbar\", \"-ms-autohiding-scrollbar\"]);\nvar mozAppearanceValidator = isKeywordFactory([\"none\", \"button\", \"button-arrow-down\", \"button-arrow-next\", \"button-arrow-previous\", \"button-arrow-up\", \"button-bevel\", \"button-focus\", \"caret\", \"checkbox\", \"checkbox-container\", \"checkbox-label\", \"checkmenuitem\", \"dualbutton\", \"groupbox\", \"listbox\", \"listitem\", \"menuarrow\", \"menubar\", \"menucheckbox\", \"menuimage\", \"menuitem\", \"menuitemtext\", \"menulist\", \"menulist-button\", \"menulist-text\", \"menulist-textfield\", \"menupopup\", \"menuradio\", \"menuseparator\", \"meterbar\", \"meterchunk\", \"progressbar\", \"progressbar-vertical\", \"progresschunk\", \"progresschunk-vertical\", \"radio\", \"radio-container\", \"radio-label\", \"radiomenuitem\", \"range\", \"range-thumb\", \"resizer\", \"resizerpanel\", \"scale-horizontal\", \"scalethumbend\", \"scalethumb-horizontal\", \"scalethumbstart\", \"scalethumbtick\", \"scalethumb-vertical\", \"scale-vertical\", \"scrollbarbutton-down\", \"scrollbarbutton-left\", \"scrollbarbutton-right\", \"scrollbarbutton-up\", \"scrollbarthumb-horizontal\", \"scrollbarthumb-vertical\", \"scrollbartrack-horizontal\", \"scrollbartrack-vertical\", \"searchfield\", \"separator\", \"sheet\", \"spinner\", \"spinner-downbutton\", \"spinner-textfield\", \"spinner-upbutton\", \"splitter\", \"statusbar\", \"statusbarpanel\", \"tab\", \"tabpanel\", \"tabpanels\", \"tab-scroll-arrow-back\", \"tab-scroll-arrow-forward\", \"textfield\", \"textfield-multiline\", \"toolbar\", \"toolbarbutton\", \"toolbarbutton-dropdown\", \"toolbargripper\", \"toolbox\", \"tooltip\", \"treeheader\", \"treeheadercell\", \"treeheadersortarrow\", \"treeitem\", \"treeline\", \"treetwisty\", \"treetwistyopen\", \"treeview\", \"-moz-mac-unified-toolbar\", \"-moz-win-borderless-glass\", \"-moz-win-browsertabbar-toolbox\", \"-moz-win-communicationstext\", \"-moz-win-communications-toolbox\", \"-moz-win-exclude-glass\", \"-moz-win-glass\", \"-moz-win-mediatext\", \"-moz-win-media-toolbox\", \"-moz-window-button-box\", \"-moz-window-button-box-maximized\", \"-moz-window-button-close\", \"-moz-window-button-maximize\", \"-moz-window-button-minimize\", \"-moz-window-button-restore\", \"-moz-window-frame-bottom\", \"-moz-window-frame-left\", \"-moz-window-frame-right\", \"-moz-window-titlebar\", \"-moz-window-titlebar-maximized\"]);\n\nvar mozBindingValidator = function mozBindingValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isUrl(node) || isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar mozFloatEdgeValidator = isKeywordFactory([\"border-box\", \"content-box\", \"margin-box\", \"padding-box\"]);\n\nvar mozForceBrokenImageIconValidator = function mozForceBrokenImageIconValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isInteger(node);\n    }\n\n    return false;\n};\n\nvar mozOrientValidator = isKeywordFactory([\"inline\", \"block\", \"horizontal\", \"vertical\"]);\nvar mozStackSizingValidator = isKeywordFactory([\"ignore\", \"stretch-to-fit\"]);\nvar mozTextBlinkValidator = isKeywordFactory([\"none\", \"blink\"]);\nvar mozUserFocusValidator = isKeywordFactory([\"ignore\", \"normal\", \"select-after\", \"select-before\", \"select-menu\", \"select-same\", \"select-all\", \"none\"]);\nvar mozUserInputValidator = isKeywordFactory([\"none\", \"enabled\", \"disabled\"]);\nvar mozUserModifyValidator = isKeywordFactory([\"read-only\", \"read-write\", \"write-only\"]);\nvar mozWindowShadowValidator = isKeywordFactory([\"default\", \"menu\", \"tooltip\", \"sheet\", \"none\"]);\n\nvar webkitBorderBeforeColorValidator = function webkitBorderBeforeColorValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isColor(node);\n    }\n\n    return false;\n};\n\nvar webkitBorderBeforeStyleValidator = function webkitBorderBeforeStyleValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isBrStyle(node) && !isVariable(node) || !even && !isSpace(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0 && parsed.nodes.length <= 7;\n};\n\nvar webkitBorderBeforeWidthValidator = function webkitBorderBeforeWidthValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isBrWidth(node) && !isVariable(node) || !even && !isSpace(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0 && parsed.nodes.length <= 7;\n};\n\nvar webkitMaskAttachmentValidator = function webkitMaskAttachmentValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isAttachment(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar webkitMaskRepeatValidator = isRepeatStyle;\nvar webkitMaskRepeatXValidator = isKeywordFactory([\"repeat\", \"no-repeat\", \"space\", \"round\"]);\n\nvar webkitTapHighlightColorValidator = function webkitTapHighlightColorValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isColor(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar webkitTextStrokeWidthValidator = function webkitTextStrokeWidthValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLength(node);\n    }\n\n    return false;\n};\n\nvar webkitTouchCalloutValidator = isKeywordFactory([\"default\", \"none\"]);\nvar alignContentValidator = isKeywordFactory([\"flex-start\", \"flex-end\", \"center\", \"space-between\", \"space-around\", \"stretch\"]);\nvar msFlexLinePackValidator = isKeywordFactory([\"flex-start\", \"flex-end\", \"center\", \"space-between\", \"space-around\", \"stretch\", \"start\", \"end\", \"justify\", \"distribute\"]);\nvar msFlexAlignValidator = isKeywordFactory([\"flex-start\", \"flex-end\", \"center\", \"baseline\", \"stretch\", \"start\", \"end\"]);\nvar alignItemsValidator = isKeywordFactory([\"flex-start\", \"flex-end\", \"center\", \"baseline\", \"stretch\"]);\nvar alignSelfValidator = isKeywordFactory([\"auto\", \"flex-start\", \"flex-end\", \"center\", \"baseline\", \"stretch\"]);\nvar msFlexItemAlignValidator = isKeywordFactory([\"auto\", \"flex-start\", \"flex-end\", \"center\", \"baseline\", \"stretch\", \"start\", \"end\"]);\nvar allValidator = isKeywordFactory([\"initial\", \"inherit\", \"unset\"]);\n\nvar animationDelayValidator = function animationDelayValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isTime(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar animationDirectionValidator = function animationDirectionValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isSingleAnimationDirection(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar animationFillModeValidator = function animationFillModeValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isSingleAnimationFillMode(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar animationIterationCountValidator = function animationIterationCountValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isSingleAnimationIterationCount(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar animationNameValidator = function animationNameValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isSingleAnimationName(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar animationPlayStateValidator = function animationPlayStateValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isSingleAnimationPlayState(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar animationTimingFunctionValidator = function animationTimingFunctionValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isSingleTransitionTimingFunction(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar appearanceValidator = isKeywordFactory([\"auto\", \"none\"]);\n\nvar backdropFilterValidator = function backdropFilterValidator(parsed) {\n    if (isFilterFunctionList(parsed)) {\n        return true;\n    }\n\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar backfaceVisibilityValidator = isKeywordFactory([\"visible\", \"hidden\"]);\n\nvar backgroundBlendModeValidator = function backgroundBlendModeValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isBlendMode(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar backgroundClipValidator = function backgroundClipValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isBox(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar backgroundImageValidator = function backgroundImageValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isBgImage(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar backgroundPositionValidator = isPositionFactory(true);\nvar backgroundSizeValidator = isBgSize;\n\nvar borderBottomLeftRadiusValidator = function borderBottomLeftRadiusValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isLengthPercentage(node) && !isVariable(node) || !even && !isSpace(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0 && parsed.nodes.length <= 3;\n};\n\nvar borderBottomStyleValidator = function borderBottomStyleValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isBrStyle(node);\n    }\n\n    return false;\n};\n\nvar borderBottomWidthValidator = function borderBottomWidthValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isBrWidth(node);\n    }\n\n    return false;\n};\n\nvar borderCollapseValidator = isKeywordFactory([\"collapse\", \"separate\"]);\n\nvar borderColorValidator = function borderColorValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isColor(node) && !isVariable(node) || !even && !isSpace(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0 && parsed.nodes.length <= 7;\n};\n\nvar borderImageSourceValidator = function borderImageSourceValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isImage(node) || isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar bottomValidator = function bottomValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLengthPercentage(node) || isKeyword(node, \"auto\");\n    }\n\n    return false;\n};\n\nvar boxAlignValidator = isKeywordFactory([\"start\", \"center\", \"end\", \"baseline\", \"stretch\"]);\nvar boxDecorationBreakValidator = isKeywordFactory([\"slice\", \"clone\"]);\nvar boxDirectionValidator = isKeywordFactory([\"normal\", \"reverse\", \"inherit\"]);\n\nvar boxFlexValidator = function boxFlexValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isNumber(node);\n    }\n\n    return false;\n};\n\nvar boxLinesValidator = isKeywordFactory([\"single\", \"multiple\"]);\nvar boxOrientValidator = isKeywordFactory([\"horizontal\", \"vertical\", \"inline-axis\", \"block-axis\", \"inherit\"]);\nvar boxPackValidator = isKeywordFactory([\"start\", \"center\", \"end\", \"justify\"]);\nvar boxSizingValidator = isKeywordFactory([\"content-box\", \"border-box\"]);\nvar boxSuppressValidator = isKeywordFactory([\"show\", \"discard\", \"hide\"]);\nvar pageBreakAfterValidator = isKeywordFactory([\"auto\", \"always\", \"avoid\", \"left\", \"right\"]);\nvar webkitColumnBreakInsideValidator = isKeywordFactory([\"auto\", \"avoid\", \"avoid-page\", \"avoid-column\", \"avoid-region\"]);\nvar captionSideValidator = isKeywordFactory([\"top\", \"bottom\", \"block-start\", \"block-end\", \"inline-start\", \"inline-end\"]);\nvar clearValidator = isKeywordFactory([\"none\", \"left\", \"right\", \"both\", \"inline-start\", \"inline-end\"]);\n\nvar columnCountValidator = function columnCountValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isNumber(node) || isKeyword(node, \"auto\");\n    }\n\n    return false;\n};\n\nvar columnFillValidator = isKeywordFactory([\"auto\", \"balance\"]);\n\nvar columnGapValidator = function columnGapValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLength(node) || isKeyword(node, \"normal\");\n    }\n\n    return false;\n};\n\nvar columnSpanValidator = isKeywordFactory([\"none\", \"all\"]);\n\nvar columnWidthValidator = function columnWidthValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLength(node) || isKeyword(node, \"auto\");\n    }\n\n    return false;\n};\n\nvar directionValidator = isKeywordFactory([\"ltr\", \"rtl\"]);\nvar displayValidator = isKeywordFactory([\"none\", \"inline\", \"block\", \"list-item\", \"inline-list-item\", \"inline-block\", \"inline-table\", \"table\", \"table-cell\", \"table-column\", \"table-column-group\", \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\", \"flex\", \"inline-flex\", \"grid\", \"inline-grid\", \"run-in\", \"ruby\", \"ruby-base\", \"ruby-text\", \"ruby-base-container\", \"ruby-text-container\", \"contents\", \"-webkit-box\", \"-webkit-flex\", \"-moz-box\", \"-ms-flexbox\", \"-webkit-inline-box\", \"-webkit-inline-flex\", \"-moz-inline-box\", \"-ms-inline-flexbox\", \"-ms-grid\", \"-ms-inline-grid\"]);\nvar displayInsideValidator = isKeywordFactory([\"auto\", \"block\", \"table\", \"flex\", \"grid\", \"ruby\"]);\nvar displayListValidator = isKeywordFactory([\"none\", \"list-item\"]);\nvar displayOutsideValidator = isKeywordFactory([\"block-level\", \"inline-level\", \"run-in\", \"contents\", \"none\", \"table-row-group\", \"table-header-group\", \"table-footer-group\", \"table-row\", \"table-cell\", \"table-column-group\", \"table-column\", \"table-caption\", \"ruby-base\", \"ruby-text\", \"ruby-base-container\", \"ruby-text-container\"]);\nvar emptyCellsValidator = isKeywordFactory([\"show\", \"hide\"]);\nvar mozBoxOrientValidator = isKeywordFactory([\"row\", \"row-reverse\", \"column\", \"column-reverse\", \"horizontal\", \"vertical\"]);\nvar mozBoxDirectionValidator = isKeywordFactory([\"row\", \"row-reverse\", \"column\", \"column-reverse\", \"normal\", \"reverse\"]);\nvar flexDirectionValidator = isKeywordFactory([\"row\", \"row-reverse\", \"column\", \"column-reverse\"]);\nvar flexWrapValidator = isKeywordFactory([\"nowrap\", \"wrap\", \"wrap-reverse\"]);\nvar floatValidator = isKeywordFactory([\"left\", \"right\", \"none\", \"inline-start\", \"inline-end\"]);\nvar fontKerningValidator = isKeywordFactory([\"auto\", \"normal\", \"none\"]);\n\nvar fontLanguageOverrideValidator = function fontLanguageOverrideValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isString(node) || isKeyword(node, \"normal\");\n    }\n\n    return false;\n};\n\nvar fontSizeValidator = function fontSizeValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isAbsoluteSize(node) || isRelativeSize(node) || isLengthPercentage(node);\n    }\n\n    return false;\n};\n\nvar fontSizeAdjustValidator = function fontSizeAdjustValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isNumber(node) || isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar fontStretchValidator = isKeywordFactory([\"normal\", \"ultra-condensed\", \"extra-condensed\", \"condensed\", \"semi-condensed\", \"semi-expanded\", \"expanded\", \"extra-expanded\", \"ultra-expanded\"]);\nvar fontStyleValidator = isKeywordFactory([\"normal\", \"italic\", \"oblique\"]);\nvar fontVariantCapsValidator = isKeywordFactory([\"normal\", \"small-caps\", \"all-small-caps\", \"petite-caps\", \"all-petite-caps\", \"unicase\", \"titling-caps\"]);\nvar fontVariantPositionValidator = isKeywordFactory([\"normal\", \"sub\", \"super\"]);\nvar fontWeightValidator = isKeywordFactory([\"normal\", \"bold\", \"bolder\", \"lighter\", \"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\"]);\n\nvar gridAutoColumnsValidator = function gridAutoColumnsValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isTrackSize(node);\n    }\n\n    return false;\n};\n\nvar gridColumnGapValidator = function gridColumnGapValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLengthPercentage(node);\n    }\n\n    return false;\n};\n\nvar gridTemplateAreasValidator = function gridTemplateAreasValidator(parsed) {\n    var node = parsed.nodes[0];\n\n    if (parsed.nodes.length === 1 && isKeyword(node, \"none\")) {\n        return true;\n    }\n\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isString(node) && !isVariable(node) || !even && !isSpace(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar hyphensValidator = isKeywordFactory([\"none\", \"manual\", \"auto\"]);\nvar imageRenderingValidator = isKeywordFactory([\"auto\", \"crisp-edges\", \"pixelated\", \"-webkit-optimize-contrast\", \"-moz-crisp-edges\", \"-o-pixelated\"]);\nvar msInterpolationModeValidator = isKeywordFactory([\"auto\", \"crisp-edges\", \"pixelated\", \"nearest-neighbor\"]);\nvar imeModeValidator = isKeywordFactory([\"auto\", \"normal\", \"active\", \"inactive\", \"disabled\"]);\nvar initialLetterAlignValidator = isKeywordFactory([\"auto\", \"alphabetic\", \"hanging\", \"ideographic\"]);\nvar isolationValidator = isKeywordFactory([\"auto\", \"isolate\"]);\nvar mozBoxPackValidator = isKeywordFactory([\"flex-start\", \"flex-end\", \"center\", \"space-between\", \"space-around\", \"start\", \"end\", \"justify\"]);\nvar justifyContentValidator = isKeywordFactory([\"flex-start\", \"flex-end\", \"center\", \"space-between\", \"space-around\"]);\nvar msFlexPackValidator = isKeywordFactory([\"flex-start\", \"flex-end\", \"center\", \"space-between\", \"space-around\", \"start\", \"end\", \"justify\", \"distribute\"]);\n\nvar letterSpacingValidator = function letterSpacingValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLength(node) || isKeyword(node, \"normal\");\n    }\n\n    return false;\n};\n\nvar lineBreakValidator = isKeywordFactory([\"auto\", \"loose\", \"normal\", \"strict\"]);\n\nvar lineHeightValidator = function lineHeightValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isNumber(node) || isLengthPercentage(node) || isKeyword(node, \"normal\");\n    }\n\n    return false;\n};\n\nvar listStylePositionValidator = isKeywordFactory([\"inside\", \"outside\"]);\n\nvar listStyleTypeValidator = function listStyleTypeValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isCounterStyle(node) || isString(node) || isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar maskCompositeValidator = function maskCompositeValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isCompositingOperator(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar maskModeValidator = function maskModeValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isMaskingMode(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar maskOriginValidator = function maskOriginValidator(parsed) {\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isGeometryBox(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar maskTypeValidator = isKeywordFactory([\"luminance\", \"alpha\"]);\nvar maxBlockSizeValidatorKeywords = [\"none\", \"max-content\", \"min-content\", \"fit-content\", \"fill-available\", \"-webkit-max-content\", \"-moz-max-content\", \"-webkit-min-content\", \"-moz-min-content\", \"-webkit-fit-content\", \"-moz-fit-content\", \"-webkit-fill-available\", \"-moz-available\"];\n\nvar maxBlockSizeValidator = function maxBlockSizeValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLengthPercentage(node) || isKeyword(node, maxBlockSizeValidatorKeywords);\n    }\n\n    return false;\n};\n\nvar mixBlendModeValidator = function mixBlendModeValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isBlendMode(node);\n    }\n\n    return false;\n};\n\nvar objectFitValidator = isKeywordFactory([\"fill\", \"contain\", \"cover\", \"none\", \"scale-down\"]);\nvar objectPositionValidator = isPositionFactory(false);\n\nvar outlineColorValidator = function outlineColorValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isColor(node) || isKeyword(node, \"invert\");\n    }\n\n    return false;\n};\n\nvar outlineStyleValidator = function outlineStyleValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isBrStyle(node) || isKeyword(node, \"auto\");\n    }\n\n    return false;\n};\n\nvar overflowValidator = isKeywordFactory([\"visible\", \"hidden\", \"scroll\", \"auto\"]);\nvar overflowClipBoxValidator = isKeywordFactory([\"padding-box\", \"content-box\"]);\nvar overflowWrapValidator = isKeywordFactory([\"normal\", \"break-word\"]);\nvar pageBreakInsideValidator = isKeywordFactory([\"auto\", \"avoid\"]);\n\nvar perspectiveValidator = function perspectiveValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLength(node) || isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar pointerEventsValidator = isKeywordFactory([\"auto\", \"none\", \"visiblePainted\", \"visibleFill\", \"visibleStroke\", \"visible\", \"painted\", \"fill\", \"stroke\", \"all\", \"inherit\"]);\nvar positionValidator = isKeywordFactory([\"static\", \"relative\", \"absolute\", \"sticky\", \"fixed\", \"-webkit-sticky\"]);\nvar resizeValidator = isKeywordFactory([\"none\", \"both\", \"horizontal\", \"vertical\"]);\nvar rubyAlignValidator = isKeywordFactory([\"start\", \"center\", \"space-between\", \"space-around\"]);\nvar rubyMergeValidator = isKeywordFactory([\"separate\", \"collapse\", \"auto\"]);\nvar rubyPositionValidator = isKeywordFactory([\"over\", \"under\", \"inter-character\"]);\nvar scrollBehaviorValidator = isKeywordFactory([\"auto\", \"smooth\"]);\n\nvar scrollSnapCoordinateValidator = function scrollSnapCoordinateValidator(parsed) {\n    if (isPositionFactory(true)(parsed)) {\n        return true;\n    }\n\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar scrollSnapTypeValidator = isKeywordFactory([\"none\", \"mandatory\", \"proximity\"]);\n\nvar tabSizeValidator = function tabSizeValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isInteger(node) || isLength(node);\n    }\n\n    return false;\n};\n\nvar tableLayoutValidator = isKeywordFactory([\"auto\", \"fixed\"]);\nvar textAlignValidator = isKeywordFactory([\"start\", \"end\", \"left\", \"right\", \"center\", \"justify\", \"match-parent\"]);\nvar textAlignLastValidator = isKeywordFactory([\"auto\", \"start\", \"end\", \"left\", \"right\", \"center\", \"justify\"]);\nvar textDecorationStyleValidator = isKeywordFactory([\"solid\", \"double\", \"dotted\", \"dashed\", \"wavy\"]);\nvar textOrientationValidator = isKeywordFactory([\"mixed\", \"upright\", \"sideways\"]);\nvar textRenderingValidator = isKeywordFactory([\"auto\", \"optimizeSpeed\", \"optimizeLegibility\", \"geometricPrecision\"]);\n\nvar textShadowValidator = function textShadowValidator(parsed) {\n    if (isShadowT(parsed)) {\n        return true;\n    }\n\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar textSizeAdjustValidatorKeywords = [\"none\", \"auto\"];\n\nvar textSizeAdjustValidator = function textSizeAdjustValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isPercentage(node) || isKeyword(node, textSizeAdjustValidatorKeywords);\n    }\n\n    return false;\n};\n\nvar textTransformValidator = isKeywordFactory([\"none\", \"capitalize\", \"uppercase\", \"lowercase\", \"full-width\"]);\n\nvar transformValidator = function transformValidator(parsed) {\n    if (isTransformList(parsed)) {\n        return true;\n    }\n\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isKeyword(node, \"none\");\n    }\n\n    return false;\n};\n\nvar transformBoxValidator = isKeywordFactory([\"border-box\", \"fill-box\", \"view-box\"]);\nvar transformStyleValidator = isKeywordFactory([\"flat\", \"preserve-3d\"]);\nvar unicodeBidiValidator = isKeywordFactory([\"normal\", \"embed\", \"isolate\", \"bidi-override\", \"isolate-override\", \"plaintext\"]);\nvar userSelectValidator = isKeywordFactory([\"auto\", \"text\", \"none\", \"contain\", \"all\"]);\nvar verticalAlignValidatorKeywords = [\"baseline\", \"sub\", \"super\", \"text-top\", \"text-bottom\", \"middle\", \"top\", \"bottom\"];\n\nvar verticalAlignValidator = function verticalAlignValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLengthPercentage(node) || isKeyword(node, verticalAlignValidatorKeywords);\n    }\n\n    return false;\n};\n\nvar visibilityValidator = isKeywordFactory([\"visible\", \"hidden\", \"collapse\"]);\nvar whiteSpaceValidator = isKeywordFactory([\"normal\", \"pre\", \"nowrap\", \"pre-wrap\", \"pre-line\"]);\n\nvar willChangeValidator = function willChangeValidator(parsed) {\n    var node = parsed.nodes[0];\n\n    if (parsed.nodes.length === 1 && isKeyword(node, \"auto\")) {\n        return true;\n    }\n\n    var valid = true;\n    parsed.walk(function (node, index) {\n        var even = index % 2 === 0;\n\n        if (even && !isAnimateableFeature(node) && !isVariable(node) || !even && !isComma(node)) {\n            valid = false;\n        }\n\n        return false;\n    });\n    return valid && parsed.nodes.length % 2 !== 0;\n};\n\nvar wordBreakValidator = isKeywordFactory([\"normal\", \"break-all\", \"keep-all\"]);\n\nvar wordSpacingValidator = function wordSpacingValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isLengthPercentage(node) || isKeyword(node, \"normal\");\n    }\n\n    return false;\n};\n\nvar writingModeValidator = isKeywordFactory([\"horizontal-tb\", \"vertical-rl\", \"vertical-lr\", \"sideways-rl\", \"sideways-lr\"]);\nvar msWritingModeValidator = isKeywordFactory([\"horizontal-tb\", \"vertical-rl\", \"vertical-lr\", \"sideways-rl\", \"sideways-lr\", \"lr-tb\", \"tb-rl\", \"tb-lr\"]);\n\nvar zIndexValidator = function zIndexValidator(parsed) {\n    if (parsed.nodes.length === 1) {\n        var node = parsed.nodes[0];\n        return isInteger(node) || isKeyword(node, \"auto\");\n    }\n\n    return false;\n};\n\nvar validators = {\n    \"-moz-appearance\": mozAppearanceValidator,\n    \"-moz-backface-visibility\": backfaceVisibilityValidator,\n    \"-moz-binding\": mozBindingValidator,\n    \"-moz-box-align\": msFlexAlignValidator,\n    \"-moz-box-direction\": mozBoxDirectionValidator,\n    \"-moz-box-orient\": mozBoxOrientValidator,\n    \"-moz-box-pack\": mozBoxPackValidator,\n    \"-moz-box-sizing\": boxSizingValidator,\n    \"-moz-column-count\": columnCountValidator,\n    \"-moz-column-fill\": columnFillValidator,\n    \"-moz-column-gap\": columnGapValidator,\n    \"-moz-column-span\": columnSpanValidator,\n    \"-moz-column-width\": columnWidthValidator,\n    \"-moz-float-edge\": mozFloatEdgeValidator,\n    \"-moz-font-kerning\": fontKerningValidator,\n    \"-moz-font-language-override\": fontLanguageOverrideValidator,\n    \"-moz-force-broken-image-icon\": mozForceBrokenImageIconValidator,\n    \"-moz-hyphens\": hyphensValidator,\n    \"-moz-margin-end\": bottomValidator,\n    \"-moz-margin-start\": bottomValidator,\n    \"-moz-orient\": mozOrientValidator,\n    \"-moz-perspective\": perspectiveValidator,\n    \"-moz-stack-sizing\": mozStackSizingValidator,\n    \"-moz-text-align-last\": textAlignLastValidator,\n    \"-moz-text-blink\": mozTextBlinkValidator,\n    \"-moz-text-decoration-style\": textDecorationStyleValidator,\n    \"-moz-text-size-adjust\": textSizeAdjustValidator,\n    \"-moz-transform\": transformValidator,\n    \"-moz-transform-style\": transformStyleValidator,\n    \"-moz-user-focus\": mozUserFocusValidator,\n    \"-moz-user-input\": mozUserInputValidator,\n    \"-moz-user-modify\": mozUserModifyValidator,\n    \"-moz-user-select\": userSelectValidator,\n    \"-moz-window-shadow\": mozWindowShadowValidator,\n    \"-ms-flex-align\": msFlexAlignValidator,\n    \"-ms-flex-direction\": flexDirectionValidator,\n    \"-ms-flex-item-align\": msFlexItemAlignValidator,\n    \"-ms-flex-line-pack\": msFlexLinePackValidator,\n    \"-ms-flex-pack\": msFlexPackValidator,\n    \"-ms-flex-wrap\": flexWrapValidator,\n    \"-ms-grid-row-align\": alignItemsValidator,\n    \"-ms-hyphens\": hyphensValidator,\n    \"-ms-interpolation-mode\": msInterpolationModeValidator,\n    \"-ms-overflow-style\": msOverflowStyleValidator,\n    \"-ms-scroll-snap-coordinate\": scrollSnapCoordinateValidator,\n    \"-ms-scroll-snap-type\": scrollSnapTypeValidator,\n    \"-ms-text-size-adjust\": textSizeAdjustValidator,\n    \"-ms-transform\": transformValidator,\n    \"-ms-user-select\": userSelectValidator,\n    \"-ms-writing-mode\": msWritingModeValidator,\n    \"-o-object-fit\": objectFitValidator,\n    \"-o-transform\": transformValidator,\n    \"-webkit-align-content\": alignContentValidator,\n    \"-webkit-align-items\": alignItemsValidator,\n    \"-webkit-align-self\": alignSelfValidator,\n    \"-webkit-appearance\": appearanceValidator,\n    \"-webkit-backdrop-filter\": backdropFilterValidator,\n    \"-webkit-backface-visibility\": backfaceVisibilityValidator,\n    \"-webkit-border-before-color\": webkitBorderBeforeColorValidator,\n    \"-webkit-border-before-style\": webkitBorderBeforeStyleValidator,\n    \"-webkit-border-before-width\": webkitBorderBeforeWidthValidator,\n    \"-webkit-box-align\": msFlexAlignValidator,\n    \"-webkit-box-decoration-break\": boxDecorationBreakValidator,\n    \"-webkit-box-direction\": mozBoxDirectionValidator,\n    \"-webkit-box-orient\": mozBoxOrientValidator,\n    \"-webkit-box-pack\": mozBoxPackValidator,\n    \"-webkit-box-sizing\": boxSizingValidator,\n    \"-webkit-column-break-inside\": webkitColumnBreakInsideValidator,\n    \"-webkit-column-count\": columnCountValidator,\n    \"-webkit-column-fill\": columnFillValidator,\n    \"-webkit-column-gap\": columnGapValidator,\n    \"-webkit-column-span\": columnSpanValidator,\n    \"-webkit-column-width\": columnWidthValidator,\n    \"-webkit-filter\": backdropFilterValidator,\n    \"-webkit-flex-direction\": flexDirectionValidator,\n    \"-webkit-flex-wrap\": flexWrapValidator,\n    \"-webkit-font-kerning\": fontKerningValidator,\n    \"-webkit-font-language-override\": fontLanguageOverrideValidator,\n    \"-webkit-hyphens\": hyphensValidator,\n    \"-webkit-justify-content\": justifyContentValidator,\n    \"-webkit-margin-after\": bottomValidator,\n    \"-webkit-margin-before\": bottomValidator,\n    \"-webkit-margin-end\": bottomValidator,\n    \"-webkit-margin-start\": bottomValidator,\n    \"-webkit-mask-attachment\": webkitMaskAttachmentValidator,\n    \"-webkit-mask-repeat\": webkitMaskRepeatValidator,\n    \"-webkit-mask-repeat-x\": webkitMaskRepeatXValidator,\n    \"-webkit-mask-repeat-y\": webkitMaskRepeatXValidator,\n    \"-webkit-perspective\": perspectiveValidator,\n    \"-webkit-scroll-snap-coordinate\": scrollSnapCoordinateValidator,\n    \"-webkit-scroll-snap-type\": scrollSnapTypeValidator,\n    \"-webkit-tap-highlight-color\": webkitTapHighlightColorValidator,\n    \"-webkit-text-decoration-style\": textDecorationStyleValidator,\n    \"-webkit-text-fill-color\": webkitBorderBeforeColorValidator,\n    \"-webkit-text-size-adjust\": textSizeAdjustValidator,\n    \"-webkit-text-stroke-color\": webkitBorderBeforeColorValidator,\n    \"-webkit-text-stroke-width\": webkitTextStrokeWidthValidator,\n    \"-webkit-touch-callout\": webkitTouchCalloutValidator,\n    \"-webkit-transform\": transformValidator,\n    \"-webkit-transform-style\": transformStyleValidator,\n    \"-webkit-user-select\": userSelectValidator,\n    \"-webkit-writing-mode\": writingModeValidator,\n    \"align-content\": alignContentValidator,\n    \"align-items\": alignItemsValidator,\n    \"align-self\": alignSelfValidator,\n    \"all\": allValidator,\n    \"animation-delay\": animationDelayValidator,\n    \"animation-direction\": animationDirectionValidator,\n    \"animation-duration\": animationDelayValidator,\n    \"animation-fill-mode\": animationFillModeValidator,\n    \"animation-iteration-count\": animationIterationCountValidator,\n    \"animation-name\": animationNameValidator,\n    \"animation-play-state\": animationPlayStateValidator,\n    \"animation-timing-function\": animationTimingFunctionValidator,\n    \"appearance\": appearanceValidator,\n    \"backdrop-filter\": backdropFilterValidator,\n    \"backface-visibility\": backfaceVisibilityValidator,\n    \"background-attachment\": webkitMaskAttachmentValidator,\n    \"background-blend-mode\": backgroundBlendModeValidator,\n    \"background-clip\": backgroundClipValidator,\n    \"background-color\": webkitBorderBeforeColorValidator,\n    \"background-image\": backgroundImageValidator,\n    \"background-origin\": backgroundClipValidator,\n    \"background-position\": backgroundPositionValidator,\n    \"background-repeat\": webkitMaskRepeatValidator,\n    \"background-size\": backgroundSizeValidator,\n    \"border-block-end-color\": webkitBorderBeforeColorValidator,\n    \"border-block-end-style\": webkitBorderBeforeStyleValidator,\n    \"border-block-end-width\": webkitBorderBeforeWidthValidator,\n    \"border-block-start-color\": webkitBorderBeforeColorValidator,\n    \"border-block-start-style\": webkitBorderBeforeStyleValidator,\n    \"border-block-start-width\": webkitBorderBeforeWidthValidator,\n    \"border-bottom-color\": webkitBorderBeforeColorValidator,\n    \"border-bottom-left-radius\": borderBottomLeftRadiusValidator,\n    \"border-bottom-right-radius\": borderBottomLeftRadiusValidator,\n    \"border-bottom-style\": borderBottomStyleValidator,\n    \"border-bottom-width\": borderBottomWidthValidator,\n    \"border-collapse\": borderCollapseValidator,\n    \"border-color\": borderColorValidator,\n    \"border-image-source\": borderImageSourceValidator,\n    \"border-inline-end-color\": webkitBorderBeforeColorValidator,\n    \"border-inline-end-style\": webkitBorderBeforeStyleValidator,\n    \"border-inline-end-width\": webkitBorderBeforeWidthValidator,\n    \"border-inline-start-color\": webkitBorderBeforeColorValidator,\n    \"border-inline-start-style\": webkitBorderBeforeStyleValidator,\n    \"border-inline-start-width\": webkitBorderBeforeWidthValidator,\n    \"border-left-color\": webkitBorderBeforeColorValidator,\n    \"border-left-style\": borderBottomStyleValidator,\n    \"border-left-width\": borderBottomWidthValidator,\n    \"border-right-color\": webkitBorderBeforeColorValidator,\n    \"border-right-style\": borderBottomStyleValidator,\n    \"border-right-width\": borderBottomWidthValidator,\n    \"border-style\": webkitBorderBeforeStyleValidator,\n    \"border-top-color\": webkitBorderBeforeColorValidator,\n    \"border-top-left-radius\": borderBottomLeftRadiusValidator,\n    \"border-top-right-radius\": borderBottomLeftRadiusValidator,\n    \"border-top-style\": borderBottomStyleValidator,\n    \"border-top-width\": borderBottomWidthValidator,\n    \"border-width\": webkitBorderBeforeWidthValidator,\n    \"bottom\": bottomValidator,\n    \"box-align\": boxAlignValidator,\n    \"box-decoration-break\": boxDecorationBreakValidator,\n    \"box-direction\": boxDirectionValidator,\n    \"box-flex\": boxFlexValidator,\n    \"box-flex-group\": mozForceBrokenImageIconValidator,\n    \"box-lines\": boxLinesValidator,\n    \"box-ordinal-group\": mozForceBrokenImageIconValidator,\n    \"box-orient\": boxOrientValidator,\n    \"box-pack\": boxPackValidator,\n    \"box-sizing\": boxSizingValidator,\n    \"box-suppress\": boxSuppressValidator,\n    \"break-inside\": webkitColumnBreakInsideValidator,\n    \"caption-side\": captionSideValidator,\n    \"clear\": clearValidator,\n    \"color\": webkitBorderBeforeColorValidator,\n    \"column-count\": columnCountValidator,\n    \"column-fill\": columnFillValidator,\n    \"column-gap\": columnGapValidator,\n    \"column-rule-color\": webkitBorderBeforeColorValidator,\n    \"column-rule-style\": borderBottomStyleValidator,\n    \"column-rule-width\": borderBottomWidthValidator,\n    \"column-span\": columnSpanValidator,\n    \"column-width\": columnWidthValidator,\n    \"direction\": directionValidator,\n    \"display\": displayValidator,\n    \"display-inside\": displayInsideValidator,\n    \"display-list\": displayListValidator,\n    \"display-outside\": displayOutsideValidator,\n    \"empty-cells\": emptyCellsValidator,\n    \"filter\": backdropFilterValidator,\n    \"flex-direction\": flexDirectionValidator,\n    \"flex-grow\": boxFlexValidator,\n    \"flex-shrink\": boxFlexValidator,\n    \"flex-wrap\": flexWrapValidator,\n    \"float\": floatValidator,\n    \"font-kerning\": fontKerningValidator,\n    \"font-language-override\": fontLanguageOverrideValidator,\n    \"font-size\": fontSizeValidator,\n    \"font-size-adjust\": fontSizeAdjustValidator,\n    \"font-stretch\": fontStretchValidator,\n    \"font-style\": fontStyleValidator,\n    \"font-variant-caps\": fontVariantCapsValidator,\n    \"font-variant-position\": fontVariantPositionValidator,\n    \"font-weight\": fontWeightValidator,\n    \"grid-auto-columns\": gridAutoColumnsValidator,\n    \"grid-auto-rows\": gridAutoColumnsValidator,\n    \"grid-column-gap\": gridColumnGapValidator,\n    \"grid-row-gap\": gridColumnGapValidator,\n    \"grid-template-areas\": gridTemplateAreasValidator,\n    \"hyphens\": hyphensValidator,\n    \"image-rendering\": imageRenderingValidator,\n    \"ime-mode\": imeModeValidator,\n    \"initial-letter-align\": initialLetterAlignValidator,\n    \"isolation\": isolationValidator,\n    \"justify-content\": justifyContentValidator,\n    \"left\": bottomValidator,\n    \"letter-spacing\": letterSpacingValidator,\n    \"line-break\": lineBreakValidator,\n    \"line-height\": lineHeightValidator,\n    \"list-style-image\": mozBindingValidator,\n    \"list-style-position\": listStylePositionValidator,\n    \"list-style-type\": listStyleTypeValidator,\n    \"margin-block-end\": bottomValidator,\n    \"margin-block-start\": bottomValidator,\n    \"margin-bottom\": bottomValidator,\n    \"margin-inline-end\": bottomValidator,\n    \"margin-inline-start\": bottomValidator,\n    \"margin-left\": bottomValidator,\n    \"margin-right\": bottomValidator,\n    \"margin-top\": bottomValidator,\n    \"marker-offset\": columnWidthValidator,\n    \"mask-composite\": maskCompositeValidator,\n    \"mask-mode\": maskModeValidator,\n    \"mask-origin\": maskOriginValidator,\n    \"mask-position\": backgroundPositionValidator,\n    \"mask-repeat\": webkitMaskRepeatValidator,\n    \"mask-size\": backgroundSizeValidator,\n    \"mask-type\": maskTypeValidator,\n    \"max-block-size\": maxBlockSizeValidator,\n    \"max-height\": maxBlockSizeValidator,\n    \"max-inline-size\": maxBlockSizeValidator,\n    \"max-width\": maxBlockSizeValidator,\n    \"min-block-size\": maxBlockSizeValidator,\n    \"min-height\": maxBlockSizeValidator,\n    \"min-inline-size\": maxBlockSizeValidator,\n    \"min-width\": maxBlockSizeValidator,\n    \"mix-blend-mode\": mixBlendModeValidator,\n    \"motion-offset\": gridColumnGapValidator,\n    \"object-fit\": objectFitValidator,\n    \"object-position\": objectPositionValidator,\n    \"offset-block-end\": bottomValidator,\n    \"offset-block-start\": bottomValidator,\n    \"offset-inline-end\": bottomValidator,\n    \"offset-inline-start\": bottomValidator,\n    \"opacity\": boxFlexValidator,\n    \"order\": mozForceBrokenImageIconValidator,\n    \"orphans\": mozForceBrokenImageIconValidator,\n    \"outline-color\": outlineColorValidator,\n    \"outline-offset\": webkitTextStrokeWidthValidator,\n    \"outline-style\": outlineStyleValidator,\n    \"outline-width\": borderBottomWidthValidator,\n    \"overflow\": overflowValidator,\n    \"overflow-clip-box\": overflowClipBoxValidator,\n    \"overflow-wrap\": overflowWrapValidator,\n    \"overflow-x\": overflowValidator,\n    \"overflow-y\": overflowValidator,\n    \"padding-block-end\": gridColumnGapValidator,\n    \"padding-block-start\": gridColumnGapValidator,\n    \"padding-bottom\": gridColumnGapValidator,\n    \"padding-inline-end\": gridColumnGapValidator,\n    \"padding-inline-start\": gridColumnGapValidator,\n    \"padding-left\": gridColumnGapValidator,\n    \"padding-right\": gridColumnGapValidator,\n    \"padding-top\": gridColumnGapValidator,\n    \"page-break-after\": pageBreakAfterValidator,\n    \"page-break-before\": pageBreakAfterValidator,\n    \"page-break-inside\": webkitColumnBreakInsideValidator,\n    \"perspective\": perspectiveValidator,\n    \"perspective-origin\": objectPositionValidator,\n    \"pointer-events\": pointerEventsValidator,\n    \"position\": positionValidator,\n    \"resize\": resizeValidator,\n    \"right\": bottomValidator,\n    \"ruby-align\": rubyAlignValidator,\n    \"ruby-merge\": rubyMergeValidator,\n    \"ruby-position\": rubyPositionValidator,\n    \"scroll-behavior\": scrollBehaviorValidator,\n    \"scroll-snap-coordinate\": scrollSnapCoordinateValidator,\n    \"scroll-snap-destination\": objectPositionValidator,\n    \"scroll-snap-type\": scrollSnapTypeValidator,\n    \"scroll-snap-type-x\": scrollSnapTypeValidator,\n    \"scroll-snap-type-y\": scrollSnapTypeValidator,\n    \"shape-image-threshold\": boxFlexValidator,\n    \"shape-margin\": gridColumnGapValidator,\n    \"tab-size\": tabSizeValidator,\n    \"table-layout\": tableLayoutValidator,\n    \"text-align\": textAlignValidator,\n    \"text-align-last\": textAlignLastValidator,\n    \"text-decoration-color\": webkitBorderBeforeColorValidator,\n    \"text-decoration-style\": textDecorationStyleValidator,\n    \"text-emphasis-color\": webkitBorderBeforeColorValidator,\n    \"text-orientation\": textOrientationValidator,\n    \"text-rendering\": textRenderingValidator,\n    \"text-shadow\": textShadowValidator,\n    \"text-size-adjust\": textSizeAdjustValidator,\n    \"text-transform\": textTransformValidator,\n    \"top\": bottomValidator,\n    \"transform\": transformValidator,\n    \"transform-box\": transformBoxValidator,\n    \"transform-style\": transformStyleValidator,\n    \"transition-delay\": animationDelayValidator,\n    \"transition-duration\": animationDelayValidator,\n    \"transition-timing-function\": animationTimingFunctionValidator,\n    \"unicode-bidi\": unicodeBidiValidator,\n    \"user-select\": userSelectValidator,\n    \"vertical-align\": verticalAlignValidator,\n    \"visibility\": visibilityValidator,\n    \"white-space\": whiteSpaceValidator,\n    \"widows\": mozForceBrokenImageIconValidator,\n    \"will-change\": willChangeValidator,\n    \"word-break\": wordBreakValidator,\n    \"word-spacing\": wordSpacingValidator,\n    \"word-wrap\": overflowWrapValidator,\n    \"writing-mode\": writingModeValidator,\n    \"z-index\": zIndexValidator\n};\nvar cssGlobals = [\"inherit\", \"initial\", \"revert\", \"unset\"];\nfunction cssValues(property, value) {\n    if (typeof value === 'string') {\n        value = (0, _postcssValueParser2.default)(value);\n    }\n\n    var first = value.nodes[0];\n\n    if (value.nodes.length === 1 && (isKeyword(first, cssGlobals) || isVariable(first))) {\n        return true;\n    }\n\n    if (validators[property]) {\n        if (!!validators[property](value) === false) {\n            return {\n                type: 'invalid',\n                message: '\"' + value + '\" is not a valid value for \"' + property + '\".'\n            };\n        }\n\n        return true;\n    }\n\n    return {\n        type: 'unknown',\n        message: '\"' + property + '\" is not a recognised property.'\n    };\n}\n\nexports.default = cssValues;","/*!\n * ends-with <https://github.com/jonschlinkert/ends-with>\n *\n * Copyright (c) 2014 Jon Schlinkert, contributors.\n * Licensed under the MIT license.\n */\n\n'use strict';\n\nmodule.exports = function (a, b) {\n  if (Array.isArray(a)) {\n    return a[a.length - 1] === b;\n  }\n\n  a = String(a);\n  b = String(b);\n\n  var i = b.length;\n  var len = a.length - i;\n\n  while (i--) {\n    if (b.charAt(i) !== a.charAt(len + i)) {\n      return false;\n    }\n  }\n  return true;\n};","import type { Node, Root } from 'postcss';\n\n/**\n * Rule Name.\n */\nexport const ruleName = 'scale-unlimited/declaration-strict-value';\n\n/**\n * A hash of CSS properties to ignore variables or functions.\n */\nexport interface IgnoreVariableOrFunctionHash {\n  [key: string]: boolean;\n}\n/**\n * Possible config for `ignoreVariables` and `ignoreFunctions` option.\n */\nexport type IgnoreVariableOrFunctionConfig =\n  | boolean\n  | IgnoreVariableOrFunctionHash;\n/**\n * A Regular Expression string to match a CSS property or value.\n */\nexport type RegExpString = string;\n/**\n * A CSS value to be ignored.\n */\nexport type IgnoreValue = number | string | RegExpString;\n/**\n * A list of CSS values to be ignored.\n */\nexport type IgnoreValueList = Array<IgnoreValue>;\n/**\n * A hash of CSS properties with ignored values.\n * - `''` key applies to all configured CSS properties.\n * - key can also be a Regular Expression string.\n */\nexport interface IgnoreValueHash {\n  '': IgnoreValue | IgnoreValueList;\n  [CSSPropertyName: string]: IgnoreValue | IgnoreValueList;\n  // [CSSPropertyName: TRegExpString]: TIgnoreValue | TIgnoreValueList;\n}\n/**\n * @internal\n */\nexport const isIIgnoreValueHash = (\n  key: unknown,\n  value: unknown\n): key is IgnoreValueHash =>\n  typeof key === 'object' && Object.hasOwnProperty.call(key, value);\n/**\n * Possible config for `ignoreValues` and ~~`ignoreKeywords`~~ option.\n */\nexport type IgnoreValueConfig =\n  | null\n  | IgnoreValue\n  | IgnoreValueList\n  | IgnoreValueHash;\n/**\n * Result of CSS value validation.\n */\nexport interface DeclarationStrictValueResult {\n  /**\n   * Whether or not variable is valid.\n   */\n  validVar: boolean;\n\n  /**\n   * Whether or not function is valid.\n   */\n  validFunc: boolean;\n\n  /**\n   * Whether or not keyword is valid.\n   */\n  validKeyword: boolean;\n\n  /**\n   * Whether or not value is valid.\n   */\n  validValue: boolean;\n\n  /**\n   * Longhand CSS Property, if expanded.\n   */\n  longhandProp?: string;\n\n  /**\n   * Longhand CSS value, if expanded.\n   */\n  longhandValue?: string;\n}\n/**\n * A autofix function.\n */\nexport type AutoFixFunc = (\n  node: Node,\n  result: DeclarationStrictValueResult,\n  root: Root,\n  config: SecondaryOptions\n) => string;\n/**\n * Path to autofix function module.\n */\nexport type AutoFixModule = string;\n/**\n * Possible config for `autoFixFunc` option.\n */\nexport type AutoFixFuncConfig = null | undefined | AutoFixModule | AutoFixFunc;\n\n/**\n * Plugin secondary options.\n */\nexport interface SecondaryOptions {\n  /**\n   * Whether or not to ignore variables.\n   *\n   * @defaultValue true\n   */\n  ignoreVariables?: IgnoreVariableOrFunctionConfig;\n\n  /**\n   * Whether or not to ignore function.\n   *\n   * @defaultValue true\n   */\n  ignoreFunctions?: IgnoreVariableOrFunctionConfig;\n\n  /**\n   * An ignored keywords config.\n   *\n   * @defaultValue null\n   * @deprecated use `ignoreValues` option.\n   */\n  ignoreKeywords?: IgnoreValueConfig;\n\n  /**\n   * An ignored values config.\n   *\n   * @defaultValue null\n   */\n  ignoreValues?: IgnoreValueConfig;\n\n  /**\n   * Whether or not to expand shorthand CSS properties.\n   *\n   * @defaultValue false\n   */\n  expandShorthand?: boolean;\n\n  /**\n   * Whether or not to expand longhand CSS properties recursivly - this is only useful for the `border` property.\n   *\n   * @defaultValue false\n   */\n  recurseLonghand?: boolean;\n\n  /**\n   * Adjust severity of the rule, `'warning'` or `'error'` (default).\n   *\n   * @defaultValue 'error'\n   */\n  severity?: string;\n\n  /**\n   * A custom message when a rule is violated, interpolated with `${types}`, `${value}` and `${property}`.\n   *\n   * @defaultValue undefined\n   */\n  message?: string;\n\n  /**\n   * Don't auto-fix if `--fix` option is applied.\n   *\n   * @defaultValue false\n   */\n  disableFix?: boolean;\n\n  /**\n   * By default no auto-fix feature.\n   *\n   * @defaultValue null\n   */\n  autoFixFunc?: AutoFixFuncConfig;\n}\n\nconst defaults: SecondaryOptions = {\n  ignoreVariables: true,\n  ignoreFunctions: true,\n  ignoreKeywords: null,\n  ignoreValues: null,\n  expandShorthand: false,\n  recurseLonghand: false,\n  severity: 'error',\n  message: undefined,\n  disableFix: false,\n  autoFixFunc: null,\n};\n\nexport default defaults;\n","import path from 'path';\n\nimport defaults, {\n  ruleName,\n  SecondaryOptions,\n  IgnoreValue,\n  IgnoreValueList,\n  IgnoreValueHash,\n  IgnoreVariableOrFunctionConfig,\n  IgnoreVariableOrFunctionHash,\n  IgnoreValueConfig,\n  AutoFixFunc,\n  AutoFixFuncConfig,\n  isIIgnoreValueHash,\n} from '../defaults';\n\n/**\n * Check if type is either `number` or `string`.\n *\n * @internal\n * @param value - Any value.\n *\n * @returns Returns `true` if `value`'s type is either `number` or `string`, else `false`.\n */\nfunction isNumberOrString(value: unknown): value is IgnoreValue {\n  const type = typeof value;\n\n  return type === 'string' || type === 'number';\n}\n\n/**\n * Validate primary options of stylelint plugin config.\n *\n * @internal\n * @param actual - The actual config to validate.\n *\n * @returns Returns `true` if primary options are valid, else `false`.\n */\nexport function validProperties(\n  actual: unknown\n): actual is IgnoreValue | IgnoreValueList {\n  return (\n    isNumberOrString(actual) ||\n    (Array.isArray(actual) && actual.every((item) => isNumberOrString(item)))\n  );\n}\n\n/**\n * Validate optional hash keyword config.\n *\n * @internal\n * @param actual - A keyword config.\n *\n * @returns Returns `true` if hash keyword config is valid, else `false`.\n */\nfunction validHash(actual: unknown): actual is IgnoreValueHash {\n  if (typeof actual !== 'object' || !actual) return false;\n\n  return Object.keys(actual).every((key) =>\n    validProperties((actual as IgnoreValueHash)[key as keyof IgnoreValueHash])\n  );\n}\n\n/**\n * Validate optional boolean hash variable/function config.\n *\n * @internal\n * @param actual - A variable/function config.\n *\n * @returns Returns `true` if hash variable/function config is valid, else `false`.\n */\nfunction validBooleanHash(\n  actual: unknown\n): actual is IgnoreVariableOrFunctionHash {\n  if (typeof actual !== 'object' || !actual) return false;\n\n  return Object.keys(actual).every(\n    (key) =>\n      typeof (actual as IgnoreVariableOrFunctionHash)[\n        key as keyof IgnoreVariableOrFunctionHash\n      ] === 'boolean'\n  );\n}\n\n/**\n * Validate optional secondary options of stylelint plugin config.\n *\n * @internal\n * @param actual - The actual config to validate.\n *\n * @returns Returns `true` if secondary options are valid, else `false`.\n */\nexport function validOptions(actual: SecondaryOptions): boolean {\n  if (typeof actual !== 'object') return false;\n\n  const allowedKeys = Object.keys(defaults);\n  if (!Object.keys(actual).every((key) => allowedKeys.indexOf(key) > -1))\n    return false;\n\n  if (\n    'ignoreVariables' in actual &&\n    typeof actual.ignoreVariables !== 'boolean' &&\n    !validBooleanHash(actual.ignoreVariables) &&\n    actual.ignoreVariables !== null\n  )\n    return false;\n\n  if (\n    'ignoreFunctions' in actual &&\n    typeof actual.ignoreFunctions !== 'boolean' &&\n    !validBooleanHash(actual.ignoreFunctions) &&\n    actual.ignoreFunctions !== null\n  )\n    return false;\n\n  if (\n    'severity' in actual &&\n    typeof actual.severity !== 'string' &&\n    actual.severity !== null\n  )\n    return false;\n\n  if (\n    'ignoreKeywords' in actual &&\n    !validProperties(actual.ignoreKeywords) &&\n    !validHash(actual.ignoreKeywords)\n  )\n    return false;\n\n  if (\n    'ignoreValues' in actual &&\n    !validProperties(actual.ignoreValues) &&\n    !validHash(actual.ignoreValues)\n  )\n    return false;\n\n  if (\n    'expandShorthand' in actual &&\n    typeof actual.expandShorthand !== 'boolean' &&\n    actual.expandShorthand !== null\n  )\n    return false;\n\n  if (\n    'recurseLonghand' in actual &&\n    typeof actual.recurseLonghand !== 'boolean' &&\n    actual.recurseLonghand !== null\n  )\n    return false;\n\n  if (\n    'message' in actual &&\n    typeof actual.message !== 'string' &&\n    actual.message !== null\n  )\n    return false;\n\n  if (\n    'disableFix' in actual &&\n    typeof actual.disableFix !== 'boolean' &&\n    actual.disableFix !== null\n  )\n    return false;\n\n  if (\n    'autoFixFunc' in actual &&\n    typeof actual.autoFixFunc !== 'function' &&\n    typeof actual.autoFixFunc !== 'string' &&\n    actual.autoFixFunc !== null\n  )\n    return false;\n\n  return true;\n}\n\n/**\n * Expected type of CSS value, available by configuration.\n * @internal\n */\ntype ExpectedType = 'variable' | 'function' | 'keyword';\n/**\n * Expected types of CSS value, as configured.\n * @internal\n */\ntype ExpectedTypes = Array<ExpectedType>;\n\n/**\n * Build expected message for stylelint report.\n *\n * @internal\n * @param types - Either `variable`, `function` and/or `keyword`.\n *\n * @returns Returns an expected types message for stylelint report.\n */\nexport function expectedTypes(types: ExpectedType | ExpectedTypes): string {\n  let typesMessage: string;\n\n  if (Array.isArray(types)) {\n    const typesLast = types.pop();\n\n    // eslint-disable-next-line no-param-reassign\n    typesMessage = types.length\n      ? `${types.join(', ')} or ${typesLast}`\n      : (typesLast as string);\n  } else {\n    typesMessage = types;\n  }\n\n  return typesMessage;\n}\n\n/**\n * Build expected message for stylelint report.\n *\n * @internal\n * @param typesMessage - An expected types message for stylelint report.\n * @param value - The CSS declaration's value.\n * @param property - The CSS declaration's property.\n *\n * @returns Returns an expected message for stylelint report.\n */\nexport function expected(\n  typesMessage: string,\n  value: string,\n  property: string\n): string {\n  return `Expected ${typesMessage} for \"${value}\" of \"${property}\"`;\n}\n\n/**\n * Build custom expected message for stylelint report.\n *\n * @internal\n * @param typesMessage - An expected types message for stylelint report.\n * @param value - The CSS declaration's value.\n * @param property - The CSS declaration's property.\n * @param customMessage - A custom message to be delivered upon error interpolated with `${types}`, `${value}` and `${property}`.\n *\n * @returns Returns a custom expected message for stylelint report.\n */\nexport function customExpected(\n  typesMessage: string,\n  value: string,\n  property: string,\n  customMessage: string\n): string {\n  /* eslint-disable no-template-curly-in-string */\n  return customMessage\n    .replace('${types}', typesMessage)\n    .replace('${value}', value)\n    .replace('${property}', property);\n  /* eslint-enable no-template-curly-in-string */\n}\n\n/**\n * Build failed-to-fix message for stylelint report.\n *\n * @internal\n * @param error - An expression to `throw`.\n * @param value - The CSS declaration's value.\n * @param property - The CSS declaration's property.\n *\n * @returns Returns an failed-to-fix message for stylelint report.\n */\nexport function failedToFix(\n  error: unknown,\n  value: string,\n  property: string\n): string {\n  if (error && (typeof error === 'string' || error instanceof Error)) {\n    return typeof error === 'string' ? error : error.message;\n  }\n\n  return `Property \"${property}\" with value \"${value}\" can't be autofixed`;\n}\n\n/**\n * Get configured types for stylelint report message.\n *\n * @internal\n * @param config - The secondary stylelint-plugin config.\n * @param property - The specific CSS declaration's property of the current iteration.\n *\n * @returns Returns a list of configured types.\n */\nexport function getTypes(\n  config: SecondaryOptions,\n  property: string\n): ExpectedTypes {\n  const { ignoreVariables, ignoreFunctions, ignoreKeywords, ignoreValues } =\n    config;\n  const types: ExpectedTypes = [];\n\n  if (ignoreVariables) {\n    types.push('variable');\n  }\n\n  if (ignoreFunctions) {\n    types.push('function');\n  }\n\n  if (ignoreKeywords && getIgnoredKeywords(ignoreKeywords, property)) {\n    types.push('keyword');\n  }\n\n  if (\n    types.indexOf('keyword') === -1 &&\n    ignoreValues &&\n    getIgnoredValues(ignoreValues, property)\n  ) {\n    types.push('keyword');\n  }\n\n  return types;\n}\n\n/**\n * Get the correct ignored variable or function for a specific CSS declaration's property\n * out of a complex `ignoreVariablesOrFunctions` config hash or boolean.\n *\n * @internal\n * @param ignoreVariablesOrFunctions - The variables or functions to ignore.\n * @param property - The specific CSS declaration's property of the current iteration.\n *\n * @returns Returns ignored variable or function for a specific CSS property.\n */\nexport function getIgnoredVariablesOrFunctions(\n  ignoreVariablesOrFunctions: IgnoreVariableOrFunctionConfig,\n  property: string\n): boolean {\n  // @see: https://github.com/microsoft/TypeScript/issues/41627\n  // const type = typeof ignoreVariablesOrFunctions\n\n  if (typeof ignoreVariablesOrFunctions === 'boolean') {\n    return ignoreVariablesOrFunctions;\n  }\n\n  if (\n    typeof ignoreVariablesOrFunctions === 'object' &&\n    ignoreVariablesOrFunctions &&\n    {}.hasOwnProperty.call(ignoreVariablesOrFunctions, property)\n  ) {\n    return ignoreVariablesOrFunctions[property];\n  }\n\n  return !!ignoreVariablesOrFunctions;\n}\n\n/**\n * Get the correct ignored keywords for a specific CSS declaration's property\n * out of a complex `ignoreKeywords` config hash or array.\n *\n * @internal\n * @param ignoreKeywords - The keyword/-s to ignore.\n * @param property - The specific CSS declaration's property of the current iteration.\n *\n * @returns Returns ignored keywords for a specific CSS property, or `null`.\n */\nexport function getIgnoredKeywords(\n  ignoreKeywords: IgnoreValueConfig,\n  property: string\n): null | IgnoreValueList {\n  if (!ignoreKeywords) return null;\n\n  let keywords = ignoreKeywords;\n\n  if (isIIgnoreValueHash(keywords, property)) {\n    keywords = keywords[property];\n  } else if (isIIgnoreValueHash(keywords, '')) {\n    keywords = keywords[''];\n  }\n\n  return Array.isArray(keywords) ? keywords : [keywords];\n}\n\n/**\n * Get the correct ignored values for a specific CSS declaration's property\n * out of a complex `ignoreValues` config hash or array.\n *\n * @internal\n * @param ignoreValues - The values/-s to ignore.\n * @param property - The specific CSS declaration's property of the current iteration.\n * @returns Returns ignored values for a specific CSS property, or `null`.\n */\nexport function getIgnoredValues(\n  ignoreValues: IgnoreValueConfig,\n  property: string\n): null | IgnoreValueList {\n  if (!ignoreValues) return null;\n\n  let values = ignoreValues;\n\n  if (isIIgnoreValueHash(values, property)) {\n    values = values[property];\n  } else if (isIIgnoreValueHash(values, '')) {\n    values = values[''];\n  }\n\n  return Array.isArray(values) ? values : [values];\n}\n\n/**\n * Get the auto-fix function either by a function directly or from a source file.\n *\n * @internal\n * @param autoFixFunc - A JavaScript function or a module path to resolve it, also from `cwd`.\n *\n * @returns Returns the auto-fix function if found, else `null`.\n */\nexport function getAutoFixFunc(\n  autoFixFunc: AutoFixFuncConfig,\n  disableFix?: boolean,\n  contextFix?: boolean\n): null | AutoFixFunc {\n  // @see: https://github.com/microsoft/TypeScript/issues/41627\n  // const type = typeof autoFixFunc\n\n  if (typeof autoFixFunc === 'function') {\n    return autoFixFunc;\n  }\n\n  if (typeof autoFixFunc === 'string') {\n    let resolveAutoFixfunc;\n\n    try {\n      resolveAutoFixfunc = require.resolve(autoFixFunc);\n    } catch (error) {\n      resolveAutoFixfunc = require.resolve(\n        path.join(process.cwd(), autoFixFunc)\n      );\n    }\n\n    // eslint-disable-next-line import/no-dynamic-require, global-require\n    return require(resolveAutoFixfunc);\n  }\n\n  if (!disableFix && contextFix) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      `No \\`autoFix\\` function provided, consider using \\`disableFix\\` for \"${ruleName}\"`\n    );\n  }\n\n  return null;\n}\n","import process from 'node:process';\nimport { ruleName } from './defaults';\n\n// internal warning code\n// @see: https://github.com/stylelint/stylelint/blob/3a903800248fcccd4968e8e0dc4a76a4d8b88ff4/lib/utils/emitDeprecationWarning.mjs#L3-L11\nconst STYLELINT_DEPRECATION_WARNING_PREFIX = 'stylelint:';\n\ntype Warning = Error & {\n  code: string;\n};\n\n/**\n * Quiet all stylelint related deprecation warnings like `context.fix` or `utils.report` API.\n */\nexport default function unsafeQuietStylelintDeprecationWarning(): void {\n  const original = process.emitWarning;\n  process.emitWarning = function emitWarning(...args) {\n    const [message, options] = args;\n\n    if (\n      options &&\n      typeof options === 'object' &&\n      options?.type === 'DeprecationWarning' &&\n      options?.code?.startsWith(STYLELINT_DEPRECATION_WARNING_PREFIX) &&\n      ((message &&\n        typeof message === 'string' &&\n        message?.includes(ruleName)) ||\n        options?.detail?.includes(ruleName))\n    ) {\n      return;\n    }\n\n    original.apply(process, args);\n  };\n}\n","import type { Declaration, Root, AtRule } from 'postcss';\nimport stylelint, { PostcssResult, Rule, RuleMeta } from 'stylelint';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport shortCSS from 'shortcss';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport list from 'shortcss/lib/list';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport cssValues from 'css-values';\n\nimport {\n  validProperties,\n  validOptions,\n  expectedTypes,\n  customExpected,\n  expected,\n  getTypes,\n  getIgnoredVariablesOrFunctions,\n  getIgnoredKeywords,\n  getIgnoredValues,\n  getAutoFixFunc,\n  failedToFix,\n} from './lib/validation';\nimport defaults, {\n  ruleName,\n  SecondaryOptions,\n  IgnoreValue,\n  RegExpString,\n} from './defaults';\nimport unsafeQuietStylelintDeprecationWarning from './unsafe-quiet-stylelint-deprecation-warning';\n\nunsafeQuietStylelintDeprecationWarning();\n\nconst { utils } = stylelint;\nconst meta: RuleMeta = {\n  url: 'https://github.com/AndyOGo/stylelint-declaration-strict-value/blob/master/README.md',\n  fixable: true,\n};\nconst messages = utils.ruleMessages(ruleName, {\n  expected,\n  customExpected,\n  failedToFix,\n});\n/**\n * RegExp to skip non-CSS properties.\n *\n * @internal\n */\nconst reSkipProp = /^(?:@|\\$|--).+$/;\n/**\n * RegExp to parse CSS, SCSS and less variables.\n * - allowing CSS variables to be multi line\n * - Sass namespaces and CSS <ident-token> supported\n *\n * @internal\n * @see https://github.com/sass/sass/blob/master/accepted/module-system.md#member-references\n * @see  https://drafts.csswg.org/css-syntax-3/#ident-token-diagram\n */\n// eslint-disable-next-line no-control-regex\nconst reVar =\n  /^-?(?:@.+|(?:(?:[a-zA-Z_-]|[^\\x20-\\x7F])+(?:[a-zA-Z0-9_-]|[^\\x20-\\x7F])*\\.)?\\$.+|var\\(\\s*--[\\s\\S]+\\))$/;\n/**\n * RegExp to parse functions.\n * - irgnoring CSS variables `var(--*)`\n * - allow multi line arguments\n *\n * @internal\n */\nconst reFunc = /^(?!var\\(\\s*--)[\\s\\S]+\\([\\s\\S]*\\)$/;\n/**\n * RegExp to parse regular expressions.\n * - supporting patterns\n * - and optional flags\n *\n * @internal\n */\nconst reRegex = /^\\/(.*)\\/([a-zA-Z]*)$/;\n/**\n * @internal\n */\nconst reColorProp = /color/;\ntype RegExpArray = [string, string?];\n/**\n * Checks if string is a Regular Expression.\n *\n * @internal\n * @param value - Any string.\n */\nconst checkCssValue = (prop: string, value: string) =>\n  (reColorProp.test(prop) && value === 'transparent') ||\n  reVar.test(value) ||\n  reFunc.test(value) ||\n  cssValues(prop, value);\nconst isRegexString = (value: string): value is RegExpString =>\n  reRegex.test(value);\n/**\n * Get pattern and flags of a Regular Expression string.\n *\n * @internal\n * @param value - Any string representing a Regular Expression.\n * @returns An Array of pattern and flags of a Regular Expression string.\n */\nconst getRegexString = (value: string): RegExpArray =>\n  value.match(reRegex)!.slice(1) as RegExpArray;\n/**\n * Convert a Regular Expression string to an RegExp object.\n *\n * @internal\n * @param value - Any string representing a Regular Expression.\n * @returns A Regular Expression object.\n */\nconst stringToRegex = (value: RegExpString) => {\n  const [pattern, flags] = getRegexString(value);\n  return new RegExp(pattern, flags);\n};\n/**\n * Map ignored value config to a Regular expression.\n *\n * @internal\n * @param ignoreValue - A ignored value property.\n * @returns A Regular Expression to match ignored values.\n */\nconst mapIgnoreValue = (ignoreValue: IgnoreValue) =>\n  isRegexString(`${ignoreValue}`)\n    ? stringToRegex(`${ignoreValue}`)\n    : new RegExp(`^${ignoreValue}$`);\n\n/**\n * A string or regular expression matching a CSS property name.\n */\ntype CSSPropertyName = string | RegExpString;\n\n/**\n * Primary options, a CSS property or list of CSS properties to lint.\n * - Regular Expression strings are supported\n */\ntype PrimaryOptions = CSSPropertyName | CSSPropertyName[];\n\ntype RuleContext = {\n  fix?: boolean | undefined;\n  newline?: string | undefined;\n};\n\n/**\n * Stylelint declaration strict value rule function.\n *\n * @see https://stylelint.io/developer-guide/plugins\n * @param properties - Primary options, a CSS property or list of CSS properties to lint.\n * @param options- Secondary options, configure edge cases.\n * @param context - Only used for autofixing.\n *\n * @returns Returns a PostCSS Plugin.\n */\ntype StylelintPlugin<P = unknown, S = unknown> = Rule<P, S>;\n\nconst ruleFunction: StylelintPlugin<PrimaryOptions, SecondaryOptions> =\n  (\n    properties: PrimaryOptions,\n    options: SecondaryOptions,\n    context: RuleContext = {}\n  ) =>\n  (root: Root, result: PostcssResult) => {\n    // fix #142\n    // @see https://github.com/stylelint/stylelint/pull/672/files#diff-78f1c80ffb2836008dd194b3b0ca28f9b46e4897b606f0b3d25a29e57a8d3e61R74\n    // @see https://stylelint.io/user-guide/configure#message\n    /* eslint-disable @typescript-eslint/no-explicit-any */\n    if (\n      result &&\n      (result as any).stylelint &&\n      (result as any).stylelint.customMessages &&\n      (result as any).stylelint.customMessages[ruleName]\n    ) {\n      // eslint-disable-next-line no-param-reassign\n      delete (result as any).stylelint.customMessages[ruleName];\n    }\n    /* eslint-enable @typescript-eslint/no-explicit-any */\n\n    // validate stylelint plugin options\n    const hasValidOptions = utils.validateOptions(\n      result,\n      ruleName,\n      {\n        actual: properties,\n        possible: validProperties,\n      },\n      {\n        actual: options,\n        possible: validOptions,\n        optional: true,\n      }\n    );\n\n    if (!hasValidOptions) return;\n\n    // normalize options\n    if (!Array.isArray(properties)) {\n      // eslint-disable-next-line no-param-reassign\n      properties = [properties];\n    }\n\n    const config: SecondaryOptions = {\n      ...defaults,\n      ...options,\n    };\n    const {\n      ignoreVariables,\n      ignoreFunctions,\n      ignoreKeywords,\n      ignoreValues,\n      message,\n      disableFix,\n      autoFixFunc,\n      expandShorthand,\n      recurseLonghand,\n    } = config;\n    const autoFixFuncNormalized = getAutoFixFunc(\n      autoFixFunc,\n      disableFix,\n      context.fix\n    );\n    /**\n     * A hash of regular expression to ignore for a CSS properties.\n     * @internal\n     */\n    interface RegExpMap {\n      // [key: CSSPropertyName]: RegExp;\n      [key: string]: RegExp;\n    }\n    /**\n     * A hash of regular expression to ignore for a CSS properties or `null`.\n     * @internal\n     */\n    type RegExpKeywordMap = null | RegExpMap;\n    /**\n     * A hash of regular expression lists to ignore for a CSS property.\n     * @internal\n     */\n    interface RegExpList {\n      // [key: CSSPropertyName]: RegExp[];\n      [key: string]: RegExp[];\n    }\n    /**\n     * A hash of regular expression lists to ignore for a CSS property or `null`.\n     * @internal\n     */\n    type RegExpValuesList = null | RegExpList;\n    const reKeywords: RegExpKeywordMap = ignoreKeywords ? {} : null;\n    const reValues: RegExpValuesList = ignoreValues ? {} : null;\n    let cssLoaderValues: RegExp;\n\n    if (ignoreVariables) {\n      const cssLoaderValuesNames: string[] = [];\n      root.walkAtRules('value', (rule: AtRule) => {\n        const { params } = rule;\n        const name = params.split(':')[0].trim();\n\n        cssLoaderValuesNames.push(name);\n      });\n\n      cssLoaderValues = new RegExp(`^-?(:?${cssLoaderValuesNames.join('|')})$`);\n    }\n\n    // loop through all properties\n    properties.forEach((property) => {\n      let propFilter: string | RegExp = property;\n\n      // parse RegExp\n      if (isRegexString(propFilter)) {\n        propFilter = stringToRegex(propFilter);\n      }\n\n      // walk through all declarations filtered by configured properties\n      root.walkDecls(filterDecl);\n\n      /**\n       * Filter declarations for matching properties and expand shorthand properties.\n       *\n       * @internal\n       * @param node - A Declaration-Node from PostCSS AST-Parser.\n       */\n      function filterDecl(node: Declaration) {\n        const { value, prop } = node;\n\n        // skip variable declarations\n        if (reSkipProp.test(prop)) return;\n\n        const isShortHand = expandShorthand && shortCSS.isShorthand(prop);\n\n        if (\n          prop === propFilter ||\n          (!isShortHand &&\n            propFilter instanceof RegExp &&\n            propFilter.test(prop))\n        ) {\n          const values: string[] = list.space(value);\n\n          // handle multi-value props, like scrollbar-color\n          if (values.length > 1) {\n            let failedFlag = false;\n\n            values.forEach((valueItem) => {\n              if (!failedFlag) {\n                failedFlag = lintDeclStrictValue(node, prop, valueItem);\n              }\n            });\n          } else {\n            lintDeclStrictValue(node);\n          }\n        } else if (isShortHand) {\n          const expandedProps = shortCSS.expand(prop, value, recurseLonghand);\n          let failedFlag = false;\n\n          Object.keys(expandedProps).forEach((longhandProp) => {\n            const longhandValue = expandedProps[longhandProp];\n\n            if (\n              !failedFlag &&\n              (longhandProp === propFilter ||\n                (propFilter instanceof RegExp && propFilter.test(longhandProp)))\n            ) {\n              failedFlag = lintDeclStrictValue(\n                node,\n                longhandProp,\n                longhandValue,\n                true\n              );\n            }\n          });\n        }\n      }\n\n      /**\n       * Lint usages of declarations values against, variables, functions\n       * or custom keywords - as configured.\n       *\n       * @internal\n       * @param node - A Declaration-Node from PostCSS AST-Parser.\n       * @param longhandProp - A Declaration-Node from PostCSS AST-Parser.\n       * @param longhandValue - A Declaration-Node from PostCSS AST-Parser.\n       * @param isExpanded - Whether or not this declaration was expanded.\n       * @returns Returns `true` if invalid declaration found, else `false`.\n       */\n      function lintDeclStrictValue(\n        node: Declaration,\n        longhandProp?: string,\n        longhandValue?: string,\n        isExpanded = false\n      ) {\n        const { value: nodeValue, prop: nodeProp } = node;\n        const value = longhandValue || nodeValue;\n\n        // falsify everything by default\n        let validVar = false;\n        let validFunc = false;\n        let validKeyword = false;\n        let validValue = false;\n\n        // test variable\n        if (ignoreVariables) {\n          // @TODO: deviant regexes to primary options need to be evaluated\n          const ignoreVariable = getIgnoredVariablesOrFunctions(\n            ignoreVariables,\n            property\n          );\n\n          if (ignoreVariable) {\n            validVar = reVar.test(value) || cssLoaderValues.test(value);\n          }\n        }\n\n        // test function\n        if (ignoreFunctions && !validVar) {\n          // @TODO: deviant regexes to primary options need to be evaluated\n          const ignoreFunction = getIgnoredVariablesOrFunctions(\n            ignoreFunctions,\n            property\n          );\n\n          if (ignoreFunction) {\n            validFunc = reFunc.test(value);\n          }\n        }\n\n        // test expanded shorthands are valid\n        if (\n          isExpanded &&\n          (!ignoreVariables || (ignoreVariables && !validVar)) &&\n          (!ignoreFunctions || (ignoreFunctions && !validFunc)) &&\n          checkCssValue(longhandProp!, longhandValue!) !== true\n        ) {\n          return false;\n        }\n\n        // test keywords\n        if (ignoreKeywords && (!validVar || !validFunc)) {\n          let reKeyword = reKeywords![property];\n\n          if (!reKeyword) {\n            const ignoreKeyword = getIgnoredKeywords(ignoreKeywords, property);\n\n            if (ignoreKeyword) {\n              reKeyword = new RegExp(`^${ignoreKeyword.join('$|^')}$`);\n              reKeywords![property] = reKeyword;\n            }\n          }\n\n          if (reKeyword) {\n            validKeyword = reKeyword.test(value);\n          }\n        }\n\n        if (ignoreValues && (!validVar || !validFunc || !validKeyword)) {\n          let reValueList = reValues![property];\n\n          if (!reValueList) {\n            const ignoreValue = getIgnoredValues(ignoreValues, property);\n\n            if (ignoreValue) {\n              reValueList = ignoreValue.map(mapIgnoreValue);\n              reValues![property] = reValueList;\n            }\n          }\n\n          if (reValueList) {\n            validValue =\n              reValueList.filter((reValue) => reValue.test(value)).length > 0;\n          }\n        }\n\n        // report only if all failed\n        if (!validVar && !validFunc && !validKeyword && !validValue) {\n          const types = getTypes(config, property);\n\n          // support auto fixing\n          if (context.fix && !disableFix && autoFixFuncNormalized) {\n            try {\n              const fixedValue = autoFixFuncNormalized(\n                node,\n                {\n                  validVar,\n                  validFunc,\n                  validKeyword,\n                  validValue,\n                  longhandProp,\n                  longhandValue,\n                },\n                root,\n                config\n              );\n\n              // apply fixed value if returned\n              if (fixedValue) {\n                // eslint-disable-next-line no-param-reassign\n                node.value = fixedValue;\n              }\n            } catch (error) {\n              const { raws } = node;\n              // eslint-disable-next-line prefer-destructuring\n              const start = node.source!.start;\n\n              utils.report({\n                ruleName,\n                result,\n                node,\n                line: start!.line,\n                column: start!.column + nodeProp.length + raws.between!.length,\n                message: messages.failedToFix(error, value, nodeProp),\n              } as any);\n            }\n          } else {\n            const { raws } = node;\n            // eslint-disable-next-line prefer-destructuring\n            const start = node.source!.start;\n\n            utils.report({\n              ruleName,\n              result,\n              node,\n              line: start!.line,\n              column: start!.column + nodeProp.length + raws.between!.length,\n              message: message\n                ? messages.customExpected(\n                    expectedTypes(types),\n                    value,\n                    nodeProp,\n                    message\n                  )\n                : messages.expected(expectedTypes(types), value, nodeProp),\n            } as any);\n          }\n\n          return true;\n        }\n\n        return false;\n      }\n    });\n  };\n\nruleFunction.primaryOptionArray = true;\nruleFunction.ruleName = ruleName;\nruleFunction.messages = messages;\nruleFunction.meta = meta;\n\nconst declarationStrictValuePlugin = stylelint.createPlugin(\n  ruleName,\n  ruleFunction\n);\n\nexport default declarationStrictValuePlugin;\nexport { ruleName, messages, meta, ruleFunction as rule };\n"],"names":["SPACES","COMMAS","list","module","exports","split","string","separators","last","array","current","func","quote","escape","i","length","letter","indexOf","push","trim","space","comma","props","shorthandProperties","margin","outline","padding","background","border","font","flex","grid","mask","columns","cue","pause","rest","animation","transition","isShorthand","property","hasOwnProperty","expand","recurse","map","p","longhand","substr","undefined","this","cssShorthandProps","require$$0","value","ASSERT","arguments","expandAsArray","expandAsObject","reduce","res","cur","concat","subs","j","l","jl","recRes","keys","Object","ri","rl","openParentheses","charCodeAt","closeParentheses","singleQuote","doubleQuote","backslash","slash","colon","star","walk","nodes","cb","bubble","max","node","result","type","Array","isArray","stringifyNode","custom","buf","customResult","unclosed","before","after","stringify","stringify_1","minus","plus","dot","exp","EXP","ValueParser","input","next","prev","token","escapePos","whitespacePos","parent","tokens","pos","code","stack","balanced","name","slice","sourceIndex","pop","parse","prototype","toString","unit","dotted","sciPos","containsNumber","number","lib","_postcssValueParser2","_interopRequireDefault","_postcssValueParser","_cssColorNames2","_endsWith2","a","b","String","len","charAt","obj","__esModule","default","lowercase","toLowerCase","isKeyword","_ref","values","isFunction","isVariable","isKeywordFactory","keywords","parsed","isUrl","isInteger","int","isComma","isNumber","isNaN","isPercentage","namedColours","isColor","valid","child","index","even","isRgb","isRgba","isHsl","isHsla","range","parseInt","isHex","isNamedColor","isCurrentColor","brStyles","isBrStyle","isSpace","angles","isAngle","units","isTime","operators","operatorsRegExp","lengths","isLength","lastNonSpaceValue","test","isCalc","brWidths","isBrWidth","attachments","singleValues","multipleValues","singleAnimationDirections","singleAnimationFillModes","isValid","isInvalid","isCodepoint","isCustomIdent","singleAnimationPlayStates","stepsKeywords","numberPercentages","blendValues","isBlendMode","boxes","isBox","getArguments","isLengthPercentage","left$1","center","right$1","top$1","bottom$1","horizontals$1","verticals$1","isKeywordOrVar","isLengthPercentageOrVar","validateGroup","group","isPositionFactory","repeating","every","resolutions","isString","validateImageSet","isImage","isResolution","isMultiplier","isColourStop","verticals","horizontals","directions","at","circle","ellipse","endingShapes","extentKeywords","isRadialGradientPosition","isAt","_ref2","isImageFunction","isImageSet","_node$nodes$","isElement","isCrossFade","colours","colour","isLinearGradient","firstIsEndingShape","firstIsLength","firstIsExtent","position2","firstIsCircle","secondIsExtent","secondIsEndingShape","firstIsEllipse","firstIsLP","secondIsLP","thirdIsLP","position4","position6","position8","isRadialGradient","isGradient","sizeKeywords","auto","validateNode","validateGroup$1","absoluteSizes","relativeSizes","isFlex","keywords$1","symbolTypes","compositingOperators","maskingModes","geometryBoxes","nonStandardKeywords","validateShadow","hasColor","hasLength","hasVariable","startsWithLength","matrix","matrix3d","isMultipleValue","fn","isTranslate","isScale","isSkew","isSingleValidator","isSingleLP","isSingleNumber","isSingleAngle","isSingleLength","animateableFeatures","msOverflowStyleValidator","mozAppearanceValidator","mozBindingValidator","mozFloatEdgeValidator","mozForceBrokenImageIconValidator","mozOrientValidator","mozStackSizingValidator","mozTextBlinkValidator","mozUserFocusValidator","mozUserInputValidator","mozUserModifyValidator","mozWindowShadowValidator","webkitBorderBeforeColorValidator","webkitBorderBeforeStyleValidator","webkitBorderBeforeWidthValidator","webkitMaskAttachmentValidator","isAttachment","webkitMaskRepeatValidator","some","n","webkitMaskRepeatXValidator","webkitTextStrokeWidthValidator","webkitTouchCalloutValidator","alignContentValidator","msFlexLinePackValidator","msFlexAlignValidator","alignItemsValidator","alignSelfValidator","msFlexItemAlignValidator","allValidator","animationDelayValidator","animationTimingFunctionValidator","isTimingKeyword","one","two","isSteps","isValidAbscissa","isCubicBezier","isSingleTransitionTimingFunction","appearanceValidator","backdropFilterValidator","isBlur","isDropShadow","isHueRotate","isNumberOrPercentage","isFilterFunction","isFilterFunctionList","backfaceVisibilityValidator","backgroundClipValidator","backgroundPositionValidator","backgroundSizeValidator","borderBottomLeftRadiusValidator","borderBottomStyleValidator","borderBottomWidthValidator","borderCollapseValidator","bottomValidator","boxAlignValidator","boxDecorationBreakValidator","boxDirectionValidator","boxFlexValidator","boxLinesValidator","boxOrientValidator","boxPackValidator","boxSizingValidator","boxSuppressValidator","pageBreakAfterValidator","webkitColumnBreakInsideValidator","captionSideValidator","clearValidator","columnCountValidator","columnFillValidator","columnGapValidator","columnSpanValidator","columnWidthValidator","directionValidator","displayValidator","displayInsideValidator","displayListValidator","displayOutsideValidator","emptyCellsValidator","mozBoxOrientValidator","mozBoxDirectionValidator","flexDirectionValidator","flexWrapValidator","floatValidator","fontKerningValidator","fontLanguageOverrideValidator","fontStretchValidator","fontStyleValidator","fontVariantCapsValidator","fontVariantPositionValidator","fontWeightValidator","gridAutoColumnsValidator","firstChild","secondChild","thirdChild","isMinMax","gridColumnGapValidator","hyphensValidator","imageRenderingValidator","msInterpolationModeValidator","imeModeValidator","initialLetterAlignValidator","isolationValidator","mozBoxPackValidator","justifyContentValidator","msFlexPackValidator","lineBreakValidator","listStylePositionValidator","maskTypeValidator","maxBlockSizeValidatorKeywords","maxBlockSizeValidator","objectFitValidator","objectPositionValidator","overflowValidator","overflowClipBoxValidator","overflowWrapValidator","perspectiveValidator","pointerEventsValidator","positionValidator","resizeValidator","rubyAlignValidator","rubyMergeValidator","rubyPositionValidator","scrollBehaviorValidator","scrollSnapCoordinateValidator","scrollSnapTypeValidator","tableLayoutValidator","textAlignValidator","textAlignLastValidator","textDecorationStyleValidator","textOrientationValidator","textRenderingValidator","textSizeAdjustValidatorKeywords","textSizeAdjustValidator","textTransformValidator","transformValidator","isMatrix","isRotate3d","isScale3d","isTranslate3d","validateNode$1","isTransformList","transformBoxValidator","transformStyleValidator","unicodeBidiValidator","userSelectValidator","verticalAlignValidatorKeywords","visibilityValidator","whiteSpaceValidator","wordBreakValidator","writingModeValidator","validators","all","isSingleAnimationDirection","isSingleAnimationFillMode","isSingleAnimationIterationCount","isSingleAnimationName","isSingleAnimationPlayState","appearance","isBgImage","bottom","clear","color","direction","display","filter","float","isAbsoluteSize","isRelativeSize","hyphens","isolation","left","validSym","isSymbols","isCounterStyle","isCompositingOperator","isMaskingMode","isGeometryBox","opacity","order","orphans","overflow","perspective","position","resize","right","isShadowT","top","transform","visibility","widows","isAnimateableFeature","cssGlobals","ruleName","isIIgnoreValueHash","key","call","defaults","ignoreVariables","ignoreFunctions","ignoreKeywords","ignoreValues","expandShorthand","recurseLonghand","severity","message","disableFix","autoFixFunc","isNumberOrString","validProperties","actual","item","validHash","validBooleanHash","validOptions","allowedKeys","expectedTypes","types","typesMessage","typesLast","join","getIgnoredVariablesOrFunctions","ignoreVariablesOrFunctions","getIgnoredKeywords","getIgnoredValues","unsafeQuietStylelintDeprecationWarning","original","process","emitWarning","args","_options$code","_options$detail","options","startsWith","includes","detail","apply","utils","stylelint","meta","url","fixable","messages","ruleMessages","expected","customExpected","customMessage","replace","failedToFix","error","Error","reSkipProp","reVar","reFunc","reRegex","isRegexString","stringToRegex","pattern","flags","match","getRegexString","mapIgnoreValue","ignoreValue","properties","context","root","customMessages","validateOptions","possible","optional","config","_extends","autoFixFuncNormalized","getAutoFixFunc","contextFix","resolveAutoFixfunc","require","resolve","path","cwd","console","warn","fix","reValues","cssLoaderValues","cssLoaderValuesNames","walkAtRules","rule","params","RegExp","forEach","propFilter","lintDeclStrictValue","longhandProp","longhandValue","isExpanded","nodeValue","prop","nodeProp","validVar","validFunc","validKeyword","validValue","reColorProp","first","cssValues","checkCssValue","reKeyword","reKeywords","ignoreKeyword","reValueList","reValue","getTypes","fixedValue","raws","start","source","report","line","column","between","walkDecls","shortCSS","isShortHand","failedFlag","valueItem","expandedProps","ruleFunction","primaryOptionArray","declarationStrictValuePlugin","createPlugin"],"mappings":"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"}