require("source-map-support").install();
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 30);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */,
/* 1 */,
/* 2 */,
/* 3 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.normalizePath = normalizePath;
exports.getRootExpression = getRootExpression;
exports.getNodeReference = getNodeReference;
exports.getVariable = getVariable;
exports.getLocale = getLocale;
exports.getI18Data = getI18Data;
exports.buildI18nObject = buildI18nObject;
exports.checkMinNodeVersion = checkMinNodeVersion;
exports.getPackageTypeAsString = getPackageTypeAsString;
exports.ignorePrivateFunctions = ignorePrivateFunctions;
exports.ensureFilenameExists = ensureFilenameExists;
exports.isLocalUrl = isLocalUrl;
exports.apiToMessage = apiToMessage;
exports.isBrowserNamespace = isBrowserNamespace;
exports.parseCspPolicy = parseCspPolicy;
exports.getLineAndColumnFromMatch = getLineAndColumnFromMatch;
exports.couldBeMinifiedCode = couldBeMinifiedCode;
exports.firefoxStrictMinVersion = firefoxStrictMinVersion;
exports.basicCompatVersionComparison = basicCompatVersionComparison;
exports.isCompatible = isCompatible;
exports.createCompatibilityRule = createCompatibilityRule;
exports.i18n = void 0;

var _regenerator = _interopRequireDefault(__webpack_require__(5));

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(7));

var _url = _interopRequireDefault(__webpack_require__(8));

var _upath = _interopRequireDefault(__webpack_require__(9));

var _whatwgUrl = __webpack_require__(10);

var _jed2 = _interopRequireDefault(__webpack_require__(11));

var _semver = _interopRequireDefault(__webpack_require__(12));

var _commonTags = __webpack_require__(13);

var _osLocale = _interopRequireDefault(__webpack_require__(14));

var _logger = _interopRequireDefault(__webpack_require__(15));

var _const = __webpack_require__(17);

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Node version must be ", " or\n                    greater. You are using ", "."]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }

function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }

function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

/* global nodeRequire, localesRoot */
var SOURCE_MAP_RE = new RegExp(/\/\/[#@]\s(source(?:Mapping)?URL)=\s*(\S+)/);

function normalizePath(iconPath) {
  // Convert the icon path to a URL so we can strip any fragments and resolve
  // . and .. automatically. We need an absolute URL to use as a base so we're
  // using https://example.com/.
  var _URL = new _whatwgUrl.URL(iconPath, 'https://example.com/'),
      pathname = _URL.pathname; // Convert filename to unix path separator (as the ones stored
  // into the scanned files map).


  return _upath["default"].toUnix(decodeURIComponent(pathname).slice(1));
}
/*
 * Takes an AST node and returns the root property.
 *
 * example: foo().bar.baz() will return the AST node for foo.
 */


function getRootExpression(node) {
  var root = node.callee; // If we encounter a member, grab the parent

  if (node.callee.type === 'MemberExpression') {
    var parent = node.callee.object;

    while (parent.type !== 'Identifier') {
      if (parent.callee.type === 'MemberExpression') {
        parent = parent.callee.object;
      } else {
        parent = parent.callee;
      }
    }

    root = parent;
  }

  return root;
}
/*
 * Returns the name of the reference node passed.
 *
 * example: var foo = document;
 *  The node for foo will return 'document'
 */


function getNodeReference(context, node) {
  var _context$getScope = context.getScope(),
      variables = _context$getScope.variables;

  var scopeVar; // Just return the value if the node passed in is a reference to a literal.

  if (typeof node === 'undefined' || node.type === 'Literal') {
    return node;
  } // Finds variable reference in current scope.


  for (var i = 0; i < variables.length; i++) {
    var variable = variables[i];

    if (variable.name === node.name) {
      scopeVar = variable;
      break;
    }
  }

  if (scopeVar && scopeVar.defs && scopeVar.defs[0] && scopeVar.defs[0].parent && scopeVar.defs[0].parent.parent && scopeVar.defs[0].parent.parent.body) {
    // This represents all occurrences of the variable
    var occurances = scopeVar.defs[0].parent.parent.body;
    var lastAssignment;

    if (occurances instanceof Array) {
      occurances.forEach(function (occurance) {
        if (occurance.type === 'VariableDeclaration' && occurance.declarations[0].init !== null) {
          // Get what the name of what it was assigned to or the raw
          // value depending on the initalization
          lastAssignment = occurance.declarations[0].init;
        } else if (occurance.type === 'ExpressionStatement' && occurance.expression.type === 'AssignmentExpression') {
          // Get the right hand side of the assignment
          lastAssignment = occurance.expression.right;
        }
      });
    } // Return the name of the first definition of the variable which
    // corresponds to the node passed in.


    if (lastAssignment) {
      return lastAssignment;
    }
  } // If that variable doesn't exist in scope, then just return the node's
  // name.


  return node;
}
/*
 * Get a variable from a eslint context object if it exists, otherwise
 * undefined.
 */


function getVariable(context, name) {
  var _context$getScope2 = context.getScope(),
      variables = _context$getScope2.variables;

  var result;
  variables.forEach(function (variable) {
    if (variable.name === name && variable.defs && variable.defs[0] && variable.defs[0].name && variable.defs[0].name.parent) {
      result = variable.defs[0].name.parent.init;
    }
  });
  return result;
}

function getLocale() {
  return _osLocale["default"].sync();
}

function getI18Data(locale) {
  var i18ndata = {};

  try {
    // eslint-disable-next-line global-require, import/no-dynamic-require
    i18ndata = nodeRequire("".concat(localesRoot, "/").concat(locale, "/messages.js"));
  } catch (err) {
    _logger["default"].info('Initialize locales using extract-locales command');
  }

  return i18ndata;
}
/*
 * Gettext utils. Used for translating strings.
 */


function buildI18nObject(i18nData) {
  var _jed = new _jed2["default"](i18nData);

  return {
    jed: _jed,
    getI18Data: getI18Data,
    _: function _(str) {
      return _jed.gettext(str);
    },
    gettext: function gettext(str) {
      return _jed.gettext(str);
    },
    sprintf: function sprintf(fmt, args) {
      return _jed.sprintf(fmt, args);
    }
  };
}

var i18n = buildI18nObject(getI18Data(getLocale()));
/*
 * Check the minimum node version is met
 */

exports.i18n = i18n;

function checkMinNodeVersion(_x) {
  return _checkMinNodeVersion.apply(this, arguments);
}

function _checkMinNodeVersion() {
  _checkMinNodeVersion = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(minVersion) {
    var _process,
        _args = arguments;

    return _regenerator["default"].wrap(function _callee$(_context) {
      while (1) {
        switch (_context.prev = _context.next) {
          case 0:
            _process = _args.length > 1 && _args[1] !== undefined ? _args[1] : process;
            // eslint-disable-next-line no-param-reassign
            minVersion = minVersion || '0.12.0';

            if (_semver["default"].gte(_process.version, minVersion)) {
              _context.next = 4;
              break;
            }

            throw new Error((0, _commonTags.oneLine)(_templateObject(), minVersion, _process.version));

          case 4:
          case "end":
            return _context.stop();
        }
      }
    }, _callee);
  }));
  return _checkMinNodeVersion.apply(this, arguments);
}

function getPackageTypeAsString(numericPackageType) {
  var packageKeys = Object.keys(_const.PACKAGE_TYPES);

  for (var i = 0; i < packageKeys.length; i++) {
    var packageType = packageKeys[i];

    if (parseInt(numericPackageType, 10) === _const.PACKAGE_TYPES[packageType]) {
      return packageType;
    }
  }

  throw new Error("Invalid package type constant \"".concat(numericPackageType, "\""));
}
/*
 * Looks through all exported functions and returns only
 * "public" *functions* that aren't prefixed with an _
 *
 * Used for ignoring private functions and constants in rules files.
 * Rules can have private functions we don't run; anything that
 * starts with an "_" shouldn't be returned.
 *
 * This exists because we export private functions in rule files
 * for testing.
 */


function ignorePrivateFunctions(list) {
  var filteredList = {};
  Object.keys(list).forEach(function (functionName) {
    if (functionName.startsWith('_') === false && typeof list[functionName] === 'function') {
      filteredList[functionName] = list[functionName];
    }
  });
  return filteredList;
}
/*
 * Check a filename to make sure it's valid; used by scanners so we never
 * accept new scanners that don't specify which file they're referencing.
 */


function ensureFilenameExists(filename) {
  if (typeof filename !== 'string' || filename.length < 1) {
    throw new Error('Filename is required');
  }
}

function isLocalUrl(urlInput) {
  var parsedUrl = _url["default"].parse(urlInput);

  var protocol = parsedUrl.protocol,
      path = parsedUrl.path; // Check protocol is chrome: or resource: if set.
  // Details on the chrome protocol are here: https://goo.gl/W52T0Q
  // Details on resource protocol are here: https://goo.gl/HHqeJA

  if (protocol && !_const.LOCAL_PROTOCOLS.includes(protocol)) {
    return false;
  } // Disallow protocol-free remote urls.


  if (path.startsWith('//')) {
    return false;
  }

  return true;
}

function apiToMessage(string) {
  return string.replace(/^extension/, 'ext').replace(/\./g, '_').toUpperCase().substr(0, 25);
}

function isBrowserNamespace(string) {
  return ['browser', 'chrome'].includes(string);
}

function parseCspPolicy(policy) {
  if (!policy) {
    return {};
  } // eslint-disable-next-line no-param-reassign


  policy = policy.toLowerCase();
  var parsedPolicy = {};
  var directives = policy.split(';');
  directives.forEach(function (directive) {
    // eslint-disable-next-line no-param-reassign
    directive = directive.trim();
    var tokens = directive.split(/\s+/);
    var name = tokens[0];

    if (name) {
      parsedPolicy[name] = tokens.slice(1, tokens.length);
    }
  });
  return parsedPolicy;
}

function getLineAndColumnFromMatch(match) {
  var matchedLines = match.input.substr(0, match.index).split('\n');
  var matchedColumn = matchedLines.slice(-1)[0].length + 1;
  var matchedLine = matchedLines.length;
  return {
    matchedLine: matchedLine,
    matchedColumn: matchedColumn
  };
}
/**
 * Determines if the source text is minified.
 * Using the percentage no. of the indented lines from a sample set of lines
 * to determine if the js file is minified.
 * Inspired by code for the Firefox Developer Toolbar.
 */


function couldBeMinifiedCode(code) {
  // Fast exit if `code` is empty. Could happen in tests, but also in real
  // files.
  if (!code) {
    return false;
  } // If there's a source map reference it's very certainly minified code.


  if (SOURCE_MAP_RE.test(code)) {
    return true;
  } // Number of lines to look at, taken from the head of the code.


  var sampleSize = 30; // Threshold in percent of indented lines to mark a file as not
  // minified.

  var indentCountThreshold = 20; // percentage
  // Length of a line that looks suspicious of being minified

  var hugeLinesLength = 500; // Number of huge lines to also mark a file as potentially minified
  // Hint: Minified AngularJS has 12 lines, jQuery 4

  var hugeLinesThreshold = 4;
  var lineEndIndex = 0;
  var lineStartIndex = 0;
  var lines = 1;
  var indentCount = 0;
  var hugeLinesCount = 0; // Strip comments.

  var normalizedCode = code.replace(/\/\*[\S\s]*?\*\/|\/\/.+/g, '');

  while (lines < sampleSize) {
    lineEndIndex = normalizedCode.indexOf('\n', lineStartIndex);

    if (lineEndIndex === -1) {
      break;
    }

    var currentLine = normalizedCode.slice(lineStartIndex, lineEndIndex);

    if (/^\s+/.test(currentLine)) {
      indentCount++;
    }

    if (currentLine.length >= hugeLinesLength) {
      hugeLinesCount++;
    }

    lineStartIndex = lineEndIndex + 1;
    lines++;
  }

  return indentCount / lines * 100 < indentCountThreshold || hugeLinesCount > hugeLinesThreshold;
}

function firefoxStrictMinVersion(manifestJson) {
  if (manifestJson.applications && manifestJson.applications.gecko && manifestJson.applications.gecko.strict_min_version) {
    return parseInt(manifestJson.applications.gecko.strict_min_version.split('.')[0], 10);
  }

  return null;
}

function basicCompatVersionComparison(versionAdded, minVersion) {
  var asNumber = parseInt(versionAdded, 10);
  return !Number.isNaN(asNumber) && asNumber > minVersion;
}
/**
 * @param {*} supportInfo - bcd support info of a feature
 * @returns {string|boolean} The first version number to suppor the feature
 *          or a boolean indicating if the feature is at all supported.
 */


function firstStableVersion(supportInfo) {
  var supportInfoArray = supportInfo;

  if (!Array.isArray(supportInfo)) {
    supportInfoArray = [supportInfo];
  }

  return supportInfoArray.reduce(function (versionAdded, supportEntry) {
    if (!Object.prototype.hasOwnProperty.call(supportEntry, 'flags') && (!versionAdded || !basicCompatVersionComparison(supportEntry.version_added, parseInt(versionAdded, 10)))) {
      return supportEntry.version_added;
    }

    return versionAdded;
  }, false);
}

function isCompatible(bcd, path, minVersion, application) {
  var steps = path.split('.');
  var api = bcd.webextensions.api;

  var _iterator = _createForOfIteratorHelper(steps),
      _step;

  try {
    for (_iterator.s(); !(_step = _iterator.n()).done;) {
      var step = _step.value;

      if (Object.prototype.hasOwnProperty.call(api, step)) {
        api = api[step];
      } else {
        break;
      }
    } // API namespace may be undocumented or not implemented, ignore in that case.

  } catch (err) {
    _iterator.e(err);
  } finally {
    _iterator.f();
  }

  if (api.__compat) {
    var supportInfo = api.__compat.support[application];
    var versionAdded = firstStableVersion(supportInfo);
    return !basicCompatVersionComparison(versionAdded, minVersion);
  }

  return true;
}

function createCompatibilityRule(application, message, context, bcd, hasBrowserApi) {
  var minVersion = context.settings.addonMetadata && firefoxStrictMinVersion({
    applications: {
      gecko: {
        strict_min_version: context.settings.addonMetadata.firefoxMinVersion
      }
    }
  });

  if (minVersion) {
    return {
      MemberExpression: function MemberExpression(node) {
        if (!node.computed && node.object.object && isBrowserNamespace(node.object.object.name)) {
          var namespace = node.object.property.name;
          var property = node.property.name;
          var api = "".concat(namespace, ".").concat(property);

          if (hasBrowserApi(namespace, property) && !isCompatible(bcd, api, minVersion, application)) {
            context.report(node, message.messageFormat, {
              api: api,
              minVersion: context.settings.addonMetadata.firefoxMinVersion
            });
          }
        }
      }
    };
  }

  return {};
}

/***/ }),
/* 4 */
/***/ (function(module, exports) {

module.exports = require("@babel/runtime/helpers/interopRequireDefault");

/***/ }),
/* 5 */
/***/ (function(module, exports) {

module.exports = require("@babel/runtime/regenerator");

/***/ }),
/* 6 */
/***/ (function(module, exports) {

module.exports = require("@babel/runtime/helpers/taggedTemplateLiteral");

/***/ }),
/* 7 */
/***/ (function(module, exports) {

module.exports = require("@babel/runtime/helpers/asyncToGenerator");

/***/ }),
/* 8 */
/***/ (function(module, exports) {

module.exports = require("url");

/***/ }),
/* 9 */
/***/ (function(module, exports) {

module.exports = require("upath");

/***/ }),
/* 10 */
/***/ (function(module, exports) {

module.exports = require("whatwg-url");

/***/ }),
/* 11 */
/***/ (function(module, exports) {

module.exports = require("jed");

/***/ }),
/* 12 */
/***/ (function(module, exports) {

module.exports = require("semver");

/***/ }),
/* 13 */
/***/ (function(module, exports) {

module.exports = require("common-tags");

/***/ }),
/* 14 */
/***/ (function(module, exports) {

module.exports = require("os-locale");

/***/ }),
/* 15 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.createLogger = createLogger;
exports["default"] = void 0;

var _pino = _interopRequireDefault(__webpack_require__(16));

function createLogger() {
  var _process = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : process;

  var level = _process.env.LOG_LEVEL || 'fatal';
  return (0, _pino["default"])({
    name: 'AddonLinterJS',
    level: level
  }, process.stdout);
}

var _default = createLogger();

exports["default"] = _default;

/***/ }),
/* 16 */
/***/ (function(module, exports) {

module.exports = require("pino");

/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.RESTRICTED_HOMEPAGE_URLS = exports.ZIP_LIB_CORRUPT_FILE_ERROR = exports.MESSAGE_PLACEHOLDER_REGEXP = exports.LOCALES_DIRECTORY = exports.MESSAGES_JSON = exports.CSP_KEYWORD_RE = exports.TEMPORARY_APIS = exports.FLAGGED_FILE_MAGIC_NUMBERS = exports.DEPRECATED_JAVASCRIPT_APIS = exports.DEPRECATED_MANIFEST_PROPERTIES = exports.STATIC_THEME_IMAGE_MIMES = exports.MIME_TO_FILE_EXTENSIONS = exports.IMAGE_FILE_EXTENSIONS = exports.FLAGGED_FILE_EXTENSIONS = exports.RESERVED_FILENAMES = exports.ALREADY_SIGNED_REGEX = exports.FLAGGED_FILE_REGEX = exports.HIDDEN_FILE_REGEX = exports.MAX_FILE_SIZE_TO_PARSE_MB = exports.VALID_MANIFEST_VERSION = exports.MANIFEST_JSON = exports.LOCAL_PROTOCOLS = exports.PACKAGE_TYPES = exports.PACKAGE_SUBPACKAGE = exports.PACKAGE_MULTI = exports.PACKAGE_SEARCHPROV = exports.PACKAGE_LANGPACK = exports.PACKAGE_DICTIONARY = exports.PACKAGE_THEME = exports.PACKAGE_EXTENSION = exports.PACKAGE_ANY = exports.MESSAGE_TYPES = exports.ESLINT_TYPES = exports.VALIDATION_WARNING = exports.VALIDATION_NOTICE = exports.VALIDATION_ERROR = exports.ESLINT_RULE_MAPPING = exports.EXTERNAL_RULE_MAPPING = exports.ESLINT_WARNING = exports.ESLINT_ERROR = void 0;

var _defineProperty2 = _interopRequireDefault(__webpack_require__(18));

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

var ESLINT_ERROR = 2;
exports.ESLINT_ERROR = ESLINT_ERROR;
var ESLINT_WARNING = 1; // Disable escapers (Sanitizer.escapeHTML, escapeHTML)
// and unwrappers (Sanitizer.unwrapSafeHTML, unwrapSafeHTML)
// which are allowed by default by this plugin.

exports.ESLINT_WARNING = ESLINT_WARNING;
var DISABLE_ALLOWED_ESCAPERS = {
  escape: {
    taggedTemplates: [],
    methods: []
  }
}; // 3rd party / eslint-internal rules

var EXTERNAL_RULE_MAPPING = {
  'no-eval': [ESLINT_WARNING, {
    allowIndirect: false
  }],
  'no-implied-eval': ESLINT_WARNING,
  'no-new-func': ESLINT_WARNING,
  'no-unsanitized/method': [ESLINT_WARNING, DISABLE_ALLOWED_ESCAPERS],
  'no-unsanitized/property': [ESLINT_WARNING, DISABLE_ALLOWED_ESCAPERS]
};
exports.EXTERNAL_RULE_MAPPING = EXTERNAL_RULE_MAPPING;

var ESLINT_RULE_MAPPING = _objectSpread({
  'deprecated-entities': ESLINT_WARNING,
  'event-listener-fourth': ESLINT_WARNING,
  'global-require-arg': ESLINT_WARNING,
  'opendialog-nonlit-uri': ESLINT_WARNING,
  'opendialog-remote-uri': ESLINT_WARNING,
  'webextension-api': ESLINT_WARNING,
  'webextension-deprecated-api': ESLINT_WARNING,
  'webextension-unsupported-api': ESLINT_WARNING,
  'content-scripts-file-absent': ESLINT_ERROR,
  'webextension-api-compat': ESLINT_WARNING,
  'webextension-api-compat-android': ESLINT_WARNING
}, EXTERNAL_RULE_MAPPING);

exports.ESLINT_RULE_MAPPING = ESLINT_RULE_MAPPING;
var VALIDATION_ERROR = 'error';
exports.VALIDATION_ERROR = VALIDATION_ERROR;
var VALIDATION_NOTICE = 'notice';
exports.VALIDATION_NOTICE = VALIDATION_NOTICE;
var VALIDATION_WARNING = 'warning';
exports.VALIDATION_WARNING = VALIDATION_WARNING;
var ESLINT_TYPES = {
  0: VALIDATION_NOTICE,
  1: VALIDATION_WARNING,
  2: VALIDATION_ERROR
};
exports.ESLINT_TYPES = ESLINT_TYPES;
var MESSAGE_TYPES = [VALIDATION_ERROR, VALIDATION_NOTICE, VALIDATION_WARNING]; // Package type constants.

exports.MESSAGE_TYPES = MESSAGE_TYPES;
var PACKAGE_ANY = 0;
exports.PACKAGE_ANY = PACKAGE_ANY;
var PACKAGE_EXTENSION = 1;
exports.PACKAGE_EXTENSION = PACKAGE_EXTENSION;
var PACKAGE_THEME = 2;
exports.PACKAGE_THEME = PACKAGE_THEME;
var PACKAGE_DICTIONARY = 3;
exports.PACKAGE_DICTIONARY = PACKAGE_DICTIONARY;
var PACKAGE_LANGPACK = 4;
exports.PACKAGE_LANGPACK = PACKAGE_LANGPACK;
var PACKAGE_SEARCHPROV = 5;
exports.PACKAGE_SEARCHPROV = PACKAGE_SEARCHPROV;
var PACKAGE_MULTI = 1; // A multi extension is an extension

exports.PACKAGE_MULTI = PACKAGE_MULTI;
var PACKAGE_SUBPACKAGE = 7;
exports.PACKAGE_SUBPACKAGE = PACKAGE_SUBPACKAGE;
var PACKAGE_TYPES = {
  PACKAGE_ANY: PACKAGE_ANY,
  PACKAGE_EXTENSION: PACKAGE_EXTENSION,
  PACKAGE_THEME: PACKAGE_THEME,
  PACKAGE_DICTIONARY: PACKAGE_DICTIONARY,
  PACKAGE_LANGPACK: PACKAGE_LANGPACK,
  PACKAGE_SEARCHPROV: PACKAGE_SEARCHPROV,
  PACKAGE_MULTI: PACKAGE_MULTI,
  PACKAGE_SUBPACKAGE: PACKAGE_SUBPACKAGE
};
exports.PACKAGE_TYPES = PACKAGE_TYPES;
var LOCAL_PROTOCOLS = ['chrome:', 'resource:'];
exports.LOCAL_PROTOCOLS = LOCAL_PROTOCOLS;
var MANIFEST_JSON = 'manifest.json';
exports.MANIFEST_JSON = MANIFEST_JSON;
var VALID_MANIFEST_VERSION = 2; // This is the limit in megabytes of a file we will parse (eg. CSS, JS, etc.)
// A singular CSS/JS file over 4MB seems bad and may actually be full of data
// best stored in JSON/some other data format rather than code.
// https://github.com/mozilla/addons-linter/issues/730
// We increased this limit from 2MB to 4MB as per:
// https://github.com/mozilla/addons/issues/181
//
// We should be careful about increasing this any further.

exports.VALID_MANIFEST_VERSION = VALID_MANIFEST_VERSION;
var MAX_FILE_SIZE_TO_PARSE_MB = 4;
exports.MAX_FILE_SIZE_TO_PARSE_MB = MAX_FILE_SIZE_TO_PARSE_MB;
var HIDDEN_FILE_REGEX = /^__MACOSX\//;
exports.HIDDEN_FILE_REGEX = HIDDEN_FILE_REGEX;
var FLAGGED_FILE_REGEX = /thumbs\.db$|\.DS_Store$|\.orig$|\.old$|~$/i;
exports.FLAGGED_FILE_REGEX = FLAGGED_FILE_REGEX;
var ALREADY_SIGNED_REGEX = /^META-INF\/manifest\.mf/;
exports.ALREADY_SIGNED_REGEX = ALREADY_SIGNED_REGEX;
var RESERVED_FILENAMES = ['mozilla-recommendation.json'];
exports.RESERVED_FILENAMES = RESERVED_FILENAMES;
var FLAGGED_FILE_EXTENSIONS = ['.class', '.dll', '.dylib', '.exe', '.jar', '.sh', '.so', '.swf'];
exports.FLAGGED_FILE_EXTENSIONS = FLAGGED_FILE_EXTENSIONS;
var IMAGE_FILE_EXTENSIONS = ['jpg', 'jpeg', 'webp', 'gif', 'png', 'svg']; // Map the image mime to the expected file extensions
// (used in the the static theme images validation).

exports.IMAGE_FILE_EXTENSIONS = IMAGE_FILE_EXTENSIONS;
var MIME_TO_FILE_EXTENSIONS = {
  'image/svg+xml': ['svg'],
  'image/gif': ['gif'],
  'image/jpeg': ['jpg', 'jpeg'],
  'image/png': ['png'],
  'image/webp': ['webp']
}; // List of the mime types for the allowed static theme images.

exports.MIME_TO_FILE_EXTENSIONS = MIME_TO_FILE_EXTENSIONS;
var STATIC_THEME_IMAGE_MIMES = Object.keys(MIME_TO_FILE_EXTENSIONS); // Mapping of "schema data paths" of the deprecated properties that we
// issue warnings for.
// If the value is `null` we will be using the `deprecated` message
// from the schema. Otherwise `code`, `message` and `description` will be taken
// from the object provided.
// Note that we have to use the constants name as we can't import
// the message object here.

exports.STATIC_THEME_IMAGE_MIMES = STATIC_THEME_IMAGE_MIMES;
var DEPRECATED_MANIFEST_PROPERTIES = {
  '/theme/images/headerURL': 'MANIFEST_THEME_LWT_ALIAS',
  '/theme/colors/accentcolor': 'MANIFEST_THEME_LWT_ALIAS',
  '/theme/colors/textcolor': 'MANIFEST_THEME_LWT_ALIAS'
}; // Mapping of deprecated javascript apis.
// If the value is `null` we will be using the `deprecated` message
// from the schema. Otherwise `code`, `message` and `description` will be taken
// from the object provided.
// Note that we have to use the constants name as we can't import
// the message object here.

exports.DEPRECATED_MANIFEST_PROPERTIES = DEPRECATED_MANIFEST_PROPERTIES;
var DEPRECATED_JAVASCRIPT_APIS = {
  // These APIs were already deprecated by Chrome and Firefox never
  // supported them. We do still issue deprecation warnings for them.
  'app.getDetails': 'DEPRECATED_CHROME_API',
  'extension.onRequest': 'DEPRECATED_CHROME_API',
  'extension.onRequestExternal': 'DEPRECATED_CHROME_API',
  'extension.sendRequest': 'DEPRECATED_CHROME_API',
  'tabs.getAllInWindow': 'DEPRECATED_CHROME_API',
  'tabs.getSelected': 'DEPRECATED_CHROME_API',
  'tabs.onActiveChanged': 'DEPRECATED_CHROME_API',
  'tabs.onSelectionChanged': 'DEPRECATED_CHROME_API',
  'tabs.sendRequest': 'DEPRECATED_CHROME_API',
  // https://github.com/mozilla/addons-linter/issues/2556
  'proxy.register': 'DEPRECATED_API',
  'proxy.unregister': 'DEPRECATED_API',
  'proxy.onProxyError': 'DEPRECATED_API',
  'proxy.registerProxyScript': 'DEPRECATED_API'
}; // A list of magic numbers that we won't allow.

exports.DEPRECATED_JAVASCRIPT_APIS = DEPRECATED_JAVASCRIPT_APIS;
var FLAGGED_FILE_MAGIC_NUMBERS = [[0x4d, 0x5a], // EXE or DLL,
[0x5a, 0x4d], // Alternative EXE or DLL
[0x7f, 0x45, 0x4c, 0x46], // UNIX elf
[0x23, 0x21], // Shell script
[0xca, 0xfe, 0xba, 0xbe], // Java + Mach-O (dylib)
[0xca, 0xfe, 0xd0, 0x0d], // Java packed
[0x43, 0x57, 0x53] // Compressed SWF
]; // These are APIs that will cause problems when loaded temporarily
// in about:debugging.
// APIs listed here should be defined in https://mzl.la/31p4AMc

exports.FLAGGED_FILE_MAGIC_NUMBERS = FLAGGED_FILE_MAGIC_NUMBERS;
var TEMPORARY_APIS = ['identity.getRedirectURL', 'storage.sync', 'storage.managed', 'runtime.onMessageExternal', 'runtime.onConnectExternal']; // All valid CSP keywords that are options to keys like `default-src` and
// `script-src`. Used in manifest.json parser for validation.
// See https://mzl.la/2vwqbGU for more details and allowed options.

exports.TEMPORARY_APIS = TEMPORARY_APIS;
var CSP_KEYWORD_RE = new RegExp(['(self|none|unsafe-inline|strict-dynamic|unsafe-hashed-attributes)', // Only match these keywords, anything else is forbidden
'(?!.)', '|(sha(256|384|512)-|nonce-)'].join(''));
exports.CSP_KEYWORD_RE = CSP_KEYWORD_RE;
var MESSAGES_JSON = 'messages.json';
exports.MESSAGES_JSON = MESSAGES_JSON;
var LOCALES_DIRECTORY = '_locales'; // This is a string, since it has to be matched globally on a message string.
// This should match
// https://searchfox.org/mozilla-central/rev/3abf6fa7e2a6d9a7bfb88796141b0f012e68c2db/toolkit/components/extensions/ExtensionCommon.jsm#1711

exports.LOCALES_DIRECTORY = LOCALES_DIRECTORY;
var MESSAGE_PLACEHOLDER_REGEXP = '\\$([a-zA-Z0-9_@]+)\\$'; // yauzl should trow error with this message in case of corrupt zip file

exports.MESSAGE_PLACEHOLDER_REGEXP = MESSAGE_PLACEHOLDER_REGEXP;
var ZIP_LIB_CORRUPT_FILE_ERROR = 'end of central directory record signature not found'; // URLs in this array are restricted from being used in the manifest.json "homepage_url" prperty

exports.ZIP_LIB_CORRUPT_FILE_ERROR = ZIP_LIB_CORRUPT_FILE_ERROR;
var RESTRICTED_HOMEPAGE_URLS = ['addons-dev.allizom.org', 'addons.mozilla.org'];
exports.RESTRICTED_HOMEPAGE_URLS = RESTRICTED_HOMEPAGE_URLS;

/***/ }),
/* 18 */
/***/ (function(module, exports) {

module.exports = require("@babel/runtime/helpers/defineProperty");

/***/ }),
/* 19 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports._nonLiteralUri = _nonLiteralUri;
exports._methodPassedRemoteUri = _methodPassedRemoteUri;
exports.ESLINT_OVERWRITE_MESSAGE = exports.ANDROID_INCOMPATIBLE_API = exports.INCOMPATIBLE_API = exports.RUNTIME_ONCONNECTEXTERNAL = exports.RUNTIME_ONMESSAGEEXTERNAL = exports.STORAGE_MANAGED = exports.IDENTITY_GETREDIRECTURL = exports.STORAGE_SYNC = exports.DEPRECATED_CHROME_API = exports.DEPRECATED_API = exports.UNSUPPORTED_API = exports.UNSAFE_DYNAMIC_VARIABLE_ASSIGNMENT = exports.KNOWN_LIBRARY = exports.UNADVISED_LIBRARY = exports.BANNED_LIBRARY = exports.NO_DOCUMENT_WRITE = exports.UNEXPECTED_GLOGAL_ARG = exports.NO_IMPLIED_EVAL = exports.DANGEROUS_EVAL = exports.OPENDIALOG_NONLIT_URI = exports.OPENDIALOG_REMOTE_URI = exports.CONTENT_SCRIPT_EMPTY = exports.CONTENT_SCRIPT_NOT_FOUND = exports.EVENT_LISTENER_FOURTH = exports.JS_SYNTAX_ERROR = void 0;

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _commonTags = __webpack_require__(13);

var _utils = __webpack_require__(3);

function _templateObject13() {
  var data = (0, _taggedTemplateLiteral2["default"])(["This API can cause issues when loaded\n      temporarily using about:debugging in Firefox unless you specify\n      applications|browser_specific_settings > gecko > id in the manifest.\n      Please see: https://mzl.la/2hizK4a for more."]);

  _templateObject13 = function _templateObject13() {
    return data;
  };

  return data;
}

function _templateObject12() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Due to both security and performance\n    concerns, this may not be set using dynamic values which have\n    not been adequately sanitized. This can lead to security issues or fairly\n    serious performance degradation."]);

  _templateObject12 = function _templateObject12() {
    return data;
  };

  return data;
}

function _templateObject11() {
  var data = (0, _taggedTemplateLiteral2["default"])(["JavaScript libraries are discouraged for\n    simple add-ons, but are generally accepted."]);

  _templateObject11 = function _templateObject11() {
    return data;
  };

  return data;
}

function _templateObject10() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Your add-on uses a JavaScript library we do\n    not recommend. Read more: https://bit.ly/1TRIyZY"]);

  _templateObject10 = function _templateObject10() {
    return data;
  };

  return data;
}

function _templateObject9() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Your add-on uses a JavaScript library we\n    consider unsafe. Read more: https://bit.ly/1TRIyZY"]);

  _templateObject9 = function _templateObject9() {
    return data;
  };

  return data;
}

function _templateObject8() {
  var data = (0, _taggedTemplateLiteral2["default"])(["document.write will fail in many\n    circumstances when used in extensions, and has potentially severe security\n    repercussions when used improperly. Therefore, it should not be used."]);

  _templateObject8 = function _templateObject8() {
    return data;
  };

  return data;
}

function _templateObject7() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Passing a global as an argument\n    is not recommended. Please make this a var instead."]);

  _templateObject7 = function _templateObject7() {
    return data;
  };

  return data;
}

function _templateObject6() {
  var data = (0, _taggedTemplateLiteral2["default"])(["setTimeout, setInterval and execScript\n    functions should be called only with function expressions as their\n    first argument"]);

  _templateObject6 = function _templateObject6() {
    return data;
  };

  return data;
}

function _templateObject5() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Evaluation of strings as code can lead to\n    security vulnerabilities and performance issues, even in the\n    most innocuous of circumstances. Please avoid using `eval` and the\n    `Function` constructor when at all possible.'"], ["Evaluation of strings as code can lead to\n    security vulnerabilities and performance issues, even in the\n    most innocuous of circumstances. Please avoid using \\`eval\\` and the\n    \\`Function\\` constructor when at all possible.'"]);

  _templateObject5 = function _templateObject5() {
    return data;
  };

  return data;
}

function _templateObject4() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Calling '", "' with a non-local\n      URI will result in the dialog being opened with chrome privileges."]);

  _templateObject4 = function _templateObject4() {
    return data;
  };

  return data;
}

function _templateObject3() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Calling '", "' with variable\n      parameters can result in potential security vulnerabilities if the\n      variable contains a remote URI. Consider using 'window.open' with\n      the 'chrome=no' flag."]);

  _templateObject3 = function _templateObject3() {
    return data;
  };

  return data;
}

function _templateObject2() {
  var data = (0, _taggedTemplateLiteral2["default"])(["When called with a truthy forth argument,\n    listeners can be triggered potentially unsafely by untrusted code. This\n    requires careful review."]);

  _templateObject2 = function _templateObject2() {
    return data;
  };

  return data;
}

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["There is a JavaScript syntax error in your\n    code; validation cannot continue on this file."]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

var JS_SYNTAX_ERROR = {
  code: 'JS_SYNTAX_ERROR',
  message: _utils.i18n._('JavaScript syntax error'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject()))
};
exports.JS_SYNTAX_ERROR = JS_SYNTAX_ERROR;
var EVENT_LISTENER_FOURTH = {
  code: 'EVENT_LISTENER_FOURTH',
  message: _utils.i18n._('addEventListener` called with truthy fourth argument.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject2()))
};
exports.EVENT_LISTENER_FOURTH = EVENT_LISTENER_FOURTH;
var CONTENT_SCRIPT_NOT_FOUND = {
  code: 'CONTENT_SCRIPT_NOT_FOUND',
  legacyCode: null,
  message: _utils.i18n._('Content script file could not be found.'),
  description: _utils.i18n._('Content script file could not be found')
};
exports.CONTENT_SCRIPT_NOT_FOUND = CONTENT_SCRIPT_NOT_FOUND;
var CONTENT_SCRIPT_EMPTY = {
  code: 'CONTENT_SCRIPT_EMPTY',
  legacyCode: null,
  message: _utils.i18n._('Content script file name should not be empty.'),
  description: _utils.i18n._('Content script file name should not be empty')
};
exports.CONTENT_SCRIPT_EMPTY = CONTENT_SCRIPT_EMPTY;

function _nonLiteralUri(method) {
  return {
    code: "".concat(method, "_NONLIT_URI").toUpperCase(),
    message: _utils.i18n._("'".concat(method, "' called with a non-literal uri")),
    description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject3(), method))
  };
}

function _methodPassedRemoteUri(method) {
  return {
    code: "".concat(method, "_REMOTE_URI").toUpperCase(),
    message: _utils.i18n._("'".concat(method, "' called with non-local URI")),
    description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject4(), method))
  };
}

var OPENDIALOG_REMOTE_URI = _methodPassedRemoteUri('openDialog');

exports.OPENDIALOG_REMOTE_URI = OPENDIALOG_REMOTE_URI;

var OPENDIALOG_NONLIT_URI = _nonLiteralUri('openDialog');

exports.OPENDIALOG_NONLIT_URI = OPENDIALOG_NONLIT_URI;
var DANGEROUS_EVAL = {
  code: 'DANGEROUS_EVAL',
  message: null,
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject5()))
};
exports.DANGEROUS_EVAL = DANGEROUS_EVAL;
var NO_IMPLIED_EVAL = {
  code: 'NO_IMPLIED_EVAL',
  message: null,
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject6()))
};
exports.NO_IMPLIED_EVAL = NO_IMPLIED_EVAL;
var UNEXPECTED_GLOGAL_ARG = {
  code: 'UNEXPECTED_GLOGAL_ARG',
  message: _utils.i18n._('Unexpected global passed as an argument'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject7()))
};
exports.UNEXPECTED_GLOGAL_ARG = UNEXPECTED_GLOGAL_ARG;
var NO_DOCUMENT_WRITE = {
  code: 'NO_DOCUMENT_WRITE',
  message: _utils.i18n._('Use of document.write strongly discouraged.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject8()))
};
exports.NO_DOCUMENT_WRITE = NO_DOCUMENT_WRITE;
var BANNED_LIBRARY = {
  code: 'BANNED_LIBRARY',
  message: _utils.i18n._('Banned 3rd-party JS library'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject9()))
};
exports.BANNED_LIBRARY = BANNED_LIBRARY;
var UNADVISED_LIBRARY = {
  code: 'UNADVISED_LIBRARY',
  message: _utils.i18n._('Unadvised 3rd-party JS library'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject10()))
};
exports.UNADVISED_LIBRARY = UNADVISED_LIBRARY;
var KNOWN_LIBRARY = {
  code: 'KNOWN_LIBRARY',
  message: _utils.i18n._('Known JS library detected'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject11()))
};
exports.KNOWN_LIBRARY = KNOWN_LIBRARY;
var UNSAFE_DYNAMIC_VARIABLE_ASSIGNMENT = {
  code: 'UNSAFE_VAR_ASSIGNMENT',
  // Uses original message from eslint
  message: null,
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject12()))
};
exports.UNSAFE_DYNAMIC_VARIABLE_ASSIGNMENT = UNSAFE_DYNAMIC_VARIABLE_ASSIGNMENT;
var UNSUPPORTED_API = {
  code: 'UNSUPPORTED_API',
  message: null,
  messageFormat: _utils.i18n._('{{api}} is not supported'),
  description: _utils.i18n._('This API has not been implemented by Firefox.')
};
exports.UNSUPPORTED_API = UNSUPPORTED_API;
var DEPRECATED_API = {
  code: 'DEPRECATED_API',
  message: null,
  messageFormat: _utils.i18n._('{{api}} is deprecated'),
  description: _utils.i18n._('This API has been deprecated by Firefox.')
};
exports.DEPRECATED_API = DEPRECATED_API;
var DEPRECATED_CHROME_API = {
  // We are re-using the same code here for consistency and for technical
  // reasons. We aren't really able to issue different codes from the same
  // rule, so until we have to, we're going to re-use the `DEPRECATED_API`
  // code.
  // Because of that implementation detail ``description`` isn't being usable
  // too.
  code: 'DEPRECATED_API',
  message: null,
  messageFormat: _utils.i18n._('"{{api}}" is deprecated or unimplemented'),
  description: null
};
exports.DEPRECATED_CHROME_API = DEPRECATED_CHROME_API;

function temporaryAPI(api) {
  return {
    code: (0, _utils.apiToMessage)(api),
    message: _utils.i18n._("\"".concat(api, "\" can cause issues when loaded temporarily")),
    description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject13()))
  };
}

var STORAGE_SYNC = temporaryAPI('storage.sync');
exports.STORAGE_SYNC = STORAGE_SYNC;
var IDENTITY_GETREDIRECTURL = temporaryAPI('identity.getRedirectURL');
exports.IDENTITY_GETREDIRECTURL = IDENTITY_GETREDIRECTURL;
var STORAGE_MANAGED = temporaryAPI('storage.managed');
exports.STORAGE_MANAGED = STORAGE_MANAGED;
var RUNTIME_ONMESSAGEEXTERNAL = temporaryAPI('runtime.onMessageExternal');
exports.RUNTIME_ONMESSAGEEXTERNAL = RUNTIME_ONMESSAGEEXTERNAL;
var RUNTIME_ONCONNECTEXTERNAL = temporaryAPI('runtime.onConnectExternal');
exports.RUNTIME_ONCONNECTEXTERNAL = RUNTIME_ONCONNECTEXTERNAL;
var INCOMPATIBLE_API = {
  code: 'INCOMPATIBLE_API',
  message: null,
  messageFormat: _utils.i18n._('{{api}} is not supported in Firefox version {{minVersion}}'),
  description: _utils.i18n._('This API is not implemented by the given minimum Firefox version')
};
exports.INCOMPATIBLE_API = INCOMPATIBLE_API;
var ANDROID_INCOMPATIBLE_API = {
  code: 'ANDROID_INCOMPATIBLE_API',
  message: null,
  messageFormat: _utils.i18n._('{{api}} is not supported in Firefox for Android version {{minVersion}}'),
  description: _utils.i18n._('This API is not implemented by the given minimum Firefox for Android version')
};
exports.ANDROID_INCOMPATIBLE_API = ANDROID_INCOMPATIBLE_API;
var ESLINT_OVERWRITE_MESSAGE = {
  'no-eval': DANGEROUS_EVAL,
  'no-implied-eval': NO_IMPLIED_EVAL,
  'no-new-func': DANGEROUS_EVAL,
  'no-unsanitized/property': UNSAFE_DYNAMIC_VARIABLE_ASSIGNMENT,
  'no-unsanitized/method': UNSAFE_DYNAMIC_VARIABLE_ASSIGNMENT,
  'webextension-unsupported-api': UNSUPPORTED_API,
  'webextension-deprecated-api': DEPRECATED_API,
  'webextension-api-compat': INCOMPATIBLE_API,
  'webextension-api-compat-android': ANDROID_INCOMPATIBLE_API
};
exports.ESLINT_OVERWRITE_MESSAGE = ESLINT_OVERWRITE_MESSAGE;

/***/ }),
/* 20 */,
/* 21 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});

var _css = __webpack_require__(22);

Object.keys(_css).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _css[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _css[key];
    }
  });
});

var _html = __webpack_require__(23);

Object.keys(_html).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _html[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _html[key];
    }
  });
});

var _javascript = __webpack_require__(19);

Object.keys(_javascript).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _javascript[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _javascript[key];
    }
  });
});

var _json = __webpack_require__(24);

Object.keys(_json).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _json[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _json[key];
    }
  });
});

var _layout = __webpack_require__(25);

Object.keys(_layout).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _layout[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _layout[key];
    }
  });
});

var _manifestjson = __webpack_require__(26);

Object.keys(_manifestjson).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _manifestjson[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _manifestjson[key];
    }
  });
});

var _fluent = __webpack_require__(27);

Object.keys(_fluent).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _fluent[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _fluent[key];
    }
  });
});

var _localeMessagesjson = __webpack_require__(28);

Object.keys(_localeMessagesjson).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _localeMessagesjson[key]) return;
  Object.defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _localeMessagesjson[key];
    }
  });
});

/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.INVALID_SELECTOR_NESTING = exports.CSS_SYNTAX_ERROR = void 0;

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _commonTags = __webpack_require__(13);

var _utils = __webpack_require__(3);

function _templateObject2() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Selectors should not be nested"]);

  _templateObject2 = function _templateObject2() {
    return data;
  };

  return data;
}

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["An error was found in the CSS file being\n    processed as a result further processing of that file is not possible"]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

var CSS_SYNTAX_ERROR = {
  code: 'CSS_SYNTAX_ERROR',
  // This will be overriden by the reason passed from the error.
  message: _utils.i18n._('A CSS syntax error was encountered'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject()))
};
exports.CSS_SYNTAX_ERROR = CSS_SYNTAX_ERROR;
var INVALID_SELECTOR_NESTING = {
  code: 'INVALID_SELECTOR_NESTING',
  message: _utils.i18n._('Invalid nesting of selectors found'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject2()))
};
exports.INVALID_SELECTOR_NESTING = INVALID_SELECTOR_NESTING;

/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.REMOTE_SCRIPT = exports.INLINE_SCRIPT = void 0;

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _commonTags = __webpack_require__(13);

var _utils = __webpack_require__(3);

function _templateObject2() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Please include all scripts in the add-on.\n    For more information, refer to https://mzl.la/2uEOkYp."]);

  _templateObject2 = function _templateObject2() {
    return data;
  };

  return data;
}

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Default CSP rules prevent inline JavaScript\n    from running (https://mzl.la/2pn32nd)."]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

var INLINE_SCRIPT = {
  code: 'INLINE_SCRIPT',
  message: _utils.i18n._('Inline scripts blocked by default'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject()))
};
exports.INLINE_SCRIPT = INLINE_SCRIPT;
var REMOTE_SCRIPT = {
  code: 'REMOTE_SCRIPT',
  message: _utils.i18n._('Remote scripts are not allowed as per the Add-on Policies.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject2()))
};
exports.REMOTE_SCRIPT = REMOTE_SCRIPT;

/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.JSON_DUPLICATE_KEY = exports.JSON_BLOCK_COMMENTS = exports.JSON_INVALID = void 0;

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _commonTags = __webpack_require__(13);

var _utils = __webpack_require__(3);

function _templateObject2() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Duplicate key found in JSON file."]);

  _templateObject2 = function _templateObject2() {
    return data;
  };

  return data;
}

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Only line comments (comments beginning with\n    \"//\") are allowed in JSON files. Please remove block comments (comments\n    beginning with \"/*\")"]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

var JSON_INVALID = {
  code: 'JSON_INVALID',
  message: _utils.i18n._('Your JSON is not valid.'),
  description: _utils.i18n._('Your JSON file could not be parsed.')
};
exports.JSON_INVALID = JSON_INVALID;
var JSON_BLOCK_COMMENTS = {
  code: 'JSON_BLOCK_COMMENTS',
  message: _utils.i18n._('Your JSON contains block comments.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject()))
};
exports.JSON_BLOCK_COMMENTS = JSON_BLOCK_COMMENTS;
var JSON_DUPLICATE_KEY = {
  code: 'JSON_DUPLICATE_KEY',
  message: _utils.i18n._('Duplicate keys are not allowed in JSON files.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject2()))
};
exports.JSON_DUPLICATE_KEY = JSON_DUPLICATE_KEY;

/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.RESERVED_FILENAME = exports.COINMINER_USAGE_DETECTED = exports.ALREADY_SIGNED = exports.FLAGGED_FILE_TYPE = exports.FLAGGED_FILE_EXTENSION = exports.FLAGGED_FILE = exports.HIDDEN_FILE = exports.FILE_TOO_LARGE = exports.TYPE_NO_MANIFEST_JSON = exports.BAD_ZIPFILE = exports.DUPLICATE_XPI_ENTRY = void 0;

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _commonTags = __webpack_require__(13);

var _const = __webpack_require__(17);

var _utils = __webpack_require__(3);

function _templateObject10() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Files whose names are reserved have been found in\n    the add-on. Please refrain from using them and rename your files."]);

  _templateObject10 = function _templateObject10() {
    return data;
  };

  return data;
}

function _templateObject9() {
  var data = (0, _taggedTemplateLiteral2["default"])(["We do not allow coinminer scripts to be run inside\n    WebExtensions.\n    See https://github.com/mozilla/addons-linter/issues/1643 for more\n    details."]);

  _templateObject9 = function _templateObject9() {
    return data;
  };

  return data;
}

function _templateObject8() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Add-ons which are already signed will be\n    re-signed when published on AMO. This will replace any existing signatures\n    on the add-on."]);

  _templateObject8 = function _templateObject8() {
    return data;
  };

  return data;
}

function _templateObject7() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Files whose names end with flagged extensions\n    have been found in the add-on. The extension of these files are flagged\n    because they usually identify binary components. Please see\n    https://bit.ly/review-policy for more information on the binary content\n    review process."]);

  _templateObject7 = function _templateObject7() {
    return data;
  };

  return data;
}

function _templateObject6() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Files were found that are either unnecessary\n    or have been included unintentionally. They should be removed."]);

  _templateObject6 = function _templateObject6() {
    return data;
  };

  return data;
}

function _templateObject5() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Files were found that are either unnecessary\n    or have been included unintentionally. They should be removed."]);

  _templateObject5 = function _templateObject5() {
    return data;
  };

  return data;
}

function _templateObject4() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Hidden files complicate the\n    review process and can contain sensitive information about the system that\n    generated the add-on. Please modify the packaging process so that these\n    files aren't included."]);

  _templateObject4 = function _templateObject4() {
    return data;
  };

  return data;
}

function _templateObject3() {
  var data = (0, _taggedTemplateLiteral2["default"])(["This file is not binary and is too large to\n    parse. Files larger than ", "MB will not be\n    parsed. If your JavaScript file has a large list, consider removing the\n    list and loading it as a separate JSON file instead."]);

  _templateObject3 = function _templateObject3() {
    return data;
  };

  return data;
}

function _templateObject2() {
  var data = (0, _taggedTemplateLiteral2["default"])(["No manifest.json was found at the root of the extension.\n    The package file must be a ZIP of the extension's files themselves, not of the\n    containing directory. See: https://mzl.la/2r2McKv for more on packaging."]);

  _templateObject2 = function _templateObject2() {
    return data;
  };

  return data;
}

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["The package contains multiple entries\n    with the same name. This practice has been banned. Try unzipping\n    and re-zipping your add-on package and try again."]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

var DUPLICATE_XPI_ENTRY = {
  code: 'DUPLICATE_XPI_ENTRY',
  message: _utils.i18n._('Package contains duplicate entries'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject()))
};
exports.DUPLICATE_XPI_ENTRY = DUPLICATE_XPI_ENTRY;
var BAD_ZIPFILE = {
  code: 'BAD_ZIPFILE',
  message: 'Corrupt ZIP file',
  description: _utils.i18n._('We were unable to decompress the zip file.')
};
exports.BAD_ZIPFILE = BAD_ZIPFILE;
var TYPE_NO_MANIFEST_JSON = {
  code: 'TYPE_NO_MANIFEST_JSON',
  message: _utils.i18n._('manifest.json was not found'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject2()))
};
exports.TYPE_NO_MANIFEST_JSON = TYPE_NO_MANIFEST_JSON;
var FILE_TOO_LARGE = {
  code: 'FILE_TOO_LARGE',
  message: _utils.i18n._('File is too large to parse.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject3(), _const.MAX_FILE_SIZE_TO_PARSE_MB))
};
exports.FILE_TOO_LARGE = FILE_TOO_LARGE;
var HIDDEN_FILE = {
  code: 'HIDDEN_FILE',
  message: _utils.i18n._('Hidden file flagged'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject4()))
};
exports.HIDDEN_FILE = HIDDEN_FILE;
var FLAGGED_FILE = {
  code: 'FLAGGED_FILE',
  message: _utils.i18n._('Flagged filename found'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject5()))
};
exports.FLAGGED_FILE = FLAGGED_FILE;
var FLAGGED_FILE_EXTENSION = {
  code: 'FLAGGED_FILE_EXTENSION',
  message: _utils.i18n._('Flagged file extensions found'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject6()))
};
exports.FLAGGED_FILE_EXTENSION = FLAGGED_FILE_EXTENSION;
var FLAGGED_FILE_TYPE = {
  code: 'FLAGGED_FILE_TYPE',
  message: _utils.i18n._('Flagged file type found'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject7()))
};
exports.FLAGGED_FILE_TYPE = FLAGGED_FILE_TYPE;
var ALREADY_SIGNED = {
  code: 'ALREADY_SIGNED',
  message: _utils.i18n._('Package already signed'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject8()))
};
exports.ALREADY_SIGNED = ALREADY_SIGNED;
var COINMINER_USAGE_DETECTED = {
  code: 'COINMINER_USAGE_DETECTED',
  message: _utils.i18n._('Firefox add-ons are not allowed to run coin miners.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject9()))
};
exports.COINMINER_USAGE_DETECTED = COINMINER_USAGE_DETECTED;
var RESERVED_FILENAME = {
  code: 'RESERVED_FILENAME',
  message: _utils.i18n._('Reserved filename found.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject10()))
};
exports.RESERVED_FILENAME = RESERVED_FILENAME;

/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.manifestFieldUnsupported = manifestFieldUnsupported;
exports.manifestCsp = manifestCsp;
exports.manifestCspUnsafeEval = manifestCspUnsafeEval;
exports.manifestPropMissing = manifestPropMissing;
exports.manifestIconMissing = manifestIconMissing;
exports.manifestBackgroundMissing = manifestBackgroundMissing;
exports.manifestContentScriptFileMissing = manifestContentScriptFileMissing;
exports.manifestDictionaryFileMissing = manifestDictionaryFileMissing;
exports.iconIsNotSquare = iconIsNotSquare;
exports.iconSizeInvalid = iconSizeInvalid;
exports.corruptIconFile = corruptIconFile;
exports.manifestThemeImageMissing = manifestThemeImageMissing;
exports.manifestThemeImageCorrupted = manifestThemeImageCorrupted;
exports.manifestThemeImageWrongExtension = manifestThemeImageWrongExtension;
exports.manifestThemeImageWrongMime = manifestThemeImageWrongMime;
exports.manifestThemeImageMimeMismatch = manifestThemeImageMimeMismatch;
exports.noMessagesFileInLocales = noMessagesFileInLocales;
exports.keyFirefoxUnsupportedByMinVersion = keyFirefoxUnsupportedByMinVersion;
exports.permissionFirefoxUnsupportedByMinVersion = permissionFirefoxUnsupportedByMinVersion;
exports.keyFirefoxAndroidUnsupportedByMinVersion = keyFirefoxAndroidUnsupportedByMinVersion;
exports.permissionFirefoxAndroidUnsupportedByMinVersion = permissionFirefoxAndroidUnsupportedByMinVersion;
exports.RESTRICTED_HOMEPAGE_URL = exports.PERMISSION_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION = exports.KEY_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION = exports.PERMISSION_FIREFOX_UNSUPPORTED_BY_MIN_VERSION = exports.KEY_FIREFOX_UNSUPPORTED_BY_MIN_VERSION = exports.NO_MESSAGES_FILE_IN_LOCALES = exports.IGNORED_APPLICATIONS_PROPERTY = exports.WRONG_ICON_EXTENSION = exports.NO_DEFAULT_LOCALE = exports.NO_MESSAGES_FILE = exports.PROP_VERSION_MISSING = exports.PROP_NAME_MISSING = exports.MANIFEST_THEME_IMAGE_MIME_MISMATCH = exports.MANIFEST_THEME_IMAGE_WRONG_MIME = exports.MANIFEST_THEME_IMAGE_WRONG_EXT = exports.MANIFEST_THEME_IMAGE_CORRUPTED = exports.MANIFEST_THEME_IMAGE_NOT_FOUND = exports.MANIFEST_THEME_LWT_ALIAS = exports.MANIFEST_FIELD_DEPRECATED = exports.CORRUPT_ICON_FILE = exports.ICON_SIZE_INVALID = exports.ICON_NOT_SQUARE = exports.MANIFEST_INVALID_CONTENT = exports.MANIFEST_DICT_MISSING_ID = exports.MANIFEST_EMPTY_DICTS = exports.MANIFEST_MULTIPLE_DICTS = exports.MANIFEST_DICT_NOT_FOUND = exports.MANIFEST_CONTENT_SCRIPT_FILE_NOT_FOUND = exports.MANIFEST_BACKGROUND_FILE_NOT_FOUND = exports.MANIFEST_ICON_NOT_FOUND = exports.STRICT_MAX_VERSION = exports.MANIFEST_UNUSED_UPDATE = exports.MANIFEST_UPDATE_URL = exports.PROP_VERSION_TOOLKIT_ONLY = exports.PROP_VERSION_INVALID = exports.PROP_NAME_INVALID = exports.MANIFEST_CSP_UNSAFE_EVAL = exports.MANIFEST_CSP = exports.MANIFEST_VERSION_INVALID = exports.MANIFEST_OPTIONAL_PERMISSIONS = exports.MANIFEST_PERMISSIONS = exports.MANIFEST_BAD_OPTIONAL_PERMISSION = exports.MANIFEST_BAD_PERMISSION = exports.MANIFEST_FIELD_UNSUPPORTED = exports.MANIFEST_FIELD_INVALID = exports.MANIFEST_FIELD_REQUIRED = void 0;

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _commonTags = __webpack_require__(13);

var _utils = __webpack_require__(3);

var _const = __webpack_require__(17);

function _templateObject16() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\"strict_min_version\" requires Firefox for Android\n        %(minVersion)s, which was released before version %(versionAdded)s\n        introduced support for \"%(key)s\"."]);

  _templateObject16 = function _templateObject16() {
    return data;
  };

  return data;
}

function _templateObject15() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\"strict_min_version\" requires Firefox for Android\n        %(minVersion)s, which was released before version %(versionAdded)s\n        introduced support for \"%(key)s\"."]);

  _templateObject15 = function _templateObject15() {
    return data;
  };

  return data;
}

function _templateObject14() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\"strict_min_version\" requires Firefox %(minVersion)s, which\n        was released before version %(versionAdded)s introduced support for\n        \"%(key)s\"."]);

  _templateObject14 = function _templateObject14() {
    return data;
  };

  return data;
}

function _templateObject13() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\"strict_min_version\" requires Firefox %(minVersion)s, which\n        was released before version %(versionAdded)s introduced support for\n        \"%(key)s\"."]);

  _templateObject13 = function _templateObject13() {
    return data;
  };

  return data;
}

function _templateObject12() {
  var data = (0, _taggedTemplateLiteral2["default"])(["The \"applications\" property is being ignored because it is superseded by the \"browser_specific_settings\" property which is also defined in your manifest. Consider removing applications."]);

  _templateObject12 = function _templateObject12() {
    return data;
  };

  return data;
}

function _templateObject11() {
  var data = (0, _taggedTemplateLiteral2["default"])(["The \"default_locale\" value is not specifed in\n    the manifest, but a \"_locales\" directory exists.\n    See: https://mzl.la/2hjcaEE"]);

  _templateObject11 = function _templateObject11() {
    return data;
  };

  return data;
}

function _templateObject10() {
  var data = (0, _taggedTemplateLiteral2["default"])(["The \"default_locale\" value is specified in\n    the manifest, but no matching \"messages.json\" in the \"_locales\" directory\n    exists. See: https://mzl.la/2hjcaEE"]);

  _templateObject10 = function _templateObject10() {
    return data;
  };

  return data;
}

function _templateObject9() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\n      Expected icon at \"%(path)s\" to be %(expected)d pixels wide but was %(actual)d.\n    "]);

  _templateObject9 = function _templateObject9() {
    return data;
  };

  return data;
}

function _templateObject8() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\"strict_max_version\" shouldn't be used unless\n    the add-on is expected not to work with future versions of Firefox."]);

  _templateObject8 = function _templateObject8() {
    return data;
  };

  return data;
}

function _templateObject7() {
  var data = (0, _taggedTemplateLiteral2["default"])(["The \"update_url\" is not used by Firefox in\n    the root of a manifest; your add-on will be updated via the Add-ons\n    site and not your \"update_url\". See: https://mzl.la/25zqk4O"]);

  _templateObject7 = function _templateObject7() {
    return data;
  };

  return data;
}

function _templateObject6() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\n    \"applications.gecko.update_url\" or\n    \"browser_specific_settings.gecko.update_url\" are not allowed for\n    Mozilla-hosted add-ons."]);

  _templateObject6 = function _templateObject6() {
    return data;
  };

  return data;
}

function _templateObject5() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\n      In most cases the same result can be achieved differently,\n      therefore it is generally prohibited"]);

  _templateObject5 = function _templateObject5() {
    return data;
  };

  return data;
}

function _templateObject4() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\n      ", " allows 'eval', which has strong security and performance implications."]);

  _templateObject4 = function _templateObject4() {
    return data;
  };

  return data;
}

function _templateObject3() {
  var data = (0, _taggedTemplateLiteral2["default"])(["\n      \"", "\" allows remote code execution in manifest.json"]);

  _templateObject3 = function _templateObject3() {
    return data;
  };

  return data;
}

function _templateObject2() {
  var data = (0, _taggedTemplateLiteral2["default"])(["See https://mzl.la/2Qn0fWC\n    (MDN Docs) for more information."]);

  _templateObject2 = function _templateObject2() {
    return data;
  };

  return data;
}

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["See https://mzl.la/1R1n1t0\n    (MDN Docs) for more information."]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

var MANIFEST_FIELD_REQUIRED = {
  code: 'MANIFEST_FIELD_REQUIRED',
  message: _utils.i18n._('The field is required.'),
  description: _utils.i18n._('See https://mzl.la/1ZOhoEN (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_FIELD_REQUIRED = MANIFEST_FIELD_REQUIRED;
var MANIFEST_FIELD_INVALID = {
  code: 'MANIFEST_FIELD_INVALID',
  message: _utils.i18n._('The field is invalid.'),
  description: _utils.i18n._('See https://mzl.la/1ZOhoEN (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_FIELD_INVALID = MANIFEST_FIELD_INVALID;
var MANIFEST_FIELD_UNSUPPORTED = 'MANIFEST_FIELD_UNSUPPORTED';
exports.MANIFEST_FIELD_UNSUPPORTED = MANIFEST_FIELD_UNSUPPORTED;

function manifestFieldUnsupported(fieldName) {
  return {
    code: 'MANIFEST_FIELD_UNSUPPORTED',
    message: _utils.i18n._('Manifest field not supported.'),
    description: _utils.i18n.sprintf(_utils.i18n._('"%(fieldName)s" is not supported.'), {
      fieldName: fieldName
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_BAD_PERMISSION = {
  code: 'MANIFEST_BAD_PERMISSION',
  message: _utils.i18n._('The permission type is unsupported.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject())),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_BAD_PERMISSION = MANIFEST_BAD_PERMISSION;
var MANIFEST_BAD_OPTIONAL_PERMISSION = {
  code: 'MANIFEST_BAD_OPTIONAL_PERMISSION',
  message: _utils.i18n._('The permission type is unsupported.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject2())),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_BAD_OPTIONAL_PERMISSION = MANIFEST_BAD_OPTIONAL_PERMISSION;
var MANIFEST_PERMISSIONS = {
  code: 'MANIFEST_PERMISSIONS',
  message: _utils.i18n._('Unknown permission.'),
  description: _utils.i18n._('See https://mzl.la/1R1n1t0 (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_PERMISSIONS = MANIFEST_PERMISSIONS;
var MANIFEST_OPTIONAL_PERMISSIONS = {
  code: 'MANIFEST_OPTIONAL_PERMISSIONS',
  message: _utils.i18n._('Unknown permission.'),
  description: _utils.i18n._('See https://mzl.la/2Qn0fWC (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_OPTIONAL_PERMISSIONS = MANIFEST_OPTIONAL_PERMISSIONS;
var MANIFEST_VERSION_INVALID = {
  code: 'MANIFEST_VERSION_INVALID',
  message: _utils.i18n._('"manifest_version" in the manifest.json is not a valid value'),
  description: _utils.i18n._('See https://mzl.la/20PenXl (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_VERSION_INVALID = MANIFEST_VERSION_INVALID;
var MANIFEST_CSP = 'MANIFEST_CSP';
exports.MANIFEST_CSP = MANIFEST_CSP;

function manifestCsp(property) {
  return {
    // Note: don't change this 'code' without updating addons-server first, as
    // it depends on it to detect add-ons with a custom content security policy.
    code: MANIFEST_CSP,
    message: _utils.i18n._((0, _commonTags.oneLine)(_templateObject3(), property)),
    description: _utils.i18n._("A custom ".concat(property, " needs additional review.")),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_CSP_UNSAFE_EVAL = 'MANIFEST_CSP_UNSAFE_EVAL';
exports.MANIFEST_CSP_UNSAFE_EVAL = MANIFEST_CSP_UNSAFE_EVAL;

function manifestCspUnsafeEval(property) {
  return {
    code: MANIFEST_CSP_UNSAFE_EVAL,
    message: _utils.i18n._((0, _commonTags.oneLine)(_templateObject4(), property)),
    description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject5())),
    file: _const.MANIFEST_JSON
  };
}

var PROP_NAME_INVALID = {
  code: 'PROP_NAME_INVALID',
  message: _utils.i18n._('The "name" property must be a string.'),
  description: _utils.i18n._('See http://mzl.la/1STmr48 (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.PROP_NAME_INVALID = PROP_NAME_INVALID;
var PROP_VERSION_INVALID = {
  code: 'PROP_VERSION_INVALID',
  message: _utils.i18n._('The "version" property must be a string.'),
  description: _utils.i18n._('See http://mzl.la/1kXIADa (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.PROP_VERSION_INVALID = PROP_VERSION_INVALID;
var PROP_VERSION_TOOLKIT_ONLY = {
  code: 'PROP_VERSION_TOOLKIT_ONLY',
  message: _utils.i18n._('The "version" property uses a Firefox-specific format.'),
  description: _utils.i18n._('See http://mzl.la/1kXIADa (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.PROP_VERSION_TOOLKIT_ONLY = PROP_VERSION_TOOLKIT_ONLY;
var MANIFEST_UPDATE_URL = {
  code: 'MANIFEST_UPDATE_URL',
  message: _utils.i18n._('"update_url" is not allowed.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject6())),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_UPDATE_URL = MANIFEST_UPDATE_URL;
var MANIFEST_UNUSED_UPDATE = {
  code: 'MANIFEST_UNUSED_UPDATE',
  message: _utils.i18n._('The "update_url" property is not used by Firefox.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject7())),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_UNUSED_UPDATE = MANIFEST_UNUSED_UPDATE;
var STRICT_MAX_VERSION = {
  code: 'STRICT_MAX_VERSION',
  message: _utils.i18n._('"strict_max_version" not required.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject8())),
  file: _const.MANIFEST_JSON
};
exports.STRICT_MAX_VERSION = STRICT_MAX_VERSION;

function manifestPropMissing(property) {
  return {
    code: "PROP_".concat(property.toUpperCase(), "_MISSING"),
    message: _utils.i18n._("No \"".concat(property, "\" property found in manifest.json")),
    description: _utils.i18n._("\"".concat(property, "\" is required")),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_ICON_NOT_FOUND = 'MANIFEST_ICON_NOT_FOUND';
exports.MANIFEST_ICON_NOT_FOUND = MANIFEST_ICON_NOT_FOUND;

function manifestIconMissing(path) {
  return {
    code: MANIFEST_ICON_NOT_FOUND,
    message: _utils.i18n._('An icon defined in the manifest could not be found in the package.'),
    description: _utils.i18n.sprintf(_utils.i18n._('Icon could not be found at "%(path)s".'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_BACKGROUND_FILE_NOT_FOUND = 'MANIFEST_BACKGROUND_FILE_NOT_FOUND';
exports.MANIFEST_BACKGROUND_FILE_NOT_FOUND = MANIFEST_BACKGROUND_FILE_NOT_FOUND;

function manifestBackgroundMissing(path, type) {
  return {
    code: MANIFEST_BACKGROUND_FILE_NOT_FOUND,
    legacyCode: null,
    message: type === 'script' ? _utils.i18n._('A background script defined in the manifest could not be found.') : _utils.i18n._('A background page defined in the manifest could not be found.'),
    description: _utils.i18n.sprintf(type === 'script' ? _utils.i18n._('Background script could not be found at "%(path)s".') : _utils.i18n._('Background page could not be found at "%(path)s".'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_CONTENT_SCRIPT_FILE_NOT_FOUND = 'MANIFEST_CONTENT_SCRIPT_FILE_NOT_FOUND';
exports.MANIFEST_CONTENT_SCRIPT_FILE_NOT_FOUND = MANIFEST_CONTENT_SCRIPT_FILE_NOT_FOUND;

function manifestContentScriptFileMissing(path, type) {
  return {
    code: MANIFEST_CONTENT_SCRIPT_FILE_NOT_FOUND,
    legacyCode: null,
    message: type === 'script' ? _utils.i18n._('A content script defined in the manifest could not be found.') : _utils.i18n._('A content script css file defined in the manifest could not be found.'),
    description: _utils.i18n.sprintf(type === 'script' ? _utils.i18n._('Content script defined in the manifest could not be found at "%(path)s".') : _utils.i18n._('Content script css file defined in the manifest could not be found at "%(path)s".'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_DICT_NOT_FOUND = 'MANIFEST_DICT_NOT_FOUND';
exports.MANIFEST_DICT_NOT_FOUND = MANIFEST_DICT_NOT_FOUND;

function manifestDictionaryFileMissing(path) {
  return {
    code: MANIFEST_DICT_NOT_FOUND,
    legacyCode: null,
    message: _utils.i18n._('A dictionary file defined in the manifest could not be found.'),
    description: _utils.i18n.sprintf(_utils.i18n._('Dictionary file defined in the manifest could not be found at "%(path)s".'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_MULTIPLE_DICTS = {
  code: 'MANIFEST_MULTIPLE_DICTS',
  legacyCode: null,
  message: _utils.i18n._('The manifest contains multiple dictionaries.'),
  description: _utils.i18n._('Multiple dictionaries were defined in the manifest, which is unsupported.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_MULTIPLE_DICTS = MANIFEST_MULTIPLE_DICTS;
var MANIFEST_EMPTY_DICTS = {
  code: 'MANIFEST_EMPTY_DICTS',
  legacyCode: null,
  message: _utils.i18n._('The manifest contains a dictionaries object, but it is empty.'),
  description: _utils.i18n._('A dictionaries object was defined in the manifest, but it was empty.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_EMPTY_DICTS = MANIFEST_EMPTY_DICTS;
var MANIFEST_DICT_MISSING_ID = {
  code: 'MANIFEST_DICT_MISSING_ID',
  legacyCode: null,
  message: _utils.i18n._('The manifest contains a dictionary but no id property.'),
  description: _utils.i18n._('A dictionary was found in the manifest, but there was no id set.'),
  file: _const.MANIFEST_JSON
}; // https://github.com/mozilla/addons-linter/issues/1650
// Potentially temporary

exports.MANIFEST_DICT_MISSING_ID = MANIFEST_DICT_MISSING_ID;
var MANIFEST_INVALID_CONTENT = {
  code: 'MANIFEST_INVALID_CONTENT',
  message: _utils.i18n._('Forbidden content found in add-on.'),
  description: _utils.i18n._('This add-on contains forbidden content.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_INVALID_CONTENT = MANIFEST_INVALID_CONTENT;
var ICON_NOT_SQUARE = 'ICON_NOT_SQUARE';
exports.ICON_NOT_SQUARE = ICON_NOT_SQUARE;

function iconIsNotSquare(path) {
  return {
    code: ICON_NOT_SQUARE,
    message: _utils.i18n._('Icons must be square.'),
    description: _utils.i18n.sprintf(_utils.i18n._('Icon at "%(path)s" must be square.'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var ICON_SIZE_INVALID = 'ICON_SIZE_INVALID';
exports.ICON_SIZE_INVALID = ICON_SIZE_INVALID;

function iconSizeInvalid(_ref) {
  var path = _ref.path,
      expected = _ref.expected,
      actual = _ref.actual;
  return {
    code: ICON_SIZE_INVALID,
    message: _utils.i18n._('The size of the icon does not match the manifest.'),
    description: _utils.i18n.sprintf(_utils.i18n._((0, _commonTags.oneLine)(_templateObject9())), {
      path: path,
      expected: expected,
      actual: actual
    }),
    file: _const.MANIFEST_JSON
  };
}

var CORRUPT_ICON_FILE = 'CORRUPT_ICON_FILE';
exports.CORRUPT_ICON_FILE = CORRUPT_ICON_FILE;

function corruptIconFile(_ref2) {
  var path = _ref2.path;
  return {
    code: CORRUPT_ICON_FILE,
    message: _utils.i18n._('Corrupt image file'),
    description: _utils.i18n.sprintf(_utils.i18n._('Expected icon file at "%(path)s" is corrupted'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_FIELD_DEPRECATED = {
  code: 'MANIFEST_FIELD_DEPRECATED',
  message: _utils.i18n._('This property has been deprecated.'),
  description: null,
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_FIELD_DEPRECATED = MANIFEST_FIELD_DEPRECATED;
var MANIFEST_THEME_LWT_ALIAS = {
  code: 'MANIFEST_THEME_LWT_ALIAS',
  message: _utils.i18n._('This theme LWT alias has been removed in Firefox 70.'),
  description: _utils.i18n._('See https://mzl.la/2T11Lkc (MDN Docs) for more information.'),
  file: _const.MANIFEST_JSON
};
exports.MANIFEST_THEME_LWT_ALIAS = MANIFEST_THEME_LWT_ALIAS;
var MANIFEST_THEME_IMAGE_NOT_FOUND = 'MANIFEST_THEME_IMAGE_NOT_FOUND';
exports.MANIFEST_THEME_IMAGE_NOT_FOUND = MANIFEST_THEME_IMAGE_NOT_FOUND;

function manifestThemeImageMissing(path, type) {
  return {
    code: MANIFEST_THEME_IMAGE_NOT_FOUND,
    message: _utils.i18n.sprintf('Theme image for "%(type)s" could not be found in the package', {
      type: type
    }),
    description: _utils.i18n.sprintf(_utils.i18n._('Theme image for "%(type)s" could not be found at "%(path)s"'), {
      path: path,
      type: type
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_THEME_IMAGE_CORRUPTED = 'MANIFEST_THEME_IMAGE_CORRUPTED';
exports.MANIFEST_THEME_IMAGE_CORRUPTED = MANIFEST_THEME_IMAGE_CORRUPTED;

function manifestThemeImageCorrupted(_ref3) {
  var path = _ref3.path;
  return {
    code: MANIFEST_THEME_IMAGE_CORRUPTED,
    message: _utils.i18n._('Corrupted theme image file'),
    description: _utils.i18n.sprintf(_utils.i18n._('Theme image file at "%(path)s" is corrupted'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_THEME_IMAGE_WRONG_EXT = 'MANIFEST_THEME_IMAGE_WRONG_EXT';
exports.MANIFEST_THEME_IMAGE_WRONG_EXT = MANIFEST_THEME_IMAGE_WRONG_EXT;

function manifestThemeImageWrongExtension(_ref4) {
  var path = _ref4.path;
  return {
    code: MANIFEST_THEME_IMAGE_WRONG_EXT,
    message: _utils.i18n._('Theme image file has an unsupported file extension'),
    description: _utils.i18n.sprintf(_utils.i18n._('Theme image file at "%(path)s" has an unsupported file extension'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_THEME_IMAGE_WRONG_MIME = 'MANIFEST_THEME_IMAGE_WRONG_MIME';
exports.MANIFEST_THEME_IMAGE_WRONG_MIME = MANIFEST_THEME_IMAGE_WRONG_MIME;

function manifestThemeImageWrongMime(_ref5) {
  var path = _ref5.path,
      mime = _ref5.mime;
  return {
    code: MANIFEST_THEME_IMAGE_WRONG_MIME,
    message: _utils.i18n._('Theme image file has an unsupported mime type'),
    description: _utils.i18n.sprintf(_utils.i18n._('Theme image file at "%(path)s" has the unsupported mime type "%(mime)s"'), {
      path: path,
      mime: mime
    }),
    file: _const.MANIFEST_JSON
  };
}

var MANIFEST_THEME_IMAGE_MIME_MISMATCH = 'MANIFEST_THEME_IMAGE_MIME_MISMATCH';
exports.MANIFEST_THEME_IMAGE_MIME_MISMATCH = MANIFEST_THEME_IMAGE_MIME_MISMATCH;

function manifestThemeImageMimeMismatch(_ref6) {
  var path = _ref6.path,
      mime = _ref6.mime;
  return {
    code: MANIFEST_THEME_IMAGE_MIME_MISMATCH,
    message: _utils.i18n._('Theme image file mime type does not match its file extension'),
    description: _utils.i18n.sprintf(_utils.i18n._('Theme image file extension at "%(path)s" does not match its actual mime type "%(mime)s"'), {
      path: path,
      mime: mime
    }),
    file: _const.MANIFEST_JSON
  };
}

var PROP_NAME_MISSING = manifestPropMissing('name');
exports.PROP_NAME_MISSING = PROP_NAME_MISSING;
var PROP_VERSION_MISSING = manifestPropMissing('version');
exports.PROP_VERSION_MISSING = PROP_VERSION_MISSING;
var NO_MESSAGES_FILE = {
  code: 'NO_MESSAGES_FILE',
  message: _utils.i18n._('The "default_locale" is missing localizations.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject10())),
  file: _const.MANIFEST_JSON
};
exports.NO_MESSAGES_FILE = NO_MESSAGES_FILE;
var NO_DEFAULT_LOCALE = {
  code: 'NO_DEFAULT_LOCALE',
  message: _utils.i18n._('The "default_locale" is missing but "_locales" exist.'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject11())),
  file: _const.MANIFEST_JSON
};
exports.NO_DEFAULT_LOCALE = NO_DEFAULT_LOCALE;
var WRONG_ICON_EXTENSION = {
  code: 'WRONG_ICON_EXTENSION',
  message: _utils.i18n._('Unsupported image extension'),
  description: _utils.i18n._('Icons should be one of JPG/JPEG, WebP, GIF, PNG or SVG.'),
  file: _const.MANIFEST_JSON
};
exports.WRONG_ICON_EXTENSION = WRONG_ICON_EXTENSION;
var IGNORED_APPLICATIONS_PROPERTY = {
  code: 'IGNORED_APPLICATIONS_PROPERTY',
  message: _utils.i18n._('"applications" property overridden by "browser_specific_settings" property"'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject12())),
  file: _const.MANIFEST_JSON
};
exports.IGNORED_APPLICATIONS_PROPERTY = IGNORED_APPLICATIONS_PROPERTY;
var NO_MESSAGES_FILE_IN_LOCALES = 'NO_MESSAGES_FILE_IN_LOCALES';
exports.NO_MESSAGES_FILE_IN_LOCALES = NO_MESSAGES_FILE_IN_LOCALES;

function noMessagesFileInLocales(path) {
  return {
    code: NO_MESSAGES_FILE_IN_LOCALES,
    message: _utils.i18n._('Empty language directory'),
    description: _utils.i18n.sprintf(_utils.i18n._('messages.json file missing in "%(path)s"'), {
      path: path
    }),
    file: _const.MANIFEST_JSON
  };
}

var KEY_FIREFOX_UNSUPPORTED_BY_MIN_VERSION = 'KEY_FIREFOX_UNSUPPORTED_BY_MIN_VERSION';
exports.KEY_FIREFOX_UNSUPPORTED_BY_MIN_VERSION = KEY_FIREFOX_UNSUPPORTED_BY_MIN_VERSION;

function keyFirefoxUnsupportedByMinVersion(key, minVersion, versionAdded) {
  return {
    code: KEY_FIREFOX_UNSUPPORTED_BY_MIN_VERSION,
    message: _utils.i18n._('Manifest key not supported by the specified minimum Firefox version'),
    description: _utils.i18n.sprintf(_utils.i18n._((0, _commonTags.oneLine)(_templateObject13())), {
      key: key,
      minVersion: minVersion,
      versionAdded: versionAdded
    }),
    file: _const.MANIFEST_JSON
  };
}

var PERMISSION_FIREFOX_UNSUPPORTED_BY_MIN_VERSION = 'PERMISSION_FIREFOX_UNSUPPORTED_BY_MIN_VERSION';
exports.PERMISSION_FIREFOX_UNSUPPORTED_BY_MIN_VERSION = PERMISSION_FIREFOX_UNSUPPORTED_BY_MIN_VERSION;

function permissionFirefoxUnsupportedByMinVersion(key, minVersion, versionAdded) {
  return {
    code: PERMISSION_FIREFOX_UNSUPPORTED_BY_MIN_VERSION,
    message: _utils.i18n._('Permission not supported by the specified minimum Firefox version'),
    description: _utils.i18n.sprintf(_utils.i18n._((0, _commonTags.oneLine)(_templateObject14())), {
      key: key,
      minVersion: minVersion,
      versionAdded: versionAdded
    }),
    file: _const.MANIFEST_JSON
  };
}

var KEY_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION = 'KEY_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION';
exports.KEY_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION = KEY_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION;

function keyFirefoxAndroidUnsupportedByMinVersion(key, minVersion, versionAdded) {
  return {
    code: KEY_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION,
    message: _utils.i18n._('Manifest key not supported by the specified minimum Firefox for Android version'),
    description: _utils.i18n.sprintf(_utils.i18n._((0, _commonTags.oneLine)(_templateObject15())), {
      key: key,
      minVersion: minVersion,
      versionAdded: versionAdded
    }),
    file: _const.MANIFEST_JSON
  };
}

var PERMISSION_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION = 'PERMISSION_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION';
exports.PERMISSION_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION = PERMISSION_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION;

function permissionFirefoxAndroidUnsupportedByMinVersion(key, minVersion, versionAdded) {
  return {
    code: PERMISSION_FIREFOX_ANDROID_UNSUPPORTED_BY_MIN_VERSION,
    message: _utils.i18n._('Permission not supported by the specified minimum Firefox for Android version'),
    description: _utils.i18n.sprintf(_utils.i18n._((0, _commonTags.oneLine)(_templateObject16())), {
      key: key,
      minVersion: minVersion,
      versionAdded: versionAdded
    }),
    file: _const.MANIFEST_JSON
  };
}

var RESTRICTED_HOMEPAGE_URL = {
  code: 'RESTRICTED_HOMEPAGE_URL',
  message: _utils.i18n._('Linking to "addons.mozilla.org" is not allowed'),
  description: _utils.i18n._('Links directing to "addons.mozilla.org" are not allowed to be used for homepage'),
  file: _const.MANIFEST_JSON
};
exports.RESTRICTED_HOMEPAGE_URL = RESTRICTED_HOMEPAGE_URL;

/***/ }),
/* 27 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.FLUENT_INVALID = void 0;

var _utils = __webpack_require__(3);

var FLUENT_INVALID = {
  code: 'FLUENT_INVALID',
  message: _utils.i18n._('Your FTL is not valid.'),
  description: _utils.i18n._('Your FTL file could not be parsed.')
};
exports.FLUENT_INVALID = FLUENT_INVALID;

/***/ }),
/* 28 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var _interopRequireDefault = __webpack_require__(4);

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.NO_PLACEHOLDER_CONTENT = exports.INVALID_PLACEHOLDER_NAME = exports.MISSING_PLACEHOLDER = exports.INVALID_MESSAGE_NAME = exports.PREDEFINED_MESSAGE_NAME = exports.NO_MESSAGE = void 0;

var _taggedTemplateLiteral2 = _interopRequireDefault(__webpack_require__(6));

var _commonTags = __webpack_require__(13);

var _utils = __webpack_require__(3);

function _templateObject4() {
  var data = (0, _taggedTemplateLiteral2["default"])(["A placeholder needs a content property defining the\n    replacement of it (https://mzl.la/2DT1MQd)"]);

  _templateObject4 = function _templateObject4() {
    return data;
  };

  return data;
}

function _templateObject3() {
  var data = (0, _taggedTemplateLiteral2["default"])(["Placeholder name should only contain alpha-numeric\n    characters, _ and @ (https://mzl.la/2ExbYez)."]);

  _templateObject3 = function _templateObject3() {
    return data;
  };

  return data;
}

function _templateObject2() {
  var data = (0, _taggedTemplateLiteral2["default"])(["String name should only contain alpha-numeric\n    characters, _ and @ (https://mzl.la/2Eztyi5)."]);

  _templateObject2 = function _templateObject2() {
    return data;
  };

  return data;
}

function _templateObject() {
  var data = (0, _taggedTemplateLiteral2["default"])(["String names starting with @@ get translated to built-in\n    constants (https://mzl.la/2BL9ZjE)."]);

  _templateObject = function _templateObject() {
    return data;
  };

  return data;
}

var NO_MESSAGE = {
  code: 'NO_MESSAGE',
  message: _utils.i18n._('Translation string is missing the message property'),
  description: _utils.i18n._('No "message" message property is set for a string (https://mzl.la/2DSBTjA).')
};
exports.NO_MESSAGE = NO_MESSAGE;
var PREDEFINED_MESSAGE_NAME = {
  code: 'PREDEFINED_MESSAGE_NAME',
  message: _utils.i18n._('String name is reserved for a predefined message'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject()))
};
exports.PREDEFINED_MESSAGE_NAME = PREDEFINED_MESSAGE_NAME;
var INVALID_MESSAGE_NAME = {
  code: 'INVALID_MESSAGE_NAME',
  message: 'String name contains invalid characters',
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject2()))
};
exports.INVALID_MESSAGE_NAME = INVALID_MESSAGE_NAME;
var MISSING_PLACEHOLDER = {
  code: 'MISSING_PLACEHOLDER',
  message: _utils.i18n._('Placeholder for message is missing'),
  description: _utils.i18n._('A placeholder used in the message is not defined.')
};
exports.MISSING_PLACEHOLDER = MISSING_PLACEHOLDER;
var INVALID_PLACEHOLDER_NAME = {
  code: 'INVALID_PLACEHOLDER_NAME',
  message: _utils.i18n._('Placeholder name contains invalid characters'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject3()))
};
exports.INVALID_PLACEHOLDER_NAME = INVALID_PLACEHOLDER_NAME;
var NO_PLACEHOLDER_CONTENT = {
  code: 'NO_PLACEHOLDER_CONTENT',
  message: _utils.i18n._('Placeholder is missing the content property'),
  description: _utils.i18n._((0, _commonTags.oneLine)(_templateObject4()))
};
exports.NO_PLACEHOLDER_CONTENT = NO_PLACEHOLDER_CONTENT;

/***/ }),
/* 29 */,
/* 30 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.create = exports["default"] = void 0;

var _messages = __webpack_require__(21);

var _utils = __webpack_require__(3);

/*
 * This rule will detect a global passed to `require()` as the first argument.
 */
var rule = {
  create: function create(context) {
    return {
      // eslint-disable-next-line consistent-return
      CallExpression: function CallExpression(node) {
        if (node.callee.name === 'require' && node.arguments && node.arguments.length) {
          var firstArg = node.arguments[0];

          if (firstArg.type === 'Identifier') {
            var pathVar = (0, _utils.getVariable)(context, firstArg.name);

            if (typeof pathVar === 'undefined') {
              // We infer this is probably a global.
              return context.report(node, _messages.UNEXPECTED_GLOGAL_ARG.code);
            }
          }
        }
      }
    };
  }
};
var _default = rule;
exports["default"] = _default;
var create = rule.create;
exports.create = create;

/***/ })
/******/ ])["default"];
//# sourceMappingURL=global-require-arg.js.map