parse-server 8.6.8 → 8.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,6 +75,9 @@ const verifyIdToken = async ({
75
75
  cacheMaxEntries,
76
76
  cacheMaxAge
77
77
  }) => {
78
+ if (!clientId) {
79
+ throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Apple auth is not configured.');
80
+ }
78
81
  if (!token) {
79
82
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `id token is invalid for this user.`);
80
83
  }
@@ -119,4 +122,4 @@ module.exports = {
119
122
  validateAppId,
120
123
  validateAuthData
121
124
  };
122
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJqd2tzQ2xpZW50Iiwiand0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiZ2V0QXBwbGVLZXlCeUtleUlkIiwia2V5SWQiLCJjYWNoZU1heEVudHJpZXMiLCJjYWNoZU1heEFnZSIsImNsaWVudCIsImp3a3NVcmkiLCJjYWNoZSIsImtleSIsImdldFNpZ25pbmdLZXkiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2ZXJpZnlJZFRva2VuIiwidG9rZW4iLCJpZCIsImNsaWVudElkIiwia2lkIiwiZ2V0SGVhZGVyRnJvbVRva2VuIiwiT05FX0hPVVJfSU5fTVMiLCJqd3RDbGFpbXMiLCJhcHBsZUtleSIsInNpZ25pbmdLZXkiLCJwdWJsaWNLZXkiLCJyc2FQdWJsaWNLZXkiLCJ2ZXJpZnkiLCJhbGdvcml0aG1zIiwiYXVkaWVuY2UiLCJleGNlcHRpb24iLCJtZXNzYWdlIiwiaXNzIiwic3ViIiwidmFsaWRhdGVBdXRoRGF0YSIsImF1dGhEYXRhIiwib3B0aW9ucyIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvQXV0aC9hcHBsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhcnNlIFNlcnZlciBhdXRoZW50aWNhdGlvbiBhZGFwdGVyIGZvciBBcHBsZS5cbiAqXG4gKiBAY2xhc3MgQXBwbGVBZGFwdGVyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGFkYXB0ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jbGllbnRJZCAtIFlvdXIgQXBwbGUgQXBwIElELlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhdXRoRGF0YSAtIFRoZSBhdXRoZW50aWNhdGlvbiBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXV0aERhdGEuaWQgLSBUaGUgdXNlciBJRCBvYnRhaW5lZCBmcm9tIEFwcGxlLlxuICogQHBhcmFtIHtzdHJpbmd9IGF1dGhEYXRhLnRva2VuIC0gVGhlIHRva2VuIG9idGFpbmVkIGZyb20gQXBwbGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiAjIyBQYXJzZSBTZXJ2ZXIgQ29uZmlndXJhdGlvblxuICogVG8gY29uZmlndXJlIFBhcnNlIFNlcnZlciBmb3IgQXBwbGUgYXV0aGVudGljYXRpb24sIHVzZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJhdXRoXCI6IHtcbiAqICAgICBcImFwcGxlXCI6IHtcbiAqICAgICAgIFwiY2xpZW50SWRcIjogXCIxMjM0NVwiXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyBFeHBlY3RlZCBgYXV0aERhdGFgIGZyb20gdGhlIENsaWVudFxuICogVGhlIGFkYXB0ZXIgZXhwZWN0cyB0aGUgY2xpZW50IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBgYXV0aERhdGFgIHBheWxvYWQ6XG4gKiAtIGBhdXRoRGF0YS5pZGAgKCoqc3RyaW5nKiosIHJlcXVpcmVkKTogVGhlIHVzZXIgSUQgb2J0YWluZWQgZnJvbSBBcHBsZS5cbiAqIC0gYGF1dGhEYXRhLnRva2VuYCAoKipzdHJpbmcqKiwgcmVxdWlyZWQpOiBUaGUgdG9rZW4gb2J0YWluZWQgZnJvbSBBcHBsZS5cbiAqXG4gKiBQYXJzZSBTZXJ2ZXIgc3RvcmVzIHRoZSByZXF1aXJlZCBhdXRoZW50aWNhdGlvbiBkYXRhIGluIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiAjIyMgRXhhbXBsZSBBdXRoRGF0YSBmcm9tIEFwcGxlXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIFwiYXBwbGVcIjoge1xuICogICAgIFwiaWRcIjogXCIxMjM0NTY3XCIsXG4gKiAgICAgXCJ0b2tlblwiOiBcInh4eHh4Lnl5eXl5Lnp6enp6XCJcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vc2lnbmlud2l0aGFwcGxlcmVzdGFwaSBTaWduIGluIHdpdGggQXBwbGUgUkVTVCBBUEkgRG9jdW1lbnRhdGlvbn1cbiAqL1xuXG4vLyBBcHBsZSBTaWduSW4gQXV0aFxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vc2lnbmlud2l0aGFwcGxlcmVzdGFwaVxuXG5jb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcbmNvbnN0IGp3a3NDbGllbnQgPSByZXF1aXJlKCdqd2tzLXJzYScpO1xuY29uc3Qgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XG5jb25zdCBhdXRoVXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IFRPS0VOX0lTU1VFUiA9ICdodHRwczovL2FwcGxlaWQuYXBwbGUuY29tJztcblxuY29uc3QgZ2V0QXBwbGVLZXlCeUtleUlkID0gYXN5bmMgKGtleUlkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlKSA9PiB7XG4gIGNvbnN0IGNsaWVudCA9IGp3a3NDbGllbnQoe1xuICAgIGp3a3NVcmk6IGAke1RPS0VOX0lTU1VFUn0vYXV0aC9rZXlzYCxcbiAgICBjYWNoZTogdHJ1ZSxcbiAgICBjYWNoZU1heEVudHJpZXMsXG4gICAgY2FjaGVNYXhBZ2UsXG4gIH0pO1xuXG4gIGxldCBrZXk7XG4gIHRyeSB7XG4gICAga2V5ID0gYXdhaXQgYXV0aFV0aWxzLmdldFNpZ25pbmdLZXkoY2xpZW50LCBrZXlJZCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICBgVW5hYmxlIHRvIGZpbmQgbWF0Y2hpbmcga2V5IGZvciBLZXkgSUQ6ICR7a2V5SWR9YFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGtleTtcbn07XG5cbmNvbnN0IHZlcmlmeUlkVG9rZW4gPSBhc3luYyAoeyB0b2tlbiwgaWQgfSwgeyBjbGllbnRJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSB9KSA9PiB7XG4gIGlmICghdG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYGlkIHRva2VuIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci5gKTtcbiAgfVxuXG4gIGNvbnN0IHsga2lkOiBrZXlJZCB9ID0gYXV0aFV0aWxzLmdldEhlYWRlckZyb21Ub2tlbih0b2tlbik7XG4gIGNvbnN0IE9ORV9IT1VSX0lOX01TID0gMzYwMDAwMDtcbiAgbGV0IGp3dENsYWltcztcblxuICBjYWNoZU1heEFnZSA9IGNhY2hlTWF4QWdlIHx8IE9ORV9IT1VSX0lOX01TO1xuICBjYWNoZU1heEVudHJpZXMgPSBjYWNoZU1heEVudHJpZXMgfHwgNTtcblxuICBjb25zdCBhcHBsZUtleSA9IGF3YWl0IGdldEFwcGxlS2V5QnlLZXlJZChrZXlJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSk7XG4gIGNvbnN0IHNpZ25pbmdLZXkgPSBhcHBsZUtleS5wdWJsaWNLZXkgfHwgYXBwbGVLZXkucnNhUHVibGljS2V5O1xuXG4gIHRyeSB7XG4gICAgand0Q2xhaW1zID0gand0LnZlcmlmeSh0b2tlbiwgc2lnbmluZ0tleSwge1xuICAgICAgYWxnb3JpdGhtczogWydSUzI1NiddLFxuICAgICAgLy8gdGhlIGF1ZGllbmNlIGNhbiBiZSBjaGVja2VkIGFnYWluc3QgYSBzdHJpbmcsIGEgcmVndWxhciBleHByZXNzaW9uIG9yIGEgbGlzdCBvZiBzdHJpbmdzIGFuZC9vciByZWd1bGFyIGV4cHJlc3Npb25zLlxuICAgICAgYXVkaWVuY2U6IGNsaWVudElkLFxuICAgIH0pO1xuICB9IGNhdGNoIChleGNlcHRpb24pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXhjZXB0aW9uLm1lc3NhZ2U7XG5cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYCR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuaXNzICE9PSBUT0tFTl9JU1NVRVIpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgYGlkIHRva2VuIG5vdCBpc3N1ZWQgYnkgY29ycmVjdCBPcGVuSUQgcHJvdmlkZXIgLSBleHBlY3RlZDogJHtUT0tFTl9JU1NVRVJ9IHwgZnJvbTogJHtqd3RDbGFpbXMuaXNzfWBcbiAgICApO1xuICB9XG5cbiAgaWYgKGp3dENsYWltcy5zdWIgIT09IGlkKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGBhdXRoIGRhdGEgaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLmApO1xuICB9XG4gIHJldHVybiBqd3RDbGFpbXM7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgaWQgdG9rZW4gaXMgdmFsaWRcbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gdmVyaWZ5SWRUb2tlbihhdXRoRGF0YSwgb3B0aW9ucyk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJqd2tzQ2xpZW50Iiwiand0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiZ2V0QXBwbGVLZXlCeUtleUlkIiwia2V5SWQiLCJjYWNoZU1heEVudHJpZXMiLCJjYWNoZU1heEFnZSIsImNsaWVudCIsImp3a3NVcmkiLCJjYWNoZSIsImtleSIsImdldFNpZ25pbmdLZXkiLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2ZXJpZnlJZFRva2VuIiwidG9rZW4iLCJpZCIsImNsaWVudElkIiwia2lkIiwiZ2V0SGVhZGVyRnJvbVRva2VuIiwiT05FX0hPVVJfSU5fTVMiLCJqd3RDbGFpbXMiLCJhcHBsZUtleSIsInNpZ25pbmdLZXkiLCJwdWJsaWNLZXkiLCJyc2FQdWJsaWNLZXkiLCJ2ZXJpZnkiLCJhbGdvcml0aG1zIiwiYXVkaWVuY2UiLCJleGNlcHRpb24iLCJtZXNzYWdlIiwiaXNzIiwic3ViIiwidmFsaWRhdGVBdXRoRGF0YSIsImF1dGhEYXRhIiwib3B0aW9ucyIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvQXV0aC9hcHBsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhcnNlIFNlcnZlciBhdXRoZW50aWNhdGlvbiBhZGFwdGVyIGZvciBBcHBsZS5cbiAqXG4gKiBAY2xhc3MgQXBwbGVBZGFwdGVyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGFkYXB0ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jbGllbnRJZCAtIFlvdXIgQXBwbGUgQXBwIElELlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhdXRoRGF0YSAtIFRoZSBhdXRoZW50aWNhdGlvbiBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXV0aERhdGEuaWQgLSBUaGUgdXNlciBJRCBvYnRhaW5lZCBmcm9tIEFwcGxlLlxuICogQHBhcmFtIHtzdHJpbmd9IGF1dGhEYXRhLnRva2VuIC0gVGhlIHRva2VuIG9idGFpbmVkIGZyb20gQXBwbGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiAjIyBQYXJzZSBTZXJ2ZXIgQ29uZmlndXJhdGlvblxuICogVG8gY29uZmlndXJlIFBhcnNlIFNlcnZlciBmb3IgQXBwbGUgYXV0aGVudGljYXRpb24sIHVzZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJhdXRoXCI6IHtcbiAqICAgICBcImFwcGxlXCI6IHtcbiAqICAgICAgIFwiY2xpZW50SWRcIjogXCIxMjM0NVwiXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyBFeHBlY3RlZCBgYXV0aERhdGFgIGZyb20gdGhlIENsaWVudFxuICogVGhlIGFkYXB0ZXIgZXhwZWN0cyB0aGUgY2xpZW50IHRvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBgYXV0aERhdGFgIHBheWxvYWQ6XG4gKiAtIGBhdXRoRGF0YS5pZGAgKCoqc3RyaW5nKiosIHJlcXVpcmVkKTogVGhlIHVzZXIgSUQgb2J0YWluZWQgZnJvbSBBcHBsZS5cbiAqIC0gYGF1dGhEYXRhLnRva2VuYCAoKipzdHJpbmcqKiwgcmVxdWlyZWQpOiBUaGUgdG9rZW4gb2J0YWluZWQgZnJvbSBBcHBsZS5cbiAqXG4gKiBQYXJzZSBTZXJ2ZXIgc3RvcmVzIHRoZSByZXF1aXJlZCBhdXRoZW50aWNhdGlvbiBkYXRhIGluIHRoZSBkYXRhYmFzZS5cbiAqXG4gKiAjIyMgRXhhbXBsZSBBdXRoRGF0YSBmcm9tIEFwcGxlXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIFwiYXBwbGVcIjoge1xuICogICAgIFwiaWRcIjogXCIxMjM0NTY3XCIsXG4gKiAgICAgXCJ0b2tlblwiOiBcInh4eHh4Lnl5eXl5Lnp6enp6XCJcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vc2lnbmlud2l0aGFwcGxlcmVzdGFwaSBTaWduIGluIHdpdGggQXBwbGUgUkVTVCBBUEkgRG9jdW1lbnRhdGlvbn1cbiAqL1xuXG4vLyBBcHBsZSBTaWduSW4gQXV0aFxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vc2lnbmlud2l0aGFwcGxlcmVzdGFwaVxuXG5jb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcbmNvbnN0IGp3a3NDbGllbnQgPSByZXF1aXJlKCdqd2tzLXJzYScpO1xuY29uc3Qgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XG5jb25zdCBhdXRoVXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IFRPS0VOX0lTU1VFUiA9ICdodHRwczovL2FwcGxlaWQuYXBwbGUuY29tJztcblxuY29uc3QgZ2V0QXBwbGVLZXlCeUtleUlkID0gYXN5bmMgKGtleUlkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlKSA9PiB7XG4gIGNvbnN0IGNsaWVudCA9IGp3a3NDbGllbnQoe1xuICAgIGp3a3NVcmk6IGAke1RPS0VOX0lTU1VFUn0vYXV0aC9rZXlzYCxcbiAgICBjYWNoZTogdHJ1ZSxcbiAgICBjYWNoZU1heEVudHJpZXMsXG4gICAgY2FjaGVNYXhBZ2UsXG4gIH0pO1xuXG4gIGxldCBrZXk7XG4gIHRyeSB7XG4gICAga2V5ID0gYXdhaXQgYXV0aFV0aWxzLmdldFNpZ25pbmdLZXkoY2xpZW50LCBrZXlJZCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICBgVW5hYmxlIHRvIGZpbmQgbWF0Y2hpbmcga2V5IGZvciBLZXkgSUQ6ICR7a2V5SWR9YFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGtleTtcbn07XG5cbmNvbnN0IHZlcmlmeUlkVG9rZW4gPSBhc3luYyAoeyB0b2tlbiwgaWQgfSwgeyBjbGllbnRJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSB9KSA9PiB7XG4gIGlmICghY2xpZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgJ0FwcGxlIGF1dGggaXMgbm90IGNvbmZpZ3VyZWQuJ1xuICAgICk7XG4gIH1cblxuICBpZiAoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGBpZCB0b2tlbiBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuYCk7XG4gIH1cblxuICBjb25zdCB7IGtpZDoga2V5SWQgfSA9IGF1dGhVdGlscy5nZXRIZWFkZXJGcm9tVG9rZW4odG9rZW4pO1xuICBjb25zdCBPTkVfSE9VUl9JTl9NUyA9IDM2MDAwMDA7XG4gIGxldCBqd3RDbGFpbXM7XG5cbiAgY2FjaGVNYXhBZ2UgPSBjYWNoZU1heEFnZSB8fCBPTkVfSE9VUl9JTl9NUztcbiAgY2FjaGVNYXhFbnRyaWVzID0gY2FjaGVNYXhFbnRyaWVzIHx8IDU7XG5cbiAgY29uc3QgYXBwbGVLZXkgPSBhd2FpdCBnZXRBcHBsZUtleUJ5S2V5SWQoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpO1xuICBjb25zdCBzaWduaW5nS2V5ID0gYXBwbGVLZXkucHVibGljS2V5IHx8IGFwcGxlS2V5LnJzYVB1YmxpY0tleTtcblxuICB0cnkge1xuICAgIGp3dENsYWltcyA9IGp3dC52ZXJpZnkodG9rZW4sIHNpZ25pbmdLZXksIHtcbiAgICAgIGFsZ29yaXRobXM6IFsnUlMyNTYnXSxcbiAgICAgIC8vIHRoZSBhdWRpZW5jZSBjYW4gYmUgY2hlY2tlZCBhZ2FpbnN0IGEgc3RyaW5nLCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBhIGxpc3Qgb2Ygc3RyaW5ncyBhbmQvb3IgcmVndWxhciBleHByZXNzaW9ucy5cbiAgICAgIGF1ZGllbmNlOiBjbGllbnRJZCxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGV4Y2VwdGlvbi5tZXNzYWdlO1xuXG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGAke21lc3NhZ2V9YCk7XG4gIH1cblxuICBpZiAoand0Q2xhaW1zLmlzcyAhPT0gVE9LRU5fSVNTVUVSKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBpZCB0b2tlbiBub3QgaXNzdWVkIGJ5IGNvcnJlY3QgT3BlbklEIHByb3ZpZGVyIC0gZXhwZWN0ZWQ6ICR7VE9LRU5fSVNTVUVSfSB8IGZyb206ICR7and0Q2xhaW1zLmlzc31gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuc3ViICE9PSBpZCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBgYXV0aCBkYXRhIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci5gKTtcbiAgfVxuICByZXR1cm4gand0Q2xhaW1zO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGlkIHRva2VuIGlzIHZhbGlkXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhLCBvcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIHZlcmlmeUlkVG9rZW4oYXV0aERhdGEsIG9wdGlvbnMpO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0QsS0FBSztBQUN6QyxNQUFNRSxVQUFVLEdBQUdELE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFDdEMsTUFBTUUsR0FBRyxHQUFHRixPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ25DLE1BQU1HLFNBQVMsR0FBR0gsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUVwQyxNQUFNSSxZQUFZLEdBQUcsMkJBQTJCO0FBRWhELE1BQU1DLGtCQUFrQixHQUFHLE1BQUFBLENBQU9DLEtBQUssRUFBRUMsZUFBZSxFQUFFQyxXQUFXLEtBQUs7RUFDeEUsTUFBTUMsTUFBTSxHQUFHUixVQUFVLENBQUM7SUFDeEJTLE9BQU8sRUFBRSxHQUFHTixZQUFZLFlBQVk7SUFDcENPLEtBQUssRUFBRSxJQUFJO0lBQ1hKLGVBQWU7SUFDZkM7RUFDRixDQUFDLENBQUM7RUFFRixJQUFJSSxHQUFHO0VBQ1AsSUFBSTtJQUNGQSxHQUFHLEdBQUcsTUFBTVQsU0FBUyxDQUFDVSxhQUFhLENBQUNKLE1BQU0sRUFBRUgsS0FBSyxDQUFDO0VBQ3BELENBQUMsQ0FBQyxNQUFNO0lBQ04sTUFBTSxJQUFJUCxLQUFLLENBQUNlLEtBQUssQ0FDbkJmLEtBQUssQ0FBQ2UsS0FBSyxDQUFD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
@@ -54,8 +54,6 @@
54
54
  * - `>= 6.5.6 < 7`
55
55
  * - `>= 7.0.1`
56
56
  *
57
- * Secure authentication is recommended to ensure proper data protection and compliance with Facebook's guidelines.
58
- *
59
57
  * @see {@link https://developers.facebook.com/docs/facebook-login/limited-login/ Facebook Limited Login}
60
58
  * @see {@link https://developers.facebook.com/docs/facebook-login/facebook-login-for-business/ Facebook Login for Business}
61
59
  */
@@ -119,10 +117,13 @@ const verifyIdToken = async ({
119
117
  token,
120
118
  id
121
119
  }, {
122
- clientId,
120
+ appIds,
123
121
  cacheMaxEntries,
124
122
  cacheMaxAge
125
123
  }) => {
124
+ if (!Array.isArray(appIds) || !appIds.length) {
125
+ throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Facebook auth is not configured.');
126
+ }
126
127
  if (!token) {
127
128
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'id token is invalid for this user.');
128
129
  }
@@ -139,7 +140,7 @@ const verifyIdToken = async ({
139
140
  jwtClaims = jwt.verify(token, signingKey, {
140
141
  algorithms: ['RS256'],
141
142
  // the audience can be checked against a string, a regular expression or a list of strings and/or regular expressions.
142
- audience: clientId
143
+ audience: appIds
143
144
  });
144
145
  } catch (exception) {
145
146
  const message = exception.message;
@@ -180,4 +181,4 @@ module.exports = {
180
181
  validateAppId: validateAppId,
181
182
  validateAuthData: validateAuthData
182
183
  };
183
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJjcnlwdG8iLCJqd2tzQ2xpZW50Iiwiand0IiwiaHR0cHNSZXF1ZXN0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiZ2V0QXBwU2VjcmV0UGF0aCIsImF1dGhEYXRhIiwib3B0aW9ucyIsImFwcFNlY3JldCIsImFwcHNlY3JldF9wcm9vZiIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJhY2Nlc3NfdG9rZW4iLCJkaWdlc3QiLCJ2YWxpZGF0ZUdyYXBoVG9rZW4iLCJncmFwaFJlcXVlc3QiLCJ0aGVuIiwiZGF0YSIsImlkIiwicHJvY2VzcyIsImVudiIsIlRFU1RJTkciLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUdyYXBoQXBwSWQiLCJhcHBJZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJpbmNsdWRlcyIsImdldEZhY2Vib29rS2V5QnlLZXlJZCIsImtleUlkIiwiY2FjaGVNYXhFbnRyaWVzIiwiY2FjaGVNYXhBZ2UiLCJjbGllbnQiLCJqd2tzVXJpIiwiY2FjaGUiLCJrZXkiLCJnZXRTaWduaW5nS2V5IiwidmVyaWZ5SWRUb2tlbiIsInRva2VuIiwiY2xpZW50SWQiLCJraWQiLCJnZXRIZWFkZXJGcm9tVG9rZW4iLCJPTkVfSE9VUl9JTl9NUyIsImp3dENsYWltcyIsImZhY2Vib29rS2V5Iiwic2lnbmluZ0tleSIsInB1YmxpY0tleSIsInJzYVB1YmxpY0tleSIsInZlcmlmeSIsImFsZ29yaXRobXMiLCJhdWRpZW5jZSIsImV4Y2VwdGlvbiIsIm1lc3NhZ2UiLCJpc3MiLCJzdWIiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwidmFsaWRhdGVBcHBJZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicGF0aCIsImdldCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvQXV0aC9mYWNlYm9vay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhcnNlIFNlcnZlciBhdXRoZW50aWNhdGlvbiBhZGFwdGVyIGZvciBGYWNlYm9vay5cbiAqXG4gKiBAY2xhc3MgRmFjZWJvb2tBZGFwdGVyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFRoZSBhZGFwdGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmFwcFNlY3JldCAtIFlvdXIgRmFjZWJvb2sgQXBwIFNlY3JldC4gUmVxdWlyZWQgZm9yIHNlY3VyZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nW119IG9wdGlvbnMuYXBwSWRzIC0gQW4gYXJyYXkgb2YgRmFjZWJvb2sgQXBwIElEcy4gUmVxdWlyZWQgZm9yIHZhbGlkYXRpbmcgdGhlIGFwcC5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqICMjIFBhcnNlIFNlcnZlciBDb25maWd1cmF0aW9uXG4gKiBUbyBjb25maWd1cmUgUGFyc2UgU2VydmVyIGZvciBGYWNlYm9vayBhdXRoZW50aWNhdGlvbiwgdXNlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICogYGBganNvblxuICoge1xuICogICBcImF1dGhcIjoge1xuICogICAgIFwiZmFjZWJvb2tcIjoge1xuICogICAgICAgXCJhcHBTZWNyZXRcIjogXCJ5b3VyLWFwcC1zZWNyZXRcIixcbiAqICAgICAgIFwiYXBwSWRzXCI6IFtcInlvdXItYXBwLWlkXCJdXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGUgYWRhcHRlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHM6XG4gKiAtICoqU3RhbmRhcmQgTG9naW4qKjogUmVxdWlyZXMgYGlkYCBhbmQgYGFjY2Vzc190b2tlbmAuXG4gKiAtICoqTGltaXRlZCBMb2dpbioqOiBSZXF1aXJlcyBgaWRgIGFuZCBgdG9rZW5gLlxuICpcbiAqICMjIEF1dGggUGF5bG9hZHNcbiAqICMjIyBTdGFuZGFyZCBMb2dpbiBQYXlsb2FkXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIFwiZmFjZWJvb2tcIjoge1xuICogICAgIFwiaWRcIjogXCIxMjM0NTY3XCIsXG4gKiAgICAgXCJhY2Nlc3NfdG9rZW5cIjogXCJhYmMxMjNkZWY0NTZnaGk3ODlcIlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgTGltaXRlZCBMb2dpbiBQYXlsb2FkXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIFwiZmFjZWJvb2tcIjoge1xuICogICAgIFwiaWRcIjogXCIxMjM0NTY3XCIsXG4gKiAgICAgXCJ0b2tlblwiOiBcInh4eHh4Lnl5eXl5Lnp6enp6XCJcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMgTm90ZXNcbiAqIC0gKipTdGFuZGFyZCBMb2dpbioqOiBVc2UgYGlkYCBhbmQgYGFjY2Vzc190b2tlbmAgZm9yIGZ1bGwgZnVuY3Rpb25hbGl0eS5cbiAqIC0gKipMaW1pdGVkIExvZ2luKio6IFVzZSBgaWRgIGFuZCBgdG9rZW5gIChKV1QpIHdoZW4gdHJhY2tpbmcgaXMgb3B0ZWQgb3V0IChlLmcuLCB2aWEgQXBwbGUncyBBcHAgVHJhY2tpbmcgVHJhbnNwYXJlbmN5KS5cbiAqIC0gU3VwcG9ydGVkIFBhcnNlIFNlcnZlciB2ZXJzaW9uczpcbiAqICAgLSBgPj0gNi41LjYgPCA3YFxuICogICAtIGA+PSA3LjAuMWBcbiAqXG4gKiBTZWN1cmUgYXV0aGVudGljYXRpb24gaXMgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHByb3BlciBkYXRhIHByb3RlY3Rpb24gYW5kIGNvbXBsaWFuY2Ugd2l0aCBGYWNlYm9vaydzIGd1aWRlbGluZXMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL2ZhY2Vib29rLWxvZ2luL2xpbWl0ZWQtbG9naW4vIEZhY2Vib29rIExpbWl0ZWQgTG9naW59XG4gKiBAc2VlIHtAbGluayBodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvZmFjZWJvb2stbG9naW4vZmFjZWJvb2stbG9naW4tZm9yLWJ1c2luZXNzLyBGYWNlYm9vayBMb2dpbiBmb3IgQnVzaW5lc3N9XG4gKi9cblxuLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIHRoZSBGYWNlYm9vayBHcmFwaCBBUEkuXG5jb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuY29uc3Qgandrc0NsaWVudCA9IHJlcXVpcmUoJ2p3a3MtcnNhJyk7XG5jb25zdCBqd3QgPSByZXF1aXJlKCdqc29ud2VidG9rZW4nKTtcbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG5jb25zdCBhdXRoVXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IFRPS0VOX0lTU1VFUiA9ICdodHRwczovL3d3dy5mYWNlYm9vay5jb20nO1xuXG5mdW5jdGlvbiBnZXRBcHBTZWNyZXRQYXRoKGF1dGhEYXRhLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgYXBwU2VjcmV0ID0gb3B0aW9ucy5hcHBTZWNyZXQ7XG4gIGlmICghYXBwU2VjcmV0KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IGFwcHNlY3JldF9wcm9vZiA9IGNyeXB0b1xuICAgIC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBhcHBTZWNyZXQpXG4gICAgLnVwZGF0ZShhdXRoRGF0YS5hY2Nlc3NfdG9rZW4pXG4gICAgLmRpZ2VzdCgnaGV4Jyk7XG5cbiAgcmV0dXJuIGAmYXBwc2VjcmV0X3Byb29mPSR7YXBwc2VjcmV0X3Byb29mfWA7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlR3JhcGhUb2tlbihhdXRoRGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gZ3JhcGhSZXF1ZXN0KFxuICAgICdtZT9maWVsZHM9aWQmYWNjZXNzX3Rva2VuPScgKyBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4gKyBnZXRBcHBTZWNyZXRQYXRoKGF1dGhEYXRhLCBvcHRpb25zKVxuICApLnRoZW4oZGF0YSA9PiB7XG4gICAgaWYgKChkYXRhICYmIGRhdGEuaWQgPT0gYXV0aERhdGEuaWQpIHx8IChwcm9jZXNzLmVudi5URVNUSU5HICYmIGF1dGhEYXRhLmlkID09PSAndGVzdCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnRmFjZWJvb2sgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZUdyYXBoQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucykge1xuICB2YXIgYWNjZXNzX3Rva2VuID0gYXV0aERhdGEuYWNjZXNzX3Rva2VuO1xuICBpZiAocHJvY2Vzcy5lbnYuVEVTVElORyAmJiBhY2Nlc3NfdG9rZW4gPT09ICd0ZXN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIUFycmF5LmlzQXJyYXkoYXBwSWRzKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnYXBwSWRzIG11c3QgYmUgYW4gYXJyYXkuJyk7XG4gIH1cbiAgaWYgKCFhcHBJZHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdGYWNlYm9vayBhdXRoIGlzIG5vdCBjb25maWd1cmVkLicpO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBncmFwaFJlcXVlc3QoXG4gICAgYGFwcD9hY2Nlc3NfdG9rZW49JHthY2Nlc3NfdG9rZW59JHtnZXRBcHBTZWNyZXRQYXRoKGF1dGhEYXRhLCBvcHRpb25zKX1gXG4gICk7XG4gIGlmICghZGF0YSB8fCAhYXBwSWRzLmluY2x1ZGVzKGRhdGEuaWQpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdGYWNlYm9vayBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfVxufVxuXG5jb25zdCBnZXRGYWNlYm9va0tleUJ5S2V5SWQgPSBhc3luYyAoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpID0+IHtcbiAgY29uc3QgY2xpZW50ID0gandrc0NsaWVudCh7XG4gICAgandrc1VyaTogYCR7VE9LRU5fSVNTVUVSfS8ud2VsbC1rbm93bi9vYXV0aC9vcGVuaWQvandrcy9gLFxuICAgIGNhY2hlOiB0cnVlLFxuICAgIGNhY2hlTWF4RW50cmllcyxcbiAgICBjYWNoZU1heEFnZSxcbiAgfSk7XG5cbiAgbGV0IGtleTtcbiAgdHJ5IHtcbiAgICBrZXkgPSBhd2FpdCBhdXRoVXRpbHMuZ2V0U2lnbmluZ0tleShjbGllbnQsIGtleUlkKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBVbmFibGUgdG8gZmluZCBtYXRjaGluZyBrZXkgZm9yIEtleSBJRDogJHtrZXlJZH1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4ga2V5O1xufTtcblxuY29uc3QgdmVyaWZ5SWRUb2tlbiA9IGFzeW5jICh7IHRva2VuLCBpZCB9LCB7IGNsaWVudElkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlIH0pID0+IHtcbiAgaWYgKCF0b2tlbikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnaWQgdG9rZW4gaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG5cbiAgY29uc3QgeyBraWQ6IGtleUlkIH0gPSBhdXRoVXRpbHMuZ2V0SGVhZGVyRnJvbVRva2VuKHRva2VuKTtcbiAgY29uc3QgT05FX0hPVVJfSU5fTVMgPSAzNjAwMDAwO1xuICBsZXQgand0Q2xhaW1zO1xuXG4gIGNhY2hlTWF4QWdlID0gY2FjaGVNYXhBZ2UgfHwgT05FX0hPVVJfSU5fTVM7XG4gIGNhY2hlTWF4RW50cmllcyA9IGNhY2hlTWF4RW50cmllcyB8fCA1O1xuXG4gIGNvbnN0IGZhY2Vib29rS2V5ID0gYXdhaXQgZ2V0RmFjZWJvb2tLZXlCeUtleUlkKGtleUlkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlKTtcbiAgY29uc3Qgc2lnbmluZ0tleSA9IGZhY2Vib29rS2V5LnB1YmxpY0tleSB8fCBmYWNlYm9va0tleS5yc2FQdWJsaWNLZXk7XG5cbiAgdHJ5IHtcbiAgICBqd3RDbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBzaWduaW5nS2V5LCB7XG4gICAgICBhbGdvcml0aG1zOiBbJ1JTMjU2J10sXG4gICAgICAvLyB0aGUgYXVkaWVuY2UgY2FuIGJlIGNoZWNrZWQgYWdhaW5zdCBhIHN0cmluZywgYSByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBsaXN0IG9mIHN0cmluZ3MgYW5kL29yIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAgICBhdWRpZW5jZTogY2xpZW50SWQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGV4Y2VwdGlvbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBleGNlcHRpb24ubWVzc2FnZTtcblxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBgJHttZXNzYWdlfWApO1xuICB9XG5cbiAgaWYgKGp3dENsYWltcy5pc3MgIT09IFRPS0VOX0lTU1VFUikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICBgaWQgdG9rZW4gbm90IGlzc3VlZCBieSBjb3JyZWN0IE9wZW5JRCBwcm92aWRlciAtIGV4cGVjdGVkOiAke1RPS0VOX0lTU1VFUn0gfCBmcm9tOiAke2p3dENsYWltcy5pc3N9YFxuICAgICk7XG4gIH1cblxuICBpZiAoand0Q2xhaW1zLnN1YiAhPT0gaWQpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ2F1dGggZGF0YSBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gIH1cbiAgcmV0dXJuIGp3dENsYWltcztcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKGF1dGhEYXRhLnRva2VuKSB7XG4gICAgcmV0dXJuIHZlcmlmeUlkVG9rZW4oYXV0aERhdGEsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWxpZGF0ZUdyYXBoVG9rZW4oYXV0aERhdGEsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWZmIHRoaXMgYXBwIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBcHBJZChhcHBJZHMsIGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIGlmIChhdXRoRGF0YS50b2tlbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsaWRhdGVHcmFwaEFwcElkKGFwcElkcywgYXV0aERhdGEsIG9wdGlvbnMpO1xuICB9XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgRkIgZ3JhcGggcmVxdWVzdHMuXG5mdW5jdGlvbiBncmFwaFJlcXVlc3QocGF0aCkge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCgnaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vJyArIHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZDogdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YTogdmFsaWRhdGVBdXRoRGF0YSxcbn07XG4i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
184
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJjcnlwdG8iLCJqd2tzQ2xpZW50Iiwiand0IiwiaHR0cHNSZXF1ZXN0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiZ2V0QXBwU2VjcmV0UGF0aCIsImF1dGhEYXRhIiwib3B0aW9ucyIsImFwcFNlY3JldCIsImFwcHNlY3JldF9wcm9vZiIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJhY2Nlc3NfdG9rZW4iLCJkaWdlc3QiLCJ2YWxpZGF0ZUdyYXBoVG9rZW4iLCJncmFwaFJlcXVlc3QiLCJ0aGVuIiwiZGF0YSIsImlkIiwicHJvY2VzcyIsImVudiIsIlRFU1RJTkciLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUdyYXBoQXBwSWQiLCJhcHBJZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJpbmNsdWRlcyIsImdldEZhY2Vib29rS2V5QnlLZXlJZCIsImtleUlkIiwiY2FjaGVNYXhFbnRyaWVzIiwiY2FjaGVNYXhBZ2UiLCJjbGllbnQiLCJqd2tzVXJpIiwiY2FjaGUiLCJrZXkiLCJnZXRTaWduaW5nS2V5IiwidmVyaWZ5SWRUb2tlbiIsInRva2VuIiwia2lkIiwiZ2V0SGVhZGVyRnJvbVRva2VuIiwiT05FX0hPVVJfSU5fTVMiLCJqd3RDbGFpbXMiLCJmYWNlYm9va0tleSIsInNpZ25pbmdLZXkiLCJwdWJsaWNLZXkiLCJyc2FQdWJsaWNLZXkiLCJ2ZXJpZnkiLCJhbGdvcml0aG1zIiwiYXVkaWVuY2UiLCJleGNlcHRpb24iLCJtZXNzYWdlIiwiaXNzIiwic3ViIiwidmFsaWRhdGVBdXRoRGF0YSIsInZhbGlkYXRlQXBwSWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhdGgiLCJnZXQiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvZmFjZWJvb2suanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQYXJzZSBTZXJ2ZXIgYXV0aGVudGljYXRpb24gYWRhcHRlciBmb3IgRmFjZWJvb2suXG4gKlxuICogQGNsYXNzIEZhY2Vib29rQWRhcHRlclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgYWRhcHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5hcHBTZWNyZXQgLSBZb3VyIEZhY2Vib29rIEFwcCBTZWNyZXQuIFJlcXVpcmVkIGZvciBzZWN1cmUgYXV0aGVudGljYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcHRpb25zLmFwcElkcyAtIEFuIGFycmF5IG9mIEZhY2Vib29rIEFwcCBJRHMuIFJlcXVpcmVkIGZvciB2YWxpZGF0aW5nIHRoZSBhcHAuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiAjIyBQYXJzZSBTZXJ2ZXIgQ29uZmlndXJhdGlvblxuICogVG8gY29uZmlndXJlIFBhcnNlIFNlcnZlciBmb3IgRmFjZWJvb2sgYXV0aGVudGljYXRpb24sIHVzZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJhdXRoXCI6IHtcbiAqICAgICBcImZhY2Vib29rXCI6IHtcbiAqICAgICAgIFwiYXBwU2VjcmV0XCI6IFwieW91ci1hcHAtc2VjcmV0XCIsXG4gKiAgICAgICBcImFwcElkc1wiOiBbXCJ5b3VyLWFwcC1pZFwiXVxuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhlIGFkYXB0ZXIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBhdXRoZW50aWNhdGlvbiBtZXRob2RzOlxuICogLSAqKlN0YW5kYXJkIExvZ2luKio6IFJlcXVpcmVzIGBpZGAgYW5kIGBhY2Nlc3NfdG9rZW5gLlxuICogLSAqKkxpbWl0ZWQgTG9naW4qKjogUmVxdWlyZXMgYGlkYCBhbmQgYHRva2VuYC5cbiAqXG4gKiAjIyBBdXRoIFBheWxvYWRzXG4gKiAjIyMgU3RhbmRhcmQgTG9naW4gUGF5bG9hZFxuICogYGBganNvblxuICoge1xuICogICBcImZhY2Vib29rXCI6IHtcbiAqICAgICBcImlkXCI6IFwiMTIzNDU2N1wiLFxuICogICAgIFwiYWNjZXNzX3Rva2VuXCI6IFwiYWJjMTIzZGVmNDU2Z2hpNzg5XCJcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMjIExpbWl0ZWQgTG9naW4gUGF5bG9hZFxuICogYGBganNvblxuICoge1xuICogICBcImZhY2Vib29rXCI6IHtcbiAqICAgICBcImlkXCI6IFwiMTIzNDU2N1wiLFxuICogICAgIFwidG9rZW5cIjogXCJ4eHh4eC55eXl5eS56enp6elwiXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIE5vdGVzXG4gKiAtICoqU3RhbmRhcmQgTG9naW4qKjogVXNlIGBpZGAgYW5kIGBhY2Nlc3NfdG9rZW5gIGZvciBmdWxsIGZ1bmN0aW9uYWxpdHkuXG4gKiAtICoqTGltaXRlZCBMb2dpbioqOiBVc2UgYGlkYCBhbmQgYHRva2VuYCAoSldUKSB3aGVuIHRyYWNraW5nIGlzIG9wdGVkIG91dCAoZS5nLiwgdmlhIEFwcGxlJ3MgQXBwIFRyYWNraW5nIFRyYW5zcGFyZW5jeSkuXG4gKiAtIFN1cHBvcnRlZCBQYXJzZSBTZXJ2ZXIgdmVyc2lvbnM6XG4gKiAgIC0gYD49IDYuNS42IDwgN2BcbiAqICAgLSBgPj0gNy4wLjFgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL2ZhY2Vib29rLWxvZ2luL2xpbWl0ZWQtbG9naW4vIEZhY2Vib29rIExpbWl0ZWQgTG9naW59XG4gKiBAc2VlIHtAbGluayBodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvZmFjZWJvb2stbG9naW4vZmFjZWJvb2stbG9naW4tZm9yLWJ1c2luZXNzLyBGYWNlYm9vayBMb2dpbiBmb3IgQnVzaW5lc3N9XG4gKi9cblxuLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIHRoZSBGYWNlYm9vayBHcmFwaCBBUEkuXG5jb25zdCBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpO1xuY29uc3Qgandrc0NsaWVudCA9IHJlcXVpcmUoJ2p3a3MtcnNhJyk7XG5jb25zdCBqd3QgPSByZXF1aXJlKCdqc29ud2VidG9rZW4nKTtcbmNvbnN0IGh0dHBzUmVxdWVzdCA9IHJlcXVpcmUoJy4vaHR0cHNSZXF1ZXN0Jyk7XG5jb25zdCBhdXRoVXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IFRPS0VOX0lTU1VFUiA9ICdodHRwczovL3d3dy5mYWNlYm9vay5jb20nO1xuXG5mdW5jdGlvbiBnZXRBcHBTZWNyZXRQYXRoKGF1dGhEYXRhLCBvcHRpb25zID0ge30pIHtcbiAgY29uc3QgYXBwU2VjcmV0ID0gb3B0aW9ucy5hcHBTZWNyZXQ7XG4gIGlmICghYXBwU2VjcmV0KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IGFwcHNlY3JldF9wcm9vZiA9IGNyeXB0b1xuICAgIC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBhcHBTZWNyZXQpXG4gICAgLnVwZGF0ZShhdXRoRGF0YS5hY2Nlc3NfdG9rZW4pXG4gICAgLmRpZ2VzdCgnaGV4Jyk7XG5cbiAgcmV0dXJuIGAmYXBwc2VjcmV0X3Byb29mPSR7YXBwc2VjcmV0X3Byb29mfWA7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlR3JhcGhUb2tlbihhdXRoRGF0YSwgb3B0aW9ucykge1xuICByZXR1cm4gZ3JhcGhSZXF1ZXN0KFxuICAgICdtZT9maWVsZHM9aWQmYWNjZXNzX3Rva2VuPScgKyBhdXRoRGF0YS5hY2Nlc3NfdG9rZW4gKyBnZXRBcHBTZWNyZXRQYXRoKGF1dGhEYXRhLCBvcHRpb25zKVxuICApLnRoZW4oZGF0YSA9PiB7XG4gICAgaWYgKChkYXRhICYmIGRhdGEuaWQgPT0gYXV0aERhdGEuaWQpIHx8IChwcm9jZXNzLmVudi5URVNUSU5HICYmIGF1dGhEYXRhLmlkID09PSAndGVzdCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnRmFjZWJvb2sgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZUdyYXBoQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucykge1xuICB2YXIgYWNjZXNzX3Rva2VuID0gYXV0aERhdGEuYWNjZXNzX3Rva2VuO1xuICBpZiAocHJvY2Vzcy5lbnYuVEVTVElORyAmJiBhY2Nlc3NfdG9rZW4gPT09ICd0ZXN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIUFycmF5LmlzQXJyYXkoYXBwSWRzKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnYXBwSWRzIG11c3QgYmUgYW4gYXJyYXkuJyk7XG4gIH1cbiAgaWYgKCFhcHBJZHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdGYWNlYm9vayBhdXRoIGlzIG5vdCBjb25maWd1cmVkLicpO1xuICB9XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBncmFwaFJlcXVlc3QoXG4gICAgYGFwcD9hY2Nlc3NfdG9rZW49JHthY2Nlc3NfdG9rZW59JHtnZXRBcHBTZWNyZXRQYXRoKGF1dGhEYXRhLCBvcHRpb25zKX1gXG4gICk7XG4gIGlmICghZGF0YSB8fCAhYXBwSWRzLmluY2x1ZGVzKGRhdGEuaWQpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdGYWNlYm9vayBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfVxufVxuXG5jb25zdCBnZXRGYWNlYm9va0tleUJ5S2V5SWQgPSBhc3luYyAoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpID0+IHtcbiAgY29uc3QgY2xpZW50ID0gandrc0NsaWVudCh7XG4gICAgandrc1VyaTogYCR7VE9LRU5fSVNTVUVSfS8ud2VsbC1rbm93bi9vYXV0aC9vcGVuaWQvandrcy9gLFxuICAgIGNhY2hlOiB0cnVlLFxuICAgIGNhY2hlTWF4RW50cmllcyxcbiAgICBjYWNoZU1heEFnZSxcbiAgfSk7XG5cbiAgbGV0IGtleTtcbiAgdHJ5IHtcbiAgICBrZXkgPSBhd2FpdCBhdXRoVXRpbHMuZ2V0U2lnbmluZ0tleShjbGllbnQsIGtleUlkKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBVbmFibGUgdG8gZmluZCBtYXRjaGluZyBrZXkgZm9yIEtleSBJRDogJHtrZXlJZH1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4ga2V5O1xufTtcblxuY29uc3QgdmVyaWZ5SWRUb2tlbiA9IGFzeW5jICh7IHRva2VuLCBpZCB9LCB7IGFwcElkcywgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSB9KSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShhcHBJZHMpIHx8ICFhcHBJZHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgICdGYWNlYm9vayBhdXRoIGlzIG5vdCBjb25maWd1cmVkLidcbiAgICApO1xuICB9XG5cbiAgaWYgKCF0b2tlbikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnaWQgdG9rZW4gaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG5cbiAgY29uc3QgeyBraWQ6IGtleUlkIH0gPSBhdXRoVXRpbHMuZ2V0SGVhZGVyRnJvbVRva2VuKHRva2VuKTtcbiAgY29uc3QgT05FX0hPVVJfSU5fTVMgPSAzNjAwMDAwO1xuICBsZXQgand0Q2xhaW1zO1xuXG4gIGNhY2hlTWF4QWdlID0gY2FjaGVNYXhBZ2UgfHwgT05FX0hPVVJfSU5fTVM7XG4gIGNhY2hlTWF4RW50cmllcyA9IGNhY2hlTWF4RW50cmllcyB8fCA1O1xuXG4gIGNvbnN0IGZhY2Vib29rS2V5ID0gYXdhaXQgZ2V0RmFjZWJvb2tLZXlCeUtleUlkKGtleUlkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlKTtcbiAgY29uc3Qgc2lnbmluZ0tleSA9IGZhY2Vib29rS2V5LnB1YmxpY0tleSB8fCBmYWNlYm9va0tleS5yc2FQdWJsaWNLZXk7XG5cbiAgdHJ5IHtcbiAgICBqd3RDbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBzaWduaW5nS2V5LCB7XG4gICAgICBhbGdvcml0aG1zOiBbJ1JTMjU2J10sXG4gICAgICAvLyB0aGUgYXVkaWVuY2UgY2FuIGJlIGNoZWNrZWQgYWdhaW5zdCBhIHN0cmluZywgYSByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBsaXN0IG9mIHN0cmluZ3MgYW5kL29yIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAgICBhdWRpZW5jZTogYXBwSWRzLFxuICAgIH0pO1xuICB9IGNhdGNoIChleGNlcHRpb24pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXhjZXB0aW9uLm1lc3NhZ2U7XG5cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYCR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuaXNzICE9PSBUT0tFTl9JU1NVRVIpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgYGlkIHRva2VuIG5vdCBpc3N1ZWQgYnkgY29ycmVjdCBPcGVuSUQgcHJvdmlkZXIgLSBleHBlY3RlZDogJHtUT0tFTl9JU1NVRVJ9IHwgZnJvbTogJHtqd3RDbGFpbXMuaXNzfWBcbiAgICApO1xuICB9XG5cbiAgaWYgKGp3dENsYWltcy5zdWIgIT09IGlkKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdhdXRoIGRhdGEgaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG4gIHJldHVybiBqd3RDbGFpbXM7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIHVzZXIgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIGlmIChhdXRoRGF0YS50b2tlbikge1xuICAgIHJldHVybiB2ZXJpZnlJZFRva2VuKGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsaWRhdGVHcmFwaFRva2VuKGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgfVxufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucykge1xuICBpZiAoYXV0aERhdGEudG9rZW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlR3JhcGhBcHBJZChhcHBJZHMsIGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgfVxufVxuXG4vLyBBIHByb21pc2V5IHdyYXBwZXIgZm9yIEZCIGdyYXBoIHJlcXVlc3RzLlxuZnVuY3Rpb24gZ3JhcGhSZXF1ZXN0KHBhdGgpIHtcbiAgcmV0dXJuIGh0dHBzUmVxdWVzdC5nZXQoJ2h0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tLycgKyBwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQ6IHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlk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
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @class GoogleAdapter
5
5
  * @param {Object} options - The adapter configuration options.
6
- * @param {string} options.clientId - Your Google application Client ID. Required for authentication.
6
+ * @param {string} options.clientId - Your Google application Client ID.
7
7
  * @param {number} [options.cacheMaxEntries] - Maximum number of JWKS cache entries. Default: 5.
8
8
  * @param {number} [options.cacheMaxAge] - Maximum age of JWKS cache entries in ms. Default: 3600000 (1 hour).
9
9
  *
@@ -73,6 +73,9 @@ async function verifyIdToken({
73
73
  cacheMaxEntries,
74
74
  cacheMaxAge
75
75
  }) {
76
+ if (!clientId) {
77
+ throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'Google auth is not configured.');
78
+ }
76
79
  if (!token) {
77
80
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `id token is invalid for this user.`);
78
81
  }
@@ -100,9 +103,6 @@ async function verifyIdToken({
100
103
  if (jwtClaims.sub !== id) {
101
104
  throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `auth data is invalid for this user.`);
102
105
  }
103
- if (clientId && jwtClaims.aud !== clientId) {
104
- throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `id token not authorized for this clientId.`);
105
- }
106
106
  return jwtClaims;
107
107
  }
108
108
 
@@ -119,4 +119,4 @@ module.exports = {
119
119
  validateAppId: validateAppId,
120
120
  validateAuthData: validateAuthData
121
121
  };
122
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJqd2tzQ2xpZW50Iiwiand0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiSFRUUFNfVE9LRU5fSVNTVUVSIiwiZ2V0R29vZ2xlS2V5QnlLZXlJZCIsImtleUlkIiwiY2FjaGVNYXhFbnRyaWVzIiwiY2FjaGVNYXhBZ2UiLCJjbGllbnQiLCJqd2tzVXJpIiwiY2FjaGUiLCJrZXkiLCJnZXRTaWduaW5nS2V5IiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwidmVyaWZ5SWRUb2tlbiIsImlkX3Rva2VuIiwidG9rZW4iLCJpZCIsImNsaWVudElkIiwia2lkIiwiZ2V0SGVhZGVyRnJvbVRva2VuIiwiT05FX0hPVVJfSU5fTVMiLCJqd3RDbGFpbXMiLCJnb29nbGVLZXkiLCJzaWduaW5nS2V5IiwicHVibGljS2V5IiwicnNhUHVibGljS2V5IiwidmVyaWZ5IiwiYWxnb3JpdGhtcyIsImF1ZGllbmNlIiwiZXhjZXB0aW9uIiwibWVzc2FnZSIsImlzcyIsInN1YiIsImF1ZCIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvZ29vZ2xlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2UgU2VydmVyIGF1dGhlbnRpY2F0aW9uIGFkYXB0ZXIgZm9yIEdvb2dsZS5cbiAqXG4gKiBAY2xhc3MgR29vZ2xlQWRhcHRlclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgYWRhcHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jbGllbnRJZCAtIFlvdXIgR29vZ2xlIGFwcGxpY2F0aW9uIENsaWVudCBJRC4gUmVxdWlyZWQgZm9yIGF1dGhlbnRpY2F0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmNhY2hlTWF4RW50cmllc10gLSBNYXhpbXVtIG51bWJlciBvZiBKV0tTIGNhY2hlIGVudHJpZXMuIERlZmF1bHQ6IDUuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuY2FjaGVNYXhBZ2VdIC0gTWF4aW11bSBhZ2Ugb2YgSldLUyBjYWNoZSBlbnRyaWVzIGluIG1zLiBEZWZhdWx0OiAzNjAwMDAwICgxIGhvdXIpLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogIyMgUGFyc2UgU2VydmVyIENvbmZpZ3VyYXRpb25cbiAqIFRvIGNvbmZpZ3VyZSBQYXJzZSBTZXJ2ZXIgZm9yIEdvb2dsZSBhdXRoZW50aWNhdGlvbiwgdXNlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICogYGBganNvblxuICoge1xuICogICBcImF1dGhcIjoge1xuICogICAgIFwiZ29vZ2xlXCI6IHtcbiAqICAgICAgIFwiY2xpZW50SWRcIjogXCJ5b3VyLWNsaWVudC1pZFwiXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBUaGUgYWRhcHRlciByZXF1aXJlcyB0aGUgZm9sbG93aW5nIGBhdXRoRGF0YWAgZmllbGRzOlxuICogLSAqKmlkKio6IFRoZSBHb29nbGUgdXNlciBJRC5cbiAqIC0gKippZF90b2tlbioqOiBUaGUgR29vZ2xlIElEIHRva2VuLlxuICpcbiAqICMjIEF1dGggUGF5bG9hZFxuICogIyMjIEV4YW1wbGUgQXV0aCBEYXRhIFBheWxvYWRcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJnb29nbGVcIjoge1xuICogICAgIFwiaWRcIjogXCIxMjM0NTY3XCIsXG4gKiAgICAgXCJpZF90b2tlblwiOiBcInh4eHh4Lnl5eXl5Lnp6enp6XCJcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMgTm90ZXNcbiAqIC0gRW5zdXJlIHlvdXIgR29vZ2xlIENsaWVudCBJRCBpcyBjb25maWd1cmVkIHByb3Blcmx5IGluIHRoZSBQYXJzZSBTZXJ2ZXIgY29uZmlndXJhdGlvbi5cbiAqIC0gVGhlIGBpZF90b2tlbmAgaXMgdmFsaWRhdGVkIGFnYWluc3QgR29vZ2xlJ3MgYXV0aGVudGljYXRpb24gc2VydmljZXMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vaWRlbnRpdHkvc2lnbi1pbi93ZWIvYmFja2VuZC1hdXRoIEdvb2dsZSBBdXRoZW50aWNhdGlvbiBEb2N1bWVudGF0aW9ufVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG5jb25zdCBqd2tzQ2xpZW50ID0gcmVxdWlyZSgnandrcy1yc2EnKTtcbmNvbnN0IGp3dCA9IHJlcXVpcmUoJ2pzb253ZWJ0b2tlbicpO1xuY29uc3QgYXV0aFV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5jb25zdCBUT0tFTl9JU1NVRVIgPSAnYWNjb3VudHMuZ29vZ2xlLmNvbSc7XG5jb25zdCBIVFRQU19UT0tFTl9JU1NVRVIgPSAnaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tJztcblxuY29uc3QgZ2V0R29vZ2xlS2V5QnlLZXlJZCA9IGFzeW5jIChrZXlJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSkgPT4ge1xuICBjb25zdCBjbGllbnQgPSBqd2tzQ2xpZW50KHtcbiAgICBqd2tzVXJpOiAnaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vb2F1dGgyL3YzL2NlcnRzJyxcbiAgICBjYWNoZTogdHJ1ZSxcbiAgICBjYWNoZU1heEVudHJpZXMsXG4gICAgY2FjaGVNYXhBZ2UsXG4gIH0pO1xuXG4gIGxldCBrZXk7XG4gIHRyeSB7XG4gICAga2V5ID0gYXdhaXQgYXV0aFV0aWxzLmdldFNpZ25pbmdLZXkoY2xpZW50LCBrZXlJZCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICBgVW5hYmxlIHRvIGZpbmQgbWF0Y2hpbmcga2V5IGZvciBLZXkgSUQ6ICR7a2V5SWR9YFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGtleTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeUlkVG9rZW4oeyBpZF90b2tlbjogdG9rZW4sIGlkIH0sIHsgY2xpZW50SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UgfSkge1xuICBpZiAoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGBpZCB0b2tlbiBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuYCk7XG4gIH1cblxuICBjb25zdCB7IGtpZDoga2V5SWQgfSA9IGF1dGhVdGlscy5nZXRIZWFkZXJGcm9tVG9rZW4odG9rZW4pO1xuICBjb25zdCBPTkVfSE9VUl9JTl9NUyA9IDM2MDAwMDA7XG4gIGxldCBqd3RDbGFpbXM7XG5cbiAgY2FjaGVNYXhBZ2UgPSBjYWNoZU1heEFnZSB8fCBPTkVfSE9VUl9JTl9NUztcbiAgY2FjaGVNYXhFbnRyaWVzID0gY2FjaGVNYXhFbnRyaWVzIHx8IDU7XG5cbiAgY29uc3QgZ29vZ2xlS2V5ID0gYXdhaXQgZ2V0R29vZ2xlS2V5QnlLZXlJZChrZXlJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSk7XG4gIGNvbnN0IHNpZ25pbmdLZXkgPSBnb29nbGVLZXkucHVibGljS2V5IHx8IGdvb2dsZUtleS5yc2FQdWJsaWNLZXk7XG5cbiAgdHJ5IHtcbiAgICBqd3RDbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBzaWduaW5nS2V5LCB7XG4gICAgICBhbGdvcml0aG1zOiBbJ1JTMjU2J10sXG4gICAgICBhdWRpZW5jZTogY2xpZW50SWQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGV4Y2VwdGlvbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBleGNlcHRpb24ubWVzc2FnZTtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYCR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuaXNzICE9PSBUT0tFTl9JU1NVRVIgJiYgand0Q2xhaW1zLmlzcyAhPT0gSFRUUFNfVE9LRU5fSVNTVUVSKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBpZCB0b2tlbiBub3QgaXNzdWVkIGJ5IGNvcnJlY3QgcHJvdmlkZXIgLSBleHBlY3RlZDogJHtUT0tFTl9JU1NVRVJ9IG9yICR7SFRUUFNfVE9LRU5fSVNTVUVSfSB8IGZyb206ICR7and0Q2xhaW1zLmlzc31gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuc3ViICE9PSBpZCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBgYXV0aCBkYXRhIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci5gKTtcbiAgfVxuXG4gIGlmIChjbGllbnRJZCAmJiBqd3RDbGFpbXMuYXVkICE9PSBjbGllbnRJZCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICBgaWQgdG9rZW4gbm90IGF1dGhvcml6ZWQgZm9yIHRoaXMgY2xpZW50SWQuYFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gand0Q2xhaW1zO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmIHRoaXMgdXNlciBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIG9wdGlvbnMgPSB7fSkge1xuICByZXR1cm4gdmVyaWZ5SWRUb2tlbihhdXRoRGF0YSwgb3B0aW9ucyk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkOiB2YWxpZGF0ZUFwcElkLFxuICB2YWxpZGF0ZUF1dGhEYXRhOiB2YWxpZGF0ZUF1dGhEYXRhLFxufTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsWUFBWTs7QUFFWixJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0QsS0FBSztBQUV2QyxNQUFNRSxVQUFVLEdBQUdELE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFDdEMsTUFBTUUsR0FBRyxHQUFHRixPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ25DLE1BQU1HLFNBQVMsR0FBR0gsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUVwQyxNQUFNSSxZQUFZLEdBQUcscUJBQXFCO0FBQzFDLE1BQU1DLGtCQUFrQixHQUFHLDZCQUE2QjtBQUV4RCxNQUFNQyxtQkFBbUIsR0FBRyxNQUFBQSxDQUFPQyxLQUFLLEVBQUVDLGVBQWUsRUFBRUMsV0FBVyxLQUFLO0VBQ3pFLE1BQU1DLE1BQU0sR0FBR1QsVUFBVSxDQUFDO0lBQ3hCVSxPQUFPLEVBQUUsNENBQTRDO0lBQ3JEQyxLQUFLLEVBQUUsSUFBSTtJQUNYSixlQUFlO0lBQ2ZDO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsSUFBSUksR0FBRztFQUNQLElBQUk7SUFDRkEsR0FBRyxHQUFHLE1BQU1WLFNBQVMsQ0FBQ1csYUFBYSxDQUFDSixNQUFN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
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJqd2tzQ2xpZW50Iiwiand0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiSFRUUFNfVE9LRU5fSVNTVUVSIiwiZ2V0R29vZ2xlS2V5QnlLZXlJZCIsImtleUlkIiwiY2FjaGVNYXhFbnRyaWVzIiwiY2FjaGVNYXhBZ2UiLCJjbGllbnQiLCJqd2tzVXJpIiwiY2FjaGUiLCJrZXkiLCJnZXRTaWduaW5nS2V5IiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwidmVyaWZ5SWRUb2tlbiIsImlkX3Rva2VuIiwidG9rZW4iLCJpZCIsImNsaWVudElkIiwia2lkIiwiZ2V0SGVhZGVyRnJvbVRva2VuIiwiT05FX0hPVVJfSU5fTVMiLCJqd3RDbGFpbXMiLCJnb29nbGVLZXkiLCJzaWduaW5nS2V5IiwicHVibGljS2V5IiwicnNhUHVibGljS2V5IiwidmVyaWZ5IiwiYWxnb3JpdGhtcyIsImF1ZGllbmNlIiwiZXhjZXB0aW9uIiwibWVzc2FnZSIsImlzcyIsInN1YiIsInZhbGlkYXRlQXV0aERhdGEiLCJhdXRoRGF0YSIsIm9wdGlvbnMiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvZ29vZ2xlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2UgU2VydmVyIGF1dGhlbnRpY2F0aW9uIGFkYXB0ZXIgZm9yIEdvb2dsZS5cbiAqXG4gKiBAY2xhc3MgR29vZ2xlQWRhcHRlclxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgYWRhcHRlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5jbGllbnRJZCAtIFlvdXIgR29vZ2xlIGFwcGxpY2F0aW9uIENsaWVudCBJRC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5jYWNoZU1heEVudHJpZXNdIC0gTWF4aW11bSBudW1iZXIgb2YgSldLUyBjYWNoZSBlbnRyaWVzLiBEZWZhdWx0OiA1LlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmNhY2hlTWF4QWdlXSAtIE1heGltdW0gYWdlIG9mIEpXS1MgY2FjaGUgZW50cmllcyBpbiBtcy4gRGVmYXVsdDogMzYwMDAwMCAoMSBob3VyKS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqICMjIFBhcnNlIFNlcnZlciBDb25maWd1cmF0aW9uXG4gKiBUbyBjb25maWd1cmUgUGFyc2UgU2VydmVyIGZvciBHb29nbGUgYXV0aGVudGljYXRpb24sIHVzZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJhdXRoXCI6IHtcbiAqICAgICBcImdvb2dsZVwiOiB7XG4gKiAgICAgICBcImNsaWVudElkXCI6IFwieW91ci1jbGllbnQtaWRcIlxuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhlIGFkYXB0ZXIgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyBgYXV0aERhdGFgIGZpZWxkczpcbiAqIC0gKippZCoqOiBUaGUgR29vZ2xlIHVzZXIgSUQuXG4gKiAtICoqaWRfdG9rZW4qKjogVGhlIEdvb2dsZSBJRCB0b2tlbi5cbiAqXG4gKiAjIyBBdXRoIFBheWxvYWRcbiAqICMjIyBFeGFtcGxlIEF1dGggRGF0YSBQYXlsb2FkXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIFwiZ29vZ2xlXCI6IHtcbiAqICAgICBcImlkXCI6IFwiMTIzNDU2N1wiLFxuICogICAgIFwiaWRfdG9rZW5cIjogXCJ4eHh4eC55eXl5eS56enp6elwiXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIE5vdGVzXG4gKiAtIEVuc3VyZSB5b3VyIEdvb2dsZSBDbGllbnQgSUQgaXMgY29uZmlndXJlZCBwcm9wZXJseSBpbiB0aGUgUGFyc2UgU2VydmVyIGNvbmZpZ3VyYXRpb24uXG4gKiAtIFRoZSBgaWRfdG9rZW5gIGlzIHZhbGlkYXRlZCBhZ2FpbnN0IEdvb2dsZSdzIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2VzLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2lkZW50aXR5L3NpZ24taW4vd2ViL2JhY2tlbmQtYXV0aCBHb29nbGUgQXV0aGVudGljYXRpb24gRG9jdW1lbnRhdGlvbn1cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZTtcblxuY29uc3Qgandrc0NsaWVudCA9IHJlcXVpcmUoJ2p3a3MtcnNhJyk7XG5jb25zdCBqd3QgPSByZXF1aXJlKCdqc29ud2VidG9rZW4nKTtcbmNvbnN0IGF1dGhVdGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuY29uc3QgVE9LRU5fSVNTVUVSID0gJ2FjY291bnRzLmdvb2dsZS5jb20nO1xuY29uc3QgSFRUUFNfVE9LRU5fSVNTVUVSID0gJ2h0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSc7XG5cbmNvbnN0IGdldEdvb2dsZUtleUJ5S2V5SWQgPSBhc3luYyAoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpID0+IHtcbiAgY29uc3QgY2xpZW50ID0gandrc0NsaWVudCh7XG4gICAgandrc1VyaTogJ2h0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL29hdXRoMi92My9jZXJ0cycsXG4gICAgY2FjaGU6IHRydWUsXG4gICAgY2FjaGVNYXhFbnRyaWVzLFxuICAgIGNhY2hlTWF4QWdlLFxuICB9KTtcblxuICBsZXQga2V5O1xuICB0cnkge1xuICAgIGtleSA9IGF3YWl0IGF1dGhVdGlscy5nZXRTaWduaW5nS2V5KGNsaWVudCwga2V5SWQpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgYFVuYWJsZSB0byBmaW5kIG1hdGNoaW5nIGtleSBmb3IgS2V5IElEOiAke2tleUlkfWBcbiAgICApO1xuICB9XG4gIHJldHVybiBrZXk7XG59O1xuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlJZFRva2VuKHsgaWRfdG9rZW46IHRva2VuLCBpZCB9LCB7IGNsaWVudElkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlIH0pIHtcbiAgaWYgKCFjbGllbnRJZCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICAnR29vZ2xlIGF1dGggaXMgbm90IGNvbmZpZ3VyZWQuJ1xuICAgICk7XG4gIH1cblxuICBpZiAoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGBpZCB0b2tlbiBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuYCk7XG4gIH1cblxuICBjb25zdCB7IGtpZDoga2V5SWQgfSA9IGF1dGhVdGlscy5nZXRIZWFkZXJGcm9tVG9rZW4odG9rZW4pO1xuICBjb25zdCBPTkVfSE9VUl9JTl9NUyA9IDM2MDAwMDA7XG4gIGxldCBqd3RDbGFpbXM7XG5cbiAgY2FjaGVNYXhBZ2UgPSBjYWNoZU1heEFnZSB8fCBPTkVfSE9VUl9JTl9NUztcbiAgY2FjaGVNYXhFbnRyaWVzID0gY2FjaGVNYXhFbnRyaWVzIHx8IDU7XG5cbiAgY29uc3QgZ29vZ2xlS2V5ID0gYXdhaXQgZ2V0R29vZ2xlS2V5QnlLZXlJZChrZXlJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSk7XG4gIGNvbnN0IHNpZ25pbmdLZXkgPSBnb29nbGVLZXkucHVibGljS2V5IHx8IGdvb2dsZUtleS5yc2FQdWJsaWNLZXk7XG5cbiAgdHJ5IHtcbiAgICBqd3RDbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBzaWduaW5nS2V5LCB7XG4gICAgICBhbGdvcml0aG1zOiBbJ1JTMjU2J10sXG4gICAgICBhdWRpZW5jZTogY2xpZW50SWQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGV4Y2VwdGlvbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBleGNlcHRpb24ubWVzc2FnZTtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYCR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuaXNzICE9PSBUT0tFTl9JU1NVRVIgJiYgand0Q2xhaW1zLmlzcyAhPT0gSFRUUFNfVE9LRU5fSVNTVUVSKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBpZCB0b2tlbiBub3QgaXNzdWVkIGJ5IGNvcnJlY3QgcHJvdmlkZXIgLSBleHBlY3RlZDogJHtUT0tFTl9JU1NVRVJ9IG9yICR7SFRUUFNfVE9LRU5fSVNTVUVSfSB8IGZyb206ICR7and0Q2xhaW1zLmlzc31gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuc3ViICE9PSBpZCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBgYXV0aCBkYXRhIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci5gKTtcbiAgfVxuXG4gIHJldHVybiBqd3RDbGFpbXM7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiB2ZXJpZnlJZFRva2VuKGF1dGhEYXRhLCBvcHRpb25zKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQ6IHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGE6IHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxZQUFZOztBQUVaLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLO0FBRXZDLE1BQU1FLFVBQVUsR0FBR0QsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUN0QyxNQUFNRSxHQUFHLEdBQUdGLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDbkMsTUFBTUcsU0FBUyxHQUFHSCxPQUFPLENBQUMsU0FBUyxDQUFDO0FBRXBDLE1BQU1JLFlBQVksR0FBRyxxQkFBcUI7QUFDMUMsTUFBTUMsa0JBQWtCLEdBQUcsNkJBQTZCO0FBRXhELE1BQU1DLG1CQUFtQixHQUFHLE1BQUFBLENBQU9DLEtBQUssRUFBRUMsZUFBZSxFQUFFQyxXQUFXLEtBQUs7RUFDekUsTUFBTUMsTUFBTSxHQUFHVCxVQUFVLENBQUM7SUFDeEJVLE9BQU8sRUFBRSw0Q0FBNEM7SUFDckRDLEtBQUssRUFBRSxJQUFJO0lBQ1hKLGVBQWU7SUFDZkM7RUFDRixDQUFDLENBQUM7RUFFRixJQUFJSSxHQUFHO0VBQ1AsSUFBSTtJQUNGQSxHQUFHLEdBQUcsTUFBTVYsU0FBUyxDQUFDVyxhQUFhLENBQUNKLE1BQU0sRUFBRUgsS0FBSyxDQUFDO0VBQ3BELENBQUMsQ0FBQyxNQUFNO0lBQ04sTUFBTSxJQUFJUixLQUFLLENBQUNnQixLQUFLLENBQ25C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
@@ -289,18 +289,48 @@ class FilesRouter {
289
289
  async metadataHandler(req, res) {
290
290
  try {
291
291
  const config = _Config.default.get(req.params.appId);
292
+ if (!config) {
293
+ res.status(200);
294
+ res.json({});
295
+ return;
296
+ }
292
297
  const {
293
298
  filesController
294
299
  } = config;
295
- const {
300
+ let {
296
301
  filename
297
302
  } = req.params;
298
- const data = await filesController.getMetadata(filename);
303
+ const file = new _node.default.File(filename, {
304
+ base64: ''
305
+ });
306
+ const triggerResult = await triggers.maybeRunFileTrigger(triggers.Types.beforeFind, {
307
+ file
308
+ }, config, req.auth);
309
+ if (triggerResult?.file?._name) {
310
+ filename = triggerResult.file._name;
311
+ }
312
+ const data = await filesController.getMetadata(filename).catch(() => {
313
+ res.status(200);
314
+ res.json({});
315
+ });
316
+ if (!data) {
317
+ return;
318
+ }
319
+ await triggers.maybeRunFileTrigger(triggers.Types.afterFind, {
320
+ file
321
+ }, config, req.auth);
299
322
  res.status(200);
300
323
  res.json(data);
301
- } catch {
302
- res.status(200);
303
- res.json({});
324
+ } catch (e) {
325
+ const err = triggers.resolveError(e, {
326
+ code: _node.default.Error.SCRIPT_FAILED,
327
+ message: 'Could not get file metadata.'
328
+ });
329
+ res.status(403);
330
+ res.json({
331
+ code: err.code,
332
+ error: err.message
333
+ });
304
334
  }
305
335
  }
306
336
  }
@@ -311,4 +341,4 @@ function isFileStreamable(req, filesController) {
311
341
  const end = Number(range[1]);
312
342
  return (!isNaN(start) || !isNaN(end)) && typeof filesController.adapter.handleFileStream === 'function';
313
343
  }
314
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiTWlkZGxld2FyZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9ub2RlIiwiX0NvbmZpZyIsIl9sb2dnZXIiLCJfRXJyb3IiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ0cmlnZ2VycyIsIlV0aWxzIiwiRmlsZXNSb3V0ZXIiLCJleHByZXNzUm91dGVyIiwibWF4VXBsb2FkU2l6ZSIsInJvdXRlciIsImV4cHJlc3MiLCJSb3V0ZXIiLCJnZXRIYW5kbGVyIiwibWV0YWRhdGFIYW5kbGVyIiwicG9zdCIsInJlcSIsInJlcyIsIm5leHQiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9GSUxFX05BTUUiLCJyYXciLCJ0eXBlIiwibGltaXQiLCJoYW5kbGVQYXJzZUhlYWRlcnMiLCJoYW5kbGVQYXJzZVNlc3Npb24iLCJjcmVhdGVIYW5kbGVyIiwiZGVsZXRlIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImRlbGV0ZUhhbmRsZXIiLCJjb25maWciLCJDb25maWciLCJwYXJhbXMiLCJhcHBJZCIsInN0YXR1cyIsImpzb24iLCJjb2RlIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImVycm9yIiwiZmlsZW5hbWUiLCJmaWxlc0NvbnRyb2xsZXIiLCJtaW1lIiwiY29udGVudFR5cGUiLCJnZXRUeXBlIiwiZmlsZSIsIkZpbGUiLCJiYXNlNjQiLCJ0cmlnZ2VyUmVzdWx0IiwibWF5YmVSdW5GaWxlVHJpZ2dlciIsIlR5cGVzIiwiYmVmb3JlRmluZCIsImF1dGgiLCJfbmFtZSIsImlzRmlsZVN0cmVhbWFibGUiLCJoYW5kbGVGaWxlU3RyZWFtIiwiY2F0Y2giLCJlbmQiLCJkYXRhIiwiZ2V0RmlsZURhdGEiLCJ0b1N0cmluZyIsImFmdGVyRmluZCIsImZvcmNlRG93bmxvYWQiLCJCdWZmZXIiLCJmcm9tIiwiX2RhdGEiLCJsZW5ndGgiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsImlzUmVhZE9ubHkiLCJjcmVhdGVTYW5pdGl6ZWRIdHRwRXJyb3IiLCJ1c2VyIiwiaXNNYXN0ZXIiLCJpc0xpbmtlZCIsIkFub255bW91c1V0aWxzIiwiZmlsZVVwbG9hZCIsImVuYWJsZUZvckFub255bW91c1VzZXIiLCJGSUxFX1NBVkVfRVJST1IiLCJlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlciIsImVuYWJsZUZvclB1YmxpYyIsImJvZHkiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZmlsZUV4dGVuc2lvbnMiLCJpc1ZhbGlkRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwic29tZSIsImV4dCIsInJlZ2V4IiwiUmVnRXhwIiwidGVzdCIsImluY2x1ZGVzIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJzcGxpdCIsImpvaW4iLCJtZXRhZGF0YSIsInRhZ3MiLCJmaWxlRGF0YSIsImNoZWNrUHJvaGliaXRlZEtleXdvcmRzIiwiSU5WQUxJRF9LRVlfTkFNRSIsInNldFRhZ3MiLCJzZXRNZXRhZGF0YSIsImZpbGVTaXplIiwiYnl0ZUxlbmd0aCIsImZpbGVPYmplY3QiLCJiZWZvcmVTYXZlIiwic2F2ZVJlc3VsdCIsInVybCIsIm5hbWUiLCJidWZmZXJEYXRhIiwiZmlsZU9wdGlvbnMiLCJfbWV0YWRhdGEiLCJmaWxlVGFncyIsImtleXMiLCJfdGFncyIsImFzc2lnbiIsImNyZWF0ZUZpbGVSZXN1bHQiLCJjcmVhdGVGaWxlIiwiX3NvdXJjZSIsIl91cmwiLCJfcmVxdWVzdFRhc2siLCJfcHJldmlvdXNTYXZlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZnRlclNhdmUiLCJsb2dnZXIiLCJhZGFwdGVyIiwiZ2V0RmlsZUxvY2F0aW9uIiwiYmVmb3JlRGVsZXRlIiwiZGVsZXRlRmlsZSIsImFmdGVyRGVsZXRlIiwiRklMRV9ERUxFVEVfRVJST1IiLCJnZXRNZXRhZGF0YSIsImV4cG9ydHMiLCJyYW5nZSIsInN0YXJ0IiwiTnVtYmVyIiwiaXNOYU4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9GaWxlc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCAqIGFzIE1pZGRsZXdhcmVzIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi4vQ29uZmlnJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmNvbnN0IHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IFV0aWxzID0gcmVxdWlyZSgnLi4vVXRpbHMnKTtcbmltcG9ydCB7IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcblxuZXhwb3J0IGNsYXNzIEZpbGVzUm91dGVyIHtcbiAgZXhwcmVzc1JvdXRlcih7IG1heFVwbG9hZFNpemUgPSAnMjBNYicgfSA9IHt9KSB7XG4gICAgdmFyIHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG4gICAgcm91dGVyLmdldCgnL2ZpbGVzLzphcHBJZC86ZmlsZW5hbWUnLCB0aGlzLmdldEhhbmRsZXIpO1xuICAgIHJvdXRlci5nZXQoJy9maWxlcy86YXBwSWQvbWV0YWRhdGEvOmZpbGVuYW1lJywgdGhpcy5tZXRhZGF0YUhhbmRsZXIpO1xuXG4gICAgcm91dGVyLnBvc3QoJy9maWxlcycsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICAgICAgbmV4dChuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9GSUxFX05BTUUsICdGaWxlbmFtZSBub3QgcHJvdmlkZWQuJykpO1xuICAgIH0pO1xuXG4gICAgcm91dGVyLnBvc3QoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBleHByZXNzLnJhdyh7XG4gICAgICAgIHR5cGU6ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgbGltaXQ6IG1heFVwbG9hZFNpemUsXG4gICAgICB9KSwgLy8gQWxsb3cgdXBsb2FkcyB3aXRob3V0IENvbnRlbnQtVHlwZSwgb3Igd2l0aCBhbnkgQ29udGVudC1UeXBlLlxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzLFxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VTZXNzaW9uLFxuICAgICAgdGhpcy5jcmVhdGVIYW5kbGVyXG4gICAgKTtcblxuICAgIHJvdXRlci5kZWxldGUoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24sXG4gICAgICBNaWRkbGV3YXJlcy5lbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5kZWxldGVIYW5kbGVyXG4gICAgKTtcbiAgICByZXR1cm4gcm91dGVyO1xuICB9XG5cbiAgYXN5bmMgZ2V0SGFuZGxlcihyZXEsIHJlcykge1xuICAgIGNvbnN0IGNvbmZpZyA9IENvbmZpZy5nZXQocmVxLnBhcmFtcy5hcHBJZCk7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICAgIHJlcy5qc29uKHsgY29kZTogUGFyc2UuRXJyb3IuT1BFUkFUSU9OX0ZPUkJJRERFTiwgZXJyb3I6ICdJbnZhbGlkIGFwcGxpY2F0aW9uIElELicgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGZpbGVuYW1lID0gcmVxLnBhcmFtcy5maWxlbmFtZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZXNDb250cm9sbGVyID0gY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICAgIGNvbnN0IG1pbWUgPSAoYXdhaXQgaW1wb3J0KCdtaW1lJykpLmRlZmF1bHQ7XG4gICAgICBsZXQgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoZmlsZW5hbWUpO1xuICAgICAgbGV0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSwgeyBiYXNlNjQ6ICcnIH0sIGNvbnRlbnRUeXBlKTtcbiAgICAgIGNvbnN0IHRyaWdnZXJSZXN1bHQgPSBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVGaW5kLFxuICAgICAgICB7IGZpbGUgfSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcbiAgICAgIGlmICh0cmlnZ2VyUmVzdWx0Py5maWxlPy5fbmFtZSkge1xuICAgICAgICBmaWxlbmFtZSA9IHRyaWdnZXJSZXN1bHQ/LmZpbGU/Ll9uYW1lO1xuICAgICAgICBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmaWxlbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSkge1xuICAgICAgICBmaWxlc0NvbnRyb2xsZXIuaGFuZGxlRmlsZVN0cmVhbShjb25maWcsIGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgICByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuZ2V0RmlsZURhdGEoY29uZmlnLCBmaWxlbmFtZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICAgIHJlcy5lbmQoJ0ZpbGUgbm90IGZvdW5kLicpO1xuICAgICAgfSk7XG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZmlsZSA9IG5ldyBQYXJzZS5GaWxlKGZpbGVuYW1lLCB7IGJhc2U2NDogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSwgY29udGVudFR5cGUpO1xuICAgICAgY29uc3QgYWZ0ZXJGaW5kID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJGaW5kLFxuICAgICAgICB7IGZpbGUsIGZvcmNlRG93bmxvYWQ6IGZhbHNlIH0sXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG5cbiAgICAgIGlmIChhZnRlckZpbmQ/LmZpbGUpIHtcbiAgICAgICAgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoYWZ0ZXJGaW5kLmZpbGUuX25hbWUpO1xuICAgICAgICBkYXRhID0gQnVmZmVyLmZyb20oYWZ0ZXJGaW5kLmZpbGUuX2RhdGEsICdiYXNlNjQnKTtcbiAgICAgIH1cblxuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuICAgICAgcmVzLnNldCgnQ29udGVudC1MZW5ndGgnLCBkYXRhLmxlbmd0aCk7XG4gICAgICBpZiAoYWZ0ZXJGaW5kLmZvcmNlRG93bmxvYWQpIHtcbiAgICAgICAgcmVzLnNldCgnQ29udGVudC1EaXNwb3NpdGlvbicsIGBhdHRhY2htZW50O2ZpbGVuYW1lPSR7YWZ0ZXJGaW5kLmZpbGUuX25hbWV9YCk7XG4gICAgICB9XG4gICAgICByZXMuZW5kKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVyciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgIG1lc3NhZ2U6IGBDb3VsZCBub3QgZmluZCBmaWxlOiAke2ZpbGVuYW1lfS5gLFxuICAgICAgfSk7XG4gICAgICByZXMuc3RhdHVzKDQwMyk7XG4gICAgICByZXMuanNvbih7IGNvZGU6IGVyci5jb2RlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvcig0MDMsIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIGNyZWF0ZSBhIGZpbGUuXCIsIHJlcS5jb25maWcpO1xuICAgICAgcmVzLnN0YXR1cyhlcnJvci5zdGF0dXMpO1xuICAgICAgcmVzLmVuZChge1wiZXJyb3JcIjpcIiR7ZXJyb3IubWVzc2FnZX1cIn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCB1c2VyID0gcmVxLmF1dGgudXNlcjtcbiAgICBjb25zdCBpc01hc3RlciA9IHJlcS5hdXRoLmlzTWFzdGVyO1xuICAgIGNvbnN0IGlzTGlua2VkID0gdXNlciAmJiBQYXJzZS5Bbm9ueW1vdXNVdGlscy5pc0xpbmtlZCh1c2VyKTtcbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JBbm9ueW1vdXNVc2VyICYmIGlzTGlua2VkKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnRmlsZSB1cGxvYWQgYnkgYW5vbnltb3VzIHVzZXIgaXMgZGlzYWJsZWQuJylcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNYXN0ZXIgJiYgIWNvbmZpZy5maWxlVXBsb2FkLmVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyICYmICFpc0xpbmtlZCAmJiB1c2VyKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICdGaWxlIHVwbG9hZCBieSBhdXRoZW50aWNhdGVkIHVzZXIgaXMgZGlzYWJsZWQuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JQdWJsaWMgJiYgIXVzZXIpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ZpbGUgdXBsb2FkIGJ5IHB1YmxpYyBpcyBkaXNhYmxlZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQ29udHJvbGxlciA9IGNvbmZpZy5maWxlc0NvbnRyb2xsZXI7XG4gICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtdHlwZScpO1xuXG4gICAgaWYgKCFyZXEuYm9keSB8fCAhcmVxLmJvZHkubGVuZ3RoKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdJbnZhbGlkIGZpbGUgdXBsb2FkLicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpbGVzQ29udHJvbGxlci52YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gY29uZmlnLmZpbGVVcGxvYWQ/LmZpbGVFeHRlbnNpb25zO1xuICAgIGlmICghaXNNYXN0ZXIgJiYgZmlsZUV4dGVuc2lvbnMpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWRFeHRlbnNpb24gPSBleHRlbnNpb24gPT4ge1xuICAgICAgICByZXR1cm4gZmlsZUV4dGVuc2lvbnMuc29tZShleHQgPT4ge1xuICAgICAgICAgIGlmIChleHQgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChleHQpO1xuICAgICAgICAgIGlmIChyZWdleC50ZXN0KGV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IGV4dGVuc2lvbiA9IGNvbnRlbnRUeXBlO1xuICAgICAgaWYgKGZpbGVuYW1lICYmIGZpbGVuYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICBleHRlbnNpb24gPSBjb250ZW50VHlwZS5zcGxpdCgnLycpWzFdO1xuICAgICAgfVxuICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uPy5zcGxpdCgnICcpPy5qb2luKCcnKTtcblxuICAgICAgaWYgKGV4dGVuc2lvbiAmJiAhaXNWYWxpZEV4dGVuc2lvbihleHRlbnNpb24pKSB7XG4gICAgICAgIG5leHQoXG4gICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICAgYEZpbGUgdXBsb2FkIG9mIGV4dGVuc2lvbiAke2V4dGVuc2lvbn0gaXMgZGlzYWJsZWQuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2U2NCA9IHJlcS5ib2R5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUsIHsgYmFzZTY0IH0sIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCB7IG1ldGFkYXRhID0ge30sIHRhZ3MgPSB7fSB9ID0gcmVxLmZpbGVEYXRhIHx8IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyBTY2FuIHJlcXVlc3QgZGF0YSBmb3IgZGVuaWVkIGtleXdvcmRzXG4gICAgICBVdGlscy5jaGVja1Byb2hpYml0ZWRLZXl3b3Jkcyhjb25maWcsIG1ldGFkYXRhKTtcbiAgICAgIFV0aWxzLmNoZWNrUHJvaGliaXRlZEtleXdvcmRzKGNvbmZpZywgdGFncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfS0VZX05BTUUsIGVycm9yKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZpbGUuc2V0VGFncyh0YWdzKTtcbiAgICBmaWxlLnNldE1ldGFkYXRhKG1ldGFkYXRhKTtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlcS5ib2R5KTtcbiAgICBjb25zdCBmaWxlT2JqZWN0ID0geyBmaWxlLCBmaWxlU2l6ZSB9O1xuICAgIHRyeSB7XG4gICAgICAvLyBydW4gYmVmb3JlU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZVNhdmUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICBsZXQgc2F2ZVJlc3VsdDtcbiAgICAgIC8vIGlmIGEgbmV3IFBhcnNlRmlsZSBpcyByZXR1cm5lZCBjaGVjayBpZiBpdCdzIGFuIGFscmVhZHkgc2F2ZWQgZmlsZVxuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQgaW5zdGFuY2VvZiBQYXJzZS5GaWxlKSB7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZSA9IHRyaWdnZXJSZXN1bHQ7XG4gICAgICAgIGlmICh0cmlnZ2VyUmVzdWx0LnVybCgpKSB7XG4gICAgICAgICAgLy8gc2V0IGZpbGVTaXplIHRvIG51bGwgYmVjYXVzZSB3ZSB3b250IGtub3cgaG93IGJpZyBpdCBpcyBoZXJlXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IG51bGw7XG4gICAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICAgIHVybDogdHJpZ2dlclJlc3VsdC51cmwoKSxcbiAgICAgICAgICAgIG5hbWU6IHRyaWdnZXJSZXN1bHQuX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIGZpbGUgcmV0dXJuZWQgYnkgdGhlIHRyaWdnZXIgaGFzIGFscmVhZHkgYmVlbiBzYXZlZCBza2lwIHNhdmluZyBhbnl0aGluZ1xuICAgICAgaWYgKCFzYXZlUmVzdWx0KSB7XG4gICAgICAgIC8vIHVwZGF0ZSBmaWxlU2l6ZVxuICAgICAgICBjb25zdCBidWZmZXJEYXRhID0gQnVmZmVyLmZyb20oZmlsZU9iamVjdC5maWxlLl9kYXRhLCAnYmFzZTY0Jyk7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZVNpemUgPSBCdWZmZXIuYnl0ZUxlbmd0aChidWZmZXJEYXRhKTtcbiAgICAgICAgLy8gcHJlcGFyZSBmaWxlIG9wdGlvbnNcbiAgICAgICAgY29uc3QgZmlsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgbWV0YWRhdGE6IGZpbGVPYmplY3QuZmlsZS5fbWV0YWRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIC8vIHNvbWUgczMtY29tcGF0aWJsZSBwcm92aWRlcnMgKERpZ2l0YWxPY2VhbiwgTGlub2RlKSBkbyBub3QgYWNjZXB0IHRhZ3NcbiAgICAgICAgLy8gc28gd2UgZG8gbm90IGluY2x1ZGUgdGhlIHRhZ3Mgb3B0aW9uIGlmIGl0IGlzIGVtcHR5LlxuICAgICAgICBjb25zdCBmaWxlVGFncyA9XG4gICAgICAgICAgT2JqZWN0LmtleXMoZmlsZU9iamVjdC5maWxlLl90YWdzKS5sZW5ndGggPiAwID8geyB0YWdzOiBmaWxlT2JqZWN0LmZpbGUuX3RhZ3MgfSA6IHt9O1xuICAgICAgICBPYmplY3QuYXNzaWduKGZpbGVPcHRpb25zLCBmaWxlVGFncyk7XG4gICAgICAgIC8vIHNhdmUgZmlsZVxuICAgICAgICBjb25zdCBjcmVhdGVGaWxlUmVzdWx0ID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmNyZWF0ZUZpbGUoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fbmFtZSxcbiAgICAgICAgICBidWZmZXJEYXRhLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fc291cmNlLnR5cGUsXG4gICAgICAgICAgZmlsZU9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gdXBkYXRlIGZpbGUgd2l0aCBuZXcgZGF0YVxuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX25hbWUgPSBjcmVhdGVGaWxlUmVzdWx0Lm5hbWU7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fdXJsID0gY3JlYXRlRmlsZVJlc3VsdC51cmw7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fcmVxdWVzdFRhc2sgPSBudWxsO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3ByZXZpb3VzU2F2ZSA9IFByb21pc2UucmVzb2x2ZShmaWxlT2JqZWN0LmZpbGUpO1xuICAgICAgICBzYXZlUmVzdWx0ID0ge1xuICAgICAgICAgIHVybDogY3JlYXRlRmlsZVJlc3VsdC51cmwsXG4gICAgICAgICAgbmFtZTogY3JlYXRlRmlsZVJlc3VsdC5uYW1lLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gcnVuIGFmdGVyU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcih0cmlnZ2Vycy5UeXBlcy5hZnRlclNhdmUsIGZpbGVPYmplY3QsIGNvbmZpZywgcmVxLmF1dGgpO1xuICAgICAgcmVzLnN0YXR1cygyMDEpO1xuICAgICAgcmVzLnNldCgnTG9jYXRpb24nLCBzYXZlUmVzdWx0LnVybCk7XG4gICAgICByZXMuanNvbihzYXZlUmVzdWx0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogYENvdWxkIG5vdCBzdG9yZSBmaWxlOiAke2ZpbGVPYmplY3QuZmlsZS5fbmFtZX0uYCxcbiAgICAgIH0pO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvcig0MDMsIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIGRlbGV0ZSBhIGZpbGUuXCIsIHJlcS5jb25maWcpO1xuICAgICAgcmVzLnN0YXR1cyhlcnJvci5zdGF0dXMpO1xuICAgICAgcmVzLmVuZChge1wiZXJyb3JcIjpcIiR7ZXJyb3IubWVzc2FnZX1cIn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZmlsZXNDb250cm9sbGVyIH0gPSByZXEuY29uZmlnO1xuICAgICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIC8vIHJ1biBiZWZvcmVEZWxldGVGaWxlIHRyaWdnZXJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSk7XG4gICAgICBmaWxlLl91cmwgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24ocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IHsgZmlsZSwgZmlsZVNpemU6IG51bGwgfTtcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZURlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICAvLyBkZWxldGUgZmlsZVxuICAgICAgYXdhaXQgZmlsZXNDb250cm9sbGVyLmRlbGV0ZUZpbGUocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgLy8gcnVuIGFmdGVyRGVsZXRlRmlsZSB0cmlnZ2VyXG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5hZnRlckRlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICAvLyBUT0RPOiByZXR1cm4gdXNlZnVsIEpTT04gaGVyZT9cbiAgICAgIHJlcy5lbmQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGRlbGV0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfREVMRVRFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGRlbGV0ZSBmaWxlLicsXG4gICAgICB9KTtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1ldGFkYXRhSGFuZGxlcihyZXEsIHJlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KHJlcS5wYXJhbXMuYXBwSWQpO1xuICAgICAgY29uc3QgeyBmaWxlc0NvbnRyb2xsZXIgfSA9IGNvbmZpZztcbiAgICAgIGNvbnN0IHsgZmlsZW5hbWUgfSA9IHJlcS5wYXJhbXM7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmdldE1ldGFkYXRhKGZpbGVuYW1lKTtcbiAgICAgIHJlcy5zdGF0dXMoMjAwKTtcbiAgICAgIHJlcy5qc29uKGRhdGEpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLmpzb24oe30pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSB7XG4gIGNvbnN0IHJhbmdlID0gKHJlcS5nZXQoJ1JhbmdlJykgfHwgJy8tLycpLnNwbGl0KCctJyk7XG4gIGNvbnN0IHN0YXJ0ID0gTnVtYmVyKHJhbmdlWzBdKTtcbiAgY29uc3QgZW5kID0gTnVtYmVyKHJhbmdlWzFdKTtcbiAgcmV0dXJuIChcbiAgICAoIWlzTmFOKHN0YXJ0KSB8fCAhaXNOYU4oZW5kKSkgJiYgdHlwZW9mIGZpbGVzQ29udHJvbGxlci5hZGFwdGVyLmhhbmRsZUZpbGVTdHJlYW0gPT09ICdmdW5jdGlvbidcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FB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
344
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXhwcmVzcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiTWlkZGxld2FyZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9ub2RlIiwiX0NvbmZpZyIsIl9sb2dnZXIiLCJfRXJyb3IiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ0cmlnZ2VycyIsIlV0aWxzIiwiRmlsZXNSb3V0ZXIiLCJleHByZXNzUm91dGVyIiwibWF4VXBsb2FkU2l6ZSIsInJvdXRlciIsImV4cHJlc3MiLCJSb3V0ZXIiLCJnZXRIYW5kbGVyIiwibWV0YWRhdGFIYW5kbGVyIiwicG9zdCIsInJlcSIsInJlcyIsIm5leHQiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9GSUxFX05BTUUiLCJyYXciLCJ0eXBlIiwibGltaXQiLCJoYW5kbGVQYXJzZUhlYWRlcnMiLCJoYW5kbGVQYXJzZVNlc3Npb24iLCJjcmVhdGVIYW5kbGVyIiwiZGVsZXRlIiwiZW5mb3JjZU1hc3RlcktleUFjY2VzcyIsImRlbGV0ZUhhbmRsZXIiLCJjb25maWciLCJDb25maWciLCJwYXJhbXMiLCJhcHBJZCIsInN0YXR1cyIsImpzb24iLCJjb2RlIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImVycm9yIiwiZmlsZW5hbWUiLCJmaWxlc0NvbnRyb2xsZXIiLCJtaW1lIiwiY29udGVudFR5cGUiLCJnZXRUeXBlIiwiZmlsZSIsIkZpbGUiLCJiYXNlNjQiLCJ0cmlnZ2VyUmVzdWx0IiwibWF5YmVSdW5GaWxlVHJpZ2dlciIsIlR5cGVzIiwiYmVmb3JlRmluZCIsImF1dGgiLCJfbmFtZSIsImlzRmlsZVN0cmVhbWFibGUiLCJoYW5kbGVGaWxlU3RyZWFtIiwiY2F0Y2giLCJlbmQiLCJkYXRhIiwiZ2V0RmlsZURhdGEiLCJ0b1N0cmluZyIsImFmdGVyRmluZCIsImZvcmNlRG93bmxvYWQiLCJCdWZmZXIiLCJmcm9tIiwiX2RhdGEiLCJsZW5ndGgiLCJlcnIiLCJyZXNvbHZlRXJyb3IiLCJTQ1JJUFRfRkFJTEVEIiwibWVzc2FnZSIsImlzUmVhZE9ubHkiLCJjcmVhdGVTYW5pdGl6ZWRIdHRwRXJyb3IiLCJ1c2VyIiwiaXNNYXN0ZXIiLCJpc0xpbmtlZCIsIkFub255bW91c1V0aWxzIiwiZmlsZVVwbG9hZCIsImVuYWJsZUZvckFub255bW91c1VzZXIiLCJGSUxFX1NBVkVfRVJST1IiLCJlbmFibGVGb3JBdXRoZW50aWNhdGVkVXNlciIsImVuYWJsZUZvclB1YmxpYyIsImJvZHkiLCJ2YWxpZGF0ZUZpbGVuYW1lIiwiZmlsZUV4dGVuc2lvbnMiLCJpc1ZhbGlkRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uIiwic29tZSIsImV4dCIsInJlZ2V4IiwiUmVnRXhwIiwidGVzdCIsImluY2x1ZGVzIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJzcGxpdCIsImpvaW4iLCJtZXRhZGF0YSIsInRhZ3MiLCJmaWxlRGF0YSIsImNoZWNrUHJvaGliaXRlZEtleXdvcmRzIiwiSU5WQUxJRF9LRVlfTkFNRSIsInNldFRhZ3MiLCJzZXRNZXRhZGF0YSIsImZpbGVTaXplIiwiYnl0ZUxlbmd0aCIsImZpbGVPYmplY3QiLCJiZWZvcmVTYXZlIiwic2F2ZVJlc3VsdCIsInVybCIsIm5hbWUiLCJidWZmZXJEYXRhIiwiZmlsZU9wdGlvbnMiLCJfbWV0YWRhdGEiLCJmaWxlVGFncyIsImtleXMiLCJfdGFncyIsImFzc2lnbiIsImNyZWF0ZUZpbGVSZXN1bHQiLCJjcmVhdGVGaWxlIiwiX3NvdXJjZSIsIl91cmwiLCJfcmVxdWVzdFRhc2siLCJfcHJldmlvdXNTYXZlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZnRlclNhdmUiLCJsb2dnZXIiLCJhZGFwdGVyIiwiZ2V0RmlsZUxvY2F0aW9uIiwiYmVmb3JlRGVsZXRlIiwiZGVsZXRlRmlsZSIsImFmdGVyRGVsZXRlIiwiRklMRV9ERUxFVEVfRVJST1IiLCJnZXRNZXRhZGF0YSIsImV4cG9ydHMiLCJyYW5nZSIsInN0YXJ0IiwiTnVtYmVyIiwiaXNOYU4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9GaWxlc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCAqIGFzIE1pZGRsZXdhcmVzIGZyb20gJy4uL21pZGRsZXdhcmVzJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi4vQ29uZmlnJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmNvbnN0IHRyaWdnZXJzID0gcmVxdWlyZSgnLi4vdHJpZ2dlcnMnKTtcbmNvbnN0IFV0aWxzID0gcmVxdWlyZSgnLi4vVXRpbHMnKTtcbmltcG9ydCB7IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvciB9IGZyb20gJy4uL0Vycm9yJztcblxuZXhwb3J0IGNsYXNzIEZpbGVzUm91dGVyIHtcbiAgZXhwcmVzc1JvdXRlcih7IG1heFVwbG9hZFNpemUgPSAnMjBNYicgfSA9IHt9KSB7XG4gICAgdmFyIHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG4gICAgcm91dGVyLmdldCgnL2ZpbGVzLzphcHBJZC86ZmlsZW5hbWUnLCB0aGlzLmdldEhhbmRsZXIpO1xuICAgIHJvdXRlci5nZXQoJy9maWxlcy86YXBwSWQvbWV0YWRhdGEvOmZpbGVuYW1lJywgdGhpcy5tZXRhZGF0YUhhbmRsZXIpO1xuXG4gICAgcm91dGVyLnBvc3QoJy9maWxlcycsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICAgICAgbmV4dChuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9GSUxFX05BTUUsICdGaWxlbmFtZSBub3QgcHJvdmlkZWQuJykpO1xuICAgIH0pO1xuXG4gICAgcm91dGVyLnBvc3QoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBleHByZXNzLnJhdyh7XG4gICAgICAgIHR5cGU6ICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgbGltaXQ6IG1heFVwbG9hZFNpemUsXG4gICAgICB9KSwgLy8gQWxsb3cgdXBsb2FkcyB3aXRob3V0IENvbnRlbnQtVHlwZSwgb3Igd2l0aCBhbnkgQ29udGVudC1UeXBlLlxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzLFxuICAgICAgTWlkZGxld2FyZXMuaGFuZGxlUGFyc2VTZXNzaW9uLFxuICAgICAgdGhpcy5jcmVhdGVIYW5kbGVyXG4gICAgKTtcblxuICAgIHJvdXRlci5kZWxldGUoXG4gICAgICAnL2ZpbGVzLzpmaWxlbmFtZScsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZUhlYWRlcnMsXG4gICAgICBNaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24sXG4gICAgICBNaWRkbGV3YXJlcy5lbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5kZWxldGVIYW5kbGVyXG4gICAgKTtcbiAgICByZXR1cm4gcm91dGVyO1xuICB9XG5cbiAgYXN5bmMgZ2V0SGFuZGxlcihyZXEsIHJlcykge1xuICAgIGNvbnN0IGNvbmZpZyA9IENvbmZpZy5nZXQocmVxLnBhcmFtcy5hcHBJZCk7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICAgIHJlcy5qc29uKHsgY29kZTogUGFyc2UuRXJyb3IuT1BFUkFUSU9OX0ZPUkJJRERFTiwgZXJyb3I6ICdJbnZhbGlkIGFwcGxpY2F0aW9uIElELicgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGZpbGVuYW1lID0gcmVxLnBhcmFtcy5maWxlbmFtZTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZXNDb250cm9sbGVyID0gY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICAgIGNvbnN0IG1pbWUgPSAoYXdhaXQgaW1wb3J0KCdtaW1lJykpLmRlZmF1bHQ7XG4gICAgICBsZXQgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoZmlsZW5hbWUpO1xuICAgICAgbGV0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSwgeyBiYXNlNjQ6ICcnIH0sIGNvbnRlbnRUeXBlKTtcbiAgICAgIGNvbnN0IHRyaWdnZXJSZXN1bHQgPSBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVGaW5kLFxuICAgICAgICB7IGZpbGUgfSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByZXEuYXV0aFxuICAgICAgKTtcbiAgICAgIGlmICh0cmlnZ2VyUmVzdWx0Py5maWxlPy5fbmFtZSkge1xuICAgICAgICBmaWxlbmFtZSA9IHRyaWdnZXJSZXN1bHQ/LmZpbGU/Ll9uYW1lO1xuICAgICAgICBjb250ZW50VHlwZSA9IG1pbWUuZ2V0VHlwZShmaWxlbmFtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0ZpbGVTdHJlYW1hYmxlKHJlcSwgZmlsZXNDb250cm9sbGVyKSkge1xuICAgICAgICBmaWxlc0NvbnRyb2xsZXIuaGFuZGxlRmlsZVN0cmVhbShjb25maWcsIGZpbGVuYW1lLCByZXEsIHJlcywgY29udGVudFR5cGUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgICByZXMuZW5kKCdGaWxlIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuZ2V0RmlsZURhdGEoY29uZmlnLCBmaWxlbmFtZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICAgIHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICAgIHJlcy5lbmQoJ0ZpbGUgbm90IGZvdW5kLicpO1xuICAgICAgfSk7XG4gICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZmlsZSA9IG5ldyBQYXJzZS5GaWxlKGZpbGVuYW1lLCB7IGJhc2U2NDogZGF0YS50b1N0cmluZygnYmFzZTY0JykgfSwgY29udGVudFR5cGUpO1xuICAgICAgY29uc3QgYWZ0ZXJGaW5kID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJGaW5kLFxuICAgICAgICB7IGZpbGUsIGZvcmNlRG93bmxvYWQ6IGZhbHNlIH0sXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG5cbiAgICAgIGlmIChhZnRlckZpbmQ/LmZpbGUpIHtcbiAgICAgICAgY29udGVudFR5cGUgPSBtaW1lLmdldFR5cGUoYWZ0ZXJGaW5kLmZpbGUuX25hbWUpO1xuICAgICAgICBkYXRhID0gQnVmZmVyLmZyb20oYWZ0ZXJGaW5kLmZpbGUuX2RhdGEsICdiYXNlNjQnKTtcbiAgICAgIH1cblxuICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuICAgICAgcmVzLnNldCgnQ29udGVudC1MZW5ndGgnLCBkYXRhLmxlbmd0aCk7XG4gICAgICBpZiAoYWZ0ZXJGaW5kLmZvcmNlRG93bmxvYWQpIHtcbiAgICAgICAgcmVzLnNldCgnQ29udGVudC1EaXNwb3NpdGlvbicsIGBhdHRhY2htZW50O2ZpbGVuYW1lPSR7YWZ0ZXJGaW5kLmZpbGUuX25hbWV9YCk7XG4gICAgICB9XG4gICAgICByZXMuZW5kKGRhdGEpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnN0IGVyciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLlNDUklQVF9GQUlMRUQsXG4gICAgICAgIG1lc3NhZ2U6IGBDb3VsZCBub3QgZmluZCBmaWxlOiAke2ZpbGVuYW1lfS5gLFxuICAgICAgfSk7XG4gICAgICByZXMuc3RhdHVzKDQwMyk7XG4gICAgICByZXMuanNvbih7IGNvZGU6IGVyci5jb2RlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY3JlYXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvcig0MDMsIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIGNyZWF0ZSBhIGZpbGUuXCIsIHJlcS5jb25maWcpO1xuICAgICAgcmVzLnN0YXR1cyhlcnJvci5zdGF0dXMpO1xuICAgICAgcmVzLmVuZChge1wiZXJyb3JcIjpcIiR7ZXJyb3IubWVzc2FnZX1cIn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCB1c2VyID0gcmVxLmF1dGgudXNlcjtcbiAgICBjb25zdCBpc01hc3RlciA9IHJlcS5hdXRoLmlzTWFzdGVyO1xuICAgIGNvbnN0IGlzTGlua2VkID0gdXNlciAmJiBQYXJzZS5Bbm9ueW1vdXNVdGlscy5pc0xpbmtlZCh1c2VyKTtcbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JBbm9ueW1vdXNVc2VyICYmIGlzTGlua2VkKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnRmlsZSB1cGxvYWQgYnkgYW5vbnltb3VzIHVzZXIgaXMgZGlzYWJsZWQuJylcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghaXNNYXN0ZXIgJiYgIWNvbmZpZy5maWxlVXBsb2FkLmVuYWJsZUZvckF1dGhlbnRpY2F0ZWRVc2VyICYmICFpc0xpbmtlZCAmJiB1c2VyKSB7XG4gICAgICBuZXh0KFxuICAgICAgICBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICdGaWxlIHVwbG9hZCBieSBhdXRoZW50aWNhdGVkIHVzZXIgaXMgZGlzYWJsZWQuJ1xuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzTWFzdGVyICYmICFjb25maWcuZmlsZVVwbG9hZC5lbmFibGVGb3JQdWJsaWMgJiYgIXVzZXIpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ZpbGUgdXBsb2FkIGJ5IHB1YmxpYyBpcyBkaXNhYmxlZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbGVzQ29udHJvbGxlciA9IGNvbmZpZy5maWxlc0NvbnRyb2xsZXI7XG4gICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICBjb25zdCBjb250ZW50VHlwZSA9IHJlcS5nZXQoJ0NvbnRlbnQtdHlwZScpO1xuXG4gICAgaWYgKCFyZXEuYm9keSB8fCAhcmVxLmJvZHkubGVuZ3RoKSB7XG4gICAgICBuZXh0KG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsICdJbnZhbGlkIGZpbGUgdXBsb2FkLicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJvciA9IGZpbGVzQ29udHJvbGxlci52YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gY29uZmlnLmZpbGVVcGxvYWQ/LmZpbGVFeHRlbnNpb25zO1xuICAgIGlmICghaXNNYXN0ZXIgJiYgZmlsZUV4dGVuc2lvbnMpIHtcbiAgICAgIGNvbnN0IGlzVmFsaWRFeHRlbnNpb24gPSBleHRlbnNpb24gPT4ge1xuICAgICAgICByZXR1cm4gZmlsZUV4dGVuc2lvbnMuc29tZShleHQgPT4ge1xuICAgICAgICAgIGlmIChleHQgPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChleHQpO1xuICAgICAgICAgIGlmIChyZWdleC50ZXN0KGV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IGV4dGVuc2lvbiA9IGNvbnRlbnRUeXBlO1xuICAgICAgaWYgKGZpbGVuYW1lICYmIGZpbGVuYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5jbHVkZXMoJy8nKSkge1xuICAgICAgICBleHRlbnNpb24gPSBjb250ZW50VHlwZS5zcGxpdCgnLycpWzFdO1xuICAgICAgfVxuICAgICAgZXh0ZW5zaW9uID0gZXh0ZW5zaW9uPy5zcGxpdCgnICcpPy5qb2luKCcnKTtcblxuICAgICAgaWYgKGV4dGVuc2lvbiAmJiAhaXNWYWxpZEV4dGVuc2lvbihleHRlbnNpb24pKSB7XG4gICAgICAgIG5leHQoXG4gICAgICAgICAgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICAgICAgUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLFxuICAgICAgICAgICAgYEZpbGUgdXBsb2FkIG9mIGV4dGVuc2lvbiAke2V4dGVuc2lvbn0gaXMgZGlzYWJsZWQuYFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGJhc2U2NCA9IHJlcS5ib2R5LnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCBmaWxlID0gbmV3IFBhcnNlLkZpbGUoZmlsZW5hbWUsIHsgYmFzZTY0IH0sIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCB7IG1ldGFkYXRhID0ge30sIHRhZ3MgPSB7fSB9ID0gcmVxLmZpbGVEYXRhIHx8IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyBTY2FuIHJlcXVlc3QgZGF0YSBmb3IgZGVuaWVkIGtleXdvcmRzXG4gICAgICBVdGlscy5jaGVja1Byb2hpYml0ZWRLZXl3b3Jkcyhjb25maWcsIG1ldGFkYXRhKTtcbiAgICAgIFV0aWxzLmNoZWNrUHJvaGliaXRlZEtleXdvcmRzKGNvbmZpZywgdGFncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG5leHQobmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfS0VZX05BTUUsIGVycm9yKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZpbGUuc2V0VGFncyh0YWdzKTtcbiAgICBmaWxlLnNldE1ldGFkYXRhKG1ldGFkYXRhKTtcbiAgICBjb25zdCBmaWxlU2l6ZSA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHJlcS5ib2R5KTtcbiAgICBjb25zdCBmaWxlT2JqZWN0ID0geyBmaWxlLCBmaWxlU2l6ZSB9O1xuICAgIHRyeSB7XG4gICAgICAvLyBydW4gYmVmb3JlU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZVNhdmUsXG4gICAgICAgIGZpbGVPYmplY3QsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICBsZXQgc2F2ZVJlc3VsdDtcbiAgICAgIC8vIGlmIGEgbmV3IFBhcnNlRmlsZSBpcyByZXR1cm5lZCBjaGVjayBpZiBpdCdzIGFuIGFscmVhZHkgc2F2ZWQgZmlsZVxuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQgaW5zdGFuY2VvZiBQYXJzZS5GaWxlKSB7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZSA9IHRyaWdnZXJSZXN1bHQ7XG4gICAgICAgIGlmICh0cmlnZ2VyUmVzdWx0LnVybCgpKSB7XG4gICAgICAgICAgLy8gc2V0IGZpbGVTaXplIHRvIG51bGwgYmVjYXVzZSB3ZSB3b250IGtub3cgaG93IGJpZyBpdCBpcyBoZXJlXG4gICAgICAgICAgZmlsZU9iamVjdC5maWxlU2l6ZSA9IG51bGw7XG4gICAgICAgICAgc2F2ZVJlc3VsdCA9IHtcbiAgICAgICAgICAgIHVybDogdHJpZ2dlclJlc3VsdC51cmwoKSxcbiAgICAgICAgICAgIG5hbWU6IHRyaWdnZXJSZXN1bHQuX25hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gaWYgdGhlIGZpbGUgcmV0dXJuZWQgYnkgdGhlIHRyaWdnZXIgaGFzIGFscmVhZHkgYmVlbiBzYXZlZCBza2lwIHNhdmluZyBhbnl0aGluZ1xuICAgICAgaWYgKCFzYXZlUmVzdWx0KSB7XG4gICAgICAgIC8vIHVwZGF0ZSBmaWxlU2l6ZVxuICAgICAgICBjb25zdCBidWZmZXJEYXRhID0gQnVmZmVyLmZyb20oZmlsZU9iamVjdC5maWxlLl9kYXRhLCAnYmFzZTY0Jyk7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZVNpemUgPSBCdWZmZXIuYnl0ZUxlbmd0aChidWZmZXJEYXRhKTtcbiAgICAgICAgLy8gcHJlcGFyZSBmaWxlIG9wdGlvbnNcbiAgICAgICAgY29uc3QgZmlsZU9wdGlvbnMgPSB7XG4gICAgICAgICAgbWV0YWRhdGE6IGZpbGVPYmplY3QuZmlsZS5fbWV0YWRhdGEsXG4gICAgICAgIH07XG4gICAgICAgIC8vIHNvbWUgczMtY29tcGF0aWJsZSBwcm92aWRlcnMgKERpZ2l0YWxPY2VhbiwgTGlub2RlKSBkbyBub3QgYWNjZXB0IHRhZ3NcbiAgICAgICAgLy8gc28gd2UgZG8gbm90IGluY2x1ZGUgdGhlIHRhZ3Mgb3B0aW9uIGlmIGl0IGlzIGVtcHR5LlxuICAgICAgICBjb25zdCBmaWxlVGFncyA9XG4gICAgICAgICAgT2JqZWN0LmtleXMoZmlsZU9iamVjdC5maWxlLl90YWdzKS5sZW5ndGggPiAwID8geyB0YWdzOiBmaWxlT2JqZWN0LmZpbGUuX3RhZ3MgfSA6IHt9O1xuICAgICAgICBPYmplY3QuYXNzaWduKGZpbGVPcHRpb25zLCBmaWxlVGFncyk7XG4gICAgICAgIC8vIHNhdmUgZmlsZVxuICAgICAgICBjb25zdCBjcmVhdGVGaWxlUmVzdWx0ID0gYXdhaXQgZmlsZXNDb250cm9sbGVyLmNyZWF0ZUZpbGUoXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fbmFtZSxcbiAgICAgICAgICBidWZmZXJEYXRhLFxuICAgICAgICAgIGZpbGVPYmplY3QuZmlsZS5fc291cmNlLnR5cGUsXG4gICAgICAgICAgZmlsZU9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gdXBkYXRlIGZpbGUgd2l0aCBuZXcgZGF0YVxuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX25hbWUgPSBjcmVhdGVGaWxlUmVzdWx0Lm5hbWU7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fdXJsID0gY3JlYXRlRmlsZVJlc3VsdC51cmw7XG4gICAgICAgIGZpbGVPYmplY3QuZmlsZS5fcmVxdWVzdFRhc2sgPSBudWxsO1xuICAgICAgICBmaWxlT2JqZWN0LmZpbGUuX3ByZXZpb3VzU2F2ZSA9IFByb21pc2UucmVzb2x2ZShmaWxlT2JqZWN0LmZpbGUpO1xuICAgICAgICBzYXZlUmVzdWx0ID0ge1xuICAgICAgICAgIHVybDogY3JlYXRlRmlsZVJlc3VsdC51cmwsXG4gICAgICAgICAgbmFtZTogY3JlYXRlRmlsZVJlc3VsdC5uYW1lLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgLy8gcnVuIGFmdGVyU2F2ZUZpbGUgdHJpZ2dlclxuICAgICAgYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5GaWxlVHJpZ2dlcih0cmlnZ2Vycy5UeXBlcy5hZnRlclNhdmUsIGZpbGVPYmplY3QsIGNvbmZpZywgcmVxLmF1dGgpO1xuICAgICAgcmVzLnN0YXR1cygyMDEpO1xuICAgICAgcmVzLnNldCgnTG9jYXRpb24nLCBzYXZlUmVzdWx0LnVybCk7XG4gICAgICByZXMuanNvbihzYXZlUmVzdWx0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUixcbiAgICAgICAgbWVzc2FnZTogYENvdWxkIG5vdCBzdG9yZSBmaWxlOiAke2ZpbGVPYmplY3QuZmlsZS5fbmFtZX0uYCxcbiAgICAgIH0pO1xuICAgICAgbmV4dChlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGVsZXRlSGFuZGxlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEuYXV0aC5pc1JlYWRPbmx5KSB7XG4gICAgICBjb25zdCBlcnJvciA9IGNyZWF0ZVNhbml0aXplZEh0dHBFcnJvcig0MDMsIFwicmVhZC1vbmx5IG1hc3RlcktleSBpc24ndCBhbGxvd2VkIHRvIGRlbGV0ZSBhIGZpbGUuXCIsIHJlcS5jb25maWcpO1xuICAgICAgcmVzLnN0YXR1cyhlcnJvci5zdGF0dXMpO1xuICAgICAgcmVzLmVuZChge1wiZXJyb3JcIjpcIiR7ZXJyb3IubWVzc2FnZX1cIn1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZmlsZXNDb250cm9sbGVyIH0gPSByZXEuY29uZmlnO1xuICAgICAgY29uc3QgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIC8vIHJ1biBiZWZvcmVEZWxldGVGaWxlIHRyaWdnZXJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSk7XG4gICAgICBmaWxlLl91cmwgPSBhd2FpdCBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5nZXRGaWxlTG9jYXRpb24ocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgY29uc3QgZmlsZU9iamVjdCA9IHsgZmlsZSwgZmlsZVNpemU6IG51bGwgfTtcbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZURlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICAvLyBkZWxldGUgZmlsZVxuICAgICAgYXdhaXQgZmlsZXNDb250cm9sbGVyLmRlbGV0ZUZpbGUocmVxLmNvbmZpZywgZmlsZW5hbWUpO1xuICAgICAgLy8gcnVuIGFmdGVyRGVsZXRlRmlsZSB0cmlnZ2VyXG4gICAgICBhd2FpdCB0cmlnZ2Vycy5tYXliZVJ1bkZpbGVUcmlnZ2VyKFxuICAgICAgICB0cmlnZ2Vycy5UeXBlcy5hZnRlckRlbGV0ZSxcbiAgICAgICAgZmlsZU9iamVjdCxcbiAgICAgICAgcmVxLmNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICAvLyBUT0RPOiByZXR1cm4gdXNlZnVsIEpTT04gaGVyZT9cbiAgICAgIHJlcy5lbmQoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0Vycm9yIGRlbGV0aW5nIGEgZmlsZTogJywgZSk7XG4gICAgICBjb25zdCBlcnJvciA9IHRyaWdnZXJzLnJlc29sdmVFcnJvcihlLCB7XG4gICAgICAgIGNvZGU6IFBhcnNlLkVycm9yLkZJTEVfREVMRVRFX0VSUk9SLFxuICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGRlbGV0ZSBmaWxlLicsXG4gICAgICB9KTtcbiAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG1ldGFkYXRhSGFuZGxlcihyZXEsIHJlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb25maWcgPSBDb25maWcuZ2V0KHJlcS5wYXJhbXMuYXBwSWQpO1xuICAgICAgaWYgKCFjb25maWcpIHtcbiAgICAgICAgcmVzLnN0YXR1cygyMDApO1xuICAgICAgICByZXMuanNvbih7fSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgZmlsZXNDb250cm9sbGVyIH0gPSBjb25maWc7XG4gICAgICBsZXQgeyBmaWxlbmFtZSB9ID0gcmVxLnBhcmFtcztcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgUGFyc2UuRmlsZShmaWxlbmFtZSwgeyBiYXNlNjQ6ICcnIH0pO1xuICAgICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZUZpbmQsXG4gICAgICAgIHsgZmlsZSB9LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlcS5hdXRoXG4gICAgICApO1xuICAgICAgaWYgKHRyaWdnZXJSZXN1bHQ/LmZpbGU/Ll9uYW1lKSB7XG4gICAgICAgIGZpbGVuYW1lID0gdHJpZ2dlclJlc3VsdC5maWxlLl9uYW1lO1xuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGZpbGVzQ29udHJvbGxlci5nZXRNZXRhZGF0YShmaWxlbmFtZSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICAgIHJlcy5qc29uKHt9KTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuRmlsZVRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRmluZCxcbiAgICAgICAgeyBmaWxlIH0sXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVxLmF1dGhcbiAgICAgICk7XG4gICAgICByZXMuc3RhdHVzKDIwMCk7XG4gICAgICByZXMuanNvbihkYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zdCBlcnIgPSB0cmlnZ2Vycy5yZXNvbHZlRXJyb3IoZSwge1xuICAgICAgICBjb2RlOiBQYXJzZS5FcnJvci5TQ1JJUFRfRkFJTEVELFxuICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGdldCBmaWxlIG1ldGFkYXRhLicsXG4gICAgICB9KTtcbiAgICAgIHJlcy5zdGF0dXMoNDAzKTtcbiAgICAgIHJlcy5qc29uKHsgY29kZTogZXJyLmNvZGUsIGVycm9yOiBlcnIubWVzc2FnZSB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNGaWxlU3RyZWFtYWJsZShyZXEsIGZpbGVzQ29udHJvbGxlcikge1xuICBjb25zdCByYW5nZSA9IChyZXEuZ2V0KCdSYW5nZScpIHx8ICcvLS8nKS5zcGxpdCgnLScpO1xuICBjb25zdCBzdGFydCA9IE51bWJlcihyYW5nZVswXSk7XG4gIGNvbnN0IGVuZCA9IE51bWJlcihyYW5nZVsxXSk7XG4gIHJldHVybiAoXG4gICAgKCFpc05hTihzdGFydCkgfHwgIWlzTmFOKGVuZCkpICYmIHR5cGVvZiBmaWxlc0NvbnRyb2xsZXIuYWRhcHRlci5oYW5kbGVGaWxlU3RyZWFtID09PSAnZnVuY3Rpb24nXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-server",
3
- "version": "8.6.8",
3
+ "version": "8.6.10",
4
4
  "description": "An express module providing a Parse-compatible API server",
5
5
  "main": "lib/index.js",
6
6
  "repository": {