@beiguancyc/parse-server 9.10.0-ruixiang.1 → 9.10.0-ruixiang.3

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.
@@ -32,6 +32,7 @@ var _PushQueue = require("../Push/PushQueue");
32
32
  var _PushWorker = require("../Push/PushWorker");
33
33
  var _DatabaseController = _interopRequireDefault(require("./DatabaseController"));
34
34
  var _GridFSBucketAdapter = require("../Adapters/Files/GridFSBucketAdapter");
35
+ var _setupFilesLink = require("../Adapters/Files/setupFilesLink");
35
36
  var _WinstonLoggerAdapter = require("../Adapters/Logger/WinstonLoggerAdapter");
36
37
  var _InMemoryCacheAdapter = require("../Adapters/Cache/InMemoryCacheAdapter");
37
38
  var _AnalyticsAdapter = require("../Adapters/Analytics/AnalyticsAdapter");
@@ -109,6 +110,8 @@ function getFilesController(options) {
109
110
  if (!filesAdapter && databaseAdapter) {
110
111
  throw 'When using an explicit database adapter, you must also use an explicit filesAdapter.';
111
112
  }
113
+ // Optional: symlink files/{filesSubDirectory} -> filesLinkTarget before FS adapter init
114
+ (0, _setupFilesLink.setupFilesLink)(filesAdapter);
112
115
  const filesControllerAdapter = (0, _AdapterLoader.loadAdapter)(filesAdapter, () => {
113
116
  return new _GridFSBucketAdapter.GridFSBucketAdapter(databaseURI, databaseOptions, fileKey);
114
117
  });
@@ -248,4 +251,4 @@ function getDatabaseAdapter(databaseURI, collectionPrefix, databaseOptions) {
248
251
  });
249
252
  }
250
253
  }
251
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQXV0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX09wdGlvbnMiLCJfQWRhcHRlckxvYWRlciIsIl9kZWZhdWx0cyIsIl9Mb2dnZXJDb250cm9sbGVyIiwiX0ZpbGVzQ29udHJvbGxlciIsIl9Ib29rc0NvbnRyb2xsZXIiLCJfVXNlckNvbnRyb2xsZXIiLCJfQ2FjaGVDb250cm9sbGVyIiwiX0xpdmVRdWVyeUNvbnRyb2xsZXIiLCJfQW5hbHl0aWNzQ29udHJvbGxlciIsIl9QdXNoQ29udHJvbGxlciIsIl9QdXNoUXVldWUiLCJfUHVzaFdvcmtlciIsIl9EYXRhYmFzZUNvbnRyb2xsZXIiLCJfR3JpZEZTQnVja2V0QWRhcHRlciIsIl9XaW5zdG9uTG9nZ2VyQWRhcHRlciIsIl9Jbk1lbW9yeUNhY2hlQWRhcHRlciIsIl9BbmFseXRpY3NBZGFwdGVyIiwiX01vbmdvU3RvcmFnZUFkYXB0ZXIiLCJfUG9zdGdyZXNTdG9yYWdlQWRhcHRlciIsIl9QYXJzZUdyYXBoUUxDb250cm9sbGVyIiwiX1NjaGVtYUNhY2hlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2V0Q29udHJvbGxlcnMiLCJvcHRpb25zIiwibG9nZ2VyQ29udHJvbGxlciIsImdldExvZ2dlckNvbnRyb2xsZXIiLCJmaWxlc0NvbnRyb2xsZXIiLCJnZXRGaWxlc0NvbnRyb2xsZXIiLCJ1c2VyQ29udHJvbGxlciIsImdldFVzZXJDb250cm9sbGVyIiwiY2FjaGVDb250cm9sbGVyIiwiZ2V0Q2FjaGVDb250cm9sbGVyIiwiYW5hbHl0aWNzQ29udHJvbGxlciIsImdldEFuYWx5dGljc0NvbnRyb2xsZXIiLCJsaXZlUXVlcnlDb250cm9sbGVyIiwiZ2V0TGl2ZVF1ZXJ5Q29udHJvbGxlciIsImRhdGFiYXNlQ29udHJvbGxlciIsImdldERhdGFiYXNlQ29udHJvbGxlciIsImhvb2tzQ29udHJvbGxlciIsImdldEhvb2tzQ29udHJvbGxlciIsImF1dGhEYXRhTWFuYWdlciIsImdldEF1dGhEYXRhTWFuYWdlciIsInBhcnNlR3JhcGhRTENvbnRyb2xsZXIiLCJnZXRQYXJzZUdyYXBoUUxDb250cm9sbGVyIiwic2NoZW1hQ2FjaGUiLCJTY2hlbWFDYWNoZSIsImFwcElkIiwianNvbkxvZ3MiLCJsb2dzRm9sZGVyIiwidmVyYm9zZSIsImxvZ0xldmVsIiwibG9nU3RyaW5nVHJ1bmNhdGVMZW5ndGgiLCJtYXhMb2dGaWxlcyIsInNpbGVudCIsImxvZ2dlckFkYXB0ZXIiLCJsb2dnZXJPcHRpb25zIiwibG9nZ2VyQ29udHJvbGxlckFkYXB0ZXIiLCJsb2FkQWRhcHRlciIsIldpbnN0b25Mb2dnZXJBZGFwdGVyIiwiTG9nZ2VyQ29udHJvbGxlciIsImRhdGFiYXNlVVJJIiwiZGF0YWJhc2VPcHRpb25zIiwiZmlsZXNBZGFwdGVyIiwiZGF0YWJhc2VBZGFwdGVyIiwicHJlc2VydmVGaWxlTmFtZSIsImZpbGVLZXkiLCJmaWxlc0NvbnRyb2xsZXJBZGFwdGVyIiwiR3JpZEZTQnVja2V0QWRhcHRlciIsIkZpbGVzQ29udHJvbGxlciIsImVtYWlsQWRhcHRlciIsInZlcmlmeVVzZXJFbWFpbHMiLCJlbWFpbENvbnRyb2xsZXJBZGFwdGVyIiwiVXNlckNvbnRyb2xsZXIiLCJjYWNoZUFkYXB0ZXIiLCJjYWNoZVRUTCIsImNhY2hlTWF4U2l6ZSIsImNhY2hlQ29udHJvbGxlckFkYXB0ZXIiLCJJbk1lbW9yeUNhY2hlQWRhcHRlciIsInR0bCIsIm1heFNpemUiLCJDYWNoZUNvbnRyb2xsZXIiLCJjb250cm9sbGVyRGVwcyIsIlBhcnNlR3JhcGhRTENvbnRyb2xsZXIiLCJtb3VudEdyYXBoUUwiLCJhbmFseXRpY3NBZGFwdGVyIiwiYW5hbHl0aWNzQ29udHJvbGxlckFkYXB0ZXIiLCJBbmFseXRpY3NBZGFwdGVyIiwiQW5hbHl0aWNzQ29udHJvbGxlciIsIkxpdmVRdWVyeUNvbnRyb2xsZXIiLCJsaXZlUXVlcnkiLCJjb2xsZWN0aW9uUHJlZml4IiwiZGVmYXVsdHMiLCJnZXREYXRhYmFzZUFkYXB0ZXIiLCJEYXRhYmFzZUNvbnRyb2xsZXIiLCJ3ZWJob29rS2V5IiwiSG9va3NDb250cm9sbGVyIiwiZ2V0UHVzaENvbnRyb2xsZXIiLCJzY2hlZHVsZWRQdXNoIiwicHVzaCIsInB1c2hPcHRpb25zIiwiT2JqZWN0IiwiYXNzaWduIiwicHVzaFF1ZXVlT3B0aW9ucyIsInF1ZXVlT3B0aW9ucyIsIlBhcnNlUHVzaEFkYXB0ZXIiLCJsb2FkTW9kdWxlIiwicHVzaEFkYXB0ZXIiLCJhZGFwdGVyIiwicHVzaENvbnRyb2xsZXIiLCJQdXNoQ29udHJvbGxlciIsImhhc1B1c2hTdXBwb3J0IiwiaGFzUHVzaFNjaGVkdWxlZFN1cHBvcnQiLCJkaXNhYmxlUHVzaFdvcmtlciIsInB1c2hDb250cm9sbGVyUXVldWUiLCJQdXNoUXVldWUiLCJwdXNoV29ya2VyIiwiUHVzaFdvcmtlciIsImF1dGgiLCJlbmFibGVBbm9ueW1vdXNVc2VycyIsInByb3RvY29sIiwicGFyc2VkVVJJIiwiVVJMIiwidG9Mb3dlckNhc2UiLCJQb3N0Z3Jlc1N0b3JhZ2VBZGFwdGVyIiwidXJpIiwiTW9uZ29TdG9yYWdlQWRhcHRlciIsIm1vbmdvT3B0aW9ucyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXV0aERhdGFNYW5hZ2VyIGZyb20gJy4uL0FkYXB0ZXJzL0F1dGgnO1xuaW1wb3J0IHsgUGFyc2VTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi4vT3B0aW9ucyc7XG5pbXBvcnQgeyBsb2FkQWRhcHRlciwgbG9hZE1vZHVsZSB9IGZyb20gJy4uL0FkYXB0ZXJzL0FkYXB0ZXJMb2FkZXInO1xuaW1wb3J0IGRlZmF1bHRzIGZyb20gJy4uL2RlZmF1bHRzJztcbi8vIENvbnRyb2xsZXJzXG5pbXBvcnQgeyBMb2dnZXJDb250cm9sbGVyIH0gZnJvbSAnLi9Mb2dnZXJDb250cm9sbGVyJztcbmltcG9ydCB7IEZpbGVzQ29udHJvbGxlciB9IGZyb20gJy4vRmlsZXNDb250cm9sbGVyJztcbmltcG9ydCB7IEhvb2tzQ29udHJvbGxlciB9IGZyb20gJy4vSG9va3NDb250cm9sbGVyJztcbmltcG9ydCB7IFVzZXJDb250cm9sbGVyIH0gZnJvbSAnLi9Vc2VyQ29udHJvbGxlcic7XG5pbXBvcnQgeyBDYWNoZUNvbnRyb2xsZXIgfSBmcm9tICcuL0NhY2hlQ29udHJvbGxlcic7XG5pbXBvcnQgeyBMaXZlUXVlcnlDb250cm9sbGVyIH0gZnJvbSAnLi9MaXZlUXVlcnlDb250cm9sbGVyJztcbmltcG9ydCB7IEFuYWx5dGljc0NvbnRyb2xsZXIgfSBmcm9tICcuL0FuYWx5dGljc0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgUHVzaENvbnRyb2xsZXIgfSBmcm9tICcuL1B1c2hDb250cm9sbGVyJztcbmltcG9ydCB7IFB1c2hRdWV1ZSB9IGZyb20gJy4uL1B1c2gvUHVzaFF1ZXVlJztcbmltcG9ydCB7IFB1c2hXb3JrZXIgfSBmcm9tICcuLi9QdXNoL1B1c2hXb3JrZXInO1xuaW1wb3J0IERhdGFiYXNlQ29udHJvbGxlciBmcm9tICcuL0RhdGFiYXNlQ29udHJvbGxlcic7XG5cbi8vIEFkYXB0ZXJzXG5pbXBvcnQgeyBHcmlkRlNCdWNrZXRBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvRmlsZXMvR3JpZEZTQnVja2V0QWRhcHRlcic7XG5pbXBvcnQgeyBXaW5zdG9uTG9nZ2VyQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0xvZ2dlci9XaW5zdG9uTG9nZ2VyQWRhcHRlcic7XG5pbXBvcnQgeyBJbk1lbW9yeUNhY2hlQWRhcHRlciB9IGZyb20gJy4uL0FkYXB0ZXJzL0NhY2hlL0luTWVtb3J5Q2FjaGVBZGFwdGVyJztcbmltcG9ydCB7IEFuYWx5dGljc0FkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9BbmFseXRpY3MvQW5hbHl0aWNzQWRhcHRlcic7XG5pbXBvcnQgTW9uZ29TdG9yYWdlQWRhcHRlciBmcm9tICcuLi9BZGFwdGVycy9TdG9yYWdlL01vbmdvL01vbmdvU3RvcmFnZUFkYXB0ZXInO1xuaW1wb3J0IFBvc3RncmVzU3RvcmFnZUFkYXB0ZXIgZnJvbSAnLi4vQWRhcHRlcnMvU3RvcmFnZS9Qb3N0Z3Jlcy9Qb3N0Z3Jlc1N0b3JhZ2VBZGFwdGVyJztcbmltcG9ydCBQYXJzZUdyYXBoUUxDb250cm9sbGVyIGZyb20gJy4vUGFyc2VHcmFwaFFMQ29udHJvbGxlcic7XG5pbXBvcnQgU2NoZW1hQ2FjaGUgZnJvbSAnLi4vQWRhcHRlcnMvQ2FjaGUvU2NoZW1hQ2FjaGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJvbGxlcnMob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKSB7XG4gIGNvbnN0IGxvZ2dlckNvbnRyb2xsZXIgPSBnZXRMb2dnZXJDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCBmaWxlc0NvbnRyb2xsZXIgPSBnZXRGaWxlc0NvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IHVzZXJDb250cm9sbGVyID0gZ2V0VXNlckNvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IGNhY2hlQ29udHJvbGxlciA9IGdldENhY2hlQ29udHJvbGxlcihvcHRpb25zKTtcbiAgY29uc3QgYW5hbHl0aWNzQ29udHJvbGxlciA9IGdldEFuYWx5dGljc0NvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IGxpdmVRdWVyeUNvbnRyb2xsZXIgPSBnZXRMaXZlUXVlcnlDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCBkYXRhYmFzZUNvbnRyb2xsZXIgPSBnZXREYXRhYmFzZUNvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IGhvb2tzQ29udHJvbGxlciA9IGdldEhvb2tzQ29udHJvbGxlcihvcHRpb25zLCBkYXRhYmFzZUNvbnRyb2xsZXIpO1xuICBjb25zdCBhdXRoRGF0YU1hbmFnZXIgPSBnZXRBdXRoRGF0YU1hbmFnZXIob3B0aW9ucyk7XG4gIGNvbnN0IHBhcnNlR3JhcGhRTENvbnRyb2xsZXIgPSBnZXRQYXJzZUdyYXBoUUxDb250cm9sbGVyKG9wdGlvbnMsIHtcbiAgICBkYXRhYmFzZUNvbnRyb2xsZXIsXG4gICAgY2FjaGVDb250cm9sbGVyLFxuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBsb2dnZXJDb250cm9sbGVyLFxuICAgIGZpbGVzQ29udHJvbGxlcixcbiAgICB1c2VyQ29udHJvbGxlcixcbiAgICBhbmFseXRpY3NDb250cm9sbGVyLFxuICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICBwYXJzZUdyYXBoUUxDb250cm9sbGVyLFxuICAgIGxpdmVRdWVyeUNvbnRyb2xsZXIsXG4gICAgZGF0YWJhc2VDb250cm9sbGVyLFxuICAgIGhvb2tzQ29udHJvbGxlcixcbiAgICBhdXRoRGF0YU1hbmFnZXIsXG4gICAgc2NoZW1hQ2FjaGU6IFNjaGVtYUNhY2hlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VyQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBMb2dnZXJDb250cm9sbGVyIHtcbiAgY29uc3Qge1xuICAgIGFwcElkLFxuICAgIGpzb25Mb2dzLFxuICAgIGxvZ3NGb2xkZXIsXG4gICAgdmVyYm9zZSxcbiAgICBsb2dMZXZlbCxcbiAgICBsb2dTdHJpbmdUcnVuY2F0ZUxlbmd0aCxcbiAgICBtYXhMb2dGaWxlcyxcbiAgICBzaWxlbnQsXG4gICAgbG9nZ2VyQWRhcHRlcixcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxvZ2dlck9wdGlvbnMgPSB7XG4gICAganNvbkxvZ3MsXG4gICAgbG9nc0ZvbGRlcixcbiAgICB2ZXJib3NlLFxuICAgIGxvZ0xldmVsLFxuICAgIGxvZ1N0cmluZ1RydW5jYXRlTGVuZ3RoLFxuICAgIHNpbGVudCxcbiAgICBtYXhMb2dGaWxlcyxcbiAgfTtcbiAgY29uc3QgbG9nZ2VyQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihsb2dnZXJBZGFwdGVyLCBXaW5zdG9uTG9nZ2VyQWRhcHRlciwgbG9nZ2VyT3B0aW9ucyk7XG4gIHJldHVybiBuZXcgTG9nZ2VyQ29udHJvbGxlcihsb2dnZXJDb250cm9sbGVyQWRhcHRlciwgYXBwSWQsIGxvZ2dlck9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZXNDb250cm9sbGVyKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucyk6IEZpbGVzQ29udHJvbGxlciB7XG4gIGNvbnN0IHtcbiAgICBhcHBJZCxcbiAgICBkYXRhYmFzZVVSSSxcbiAgICBkYXRhYmFzZU9wdGlvbnMgPSB7fSxcbiAgICBmaWxlc0FkYXB0ZXIsXG4gICAgZGF0YWJhc2VBZGFwdGVyLFxuICAgIHByZXNlcnZlRmlsZU5hbWUsXG4gICAgZmlsZUtleSxcbiAgfSA9IG9wdGlvbnM7XG4gIGlmICghZmlsZXNBZGFwdGVyICYmIGRhdGFiYXNlQWRhcHRlcikge1xuICAgIHRocm93ICdXaGVuIHVzaW5nIGFuIGV4cGxpY2l0IGRhdGFiYXNlIGFkYXB0ZXIsIHlvdSBtdXN0IGFsc28gdXNlIGFuIGV4cGxpY2l0IGZpbGVzQWRhcHRlci4nO1xuICB9XG4gIGNvbnN0IGZpbGVzQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihmaWxlc0FkYXB0ZXIsICgpID0+IHtcbiAgICByZXR1cm4gbmV3IEdyaWRGU0J1Y2tldEFkYXB0ZXIoZGF0YWJhc2VVUkksIGRhdGFiYXNlT3B0aW9ucywgZmlsZUtleSk7XG4gIH0pO1xuICByZXR1cm4gbmV3IEZpbGVzQ29udHJvbGxlcihmaWxlc0NvbnRyb2xsZXJBZGFwdGVyLCBhcHBJZCwge1xuICAgIHByZXNlcnZlRmlsZU5hbWUsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckNvbnRyb2xsZXIob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKTogVXNlckNvbnRyb2xsZXIge1xuICBjb25zdCB7IGFwcElkLCBlbWFpbEFkYXB0ZXIsIHZlcmlmeVVzZXJFbWFpbHMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGVtYWlsQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihlbWFpbEFkYXB0ZXIpO1xuICByZXR1cm4gbmV3IFVzZXJDb250cm9sbGVyKGVtYWlsQ29udHJvbGxlckFkYXB0ZXIsIGFwcElkLCB7XG4gICAgdmVyaWZ5VXNlckVtYWlscyxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZUNvbnRyb2xsZXIob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKTogQ2FjaGVDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhcHBJZCwgY2FjaGVBZGFwdGVyLCBjYWNoZVRUTCwgY2FjaGVNYXhTaXplIH0gPSBvcHRpb25zO1xuICBjb25zdCBjYWNoZUNvbnRyb2xsZXJBZGFwdGVyID0gbG9hZEFkYXB0ZXIoY2FjaGVBZGFwdGVyLCBJbk1lbW9yeUNhY2hlQWRhcHRlciwge1xuICAgIGFwcElkOiBhcHBJZCxcbiAgICB0dGw6IGNhY2hlVFRMLFxuICAgIG1heFNpemU6IGNhY2hlTWF4U2l6ZSxcbiAgfSk7XG4gIHJldHVybiBuZXcgQ2FjaGVDb250cm9sbGVyKGNhY2hlQ29udHJvbGxlckFkYXB0ZXIsIGFwcElkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnNlR3JhcGhRTENvbnRyb2xsZXIoXG4gIG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucyxcbiAgY29udHJvbGxlckRlcHNcbik6IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIge1xuICByZXR1cm4gbmV3IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIoe1xuICAgIG1vdW50R3JhcGhRTDogb3B0aW9ucy5tb3VudEdyYXBoUUwsXG4gICAgLi4uY29udHJvbGxlckRlcHMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5hbHl0aWNzQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBBbmFseXRpY3NDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhbmFseXRpY3NBZGFwdGVyIH0gPSBvcHRpb25zO1xuICBjb25zdCBhbmFseXRpY3NDb250cm9sbGVyQWRhcHRlciA9IGxvYWRBZGFwdGVyKGFuYWx5dGljc0FkYXB0ZXIsIEFuYWx5dGljc0FkYXB0ZXIpO1xuICByZXR1cm4gbmV3IEFuYWx5dGljc0NvbnRyb2xsZXIoYW5hbHl0aWNzQ29udHJvbGxlckFkYXB0ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGl2ZVF1ZXJ5Q29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBMaXZlUXVlcnlDb250cm9sbGVyIHtcbiAgcmV0dXJuIG5ldyBMaXZlUXVlcnlDb250cm9sbGVyKG9wdGlvbnMubGl2ZVF1ZXJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFiYXNlQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBEYXRhYmFzZUNvbnRyb2xsZXIge1xuICBjb25zdCB7IGRhdGFiYXNlVVJJLCBjb2xsZWN0aW9uUHJlZml4LCBkYXRhYmFzZU9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gIGxldCB7IGRhdGFiYXNlQWRhcHRlciB9ID0gb3B0aW9ucztcbiAgaWYgKFxuICAgIChkYXRhYmFzZU9wdGlvbnMgfHxcbiAgICAgIChkYXRhYmFzZVVSSSAmJiBkYXRhYmFzZVVSSSAhPT0gZGVmYXVsdHMuZGF0YWJhc2VVUkkpIHx8XG4gICAgICBjb2xsZWN0aW9uUHJlZml4ICE9PSBkZWZhdWx0cy5jb2xsZWN0aW9uUHJlZml4KSAmJlxuICAgIGRhdGFiYXNlQWRhcHRlclxuICApIHtcbiAgICB0aHJvdyAnWW91IGNhbm5vdCBzcGVjaWZ5IGJvdGggYSBkYXRhYmFzZUFkYXB0ZXIgYW5kIGEgZGF0YWJhc2VVUkkvZGF0YWJhc2VPcHRpb25zL2NvbGxlY3Rpb25QcmVmaXguJztcbiAgfSBlbHNlIGlmICghZGF0YWJhc2VBZGFwdGVyKSB7XG4gICAgZGF0YWJhc2VBZGFwdGVyID0gZ2V0RGF0YWJhc2VBZGFwdGVyKGRhdGFiYXNlVVJJLCBjb2xsZWN0aW9uUHJlZml4LCBkYXRhYmFzZU9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGRhdGFiYXNlQWRhcHRlciA9IGxvYWRBZGFwdGVyKGRhdGFiYXNlQWRhcHRlcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRhYmFzZUNvbnRyb2xsZXIoZGF0YWJhc2VBZGFwdGVyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhvb2tzQ29udHJvbGxlcihcbiAgb3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zLFxuICBkYXRhYmFzZUNvbnRyb2xsZXI6IERhdGFiYXNlQ29udHJvbGxlclxuKTogSG9va3NDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhcHBJZCwgd2ViaG9va0tleSB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIG5ldyBIb29rc0NvbnRyb2xsZXIoYXBwSWQsIGRhdGFiYXNlQ29udHJvbGxlciwgd2ViaG9va0tleSk7XG59XG5cbmludGVyZmFjZSBQdXNoQ29udHJvbGxpbmcge1xuICBwdXNoQ29udHJvbGxlcjogUHVzaENvbnRyb2xsZXI7XG4gIGhhc1B1c2hTY2hlZHVsZWRTdXBwb3J0OiBib29sZWFuO1xuICBwdXNoQ29udHJvbGxlclF1ZXVlOiBQdXNoUXVldWU7XG4gIHB1c2hXb3JrZXI6IFB1c2hXb3JrZXI7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQdXNoQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBQdXNoQ29udHJvbGxpbmcge1xuICBjb25zdCB7IHNjaGVkdWxlZFB1c2gsIHB1c2ggfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgcHVzaE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBwdXNoKTtcbiAgY29uc3QgcHVzaFF1ZXVlT3B0aW9ucyA9IHB1c2hPcHRpb25zLnF1ZXVlT3B0aW9ucyB8fCB7fTtcbiAgaWYgKHB1c2hPcHRpb25zLnF1ZXVlT3B0aW9ucykge1xuICAgIGRlbGV0ZSBwdXNoT3B0aW9ucy5xdWV1ZU9wdGlvbnM7XG4gIH1cblxuICAvLyBQYXNzIHRoZSBwdXNoIG9wdGlvbnMgdG9vIGFzIGl0IHdvcmtzIHdpdGggdGhlIGRlZmF1bHRcbiAgY29uc3QgUGFyc2VQdXNoQWRhcHRlciA9IGF3YWl0IGxvYWRNb2R1bGUoJ0BwYXJzZS9wdXNoLWFkYXB0ZXInKTtcbiAgY29uc3QgcHVzaEFkYXB0ZXIgPSBsb2FkQWRhcHRlcihcbiAgICBwdXNoT3B0aW9ucyAmJiBwdXNoT3B0aW9ucy5hZGFwdGVyLFxuICAgIFBhcnNlUHVzaEFkYXB0ZXIsXG4gICAgcHVzaE9wdGlvbnNcbiAgKTtcbiAgLy8gV2UgcGFzcyB0aGUgb3B0aW9ucyBhbmQgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZSBhZGF0cGVyLFxuICAvLyBOb3RlIHRoYXQgcGFzc2luZyBhbiBpbnN0YW5jZSB3b3VsZCB3b3JrIHRvb1xuICBjb25zdCBwdXNoQ29udHJvbGxlciA9IG5ldyBQdXNoQ29udHJvbGxlcigpO1xuICBjb25zdCBoYXNQdXNoU3VwcG9ydCA9ICEhKHB1c2hBZGFwdGVyICYmIHB1c2gpO1xuICBjb25zdCBoYXNQdXNoU2NoZWR1bGVkU3VwcG9ydCA9IGhhc1B1c2hTdXBwb3J0ICYmIHNjaGVkdWxlZFB1c2ggPT09IHRydWU7XG5cbiAgY29uc3QgeyBkaXNhYmxlUHVzaFdvcmtlciB9ID0gcHVzaFF1ZXVlT3B0aW9ucztcblxuICBjb25zdCBwdXNoQ29udHJvbGxlclF1ZXVlID0gbmV3IFB1c2hRdWV1ZShwdXNoUXVldWVPcHRpb25zKTtcbiAgbGV0IHB1c2hXb3JrZXI7XG4gIGlmICghZGlzYWJsZVB1c2hXb3JrZXIpIHtcbiAgICBwdXNoV29ya2VyID0gbmV3IFB1c2hXb3JrZXIocHVzaEFkYXB0ZXIsIHB1c2hRdWV1ZU9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHVzaENvbnRyb2xsZXIsXG4gICAgaGFzUHVzaFN1cHBvcnQsXG4gICAgaGFzUHVzaFNjaGVkdWxlZFN1cHBvcnQsXG4gICAgcHVzaENvbnRyb2xsZXJRdWV1ZSxcbiAgICBwdXNoV29ya2VyLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXV0aERhdGFNYW5hZ2VyKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICBjb25zdCB7IGF1dGgsIGVuYWJsZUFub255bW91c1VzZXJzIH0gPSBvcHRpb25zO1xuICByZXR1cm4gYXV0aERhdGFNYW5hZ2VyKGF1dGgsIGVuYWJsZUFub255bW91c1VzZXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFiYXNlQWRhcHRlcihkYXRhYmFzZVVSSSwgY29sbGVjdGlvblByZWZpeCwgZGF0YWJhc2VPcHRpb25zKSB7XG4gIGxldCBwcm90b2NvbDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWRVUkkgPSBuZXcgVVJMKGRhdGFiYXNlVVJJKTtcbiAgICBwcm90b2NvbCA9IHBhcnNlZFVSSS5wcm90b2NvbCA/IHBhcnNlZFVSSS5wcm90b2NvbC50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbiAgfSBjYXRjaCB7XG4gICAgLyogKi9cbiAgfVxuICBzd2l0Y2ggKHByb3RvY29sKSB7XG4gICAgY2FzZSAncG9zdGdyZXM6JzpcbiAgICBjYXNlICdwb3N0Z3Jlc3FsOic6XG4gICAgICByZXR1cm4gbmV3IFBvc3RncmVzU3RvcmFnZUFkYXB0ZXIoe1xuICAgICAgICB1cmk6IGRhdGFiYXNlVVJJLFxuICAgICAgICBjb2xsZWN0aW9uUHJlZml4LFxuICAgICAgICBkYXRhYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5ldyBNb25nb1N0b3JhZ2VBZGFwdGVyKHtcbiAgICAgICAgdXJpOiBkYXRhYmFzZVVSSSxcbiAgICAgICAgY29sbGVjdGlvblByZWZpeCxcbiAgICAgICAgbW9uZ29PcHRpb25zOiBkYXRhYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxj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QSxNQUFNUyxjQUFjLEdBQUcsSUFBSUMsOEJBQWMsQ0FBQyxDQUFDO0VBQzNDLE1BQU1DLGNBQWMsR0FBRyxDQUFDLEVBQUVKLFdBQVcsSUFBSVIsSUFBSSxDQUFDO0VBQzlDLE1BQU1hLHVCQUF1QixHQUFHRCxjQUFjLElBQUliLGFBQWEsS0FBSyxJQUFJO0VBRXhFLE1BQU07SUFBRWU7RUFBa0IsQ0FBQyxHQUFHVixnQkFBZ0I7RUFFOUMsTUFBTVcsbUJBQW1CLEdBQUcsSUFBSUMsb0JBQVMsQ0FBQ1osZ0JBQWdCLENBQUM7RUFDM0QsSUFBSWEsVUFBVTtFQUNkLElBQUksQ0FBQ0gsaUJBQWlCLEVBQUU7SUFDdEJHLFVBQVUsR0FBRyxJQUFJQyxzQkFBVSxDQUFDVixXQUFXLEVBQUVKLGdCQUFnQixDQUFDO0VBQzVEO0VBQ0EsT0FBTztJQUNMTSxjQUFjO0lBQ2RFLGNBQWM7SUFDZEMsdUJBQXVCO0lBQ3ZCRSxtQkFBbUI7SUFDbkJFO0VBQ0YsQ0FBQztBQUNIO0FBRU8sU0FBUzFFLGtCQUFrQkEsQ0FBQ2xCLE9BQTJCLEVBQUU7RUFDOUQsTUFBTTtJQUFFOEYsSUFBSTtJQUFFQztFQUFxQixDQUFDLEdBQUcvRixPQUFPO0VBQzlDLE9BQU8sSUFBQWlCLGFBQWUsRUFBQzZFLElBQUksRUFBRUMsb0JBQW9CLENBQUM7QUFDcEQ7QUFFTyxTQUFTMUIsa0JBQWtCQSxDQUFDaEMsV0FBVyxFQUFFOEIsZ0JBQWdCLEVBQUU3QixlQUFlLEVBQUU7RUFDakYsSUFBSTBELFFBQVE7RUFDWixJQUFJO0lBQ0YsTUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUcsQ0FBQzdELFdBQVcsQ0FBQztJQUN0QzJELFFBQVEsR0FBR0MsU0FBUyxDQUFDRCxRQUFRLEdBQUdDLFNBQVMsQ0FBQ0QsUUFBUSxDQUFDRyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUk7RUFDekUsQ0FBQyxDQUFDLE1BQU07SUFDTjtFQUFBO0VBRUYsUUFBUUgsUUFBUTtJQUNkLEtBQUssV0FBVztJQUNoQixLQUFLLGFBQWE7TUFDaEIsT0FBTyxJQUFJSSwrQkFBc0IsQ0FBQztRQUNoQ0MsR0FBRyxFQUFFaEUsV0FBVztRQUNoQjhCLGdCQUFnQjtRQUNoQjdCO01BQ0YsQ0FBQyxDQUFDO0lBQ0o7TUFDRSxPQUFPLElBQUlnRSw0QkFBbUIsQ0FBQztRQUM3QkQsR0FBRyxFQUFFaEUsV0FBVztRQUNoQjhCLGdCQUFnQjtRQUNoQm9DLFlBQVksRUFBRWpFO01BQ2hCLENBQUMsQ0FBQztFQUNOO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
254
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQXV0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX09wdGlvbnMiLCJfQWRhcHRlckxvYWRlciIsIl9kZWZhdWx0cyIsIl9Mb2dnZXJDb250cm9sbGVyIiwiX0ZpbGVzQ29udHJvbGxlciIsIl9Ib29rc0NvbnRyb2xsZXIiLCJfVXNlckNvbnRyb2xsZXIiLCJfQ2FjaGVDb250cm9sbGVyIiwiX0xpdmVRdWVyeUNvbnRyb2xsZXIiLCJfQW5hbHl0aWNzQ29udHJvbGxlciIsIl9QdXNoQ29udHJvbGxlciIsIl9QdXNoUXVldWUiLCJfUHVzaFdvcmtlciIsIl9EYXRhYmFzZUNvbnRyb2xsZXIiLCJfR3JpZEZTQnVja2V0QWRhcHRlciIsIl9zZXR1cEZpbGVzTGluayIsIl9XaW5zdG9uTG9nZ2VyQWRhcHRlciIsIl9Jbk1lbW9yeUNhY2hlQWRhcHRlciIsIl9BbmFseXRpY3NBZGFwdGVyIiwiX01vbmdvU3RvcmFnZUFkYXB0ZXIiLCJfUG9zdGdyZXNTdG9yYWdlQWRhcHRlciIsIl9QYXJzZUdyYXBoUUxDb250cm9sbGVyIiwiX1NjaGVtYUNhY2hlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2V0Q29udHJvbGxlcnMiLCJvcHRpb25zIiwibG9nZ2VyQ29udHJvbGxlciIsImdldExvZ2dlckNvbnRyb2xsZXIiLCJmaWxlc0NvbnRyb2xsZXIiLCJnZXRGaWxlc0NvbnRyb2xsZXIiLCJ1c2VyQ29udHJvbGxlciIsImdldFVzZXJDb250cm9sbGVyIiwiY2FjaGVDb250cm9sbGVyIiwiZ2V0Q2FjaGVDb250cm9sbGVyIiwiYW5hbHl0aWNzQ29udHJvbGxlciIsImdldEFuYWx5dGljc0NvbnRyb2xsZXIiLCJsaXZlUXVlcnlDb250cm9sbGVyIiwiZ2V0TGl2ZVF1ZXJ5Q29udHJvbGxlciIsImRhdGFiYXNlQ29udHJvbGxlciIsImdldERhdGFiYXNlQ29udHJvbGxlciIsImhvb2tzQ29udHJvbGxlciIsImdldEhvb2tzQ29udHJvbGxlciIsImF1dGhEYXRhTWFuYWdlciIsImdldEF1dGhEYXRhTWFuYWdlciIsInBhcnNlR3JhcGhRTENvbnRyb2xsZXIiLCJnZXRQYXJzZUdyYXBoUUxDb250cm9sbGVyIiwic2NoZW1hQ2FjaGUiLCJTY2hlbWFDYWNoZSIsImFwcElkIiwianNvbkxvZ3MiLCJsb2dzRm9sZGVyIiwidmVyYm9zZSIsImxvZ0xldmVsIiwibG9nU3RyaW5nVHJ1bmNhdGVMZW5ndGgiLCJtYXhMb2dGaWxlcyIsInNpbGVudCIsImxvZ2dlckFkYXB0ZXIiLCJsb2dnZXJPcHRpb25zIiwibG9nZ2VyQ29udHJvbGxlckFkYXB0ZXIiLCJsb2FkQWRhcHRlciIsIldpbnN0b25Mb2dnZXJBZGFwdGVyIiwiTG9nZ2VyQ29udHJvbGxlciIsImRhdGFiYXNlVVJJIiwiZGF0YWJhc2VPcHRpb25zIiwiZmlsZXNBZGFwdGVyIiwiZGF0YWJhc2VBZGFwdGVyIiwicHJlc2VydmVGaWxlTmFtZSIsImZpbGVLZXkiLCJzZXR1cEZpbGVzTGluayIsImZpbGVzQ29udHJvbGxlckFkYXB0ZXIiLCJHcmlkRlNCdWNrZXRBZGFwdGVyIiwiRmlsZXNDb250cm9sbGVyIiwiZW1haWxBZGFwdGVyIiwidmVyaWZ5VXNlckVtYWlscyIsImVtYWlsQ29udHJvbGxlckFkYXB0ZXIiLCJVc2VyQ29udHJvbGxlciIsImNhY2hlQWRhcHRlciIsImNhY2hlVFRMIiwiY2FjaGVNYXhTaXplIiwiY2FjaGVDb250cm9sbGVyQWRhcHRlciIsIkluTWVtb3J5Q2FjaGVBZGFwdGVyIiwidHRsIiwibWF4U2l6ZSIsIkNhY2hlQ29udHJvbGxlciIsImNvbnRyb2xsZXJEZXBzIiwiUGFyc2VHcmFwaFFMQ29udHJvbGxlciIsIm1vdW50R3JhcGhRTCIsImFuYWx5dGljc0FkYXB0ZXIiLCJhbmFseXRpY3NDb250cm9sbGVyQWRhcHRlciIsIkFuYWx5dGljc0FkYXB0ZXIiLCJBbmFseXRpY3NDb250cm9sbGVyIiwiTGl2ZVF1ZXJ5Q29udHJvbGxlciIsImxpdmVRdWVyeSIsImNvbGxlY3Rpb25QcmVmaXgiLCJkZWZhdWx0cyIsImdldERhdGFiYXNlQWRhcHRlciIsIkRhdGFiYXNlQ29udHJvbGxlciIsIndlYmhvb2tLZXkiLCJIb29rc0NvbnRyb2xsZXIiLCJnZXRQdXNoQ29udHJvbGxlciIsInNjaGVkdWxlZFB1c2giLCJwdXNoIiwicHVzaE9wdGlvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJwdXNoUXVldWVPcHRpb25zIiwicXVldWVPcHRpb25zIiwiUGFyc2VQdXNoQWRhcHRlciIsImxvYWRNb2R1bGUiLCJwdXNoQWRhcHRlciIsImFkYXB0ZXIiLCJwdXNoQ29udHJvbGxlciIsIlB1c2hDb250cm9sbGVyIiwiaGFzUHVzaFN1cHBvcnQiLCJoYXNQdXNoU2NoZWR1bGVkU3VwcG9ydCIsImRpc2FibGVQdXNoV29ya2VyIiwicHVzaENvbnRyb2xsZXJRdWV1ZSIsIlB1c2hRdWV1ZSIsInB1c2hXb3JrZXIiLCJQdXNoV29ya2VyIiwiYXV0aCIsImVuYWJsZUFub255bW91c1VzZXJzIiwicHJvdG9jb2wiLCJwYXJzZWRVUkkiLCJVUkwiLCJ0b0xvd2VyQ2FzZSIsIlBvc3RncmVzU3RvcmFnZUFkYXB0ZXIiLCJ1cmkiLCJNb25nb1N0b3JhZ2VBZGFwdGVyIiwibW9uZ29PcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbnRyb2xsZXJzL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhdXRoRGF0YU1hbmFnZXIgZnJvbSAnLi4vQWRhcHRlcnMvQXV0aCc7XG5pbXBvcnQgeyBQYXJzZVNlcnZlck9wdGlvbnMgfSBmcm9tICcuLi9PcHRpb25zJztcbmltcG9ydCB7IGxvYWRBZGFwdGVyLCBsb2FkTW9kdWxlIH0gZnJvbSAnLi4vQWRhcHRlcnMvQWRhcHRlckxvYWRlcic7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMnO1xuLy8gQ29udHJvbGxlcnNcbmltcG9ydCB7IExvZ2dlckNvbnRyb2xsZXIgfSBmcm9tICcuL0xvZ2dlckNvbnRyb2xsZXInO1xuaW1wb3J0IHsgRmlsZXNDb250cm9sbGVyIH0gZnJvbSAnLi9GaWxlc0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgSG9va3NDb250cm9sbGVyIH0gZnJvbSAnLi9Ib29rc0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgVXNlckNvbnRyb2xsZXIgfSBmcm9tICcuL1VzZXJDb250cm9sbGVyJztcbmltcG9ydCB7IENhY2hlQ29udHJvbGxlciB9IGZyb20gJy4vQ2FjaGVDb250cm9sbGVyJztcbmltcG9ydCB7IExpdmVRdWVyeUNvbnRyb2xsZXIgfSBmcm9tICcuL0xpdmVRdWVyeUNvbnRyb2xsZXInO1xuaW1wb3J0IHsgQW5hbHl0aWNzQ29udHJvbGxlciB9IGZyb20gJy4vQW5hbHl0aWNzQ29udHJvbGxlcic7XG5pbXBvcnQgeyBQdXNoQ29udHJvbGxlciB9IGZyb20gJy4vUHVzaENvbnRyb2xsZXInO1xuaW1wb3J0IHsgUHVzaFF1ZXVlIH0gZnJvbSAnLi4vUHVzaC9QdXNoUXVldWUnO1xuaW1wb3J0IHsgUHVzaFdvcmtlciB9IGZyb20gJy4uL1B1c2gvUHVzaFdvcmtlcic7XG5pbXBvcnQgRGF0YWJhc2VDb250cm9sbGVyIGZyb20gJy4vRGF0YWJhc2VDb250cm9sbGVyJztcblxuLy8gQWRhcHRlcnNcbmltcG9ydCB7IEdyaWRGU0J1Y2tldEFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9GaWxlcy9HcmlkRlNCdWNrZXRBZGFwdGVyJztcbmltcG9ydCB7IHNldHVwRmlsZXNMaW5rIH0gZnJvbSAnLi4vQWRhcHRlcnMvRmlsZXMvc2V0dXBGaWxlc0xpbmsnO1xuaW1wb3J0IHsgV2luc3RvbkxvZ2dlckFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9Mb2dnZXIvV2luc3RvbkxvZ2dlckFkYXB0ZXInO1xuaW1wb3J0IHsgSW5NZW1vcnlDYWNoZUFkYXB0ZXIgfSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9Jbk1lbW9yeUNhY2hlQWRhcHRlcic7XG5pbXBvcnQgeyBBbmFseXRpY3NBZGFwdGVyIH0gZnJvbSAnLi4vQWRhcHRlcnMvQW5hbHl0aWNzL0FuYWx5dGljc0FkYXB0ZXInO1xuaW1wb3J0IE1vbmdvU3RvcmFnZUFkYXB0ZXIgZnJvbSAnLi4vQWRhcHRlcnMvU3RvcmFnZS9Nb25nby9Nb25nb1N0b3JhZ2VBZGFwdGVyJztcbmltcG9ydCBQb3N0Z3Jlc1N0b3JhZ2VBZGFwdGVyIGZyb20gJy4uL0FkYXB0ZXJzL1N0b3JhZ2UvUG9zdGdyZXMvUG9zdGdyZXNTdG9yYWdlQWRhcHRlcic7XG5pbXBvcnQgUGFyc2VHcmFwaFFMQ29udHJvbGxlciBmcm9tICcuL1BhcnNlR3JhcGhRTENvbnRyb2xsZXInO1xuaW1wb3J0IFNjaGVtYUNhY2hlIGZyb20gJy4uL0FkYXB0ZXJzL0NhY2hlL1NjaGVtYUNhY2hlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xsZXJzKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICBjb25zdCBsb2dnZXJDb250cm9sbGVyID0gZ2V0TG9nZ2VyQ29udHJvbGxlcihvcHRpb25zKTtcbiAgY29uc3QgZmlsZXNDb250cm9sbGVyID0gZ2V0RmlsZXNDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCB1c2VyQ29udHJvbGxlciA9IGdldFVzZXJDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCBjYWNoZUNvbnRyb2xsZXIgPSBnZXRDYWNoZUNvbnRyb2xsZXIob3B0aW9ucyk7XG4gIGNvbnN0IGFuYWx5dGljc0NvbnRyb2xsZXIgPSBnZXRBbmFseXRpY3NDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCBsaXZlUXVlcnlDb250cm9sbGVyID0gZ2V0TGl2ZVF1ZXJ5Q29udHJvbGxlcihvcHRpb25zKTtcbiAgY29uc3QgZGF0YWJhc2VDb250cm9sbGVyID0gZ2V0RGF0YWJhc2VDb250cm9sbGVyKG9wdGlvbnMpO1xuICBjb25zdCBob29rc0NvbnRyb2xsZXIgPSBnZXRIb29rc0NvbnRyb2xsZXIob3B0aW9ucywgZGF0YWJhc2VDb250cm9sbGVyKTtcbiAgY29uc3QgYXV0aERhdGFNYW5hZ2VyID0gZ2V0QXV0aERhdGFNYW5hZ2VyKG9wdGlvbnMpO1xuICBjb25zdCBwYXJzZUdyYXBoUUxDb250cm9sbGVyID0gZ2V0UGFyc2VHcmFwaFFMQ29udHJvbGxlcihvcHRpb25zLCB7XG4gICAgZGF0YWJhc2VDb250cm9sbGVyLFxuICAgIGNhY2hlQ29udHJvbGxlcixcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgbG9nZ2VyQ29udHJvbGxlcixcbiAgICBmaWxlc0NvbnRyb2xsZXIsXG4gICAgdXNlckNvbnRyb2xsZXIsXG4gICAgYW5hbHl0aWNzQ29udHJvbGxlcixcbiAgICBjYWNoZUNvbnRyb2xsZXIsXG4gICAgcGFyc2VHcmFwaFFMQ29udHJvbGxlcixcbiAgICBsaXZlUXVlcnlDb250cm9sbGVyLFxuICAgIGRhdGFiYXNlQ29udHJvbGxlcixcbiAgICBob29rc0NvbnRyb2xsZXIsXG4gICAgYXV0aERhdGFNYW5hZ2VyLFxuICAgIHNjaGVtYUNhY2hlOiBTY2hlbWFDYWNoZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvZ2dlckNvbnRyb2xsZXIob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKTogTG9nZ2VyQ29udHJvbGxlciB7XG4gIGNvbnN0IHtcbiAgICBhcHBJZCxcbiAgICBqc29uTG9ncyxcbiAgICBsb2dzRm9sZGVyLFxuICAgIHZlcmJvc2UsXG4gICAgbG9nTGV2ZWwsXG4gICAgbG9nU3RyaW5nVHJ1bmNhdGVMZW5ndGgsXG4gICAgbWF4TG9nRmlsZXMsXG4gICAgc2lsZW50LFxuICAgIGxvZ2dlckFkYXB0ZXIsXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsb2dnZXJPcHRpb25zID0ge1xuICAgIGpzb25Mb2dzLFxuICAgIGxvZ3NGb2xkZXIsXG4gICAgdmVyYm9zZSxcbiAgICBsb2dMZXZlbCxcbiAgICBsb2dTdHJpbmdUcnVuY2F0ZUxlbmd0aCxcbiAgICBzaWxlbnQsXG4gICAgbWF4TG9nRmlsZXMsXG4gIH07XG4gIGNvbnN0IGxvZ2dlckNvbnRyb2xsZXJBZGFwdGVyID0gbG9hZEFkYXB0ZXIobG9nZ2VyQWRhcHRlciwgV2luc3RvbkxvZ2dlckFkYXB0ZXIsIGxvZ2dlck9wdGlvbnMpO1xuICByZXR1cm4gbmV3IExvZ2dlckNvbnRyb2xsZXIobG9nZ2VyQ29udHJvbGxlckFkYXB0ZXIsIGFwcElkLCBsb2dnZXJPcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVzQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBGaWxlc0NvbnRyb2xsZXIge1xuICBjb25zdCB7XG4gICAgYXBwSWQsXG4gICAgZGF0YWJhc2VVUkksXG4gICAgZGF0YWJhc2VPcHRpb25zID0ge30sXG4gICAgZmlsZXNBZGFwdGVyLFxuICAgIGRhdGFiYXNlQWRhcHRlcixcbiAgICBwcmVzZXJ2ZUZpbGVOYW1lLFxuICAgIGZpbGVLZXksXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoIWZpbGVzQWRhcHRlciAmJiBkYXRhYmFzZUFkYXB0ZXIpIHtcbiAgICB0aHJvdyAnV2hlbiB1c2luZyBhbiBleHBsaWNpdCBkYXRhYmFzZSBhZGFwdGVyLCB5b3UgbXVzdCBhbHNvIHVzZSBhbiBleHBsaWNpdCBmaWxlc0FkYXB0ZXIuJztcbiAgfVxuICAvLyBPcHRpb25hbDogc3ltbGluayBmaWxlcy97ZmlsZXNTdWJEaXJlY3Rvcnl9IC0+IGZpbGVzTGlua1RhcmdldCBiZWZvcmUgRlMgYWRhcHRlciBpbml0XG4gIHNldHVwRmlsZXNMaW5rKGZpbGVzQWRhcHRlcik7XG4gIGNvbnN0IGZpbGVzQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihmaWxlc0FkYXB0ZXIsICgpID0+IHtcbiAgICByZXR1cm4gbmV3IEdyaWRGU0J1Y2tldEFkYXB0ZXIoZGF0YWJhc2VVUkksIGRhdGFiYXNlT3B0aW9ucywgZmlsZUtleSk7XG4gIH0pO1xuICByZXR1cm4gbmV3IEZpbGVzQ29udHJvbGxlcihmaWxlc0NvbnRyb2xsZXJBZGFwdGVyLCBhcHBJZCwge1xuICAgIHByZXNlcnZlRmlsZU5hbWUsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckNvbnRyb2xsZXIob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKTogVXNlckNvbnRyb2xsZXIge1xuICBjb25zdCB7IGFwcElkLCBlbWFpbEFkYXB0ZXIsIHZlcmlmeVVzZXJFbWFpbHMgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGVtYWlsQ29udHJvbGxlckFkYXB0ZXIgPSBsb2FkQWRhcHRlcihlbWFpbEFkYXB0ZXIpO1xuICByZXR1cm4gbmV3IFVzZXJDb250cm9sbGVyKGVtYWlsQ29udHJvbGxlckFkYXB0ZXIsIGFwcElkLCB7XG4gICAgdmVyaWZ5VXNlckVtYWlscyxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWNoZUNvbnRyb2xsZXIob3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zKTogQ2FjaGVDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhcHBJZCwgY2FjaGVBZGFwdGVyLCBjYWNoZVRUTCwgY2FjaGVNYXhTaXplIH0gPSBvcHRpb25zO1xuICBjb25zdCBjYWNoZUNvbnRyb2xsZXJBZGFwdGVyID0gbG9hZEFkYXB0ZXIoY2FjaGVBZGFwdGVyLCBJbk1lbW9yeUNhY2hlQWRhcHRlciwge1xuICAgIGFwcElkOiBhcHBJZCxcbiAgICB0dGw6IGNhY2hlVFRMLFxuICAgIG1heFNpemU6IGNhY2hlTWF4U2l6ZSxcbiAgfSk7XG4gIHJldHVybiBuZXcgQ2FjaGVDb250cm9sbGVyKGNhY2hlQ29udHJvbGxlckFkYXB0ZXIsIGFwcElkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcnNlR3JhcGhRTENvbnRyb2xsZXIoXG4gIG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucyxcbiAgY29udHJvbGxlckRlcHNcbik6IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIge1xuICByZXR1cm4gbmV3IFBhcnNlR3JhcGhRTENvbnRyb2xsZXIoe1xuICAgIG1vdW50R3JhcGhRTDogb3B0aW9ucy5tb3VudEdyYXBoUUwsXG4gICAgLi4uY29udHJvbGxlckRlcHMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5hbHl0aWNzQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBBbmFseXRpY3NDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhbmFseXRpY3NBZGFwdGVyIH0gPSBvcHRpb25zO1xuICBjb25zdCBhbmFseXRpY3NDb250cm9sbGVyQWRhcHRlciA9IGxvYWRBZGFwdGVyKGFuYWx5dGljc0FkYXB0ZXIsIEFuYWx5dGljc0FkYXB0ZXIpO1xuICByZXR1cm4gbmV3IEFuYWx5dGljc0NvbnRyb2xsZXIoYW5hbHl0aWNzQ29udHJvbGxlckFkYXB0ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGl2ZVF1ZXJ5Q29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBMaXZlUXVlcnlDb250cm9sbGVyIHtcbiAgcmV0dXJuIG5ldyBMaXZlUXVlcnlDb250cm9sbGVyKG9wdGlvbnMubGl2ZVF1ZXJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFiYXNlQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBEYXRhYmFzZUNvbnRyb2xsZXIge1xuICBjb25zdCB7IGRhdGFiYXNlVVJJLCBjb2xsZWN0aW9uUHJlZml4LCBkYXRhYmFzZU9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gIGxldCB7IGRhdGFiYXNlQWRhcHRlciB9ID0gb3B0aW9ucztcbiAgaWYgKFxuICAgIChkYXRhYmFzZU9wdGlvbnMgfHxcbiAgICAgIChkYXRhYmFzZVVSSSAmJiBkYXRhYmFzZVVSSSAhPT0gZGVmYXVsdHMuZGF0YWJhc2VVUkkpIHx8XG4gICAgICBjb2xsZWN0aW9uUHJlZml4ICE9PSBkZWZhdWx0cy5jb2xsZWN0aW9uUHJlZml4KSAmJlxuICAgIGRhdGFiYXNlQWRhcHRlclxuICApIHtcbiAgICB0aHJvdyAnWW91IGNhbm5vdCBzcGVjaWZ5IGJvdGggYSBkYXRhYmFzZUFkYXB0ZXIgYW5kIGEgZGF0YWJhc2VVUkkvZGF0YWJhc2VPcHRpb25zL2NvbGxlY3Rpb25QcmVmaXguJztcbiAgfSBlbHNlIGlmICghZGF0YWJhc2VBZGFwdGVyKSB7XG4gICAgZGF0YWJhc2VBZGFwdGVyID0gZ2V0RGF0YWJhc2VBZGFwdGVyKGRhdGFiYXNlVVJJLCBjb2xsZWN0aW9uUHJlZml4LCBkYXRhYmFzZU9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIGRhdGFiYXNlQWRhcHRlciA9IGxvYWRBZGFwdGVyKGRhdGFiYXNlQWRhcHRlcik7XG4gIH1cbiAgcmV0dXJuIG5ldyBEYXRhYmFzZUNvbnRyb2xsZXIoZGF0YWJhc2VBZGFwdGVyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhvb2tzQ29udHJvbGxlcihcbiAgb3B0aW9uczogUGFyc2VTZXJ2ZXJPcHRpb25zLFxuICBkYXRhYmFzZUNvbnRyb2xsZXI6IERhdGFiYXNlQ29udHJvbGxlclxuKTogSG9va3NDb250cm9sbGVyIHtcbiAgY29uc3QgeyBhcHBJZCwgd2ViaG9va0tleSB9ID0gb3B0aW9ucztcbiAgcmV0dXJuIG5ldyBIb29rc0NvbnRyb2xsZXIoYXBwSWQsIGRhdGFiYXNlQ29udHJvbGxlciwgd2ViaG9va0tleSk7XG59XG5cbmludGVyZmFjZSBQdXNoQ29udHJvbGxpbmcge1xuICBwdXNoQ29udHJvbGxlcjogUHVzaENvbnRyb2xsZXI7XG4gIGhhc1B1c2hTY2hlZHVsZWRTdXBwb3J0OiBib29sZWFuO1xuICBwdXNoQ29udHJvbGxlclF1ZXVlOiBQdXNoUXVldWU7XG4gIHB1c2hXb3JrZXI6IFB1c2hXb3JrZXI7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQdXNoQ29udHJvbGxlcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpOiBQdXNoQ29udHJvbGxpbmcge1xuICBjb25zdCB7IHNjaGVkdWxlZFB1c2gsIHB1c2ggfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgcHVzaE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBwdXNoKTtcbiAgY29uc3QgcHVzaFF1ZXVlT3B0aW9ucyA9IHB1c2hPcHRpb25zLnF1ZXVlT3B0aW9ucyB8fCB7fTtcbiAgaWYgKHB1c2hPcHRpb25zLnF1ZXVlT3B0aW9ucykge1xuICAgIGRlbGV0ZSBwdXNoT3B0aW9ucy5xdWV1ZU9wdGlvbnM7XG4gIH1cblxuICAvLyBQYXNzIHRoZSBwdXNoIG9wdGlvbnMgdG9vIGFzIGl0IHdvcmtzIHdpdGggdGhlIGRlZmF1bHRcbiAgY29uc3QgUGFyc2VQdXNoQWRhcHRlciA9IGF3YWl0IGxvYWRNb2R1bGUoJ0BwYXJzZS9wdXNoLWFkYXB0ZXInKTtcbiAgY29uc3QgcHVzaEFkYXB0ZXIgPSBsb2FkQWRhcHRlcihcbiAgICBwdXNoT3B0aW9ucyAmJiBwdXNoT3B0aW9ucy5hZGFwdGVyLFxuICAgIFBhcnNlUHVzaEFkYXB0ZXIsXG4gICAgcHVzaE9wdGlvbnNcbiAgKTtcbiAgLy8gV2UgcGFzcyB0aGUgb3B0aW9ucyBhbmQgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZSBhZGF0cGVyLFxuICAvLyBOb3RlIHRoYXQgcGFzc2luZyBhbiBpbnN0YW5jZSB3b3VsZCB3b3JrIHRvb1xuICBjb25zdCBwdXNoQ29udHJvbGxlciA9IG5ldyBQdXNoQ29udHJvbGxlcigpO1xuICBjb25zdCBoYXNQdXNoU3VwcG9ydCA9ICEhKHB1c2hBZGFwdGVyICYmIHB1c2gpO1xuICBjb25zdCBoYXNQdXNoU2NoZWR1bGVkU3VwcG9ydCA9IGhhc1B1c2hTdXBwb3J0ICYmIHNjaGVkdWxlZFB1c2ggPT09IHRydWU7XG5cbiAgY29uc3QgeyBkaXNhYmxlUHVzaFdvcmtlciB9ID0gcHVzaFF1ZXVlT3B0aW9ucztcblxuICBjb25zdCBwdXNoQ29udHJvbGxlclF1ZXVlID0gbmV3IFB1c2hRdWV1ZShwdXNoUXVldWVPcHRpb25zKTtcbiAgbGV0IHB1c2hXb3JrZXI7XG4gIGlmICghZGlzYWJsZVB1c2hXb3JrZXIpIHtcbiAgICBwdXNoV29ya2VyID0gbmV3IFB1c2hXb3JrZXIocHVzaEFkYXB0ZXIsIHB1c2hRdWV1ZU9wdGlvbnMpO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHVzaENvbnRyb2xsZXIsXG4gICAgaGFzUHVzaFN1cHBvcnQsXG4gICAgaGFzUHVzaFNjaGVkdWxlZFN1cHBvcnQsXG4gICAgcHVzaENvbnRyb2xsZXJRdWV1ZSxcbiAgICBwdXNoV29ya2VyLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXV0aERhdGFNYW5hZ2VyKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICBjb25zdCB7IGF1dGgsIGVuYWJsZUFub255bW91c1VzZXJzIH0gPSBvcHRpb25zO1xuICByZXR1cm4gYXV0aERhdGFNYW5hZ2VyKGF1dGgsIGVuYWJsZUFub255bW91c1VzZXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFiYXNlQWRhcHRlcihkYXRhYmFzZVVSSSwgY29sbGVjdGlvblByZWZpeCwgZGF0YWJhc2VPcHRpb25zKSB7XG4gIGxldCBwcm90b2NvbDtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWRVUkkgPSBuZXcgVVJMKGRhdGFiYXNlVVJJKTtcbiAgICBwcm90b2NvbCA9IHBhcnNlZFVSSS5wcm90b2NvbCA/IHBhcnNlZFVSSS5wcm90b2NvbC50b0xvd2VyQ2FzZSgpIDogbnVsbDtcbiAgfSBjYXRjaCB7XG4gICAgLyogKi9cbiAgfVxuICBzd2l0Y2ggKHByb3RvY29sKSB7XG4gICAgY2FzZSAncG9zdGdyZXM6JzpcbiAgICBjYXNlICdwb3N0Z3Jlc3FsOic6XG4gICAgICByZXR1cm4gbmV3IFBvc3RncmVzU3RvcmFnZUFkYXB0ZXIoe1xuICAgICAgICB1cmk6IGRhdGFiYXNlVVJJLFxuICAgICAgICBjb2xsZWN0aW9uUHJlZml4LFxuICAgICAgICBkYXRhYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG5ldyBNb25nb1N0b3JhZ2VBZGFwdGVyKHtcbiAgICAgICAgdXJpOiBkYXRhYmFzZVVSSSxcbiAgICAgICAgY29sbGVjdGlvblByZWZpeCxcbiAgICAgICAgbW9uZ29PcHRpb25zOiBkYXRhYmFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxjQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxTQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSSxpQkFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGdCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxnQkFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsb0JBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLG9CQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxlQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxVQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxXQUFBLEdBQUFiLE9BQUE7QUFDQSxJQUFBYyxtQkFBQSxHQUFBZixzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQWUsb0JBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixlQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLHFCQUFBLEdBQUFqQixPQUFBO0FBQ0EsSUFBQWtCLHFCQUFBLEdBQUFsQixPQUFBO0FBQ0EsSUFBQW1CLGlCQUFBLEdBQUFuQixPQUFBO0FBQ0EsSUFBQW9CLG9CQUFBLEdBQUFyQixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXFCLHVCQUFBLEdBQUF0QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXNCLHVCQUFBLEdBQUF2QixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQXVCLFlBQUEsR0FBQXhCLHNCQUFB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
@@ -23,10 +23,6 @@
23
23
  * If there are no deprecations, this must return an empty array.
24
24
  */
25
25
  module.exports = [{
26
- optionKey: 'fileUpload.allowedFileUrlDomains',
27
- changeNewDefault: '[]',
28
- solution: "Set 'fileUpload.allowedFileUrlDomains' to the domains you want to allow, or to '[]' to block all file URLs."
29
- }, {
30
26
  optionKey: 'pages.encodePageParamHeaders',
31
27
  changeNewDefault: 'true',
32
28
  solution: "Set 'pages.encodePageParamHeaders' to 'true' to URI-encode non-ASCII characters in page parameter headers."
@@ -37,7 +33,8 @@ module.exports = [{
37
33
  }, {
38
34
  optionKey: 'mountPlayground',
39
35
  changeNewKey: '',
40
- solution: "Use Parse Dashboard as GraphQL IDE or configure a third-party GraphQL client such as Apollo Sandbox, GraphiQL, or Insomnia with custom request headers."
36
+ resolvedValue: false,
37
+ solution: "Use Parse Dashboard as GraphQL IDE or configure a third-party GraphQL client such as Apollo Sandbox, GraphiQL, or Insomnia with custom request headers. Set 'mountPlayground' to 'false' or remove the option to accept the future removal."
41
38
  }, {
42
39
  optionKey: 'playgroundPath',
43
40
  changeNewKey: '',
@@ -101,4 +98,4 @@ module.exports = [{
101
98
  changeNewDefault: 'false',
102
99
  solution: "Set 'allowAggregationForReadOnlyMasterKey' to 'false' to prevent the read-only master key from running aggregation pipelines, which can include write-capable stages (e.g. '$out', '$merge'). Set to 'true' to keep the current behavior where the read-only master key can run aggregation pipelines."
103
100
  }];
104
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwib3B0aW9uS2V5IiwiY2hhbmdlTmV3RGVmYXVsdCIsInNvbHV0aW9uIiwiY2hhbmdlTmV3S2V5IiwicmVzb2x2ZWRWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9EZXByZWNhdG9yL0RlcHJlY2F0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBkZXByZWNhdGlvbnMuXG4gKlxuICogQWRkIGRlcHJlY2F0aW9ucyB0byB0aGUgYXJyYXkgdXNpbmcgdGhlIGZvbGxvd2luZyBrZXlzOlxuICogLSBgb3B0aW9uS2V5YCB7U3RyaW5nfTogVGhlIG9wdGlvbiBrZXkgaW5jbC4gaXRzIHBhdGgsIGUuZy4gYHNlY3VyaXR5LmVuYWJsZUNoZWNrYC5cbiAqIC0gYGVudktleWAge1N0cmluZ306IFRoZSBlbnZpcm9ubWVudCBrZXksIGUuZy4gYFBBUlNFX1NFUlZFUl9TRUNVUklUWWAuXG4gKiAtIGBjaGFuZ2VOZXdLZXlgIHtTdHJpbmd9OiBTZXQgdGhlIG5ldyBrZXkgbmFtZSBpZiB0aGUgY3VycmVudCBrZXkgd2lsbCBiZSByZXBsYWNlZCxcbiAqIG9yIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGN1cnJlbnQga2V5IHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHJlcGxhY2VtZW50LlxuICogLSBgY2hhbmdlTmV3RGVmYXVsdGAge1N0cmluZ306IFNldCB0aGUgbmV3IGRlZmF1bHQgdmFsdWUgaWYgdGhlIGtleSdzIGRlZmF1bHQgdmFsdWVcbiAqIHdpbGwgY2hhbmdlIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gKiAtIGByZXNvbHZlZFZhbHVlYCB7YW55fTogVGhlIG9wdGlvbiB2YWx1ZSB0aGF0IHN1cHByZXNzZXMgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcsXG4gKiBpbmRpY2F0aW5nIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGFkb3B0ZWQgdGhlIGZ1dHVyZSBiZWhhdmlvci4gT25seSBhcHBsaWNhYmxlIHdoZW5cbiAqIGBjaGFuZ2VOZXdLZXlgIGlzIGFuIGVtcHR5IHN0cmluZyAob3B0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHJlcGxhY2VtZW50KS5cbiAqIEZvciBleGFtcGxlLCBgZmFsc2VgIGZvciBhbiBvcHRpb24gdGhhdCB3aWxsIGJlIHJlbW92ZWQsIGlmIHNldHRpbmcgaXQgdG8gYGZhbHNlYFxuICogZGlzYWJsZXMgdGhlIGRlcHJlY2F0ZWQgZmVhdHVyZS5cbiAqIC0gYHNvbHV0aW9uYDogVGhlIGluc3RydWN0aW9uIHRvIHJlc29sdmUgdGhpcyBkZXByZWNhdGlvbiB3YXJuaW5nLiBPcHRpb25hbC4gVGhpc1xuICogaW5zdHJ1Y3Rpb24gbXVzdCBub3QgaW5jbHVkZSB0aGUgZGVwcmVjYXRpb24gd2FybmluZyB3aGljaCBpcyBhdXRvLWdlbmVyYXRlZC5cbiAqIEl0IHNob3VsZCBvbmx5IGNvbnRhaW4gYWRkaXRpb25hbCBpbnN0cnVjdGlvbiByZWdhcmRpbmcgdGhlIGRlcHJlY2F0aW9uIGlmXG4gKiBuZWNlc3NhcnkuXG4gKlxuICogSWYgdGhlcmUgYXJlIG5vIGRlcHJlY2F0aW9ucywgdGhpcyBtdXN0IHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHtcbiAgICBvcHRpb25LZXk6ICdmaWxlVXBsb2FkLmFsbG93ZWRGaWxlVXJsRG9tYWlucycsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ1tdJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ2ZpbGVVcGxvYWQuYWxsb3dlZEZpbGVVcmxEb21haW5zJyB0byB0aGUgZG9tYWlucyB5b3Ugd2FudCB0byBhbGxvdywgb3IgdG8gJ1tdJyB0byBibG9jayBhbGwgZmlsZSBVUkxzLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncGFnZXMuZW5jb2RlUGFnZVBhcmFtSGVhZGVycycsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ3RydWUnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncGFnZXMuZW5jb2RlUGFnZVBhcmFtSGVhZGVycycgdG8gJ3RydWUnIHRvIFVSSS1lbmNvZGUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gcGFnZSBwYXJhbWV0ZXIgaGVhZGVycy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlYWRPbmx5TWFzdGVyS2V5SXBzJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnW1wiMTI3LjAuMC4xXCIsIFwiOjoxXCJdJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlYWRPbmx5TWFzdGVyS2V5SXBzJyB0byB0aGUgSVAgYWRkcmVzc2VzIHRoYXQgc2hvdWxkIGJlIGFsbG93ZWQgdG8gdXNlIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSwgb3IgdG8gJ1tcXFwiMTI3LjAuMC4xXFxcIiwgXFxcIjo6MVxcXCJdJyB0byByZXN0cmljdCBhY2Nlc3MgdG8gbG9jYWxob3N0LlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAnbW91bnRQbGF5Z3JvdW5kJyxcbiAgICBjaGFuZ2VOZXdLZXk6ICcnLFxuICAgIHNvbHV0aW9uOiBcIlVzZSBQYXJzZSBEYXNoYm9hcmQgYXMgR3JhcGhRTCBJREUgb3IgY29uZmlndXJlIGEgdGhpcmQtcGFydHkgR3JhcGhRTCBjbGllbnQgc3VjaCBhcyBBcG9sbG8gU2FuZGJveCwgR3JhcGhpUUwsIG9yIEluc29tbmlhIHdpdGggY3VzdG9tIHJlcXVlc3QgaGVhZGVycy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3BsYXlncm91bmRQYXRoJyxcbiAgICBjaGFuZ2VOZXdLZXk6ICcnLFxuICAgIHNvbHV0aW9uOiBcIlVzZSBQYXJzZSBEYXNoYm9hcmQgYXMgR3JhcGhRTCBJREUgb3IgY29uZmlndXJlIGEgdGhpcmQtcGFydHkgR3JhcGhRTCBjbGllbnQgc3VjaCBhcyBBcG9sbG8gU2FuZGJveCwgR3JhcGhpUUwsIG9yIEluc29tbmlhIHdpdGggY3VzdG9tIHJlcXVlc3QgaGVhZGVycy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlcXVlc3RDb21wbGV4aXR5LmluY2x1ZGVEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LmluY2x1ZGVEZXB0aCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCBpbmNsdWRlIHBvaW50ZXIgY2hhaW4gZGVwdGgsIG9yIHRvICctMScgdG8gZGlzYWJsZS5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlcXVlc3RDb21wbGV4aXR5LmluY2x1ZGVDb3VudCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwMCcsXG4gICAgc29sdXRpb246IFwiU2V0ICdyZXF1ZXN0Q29tcGxleGl0eS5pbmNsdWRlQ291bnQnIHRvIGEgcG9zaXRpdmUgaW50ZWdlciBhcHByb3ByaWF0ZSBmb3IgeW91ciBhcHAgdG8gbGltaXQgdGhlIG51bWJlciBvZiBpbmNsdWRlIHBhdGhzIHBlciBxdWVyeSwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkuc3VicXVlcnlEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LnN1YnF1ZXJ5RGVwdGgnIHRvIGEgcG9zaXRpdmUgaW50ZWdlciBhcHByb3ByaWF0ZSBmb3IgeW91ciBhcHAgdG8gbGltaXQgc3VicXVlcnkgbmVzdGluZyBkZXB0aCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkucXVlcnlEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LnF1ZXJ5RGVwdGgnIHRvIGEgcG9zaXRpdmUgaW50ZWdlciBhcHByb3ByaWF0ZSBmb3IgeW91ciBhcHAgdG8gbGltaXQgcXVlcnkgY29uZGl0aW9uIG5lc3RpbmcgZGVwdGgsIG9yIHRvICctMScgdG8gZGlzYWJsZS5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlcXVlc3RDb21wbGV4aXR5LmdyYXBoUUxEZXB0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzIwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LmdyYXBoUUxEZXB0aCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCBHcmFwaFFMIGZpZWxkIHNlbGVjdGlvbiBkZXB0aCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkuZ3JhcGhRTEZpZWxkcycsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzIwMCcsXG4gICAgc29sdXRpb246IFwiU2V0ICdyZXF1ZXN0Q29tcGxleGl0eS5ncmFwaFFMRmllbGRzJyB0byBhIHBvc2l0aXZlIGludGVnZXIgYXBwcm9wcmlhdGUgZm9yIHlvdXIgYXBwIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgR3JhcGhRTCBmaWVsZCBzZWxlY3Rpb25zLCBvciB0byAnLTEnIHRvIGRpc2FibGUuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdyZXF1ZXN0Q29tcGxleGl0eS5iYXRjaFJlcXVlc3RMaW1pdCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJzEwMCcsXG4gICAgc29sdXRpb246IFwiU2V0ICdyZXF1ZXN0Q29tcGxleGl0eS5iYXRjaFJlcXVlc3RMaW1pdCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHN1Yi1yZXF1ZXN0cyBwZXIgYmF0Y2ggcmVxdWVzdCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAnZW5hYmxlUHJvZHVjdFB1cmNoYXNlTGVnYWN5QXBpJyxcbiAgICBjaGFuZ2VOZXdLZXk6ICcnLFxuICAgIHJlc29sdmVkVmFsdWU6IGZhbHNlLFxuICAgIHNvbHV0aW9uOiBcIlRoZSBwcm9kdWN0IHB1cmNoYXNlIEFQSSBpcyBhbiB1bmRvY3VtZW50ZWQsIHVubWFpbnRhaW5lZCBsZWdhY3kgZmVhdHVyZSB0aGF0IG1heSBub3QgZnVuY3Rpb24gYXMgZXhwZWN0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uLiBXZSBzdHJvbmdseSBhZHZpc2UgYWdhaW5zdCB1c2luZyBpdC4gU2V0ICdlbmFibGVQcm9kdWN0UHVyY2hhc2VMZWdhY3lBcGknIHRvICdmYWxzZScgdG8gZGlzYWJsZSBpdCwgb3IgcmVtb3ZlIHRoZSBvcHRpb24gdG8gYWNjZXB0IHRoZSBmdXR1cmUgcmVtb3ZhbC5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ2FsbG93RXhwaXJlZEF1dGhEYXRhVG9rZW4nLFxuICAgIGNoYW5nZU5ld0tleTogJycsXG4gICAgcmVzb2x2ZWRWYWx1ZTogZmFsc2UsXG4gICAgc29sdXRpb246IFwiQXV0aCBwcm92aWRlcnMgYXJlIGFsd2F5cyB2YWxpZGF0ZWQgb24gbG9naW4gcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuIFNldCAnYWxsb3dFeHBpcmVkQXV0aERhdGFUb2tlbicgdG8gJ2ZhbHNlJyBvciByZW1vdmUgdGhlIG9wdGlvbiB0byBhY2NlcHQgdGhlIGZ1dHVyZSByZW1vdmFsLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncHJvdGVjdGVkRmllbGRzT3duZXJFeGVtcHQnLFxuICAgIGNoYW5nZU5ld0RlZmF1bHQ6ICdmYWxzZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdwcm90ZWN0ZWRGaWVsZHNPd25lckV4ZW1wdCcgdG8gJ2ZhbHNlJyB0byBhcHBseSBwcm90ZWN0ZWRGaWVsZHMgY29uc2lzdGVudGx5IHRvIHRoZSB1c2VyJ3Mgb3duIF9Vc2VyIG9iamVjdCAoc2FtZSBhcyBhbGwgb3RoZXIgY2xhc3NlcyksIG9yIHRvICd0cnVlJyB0byBrZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIHdoZXJlIGEgdXNlciBjYW4gc2VlIGFsbCB0aGVpciBvd24gZmllbGRzLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncHJvdGVjdGVkRmllbGRzVHJpZ2dlckV4ZW1wdCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ3RydWUnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncHJvdGVjdGVkRmllbGRzVHJpZ2dlckV4ZW1wdCcgdG8gJ3RydWUnIHRvIG1ha2UgQ2xvdWQgQ29kZSB0cmlnZ2VycyAoZS5nLiBiZWZvcmVTYXZlLCBhZnRlclNhdmUpIHJlY2VpdmUgdGhlIGZ1bGwgb2JqZWN0IGluY2x1ZGluZyBwcm90ZWN0ZWQgZmllbGRzLCBvciB0byAnZmFsc2UnIHRvIGtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igd2hlcmUgcHJvdGVjdGVkIGZpZWxkcyBhcmUgc3RyaXBwZWQgZnJvbSB0cmlnZ2VyIG9iamVjdHMuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdwcm90ZWN0ZWRGaWVsZHNTYXZlUmVzcG9uc2VFeGVtcHQnLFxuICAgIGNoYW5nZU5ld0RlZmF1bHQ6ICdmYWxzZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdwcm90ZWN0ZWRGaWVsZHNTYXZlUmVzcG9uc2VFeGVtcHQnIHRvICdmYWxzZScgdG8gc3RyaXAgcHJvdGVjdGVkIGZpZWxkcyBmcm9tIHdyaXRlIG9wZXJhdGlvbiByZXNwb25zZXMgKGNyZWF0ZSwgdXBkYXRlKSwgY29uc2lzdGVudCB3aXRoIGhvdyB0aGV5IGFyZSBzdHJpcHBlZCBmcm9tIHF1ZXJ5IHJlc3VsdHMuIFNldCB0byAndHJ1ZScgdG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciB3aGVyZSBwcm90ZWN0ZWQgZmllbGRzIGFyZSBpbmNsdWRlZCBpbiB3cml0ZSByZXNwb25zZXMuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdpbnN0YWxsYXRpb24uZHVwbGljYXRlRGV2aWNlVG9rZW5BY3Rpb25FbmZvcmNlQXV0aCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ3RydWUnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAnaW5zdGFsbGF0aW9uLmR1cGxpY2F0ZURldmljZVRva2VuQWN0aW9uRW5mb3JjZUF1dGgnIHRvICd0cnVlJyB0byBlbmZvcmNlIHRoZSBjYWxsZXIncyBhdXRoIGNvbnRleHQgKGFuZCB0aGUgcmVzdWx0aW5nIEFDTCBhbmQgQ0xQKSB3aGVuIFBhcnNlIFNlcnZlciBkZWR1cGxpY2F0ZXMgX0luc3RhbGxhdGlvbiByZWNvcmRzIHNoYXJpbmcgdGhlIHNhbWUgZGV2aWNlVG9rZW4uIFNldCB0byAnZmFsc2UnIHRvIGtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgYnlwYXNzaW5nIHBlcm1pc3Npb25zIG9uIHRoZSBkZWR1cCBvcGVyYXRpb24uXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdhbGxvd0FnZ3JlZ2F0aW9uRm9yUmVhZE9ubHlNYXN0ZXJLZXknLFxuICAgIGNoYW5nZU5ld0RlZmF1bHQ6ICdmYWxzZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdhbGxvd0FnZ3JlZ2F0aW9uRm9yUmVhZE9ubHlNYXN0ZXJLZXknIHRvICdmYWxzZScgdG8gcHJldmVudCB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgZnJvbSBydW5uaW5nIGFnZ3JlZ2F0aW9uIHBpcGVsaW5lcywgd2hpY2ggY2FuIGluY2x1ZGUgd3JpdGUtY2FwYWJsZSBzdGFnZXMgKGUuZy4gJyRvdXQnLCAnJG1lcmdlJykuIFNldCB0byAndHJ1ZScgdG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciB3aGVyZSB0aGUgcmVhZC1vbmx5IG1hc3RlciBrZXkgY2FuIHJ1biBhZ2dyZWdhdGlvbiBwaXBl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
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwib3B0aW9uS2V5IiwiY2hhbmdlTmV3RGVmYXVsdCIsInNvbHV0aW9uIiwiY2hhbmdlTmV3S2V5IiwicmVzb2x2ZWRWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9EZXByZWNhdG9yL0RlcHJlY2F0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBkZXByZWNhdGlvbnMuXG4gKlxuICogQWRkIGRlcHJlY2F0aW9ucyB0byB0aGUgYXJyYXkgdXNpbmcgdGhlIGZvbGxvd2luZyBrZXlzOlxuICogLSBgb3B0aW9uS2V5YCB7U3RyaW5nfTogVGhlIG9wdGlvbiBrZXkgaW5jbC4gaXRzIHBhdGgsIGUuZy4gYHNlY3VyaXR5LmVuYWJsZUNoZWNrYC5cbiAqIC0gYGVudktleWAge1N0cmluZ306IFRoZSBlbnZpcm9ubWVudCBrZXksIGUuZy4gYFBBUlNFX1NFUlZFUl9TRUNVUklUWWAuXG4gKiAtIGBjaGFuZ2VOZXdLZXlgIHtTdHJpbmd9OiBTZXQgdGhlIG5ldyBrZXkgbmFtZSBpZiB0aGUgY3VycmVudCBrZXkgd2lsbCBiZSByZXBsYWNlZCxcbiAqIG9yIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGN1cnJlbnQga2V5IHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHJlcGxhY2VtZW50LlxuICogLSBgY2hhbmdlTmV3RGVmYXVsdGAge1N0cmluZ306IFNldCB0aGUgbmV3IGRlZmF1bHQgdmFsdWUgaWYgdGhlIGtleSdzIGRlZmF1bHQgdmFsdWVcbiAqIHdpbGwgY2hhbmdlIGluIGEgZnV0dXJlIHZlcnNpb24uXG4gKiAtIGByZXNvbHZlZFZhbHVlYCB7YW55fTogVGhlIG9wdGlvbiB2YWx1ZSB0aGF0IHN1cHByZXNzZXMgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcsXG4gKiBpbmRpY2F0aW5nIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGFkb3B0ZWQgdGhlIGZ1dHVyZSBiZWhhdmlvci4gT25seSBhcHBsaWNhYmxlIHdoZW5cbiAqIGBjaGFuZ2VOZXdLZXlgIGlzIGFuIGVtcHR5IHN0cmluZyAob3B0aW9uIHdpbGwgYmUgcmVtb3ZlZCB3aXRob3V0IHJlcGxhY2VtZW50KS5cbiAqIEZvciBleGFtcGxlLCBgZmFsc2VgIGZvciBhbiBvcHRpb24gdGhhdCB3aWxsIGJlIHJlbW92ZWQsIGlmIHNldHRpbmcgaXQgdG8gYGZhbHNlYFxuICogZGlzYWJsZXMgdGhlIGRlcHJlY2F0ZWQgZmVhdHVyZS5cbiAqIC0gYHNvbHV0aW9uYDogVGhlIGluc3RydWN0aW9uIHRvIHJlc29sdmUgdGhpcyBkZXByZWNhdGlvbiB3YXJuaW5nLiBPcHRpb25hbC4gVGhpc1xuICogaW5zdHJ1Y3Rpb24gbXVzdCBub3QgaW5jbHVkZSB0aGUgZGVwcmVjYXRpb24gd2FybmluZyB3aGljaCBpcyBhdXRvLWdlbmVyYXRlZC5cbiAqIEl0IHNob3VsZCBvbmx5IGNvbnRhaW4gYWRkaXRpb25hbCBpbnN0cnVjdGlvbiByZWdhcmRpbmcgdGhlIGRlcHJlY2F0aW9uIGlmXG4gKiBuZWNlc3NhcnkuXG4gKlxuICogSWYgdGhlcmUgYXJlIG5vIGRlcHJlY2F0aW9ucywgdGhpcyBtdXN0IHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gIHtcbiAgICBvcHRpb25LZXk6ICdwYWdlcy5lbmNvZGVQYWdlUGFyYW1IZWFkZXJzJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAndHJ1ZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdwYWdlcy5lbmNvZGVQYWdlUGFyYW1IZWFkZXJzJyB0byAndHJ1ZScgdG8gVVJJLWVuY29kZSBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBwYWdlIHBhcmFtZXRlciBoZWFkZXJzLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVhZE9ubHlNYXN0ZXJLZXlJcHMnLFxuICAgIGNoYW5nZU5ld0RlZmF1bHQ6ICdbXCIxMjcuMC4wLjFcIiwgXCI6OjFcIl0nLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncmVhZE9ubHlNYXN0ZXJLZXlJcHMnIHRvIHRoZSBJUCBhZGRyZXNzZXMgdGhhdCBzaG91bGQgYmUgYWxsb3dlZCB0byB1c2UgdGhlIHJlYWQtb25seSBtYXN0ZXIga2V5LCBvciB0byAnW1xcXCIxMjcuMC4wLjFcXFwiLCBcXFwiOjoxXFxcIl0nIHRvIHJlc3RyaWN0IGFjY2VzcyB0byBsb2NhbGhvc3QuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdtb3VudFBsYXlncm91bmQnLFxuICAgIGNoYW5nZU5ld0tleTogJycsXG4gICAgcmVzb2x2ZWRWYWx1ZTogZmFsc2UsXG4gICAgc29sdXRpb246IFwiVXNlIFBhcnNlIERhc2hib2FyZCBhcyBHcmFwaFFMIElERSBvciBjb25maWd1cmUgYSB0aGlyZC1wYXJ0eSBHcmFwaFFMIGNsaWVudCBzdWNoIGFzIEFwb2xsbyBTYW5kYm94LCBHcmFwaGlRTCwgb3IgSW5zb21uaWEgd2l0aCBjdXN0b20gcmVxdWVzdCBoZWFkZXJzLiBTZXQgJ21vdW50UGxheWdyb3VuZCcgdG8gJ2ZhbHNlJyBvciByZW1vdmUgdGhlIG9wdGlvbiB0byBhY2NlcHQgdGhlIGZ1dHVyZSByZW1vdmFsLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncGxheWdyb3VuZFBhdGgnLFxuICAgIGNoYW5nZU5ld0tleTogJycsXG4gICAgc29sdXRpb246IFwiVXNlIFBhcnNlIERhc2hib2FyZCBhcyBHcmFwaFFMIElERSBvciBjb25maWd1cmUgYSB0aGlyZC1wYXJ0eSBHcmFwaFFMIGNsaWVudCBzdWNoIGFzIEFwb2xsbyBTYW5kYm94LCBHcmFwaGlRTCwgb3IgSW5zb21uaWEgd2l0aCBjdXN0b20gcmVxdWVzdCBoZWFkZXJzLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkuaW5jbHVkZURlcHRoJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnMTAnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncmVxdWVzdENvbXBsZXhpdHkuaW5jbHVkZURlcHRoJyB0byBhIHBvc2l0aXZlIGludGVnZXIgYXBwcm9wcmlhdGUgZm9yIHlvdXIgYXBwIHRvIGxpbWl0IGluY2x1ZGUgcG9pbnRlciBjaGFpbiBkZXB0aCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkuaW5jbHVkZUNvdW50JyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnMTAwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LmluY2x1ZGVDb3VudCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGluY2x1ZGUgcGF0aHMgcGVyIHF1ZXJ5LCBvciB0byAnLTEnIHRvIGRpc2FibGUuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdyZXF1ZXN0Q29tcGxleGl0eS5zdWJxdWVyeURlcHRoJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnMTAnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncmVxdWVzdENvbXBsZXhpdHkuc3VicXVlcnlEZXB0aCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCBzdWJxdWVyeSBuZXN0aW5nIGRlcHRoLCBvciB0byAnLTEnIHRvIGRpc2FibGUuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdyZXF1ZXN0Q29tcGxleGl0eS5xdWVyeURlcHRoJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnMTAnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncmVxdWVzdENvbXBsZXhpdHkucXVlcnlEZXB0aCcgdG8gYSBwb3NpdGl2ZSBpbnRlZ2VyIGFwcHJvcHJpYXRlIGZvciB5b3VyIGFwcCB0byBsaW1pdCBxdWVyeSBjb25kaXRpb24gbmVzdGluZyBkZXB0aCwgb3IgdG8gJy0xJyB0byBkaXNhYmxlLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAncmVxdWVzdENvbXBsZXhpdHkuZ3JhcGhRTERlcHRoJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnMjAnLFxuICAgIHNvbHV0aW9uOiBcIlNldCAncmVxdWVzdENvbXBsZXhpdHkuZ3JhcGhRTERlcHRoJyB0byBhIHBvc2l0aXZlIGludGVnZXIgYXBwcm9wcmlhdGUgZm9yIHlvdXIgYXBwIHRvIGxpbWl0IEdyYXBoUUwgZmllbGQgc2VsZWN0aW9uIGRlcHRoLCBvciB0byAnLTEnIHRvIGRpc2FibGUuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdyZXF1ZXN0Q29tcGxleGl0eS5ncmFwaFFMRmllbGRzJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnMjAwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LmdyYXBoUUxGaWVsZHMnIHRvIGEgcG9zaXRpdmUgaW50ZWdlciBhcHByb3ByaWF0ZSBmb3IgeW91ciBhcHAgdG8gbGltaXQgdGhlIG51bWJlciBvZiBHcmFwaFFMIGZpZWxkIHNlbGVjdGlvbnMsIG9yIHRvICctMScgdG8gZGlzYWJsZS5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3JlcXVlc3RDb21wbGV4aXR5LmJhdGNoUmVxdWVzdExpbWl0JyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAnMTAwJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3JlcXVlc3RDb21wbGV4aXR5LmJhdGNoUmVxdWVzdExpbWl0JyB0byBhIHBvc2l0aXZlIGludGVnZXIgYXBwcm9wcmlhdGUgZm9yIHlvdXIgYXBwIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3ViLXJlcXVlc3RzIHBlciBiYXRjaCByZXF1ZXN0LCBvciB0byAnLTEnIHRvIGRpc2FibGUuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdlbmFibGVQcm9kdWN0UHVyY2hhc2VMZWdhY3lBcGknLFxuICAgIGNoYW5nZU5ld0tleTogJycsXG4gICAgcmVzb2x2ZWRWYWx1ZTogZmFsc2UsXG4gICAgc29sdXRpb246IFwiVGhlIHByb2R1Y3QgcHVyY2hhc2UgQVBJIGlzIGFuIHVuZG9jdW1lbnRlZCwgdW5tYWludGFpbmVkIGxlZ2FjeSBmZWF0dXJlIHRoYXQgbWF5IG5vdCBmdW5jdGlvbiBhcyBleHBlY3RlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIG1ham9yIHZlcnNpb24uIFdlIHN0cm9uZ2x5IGFkdmlzZSBhZ2FpbnN0IHVzaW5nIGl0LiBTZXQgJ2VuYWJsZVByb2R1Y3RQdXJjaGFzZUxlZ2FjeUFwaScgdG8gJ2ZhbHNlJyB0byBkaXNhYmxlIGl0LCBvciByZW1vdmUgdGhlIG9wdGlvbiB0byBhY2NlcHQgdGhlIGZ1dHVyZSByZW1vdmFsLlwiLFxuICB9LFxuICB7XG4gICAgb3B0aW9uS2V5OiAnYWxsb3dFeHBpcmVkQXV0aERhdGFUb2tlbicsXG4gICAgY2hhbmdlTmV3S2V5OiAnJyxcbiAgICByZXNvbHZlZFZhbHVlOiBmYWxzZSxcbiAgICBzb2x1dGlvbjogXCJBdXRoIHByb3ZpZGVycyBhcmUgYWx3YXlzIHZhbGlkYXRlZCBvbiBsb2dpbiByZWdhcmRsZXNzIG9mIHRoaXMgc2V0dGluZy4gU2V0ICdhbGxvd0V4cGlyZWRBdXRoRGF0YVRva2VuJyB0byAnZmFsc2UnIG9yIHJlbW92ZSB0aGUgb3B0aW9uIHRvIGFjY2VwdCB0aGUgZnV0dXJlIHJlbW92YWwuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdwcm90ZWN0ZWRGaWVsZHNPd25lckV4ZW1wdCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ2ZhbHNlJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3Byb3RlY3RlZEZpZWxkc093bmVyRXhlbXB0JyB0byAnZmFsc2UnIHRvIGFwcGx5IHByb3RlY3RlZEZpZWxkcyBjb25zaXN0ZW50bHkgdG8gdGhlIHVzZXIncyBvd24gX1VzZXIgb2JqZWN0IChzYW1lIGFzIGFsbCBvdGhlciBjbGFzc2VzKSwgb3IgdG8gJ3RydWUnIHRvIGtlZXAgdGhlIGN1cnJlbnQgYmVoYXZpb3Igd2hlcmUgYSB1c2VyIGNhbiBzZWUgYWxsIHRoZWlyIG93biBmaWVsZHMuXCIsXG4gIH0sXG4gIHtcbiAgICBvcHRpb25LZXk6ICdwcm90ZWN0ZWRGaWVsZHNUcmlnZ2VyRXhlbXB0JyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAndHJ1ZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdwcm90ZWN0ZWRGaWVsZHNUcmlnZ2VyRXhlbXB0JyB0byAndHJ1ZScgdG8gbWFrZSBDbG91ZCBDb2RlIHRyaWdnZXJzIChlLmcuIGJlZm9yZVNhdmUsIGFmdGVyU2F2ZSkgcmVjZWl2ZSB0aGUgZnVsbCBvYmplY3QgaW5jbHVkaW5nIHByb3RlY3RlZCBmaWVsZHMsIG9yIHRvICdmYWxzZScgdG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciB3aGVyZSBwcm90ZWN0ZWQgZmllbGRzIGFyZSBzdHJpcHBlZCBmcm9tIHRyaWdnZXIgb2JqZWN0cy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ3Byb3RlY3RlZEZpZWxkc1NhdmVSZXNwb25zZUV4ZW1wdCcsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ2ZhbHNlJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ3Byb3RlY3RlZEZpZWxkc1NhdmVSZXNwb25zZUV4ZW1wdCcgdG8gJ2ZhbHNlJyB0byBzdHJpcCBwcm90ZWN0ZWQgZmllbGRzIGZyb20gd3JpdGUgb3BlcmF0aW9uIHJlc3BvbnNlcyAoY3JlYXRlLCB1cGRhdGUpLCBjb25zaXN0ZW50IHdpdGggaG93IHRoZXkgYXJlIHN0cmlwcGVkIGZyb20gcXVlcnkgcmVzdWx0cy4gU2V0IHRvICd0cnVlJyB0byBrZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIHdoZXJlIHByb3RlY3RlZCBmaWVsZHMgYXJlIGluY2x1ZGVkIGluIHdyaXRlIHJlc3BvbnNlcy5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ2luc3RhbGxhdGlvbi5kdXBsaWNhdGVEZXZpY2VUb2tlbkFjdGlvbkVuZm9yY2VBdXRoJyxcbiAgICBjaGFuZ2VOZXdEZWZhdWx0OiAndHJ1ZScsXG4gICAgc29sdXRpb246IFwiU2V0ICdpbnN0YWxsYXRpb24uZHVwbGljYXRlRGV2aWNlVG9rZW5BY3Rpb25FbmZvcmNlQXV0aCcgdG8gJ3RydWUnIHRvIGVuZm9yY2UgdGhlIGNhbGxlcidzIGF1dGggY29udGV4dCAoYW5kIHRoZSByZXN1bHRpbmcgQUNMIGFuZCBDTFApIHdoZW4gUGFyc2UgU2VydmVyIGRlZHVwbGljYXRlcyBfSW5zdGFsbGF0aW9uIHJlY29yZHMgc2hhcmluZyB0aGUgc2FtZSBkZXZpY2VUb2tlbi4gU2V0IHRvICdmYWxzZScgdG8ga2VlcCB0aGUgY3VycmVudCBiZWhhdmlvciBvZiBieXBhc3NpbmcgcGVybWlzc2lvbnMgb24gdGhlIGRlZHVwIG9wZXJhdGlvbi5cIixcbiAgfSxcbiAge1xuICAgIG9wdGlvbktleTogJ2FsbG93QWdncmVnYXRpb25Gb3JSZWFkT25seU1hc3RlcktleScsXG4gICAgY2hhbmdlTmV3RGVmYXVsdDogJ2ZhbHNlJyxcbiAgICBzb2x1dGlvbjogXCJTZXQgJ2FsbG93QWdncmVnYXRpb25Gb3JSZWFkT25seU1hc3RlcktleScgdG8gJ2ZhbHNlJyB0byBwcmV2ZW50IHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBmcm9tIHJ1bm5pbmcgYWdncmVnYXRpb24gcGlwZWxpbmVzLCB3aGljaCBjYW4gaW5jbHVkZSB3cml0ZS1jYXBhYmxlIHN0YWdlcyAoZS5nLiAnJG91dCcsICckbWVyZ2UnKS4gU2V0IHRvICd0cnVlJyB0byBrZWVwIHRoZSBjdXJyZW50IGJlaGF2aW9yIHdoZXJlIHRoZSByZWFkLW9ubHkgbWFzdGVyIGtleSBjYW4gcnVuIGFnZ3JlZ2F0aW9uIHBpcGVsaW5lcy5cIixcbiAgfSxcbl07XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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
@@ -2,6 +2,65 @@
2
2
 
3
3
  const Parse = require('parse/node').Parse;
4
4
 
5
+ /**
6
+ * Extract a hostname from a server URL string.
7
+ * Functions (async publicServerURL) and invalid URLs are skipped.
8
+ */
9
+ function hostnameFromUrl(url) {
10
+ if (typeof url !== 'string' || url === '') {
11
+ return;
12
+ }
13
+ try {
14
+ const hostname = new URL(url).hostname;
15
+ return hostname ? hostname.toLowerCase() : undefined;
16
+ } catch {
17
+ return;
18
+ }
19
+ }
20
+
21
+ /**
22
+ * Build the default file-URL allowlist from Parse Server's own URLs.
23
+ * Unconfigured allowedFileUrlDomains should trust the server's public host,
24
+ * not every domain on the internet.
25
+ */
26
+ function defaultAllowedFileUrlDomains(urls = []) {
27
+ const seen = new Set();
28
+ const hostnames = [];
29
+ for (const url of urls) {
30
+ const hostname = hostnameFromUrl(url);
31
+ if (hostname && !seen.has(hostname)) {
32
+ seen.add(hostname);
33
+ hostnames.push(hostname);
34
+ }
35
+ }
36
+ return hostnames;
37
+ }
38
+
39
+ /**
40
+ * When the allowlist was defaulted (not set by the operator), also include
41
+ * hostnames from the current publicServerURL / serverURL. publicServerURL can
42
+ * be a function resolved later via loadKeys, so the stored array may be stale.
43
+ */
44
+ function resolveAllowedFileUrlDomains(config) {
45
+ const domains = config?.fileUpload?.allowedFileUrlDomains;
46
+ if (!Array.isArray(domains) || !config?._allowedFileUrlDomainsIsDefault) {
47
+ return domains;
48
+ }
49
+ const derived = defaultAllowedFileUrlDomains([config.publicServerURL, config.serverURL]);
50
+ if (derived.length === 0) {
51
+ return domains;
52
+ }
53
+ const seen = new Set(domains.map(domain => domain.toLowerCase()));
54
+ const merged = domains.slice();
55
+ for (const hostname of derived) {
56
+ if (!seen.has(hostname)) {
57
+ seen.add(hostname);
58
+ merged.push(hostname);
59
+ }
60
+ }
61
+ return merged;
62
+ }
63
+
5
64
  /**
6
65
  * Validates whether a File URL is allowed based on the configured allowed domains.
7
66
  * @param {string} fileUrl - The URL to validate.
@@ -12,7 +71,7 @@ function validateFileUrl(fileUrl, config) {
12
71
  if (fileUrl == null || fileUrl === '') {
13
72
  return;
14
73
  }
15
- const domains = config?.fileUpload?.allowedFileUrlDomains;
74
+ const domains = resolveAllowedFileUrlDomains(config);
16
75
  if (!Array.isArray(domains) || domains.includes('*')) {
17
76
  return;
18
77
  }
@@ -64,6 +123,7 @@ function validateFileUrlsInObject(obj, config) {
64
123
  }
65
124
  module.exports = {
66
125
  validateFileUrl,
67
- validateFileUrlsInObject
126
+ validateFileUrlsInObject,
127
+ defaultAllowedFileUrlDomains
68
128
  };
69
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJ2YWxpZGF0ZUZpbGVVcmwiLCJmaWxlVXJsIiwiY29uZmlnIiwiZG9tYWlucyIsImZpbGVVcGxvYWQiLCJhbGxvd2VkRmlsZVVybERvbWFpbnMiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsInBhcnNlZFVybCIsIlVSTCIsIkVycm9yIiwiRklMRV9TQVZFX0VSUk9SIiwiZmlsZUhvc3RuYW1lIiwiaG9zdG5hbWUiLCJ0b0xvd2VyQ2FzZSIsImRvbWFpbiIsImQiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJzbGljZSIsInZhbGlkYXRlRmlsZVVybHNJbk9iamVjdCIsIm9iaiIsIml0ZW0iLCJfX3R5cGUiLCJ1cmwiLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwidmFsdWUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL0ZpbGVVcmxWYWxpZGF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbi8qKlxuICogVmFsaWRhdGVzIHdoZXRoZXIgYSBGaWxlIFVSTCBpcyBhbGxvd2VkIGJhc2VkIG9uIHRoZSBjb25maWd1cmVkIGFsbG93ZWQgZG9tYWlucy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlVXJsIC0gVGhlIFVSTCB0byB2YWxpZGF0ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSBUaGUgUGFyc2UgU2VydmVyIGNvbmZpZyBvYmplY3QuXG4gKiBAdGhyb3dzIHtQYXJzZS5FcnJvcn0gSWYgdGhlIFVSTCBpcyBub3QgYWxsb3dlZC5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVGaWxlVXJsKGZpbGVVcmwsIGNvbmZpZykge1xuICBpZiAoZmlsZVVybCA9PSBudWxsIHx8IGZpbGVVcmwgPT09ICcnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZG9tYWlucyA9IGNvbmZpZz8uZmlsZVVwbG9hZD8uYWxsb3dlZEZpbGVVcmxEb21haW5zO1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZG9tYWlucykgfHwgZG9tYWlucy5pbmNsdWRlcygnKicpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHBhcnNlZFVybDtcbiAgdHJ5IHtcbiAgICBwYXJzZWRVcmwgPSBuZXcgVVJMKGZpbGVVcmwpO1xuICB9IGNhdGNoIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCBgSW52YWxpZCBmaWxlIFVSTC5gKTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVIb3N0bmFtZSA9IHBhcnNlZFVybC5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICBmb3IgKGNvbnN0IGRvbWFpbiBvZiBkb21haW5zKSB7XG4gICAgY29uc3QgZCA9IGRvbWFpbi50b0xvd2VyQ2FzZSgpO1xuICAgIGlmIChmaWxlSG9zdG5hbWUgPT09IGQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGQuc3RhcnRzV2l0aCgnKi4nKSAmJiBmaWxlSG9zdG5hbWUuZW5kc1dpdGgoZC5zbGljZSgxKSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCBgRmlsZSBVUkwgZG9tYWluICcke3BhcnNlZFVybC5ob3N0bmFtZX0nIGlzIG5vdCBhbGxvd2VkLmApO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHNjYW5zIGFuIG9iamVjdCBmb3IgRmlsZSB0eXBlIGZpZWxkcyBhbmQgdmFsaWRhdGVzIHRoZWlyIFVSTHMuXG4gKiBAcGFyYW0ge2FueX0gb2JqIC0gVGhlIG9iamVjdCB0byBzY2FuLlxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyAtIFRoZSBQYXJzZSBTZXJ2ZXIgY29uZmlnIG9iamVjdC5cbiAqIEB0aHJvd3Mge1BhcnNlLkVycm9yfSBJZiBhbnkgRmlsZSBVUkwgaXMgbm90IGFsbG93ZWQuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlRmlsZVVybHNJbk9iamVjdChvYmosIGNvbmZpZykge1xuICBpZiAob2JqID09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBvYmopIHtcbiAgICAgIHZhbGlkYXRlRmlsZVVybHNJbk9iamVjdChpdGVtLCBjb25maWcpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG9iai5fX3R5cGUgPT09ICdGaWxlJyAmJiBvYmoudXJsKSB7XG4gICAgdmFsaWRhdGVGaWxlVXJsKG9iai51cmwsIGNvbmZpZyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iaikpIHtcbiAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWxpZGF0ZUZpbGVVcmxzSW5PYmplY3QodmFsdWUsIGNvbmZpZyk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0geyB2YWxpZGF0ZUZpbGVVcmwsIHZhbGlkYXRlRmlsZVVybHNJbk9iamVjdCB9O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTRSxlQUFlQSxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sRUFBRTtFQUN4QyxJQUFJRCxPQUFPLElBQUksSUFBSSxJQUFJQSxPQUFPLEtBQUssRUFBRSxFQUFFO0lBQ3JDO0VBQ0Y7RUFFQSxNQUFNRSxPQUFPLEdBQUdELE1BQU0sRUFBRUUsVUFBVSxFQUFFQyxxQkFBcUI7RUFDekQsSUFBSSxDQUFDQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0osT0FBTyxDQUFDLElBQUlBLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ3BEO0VBQ0Y7RUFFQSxJQUFJQyxTQUFTO0VBQ2IsSUFBSTtJQUNGQSxTQUFTLEdBQUcsSUFBSUMsR0FBRyxDQUFDVCxPQUFPLENBQUM7RUFDOUIsQ0FBQyxDQUFDLE1BQU07SUFDTixNQUFNLElBQUlILEtBQUssQ0FBQ2EsS0FBSyxDQUFDYixLQUFLLENBQUNhLEtBQUssQ0FBQ0MsZUFBZSxFQUFFLG1CQUFtQixDQUFDO0VBQ3pFO0VBRUEsTUFBTUMsWUFBWSxHQUFHSixTQUFTLENBQUNLLFFBQVEsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7RUFDckQsS0FBSyxNQUFNQyxNQUFNLElBQUliLE9BQU8sRUFBRTtJQUM1QixNQUFNYyxDQUFDLEdBQUdELE1BQU0sQ0FBQ0QsV0FBVyxDQUFDLENBQUM7SUFDOUIsSUFBSUYsWUFBWSxLQUFLSSxDQUFDLEVBQUU7TUFDdEI7SUFDRjtJQUNBLElBQUlBLENBQUMsQ0FBQ0MsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJTCxZQUFZLENBQUNNLFFBQVEsQ0FBQ0YsQ0FBQyxDQUFDRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtNQUMzRDtJQUNGO0VBQ0Y7RUFFQSxNQUFNLElBQUl0QixLQUFLLENBQUNhLEtBQUssQ0FBQ2IsS0FBSyxDQUFDYSxLQUFLLENBQUNDLGVBQWUsRUFBRSxvQkFBb0JILFNBQVMsQ0FBQ0ssUUFBUSxtQkFBbUIsQ0FBQztBQUMvRzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTTyx3QkFBd0JBLENBQUNDLEdBQUcsRUFBRXBCLE1BQU0sRUFBRTtFQUM3QyxJQUFJb0IsR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxFQUFFO0lBQzFDO0VBQ0Y7RUFDQSxJQUFJaEIsS0FBSyxDQUFDQyxPQUFPLENBQUNlLEdBQUcsQ0FBQyxFQUFFO0lBQ3RCLEtBQUssTUFBTUMsSUFBSSxJQUFJRCxHQUFHLEVBQUU7TUFDdEJELHdCQUF3QixDQUFDRSxJQUFJLEVBQUVyQixNQUFNLENBQUM7SUFDeEM7SUFDQTtFQUNGO0VBQ0EsSUFBSW9CLEdBQUcsQ0FBQ0UsTUFBTSxLQUFLLE1BQU0sSUFBSUYsR0FBRyxDQUFDRyxHQUFHLEVBQUU7SUFDcEN6QixlQUFlLENBQUNzQixHQUFHLENBQUNHLEdBQUcsRUFBRXZCLE1BQU0sQ0FBQztJQUNoQztFQUNGO0VBQ0EsS0FBSyxNQUFNd0IsR0FBRyxJQUFJQyxNQUFNLENBQUNDLElBQUksQ0FBQ04sR0FBRyxDQUFDLEVBQUU7SUFDbEMsTUFBTU8sS0FBSyxHQUFHUCxHQUFHLENBQUNJLEdBQUcsQ0FBQztJQUN0QixJQUFJRyxLQUFLLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUN0Q1Isd0JBQXdCLENBQUNRLEtBQUssRUFBRTNCLE1BQU0sQ0FBQztJQUN6QztFQUNGO0FBQ0Y7QUFFQTRCLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHO0VBQUUvQixlQUFlO0VBQUVxQjtBQUF5QixDQUFDIiwiaWdub3JlTGlzdCI6W119
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJob3N0bmFtZUZyb21VcmwiLCJ1cmwiLCJob3N0bmFtZSIsIlVSTCIsInRvTG93ZXJDYXNlIiwidW5kZWZpbmVkIiwiZGVmYXVsdEFsbG93ZWRGaWxlVXJsRG9tYWlucyIsInVybHMiLCJzZWVuIiwiU2V0IiwiaG9zdG5hbWVzIiwiaGFzIiwiYWRkIiwicHVzaCIsInJlc29sdmVBbGxvd2VkRmlsZVVybERvbWFpbnMiLCJjb25maWciLCJkb21haW5zIiwiZmlsZVVwbG9hZCIsImFsbG93ZWRGaWxlVXJsRG9tYWlucyIsIkFycmF5IiwiaXNBcnJheSIsIl9hbGxvd2VkRmlsZVVybERvbWFpbnNJc0RlZmF1bHQiLCJkZXJpdmVkIiwicHVibGljU2VydmVyVVJMIiwic2VydmVyVVJMIiwibGVuZ3RoIiwibWFwIiwiZG9tYWluIiwibWVyZ2VkIiwic2xpY2UiLCJ2YWxpZGF0ZUZpbGVVcmwiLCJmaWxlVXJsIiwiaW5jbHVkZXMiLCJwYXJzZWRVcmwiLCJFcnJvciIsIkZJTEVfU0FWRV9FUlJPUiIsImZpbGVIb3N0bmFtZSIsImQiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJ2YWxpZGF0ZUZpbGVVcmxzSW5PYmplY3QiLCJvYmoiLCJpdGVtIiwiX190eXBlIiwia2V5IiwiT2JqZWN0Iiwia2V5cyIsInZhbHVlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9GaWxlVXJsVmFsaWRhdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG4vKipcbiAqIEV4dHJhY3QgYSBob3N0bmFtZSBmcm9tIGEgc2VydmVyIFVSTCBzdHJpbmcuXG4gKiBGdW5jdGlvbnMgKGFzeW5jIHB1YmxpY1NlcnZlclVSTCkgYW5kIGludmFsaWQgVVJMcyBhcmUgc2tpcHBlZC5cbiAqL1xuZnVuY3Rpb24gaG9zdG5hbWVGcm9tVXJsKHVybCkge1xuICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycgfHwgdXJsID09PSAnJykge1xuICAgIHJldHVybjtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IGhvc3RuYW1lID0gbmV3IFVSTCh1cmwpLmhvc3RuYW1lO1xuICAgIHJldHVybiBob3N0bmFtZSA/IGhvc3RuYW1lLnRvTG93ZXJDYXNlKCkgOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybjtcbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBkZWZhdWx0IGZpbGUtVVJMIGFsbG93bGlzdCBmcm9tIFBhcnNlIFNlcnZlcidzIG93biBVUkxzLlxuICogVW5jb25maWd1cmVkIGFsbG93ZWRGaWxlVXJsRG9tYWlucyBzaG91bGQgdHJ1c3QgdGhlIHNlcnZlcidzIHB1YmxpYyBob3N0LFxuICogbm90IGV2ZXJ5IGRvbWFpbiBvbiB0aGUgaW50ZXJuZXQuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRBbGxvd2VkRmlsZVVybERvbWFpbnModXJscyA9IFtdKSB7XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0KCk7XG4gIGNvbnN0IGhvc3RuYW1lcyA9IFtdO1xuICBmb3IgKGNvbnN0IHVybCBvZiB1cmxzKSB7XG4gICAgY29uc3QgaG9zdG5hbWUgPSBob3N0bmFtZUZyb21VcmwodXJsKTtcbiAgICBpZiAoaG9zdG5hbWUgJiYgIXNlZW4uaGFzKGhvc3RuYW1lKSkge1xuICAgICAgc2Vlbi5hZGQoaG9zdG5hbWUpO1xuICAgICAgaG9zdG5hbWVzLnB1c2goaG9zdG5hbWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaG9zdG5hbWVzO1xufVxuXG4vKipcbiAqIFdoZW4gdGhlIGFsbG93bGlzdCB3YXMgZGVmYXVsdGVkIChub3Qgc2V0IGJ5IHRoZSBvcGVyYXRvciksIGFsc28gaW5jbHVkZVxuICogaG9zdG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgcHVibGljU2VydmVyVVJMIC8gc2VydmVyVVJMLiBwdWJsaWNTZXJ2ZXJVUkwgY2FuXG4gKiBiZSBhIGZ1bmN0aW9uIHJlc29sdmVkIGxhdGVyIHZpYSBsb2FkS2V5cywgc28gdGhlIHN0b3JlZCBhcnJheSBtYXkgYmUgc3RhbGUuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBbGxvd2VkRmlsZVVybERvbWFpbnMoY29uZmlnKSB7XG4gIGNvbnN0IGRvbWFpbnMgPSBjb25maWc/LmZpbGVVcGxvYWQ/LmFsbG93ZWRGaWxlVXJsRG9tYWlucztcbiAgaWYgKCFBcnJheS5pc0FycmF5KGRvbWFpbnMpIHx8ICFjb25maWc/Ll9hbGxvd2VkRmlsZVVybERvbWFpbnNJc0RlZmF1bHQpIHtcbiAgICByZXR1cm4gZG9tYWlucztcbiAgfVxuICBjb25zdCBkZXJpdmVkID0gZGVmYXVsdEFsbG93ZWRGaWxlVXJsRG9tYWlucyhbY29uZmlnLnB1YmxpY1NlcnZlclVSTCwgY29uZmlnLnNlcnZlclVSTF0pO1xuICBpZiAoZGVyaXZlZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZG9tYWlucztcbiAgfVxuICBjb25zdCBzZWVuID0gbmV3IFNldChkb21haW5zLm1hcChkb21haW4gPT4gZG9tYWluLnRvTG93ZXJDYXNlKCkpKTtcbiAgY29uc3QgbWVyZ2VkID0gZG9tYWlucy5zbGljZSgpO1xuICBmb3IgKGNvbnN0IGhvc3RuYW1lIG9mIGRlcml2ZWQpIHtcbiAgICBpZiAoIXNlZW4uaGFzKGhvc3RuYW1lKSkge1xuICAgICAgc2Vlbi5hZGQoaG9zdG5hbWUpO1xuICAgICAgbWVyZ2VkLnB1c2goaG9zdG5hbWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWVyZ2VkO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIGEgRmlsZSBVUkwgaXMgYWxsb3dlZCBiYXNlZCBvbiB0aGUgY29uZmlndXJlZCBhbGxvd2VkIGRvbWFpbnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZVVybCAtIFRoZSBVUkwgdG8gdmFsaWRhdGUuXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gVGhlIFBhcnNlIFNlcnZlciBjb25maWcgb2JqZWN0LlxuICogQHRocm93cyB7UGFyc2UuRXJyb3J9IElmIHRoZSBVUkwgaXMgbm90IGFsbG93ZWQuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlRmlsZVVybChmaWxlVXJsLCBjb25maWcpIHtcbiAgaWYgKGZpbGVVcmwgPT0gbnVsbCB8fCBmaWxlVXJsID09PSAnJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGRvbWFpbnMgPSByZXNvbHZlQWxsb3dlZEZpbGVVcmxEb21haW5zKGNvbmZpZyk7XG4gIGlmICghQXJyYXkuaXNBcnJheShkb21haW5zKSB8fCBkb21haW5zLmluY2x1ZGVzKCcqJykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgcGFyc2VkVXJsO1xuICB0cnkge1xuICAgIHBhcnNlZFVybCA9IG5ldyBVUkwoZmlsZVVybCk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsIGBJbnZhbGlkIGZpbGUgVVJMLmApO1xuICB9XG5cbiAgY29uc3QgZmlsZUhvc3RuYW1lID0gcGFyc2VkVXJsLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGZvciAoY29uc3QgZG9tYWluIG9mIGRvbWFpbnMpIHtcbiAgICBjb25zdCBkID0gZG9tYWluLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGZpbGVIb3N0bmFtZSA9PT0gZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZC5zdGFydHNXaXRoKCcqLicpICYmIGZpbGVIb3N0bmFtZS5lbmRzV2l0aChkLnNsaWNlKDEpKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5GSUxFX1NBVkVfRVJST1IsIGBGaWxlIFVSTCBkb21haW4gJyR7cGFyc2VkVXJsLmhvc3RuYW1lfScgaXMgbm90IGFsbG93ZWQuYCk7XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgc2NhbnMgYW4gb2JqZWN0IGZvciBGaWxlIHR5cGUgZmllbGRzIGFuZCB2YWxpZGF0ZXMgdGhlaXIgVVJMcy5cbiAqIEBwYXJhbSB7YW55fSBvYmogLSBUaGUgb2JqZWN0IHRvIHNjYW4uXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gVGhlIFBhcnNlIFNlcnZlciBjb25maWcgb2JqZWN0LlxuICogQHRocm93cyB7UGFyc2UuRXJyb3J9IElmIGFueSBGaWxlIFVSTCBpcyBub3QgYWxsb3dlZC5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVGaWxlVXJsc0luT2JqZWN0KG9iaiwgY29uZmlnKSB7XG4gIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIG9iaikge1xuICAgICAgdmFsaWRhdGVGaWxlVXJsc0luT2JqZWN0KGl0ZW0sIGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZiAob2JqLl9fdHlwZSA9PT0gJ0ZpbGUnICYmIG9iai51cmwpIHtcbiAgICB2YWxpZGF0ZUZpbGVVcmwob2JqLnVybCwgY29uZmlnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob2JqKSkge1xuICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhbGlkYXRlRmlsZVVybHNJbk9iamVjdCh2YWx1ZSwgY29uZmlnKTtcbiAgICB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlRmlsZVVybCxcbiAgdmFsaWRhdGVGaWxlVXJsc0luT2JqZWN0LFxuICBkZWZhdWx0QWxsb3dlZEZpbGVVcmxEb21haW5zLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8s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