parse-server 8.5.0-alpha.12 → 8.5.0-alpha.13
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.
- package/lib/Adapters/Analytics/AnalyticsAdapter.js +2 -2
- package/lib/Adapters/Auth/AuthAdapter.js +2 -2
- package/lib/Adapters/Auth/apple.js +2 -2
- package/lib/Adapters/Auth/facebook.js +2 -2
- package/lib/Adapters/Cache/CacheAdapter.js +2 -2
- package/lib/Adapters/Email/MailAdapter.js +2 -2
- package/lib/Adapters/Files/FilesAdapter.js +2 -2
- package/lib/Adapters/Files/GridFSBucketAdapter.js +2 -2
- package/lib/Adapters/Logger/LoggerAdapter.js +2 -2
- package/lib/Adapters/Logger/WinstonLogger.js +3 -3
- package/lib/Adapters/PubSub/PubSubAdapter.js +2 -2
- package/lib/Adapters/Push/PushAdapter.js +2 -3
- package/lib/Adapters/WebSocketServer/WSAdapter.js +2 -2
- package/lib/Adapters/WebSocketServer/WSSAdapter.js +2 -2
- package/lib/Controllers/HooksController.js +2 -2
- package/lib/Controllers/SchemaController.js +6 -5
- package/lib/Controllers/index.js +2 -2
- package/lib/Error.js +48 -0
- package/lib/GraphQL/loaders/filesMutations.js +2 -2
- package/lib/GraphQL/loaders/schemaMutations.js +5 -4
- package/lib/GraphQL/loaders/usersQueries.js +4 -3
- package/lib/GraphQL/parseGraphQLUtils.js +3 -2
- package/lib/Options/parsers.js +2 -2
- package/lib/RestQuery.js +7 -4
- package/lib/RestWrite.js +6 -6
- package/lib/Routers/ClassesRouter.js +4 -3
- package/lib/Routers/FilesRouter.js +4 -3
- package/lib/Routers/GlobalConfigRouter.js +3 -2
- package/lib/Routers/GraphQLRouter.js +3 -2
- package/lib/Routers/PagesRouter.js +4 -4
- package/lib/Routers/PurgeRouter.js +3 -2
- package/lib/Routers/PushRouter.js +3 -2
- package/lib/Routers/SchemasRouter.js +5 -4
- package/lib/Routers/UsersRouter.js +5 -4
- package/lib/SharedRest.js +8 -7
- package/lib/TestUtils.js +1 -1
- package/lib/Utils.js +2 -2
- package/lib/batch.js +2 -2
- package/lib/cli/utils/runner.js +2 -2
- package/lib/middlewares.js +9 -10
- package/lib/password.js +2 -2
- package/lib/request.js +2 -2
- package/lib/rest.js +6 -3
- package/package.json +2 -1
package/lib/rest.js
CHANGED
|
@@ -16,6 +16,9 @@ var triggers = require('./triggers');
|
|
|
16
16
|
const {
|
|
17
17
|
enforceRoleSecurity
|
|
18
18
|
} = require('./SharedRest');
|
|
19
|
+
const {
|
|
20
|
+
createSanitizedError
|
|
21
|
+
} = require('./Error');
|
|
19
22
|
function checkTriggers(className, config, types) {
|
|
20
23
|
return types.some(triggerType => {
|
|
21
24
|
return triggers.getTrigger(className, triggers.Types[triggerType], config.applicationId);
|
|
@@ -155,7 +158,7 @@ function del(config, auth, className, objectId, context) {
|
|
|
155
158
|
firstResult.className = className;
|
|
156
159
|
if (className === '_Session' && !auth.isMaster && !auth.isMaintenance) {
|
|
157
160
|
if (!auth.user || firstResult.user.objectId !== auth.user.id) {
|
|
158
|
-
throw
|
|
161
|
+
throw createSanitizedError(Parse.Error.INVALID_SESSION_TOKEN, 'Invalid session token');
|
|
159
162
|
}
|
|
160
163
|
}
|
|
161
164
|
var cacheAdapter = config.cacheController;
|
|
@@ -243,7 +246,7 @@ function update(config, auth, className, restWhere, restObject, clientSDK, conte
|
|
|
243
246
|
function handleSessionMissingError(error, className, auth) {
|
|
244
247
|
// If we're trying to update a user without / with bad session token
|
|
245
248
|
if (className === '_User' && error.code === Parse.Error.OBJECT_NOT_FOUND && !auth.isMaster && !auth.isMaintenance) {
|
|
246
|
-
throw
|
|
249
|
+
throw createSanitizedError(Parse.Error.SESSION_MISSING, 'Insufficient auth.');
|
|
247
250
|
}
|
|
248
251
|
throw error;
|
|
249
252
|
}
|
|
@@ -254,4 +257,4 @@ module.exports = {
|
|
|
254
257
|
get,
|
|
255
258
|
update
|
|
256
259
|
};
|
|
257
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJSZXN0UXVlcnkiLCJSZXN0V3JpdGUiLCJ0cmlnZ2VycyIsImVuZm9yY2VSb2xlU2VjdXJpdHkiLCJjaGVja1RyaWdnZXJzIiwiY2xhc3NOYW1lIiwiY29uZmlnIiwidHlwZXMiLCJzb21lIiwidHJpZ2dlclR5cGUiLCJnZXRUcmlnZ2VyIiwiVHlwZXMiLCJhcHBsaWNhdGlvbklkIiwiY2hlY2tMaXZlUXVlcnkiLCJsaXZlUXVlcnlDb250cm9sbGVyIiwiaGFzTGl2ZVF1ZXJ5IiwicnVuRmluZFRyaWdnZXJzIiwiYXV0aCIsInJlc3RXaGVyZSIsInJlc3RPcHRpb25zIiwiY2xpZW50U0RLIiwiY29udGV4dCIsIm9wdGlvbnMiLCJpc0dldCIsImV4cGxhaW4iLCJpc01hc3RlciIsImFsbG93UHVibGljRXhwbGFpbiIsImRhdGFiYXNlT3B0aW9ucyIsIkVycm9yIiwiSU5WQUxJRF9RVUVSWSIsInJlc3VsdCIsIm1heWJlUnVuUXVlcnlUcmlnZ2VyIiwiYmVmb3JlRmluZCIsIm9iamVjdHMiLCJvYmplY3RzRnJvbUJlZm9yZUZpbmQiLCJvYmplY3RzRm9yQWZ0ZXJGaW5kIiwiaXNNYWludGVuYW5jZSIsImlkcyIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIm8iLCJpZCIsIm9iamVjdElkIiwiZmlsdGVyIiwiQm9vbGVhbiIsImxlbmd0aCIsInJlZmlsdGVyV2hlcmUiLCIkaW4iLCJyZWZpbHRlclF1ZXJ5IiwibWV0aG9kIiwiTWV0aG9kIiwiZ2V0IiwiZmluZCIsInJ1bkJlZm9yZUZpbmQiLCJydW5BZnRlckZpbmQiLCJyZWZpbHRlcmVkIiwiZXhlY3V0ZSIsInJlc3VsdHMiLCJhZnRlckZpbmRQcm9jZXNzZWRPYmplY3RzIiwibWF5YmVSdW5BZnRlckZpbmRUcmlnZ2VyIiwiYWZ0ZXJGaW5kIiwiUXVlcnkiLCJ3aXRoSlNPTiIsIndoZXJlIiwicXVlcnkiLCJkZWwiLCJJTlZBTElEX0pTT04iLCJpc1VuYXV0aGVudGljYXRlZCIsIlNFU1NJT05fTUlTU0lORyIsImluZmxhdGVkT2JqZWN0Iiwic2NoZW1hQ29udHJvbGxlciIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImhhc1RyaWdnZXJzIiwib3AiLCJyZXNwb25zZSIsImZpcnN0UmVzdWx0IiwidXNlciIsIklOVkFMSURfU0VTU0lPTl9UT0tFTiIsImNhY2hlQWRhcHRlciIsImNhY2hlQ29udHJvbGxlciIsInNlc3Npb25Ub2tlbiIsIk9iamVjdCIsImZyb21KU09OIiwibWF5YmVSdW5UcmlnZ2VyIiwiYmVmb3JlRGVsZXRlIiwiT0JKRUNUX05PVF9GT1VORCIsImdldFVzZXJSb2xlcyIsImRhdGFiYXNlIiwibG9hZFNjaGVtYSIsInMiLCJhY2wiLCJwdXNoIiwiY29uY2F0IiwidXNlclJvbGVzIiwiZGVzdHJveSIsInBlcm1zIiwiZ2V0Q2xhc3NMZXZlbFBlcm1pc3Npb25zIiwib25BZnRlckRlbGV0ZSIsImFmdGVyRGVsZXRlIiwiY2F0Y2giLCJlcnJvciIsImhhbmRsZVNlc3Npb25NaXNzaW5nRXJyb3IiLCJjcmVhdGUiLCJyZXN0T2JqZWN0Iiwid3JpdGUiLCJ1cGRhdGUiLCJvcmlnaW5hbFJlc3RPYmplY3QiLCJjb2RlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgZmlsZSBjb250YWlucyBoZWxwZXJzIGZvciBydW5uaW5nIG9wZXJhdGlvbnMgaW4gUkVTVCBmb3JtYXQuXG4vLyBUaGUgZ29hbCBpcyB0aGF0IGhhbmRsZXJzIHRoYXQgZXhwbGljaXRseSBoYW5kbGUgYW4gZXhwcmVzcyByb3V0ZVxuLy8gc2hvdWxkIGp1c3QgYmUgc2hhbGxvdyB3cmFwcGVycyBhcm91bmQgdGhpbmdzIGluIHRoaXMgZmlsZSwgYnV0XG4vLyB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBleHBsaWNpdGx5IGRlcGVuZCBvbiB0aGUgcmVxdWVzdFxuLy8gb2JqZWN0LlxuLy8gVGhpcyBtZWFucyB0aGF0IG9uZSBvZiB0aGVzZSBoYW5kbGVycyBjYW4gc3VwcG9ydCBtdWx0aXBsZVxuLy8gcm91dGVzLiBUaGF0J3MgdXNlZnVsIGZvciB0aGUgcm91dGVzIHRoYXQgZG8gcmVhbGx5IHNpbWlsYXJcbi8vIHRoaW5ncy5cblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG52YXIgUmVzdFF1ZXJ5ID0gcmVxdWlyZSgnLi9SZXN0UXVlcnknKTtcbnZhciBSZXN0V3JpdGUgPSByZXF1aXJlKCcuL1Jlc3RXcml0ZScpO1xudmFyIHRyaWdnZXJzID0gcmVxdWlyZSgnLi90cmlnZ2VycycpO1xuY29uc3QgeyBlbmZvcmNlUm9sZVNlY3VyaXR5IH0gPSByZXF1aXJlKCcuL1NoYXJlZFJlc3QnKTtcblxuZnVuY3Rpb24gY2hlY2tUcmlnZ2VycyhjbGFzc05hbWUsIGNvbmZpZywgdHlwZXMpIHtcbiAgcmV0dXJuIHR5cGVzLnNvbWUodHJpZ2dlclR5cGUgPT4ge1xuICAgIHJldHVybiB0cmlnZ2Vycy5nZXRUcmlnZ2VyKGNsYXNzTmFtZSwgdHJpZ2dlcnMuVHlwZXNbdHJpZ2dlclR5cGVdLCBjb25maWcuYXBwbGljYXRpb25JZCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjaGVja0xpdmVRdWVyeShjbGFzc05hbWUsIGNvbmZpZykge1xuICByZXR1cm4gY29uZmlnLmxpdmVRdWVyeUNvbnRyb2xsZXIgJiYgY29uZmlnLmxpdmVRdWVyeUNvbnRyb2xsZXIuaGFzTGl2ZVF1ZXJ5KGNsYXNzTmFtZSk7XG59XG5hc3luYyBmdW5jdGlvbiBydW5GaW5kVHJpZ2dlcnMoXG4gIGNvbmZpZyxcbiAgYXV0aCxcbiAgY2xhc3NOYW1lLFxuICByZXN0V2hlcmUsXG4gIHJlc3RPcHRpb25zLFxuICBjbGllbnRTREssXG4gIGNvbnRleHQsXG4gIG9wdGlvbnMgPSB7fVxuKSB7XG4gIGNvbnN0IHsgaXNHZXQgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKHJlc3RPcHRpb25zICYmIHJlc3RPcHRpb25zLmV4cGxhaW4gJiYgIWF1dGguaXNNYXN0ZXIpIHtcbiAgICBjb25zdCBhbGxvd1B1YmxpY0V4cGxhaW4gPSBjb25maWcuZGF0YWJhc2VPcHRpb25zPy5hbGxvd1B1YmxpY0V4cGxhaW4gPz8gdHJ1ZTtcblxuICAgIGlmICghYWxsb3dQdWJsaWNFeHBsYWluKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksXG4gICAgICAgICdVc2luZyB0aGUgZXhwbGFpbiBxdWVyeSBwYXJhbWV0ZXIgcmVxdWlyZXMgdGhlIG1hc3RlciBrZXknXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJ1biBiZWZvcmVGaW5kIHRyaWdnZXIgLSBtYXkgbW9kaWZ5IHF1ZXJ5IG9yIHJldHVybiBvYmplY3RzIGRpcmVjdGx5XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuUXVlcnlUcmlnZ2VyKFxuICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZUZpbmQsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjb25maWcsXG4gICAgYXV0aCxcbiAgICBjb250ZXh0LFxuICAgIGlzR2V0XG4gICk7XG5cbiAgcmVzdFdoZXJlID0gcmVzdWx0LnJlc3RXaGVyZSB8fCByZXN0V2hlcmU7XG4gIHJlc3RPcHRpb25zID0gcmVzdWx0LnJlc3RPcHRpb25zIHx8IHJlc3RPcHRpb25zO1xuXG4gIC8vIFNob3J0LWNpcmN1aXQgcGF0aDogYmVmb3JlRmluZCByZXR1cm5lZCBvYmplY3RzIGRpcmVjdGx5XG4gIC8vIFNlY3VyaXR5IHJpc2s6IFRoZXNlIG9iamVjdHMgbWF5IGhhdmUgYmVlbiBmZXRjaGVkIHdpdGggbWFzdGVyIHByaXZpbGVnZXNcbiAgaWYgKHJlc3VsdD8ub2JqZWN0cykge1xuICAgIGNvbnN0IG9iamVjdHNGcm9tQmVmb3JlRmluZCA9IHJlc3VsdC5vYmplY3RzO1xuXG4gICAgbGV0IG9iamVjdHNGb3JBZnRlckZpbmQgPSBvYmplY3RzRnJvbUJlZm9yZUZpbmQ7XG5cbiAgICAvLyBTZWN1cml0eSBjaGVjazogUmUtZmlsdGVyIG9iamVjdHMgaWYgbm90IG1hc3RlciB0byBlbnN1cmUgQUNML0NMUCBjb21wbGlhbmNlXG4gICAgaWYgKCFhdXRoPy5pc01hc3RlciAmJiAhYXV0aD8uaXNNYWludGVuYW5jZSkge1xuICAgICAgY29uc3QgaWRzID0gKEFycmF5LmlzQXJyYXkob2JqZWN0c0Zyb21CZWZvcmVGaW5kKSA/IG9iamVjdHNGcm9tQmVmb3JlRmluZCA6IFtvYmplY3RzRnJvbUJlZm9yZUZpbmRdKVxuICAgICAgICAubWFwKG8gPT4gKG8gJiYgKG8uaWQgfHwgby5vYmplY3RJZCkpIHx8IG51bGwpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIC8vIE9iamVjdHMgd2l0aG91dCBJRHMgYXJlKG5vcm1hbGx5KSB1bnNhdmVkIG9iamVjdHNcbiAgICAgIC8vIEZvciB1bnNhdmVkIG9iamVjdHMsIHRoZSBBQ0wgc2VjdXJpdHkgZG9lcyBub3QgYXBwbHksIHNvIG5vIG5lZWQgdG8gcmVkbyB0aGUgcXVlcnkuXG4gICAgICAvLyBGb3Igc2F2ZWQgb2JqZWN0cywgd2UgbmVlZCB0byByZS1xdWVyeSB0byBlbnN1cmUgcHJvcGVyIEFDTC9DTFAgZW5mb3JjZW1lbnRcbiAgICAgIGlmIChpZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCByZWZpbHRlcldoZXJlID0gaXNHZXQgPyB7IG9iamVjdElkOiBpZHNbMF0gfSA6IHsgb2JqZWN0SWQ6IHsgJGluOiBpZHMgfSB9O1xuXG4gICAgICAgIC8vIFJlLXF1ZXJ5IHdpdGggcHJvcGVyIHNlY3VyaXR5OiBubyB0cmlnZ2VycyB0byBhdm9pZCBpbmZpbml0ZSBsb29wc1xuICAgICAgICBjb25zdCByZWZpbHRlclF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgICBtZXRob2Q6IGlzR2V0ID8gUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQgOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgIHJlc3RXaGVyZTogcmVmaWx0ZXJXaGVyZSxcbiAgICAgICAgICByZXN0T3B0aW9ucyxcbiAgICAgICAgICBjbGllbnRTREssXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgICAgICBydW5BZnRlckZpbmQ6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByZWZpbHRlcmVkID0gYXdhaXQgcmVmaWx0ZXJRdWVyeS5leGVjdXRlKCk7XG4gICAgICAgIG9iamVjdHNGb3JBZnRlckZpbmQgPSAocmVmaWx0ZXJlZCAmJiByZWZpbHRlcmVkLnJlc3VsdHMpIHx8IFtdO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJ1biBhZnRlckZpbmQgdHJpZ2dlciBvbiBzZWN1cml0eS1maWx0ZXJlZCBvYmplY3RzXG4gICAgY29uc3QgYWZ0ZXJGaW5kUHJvY2Vzc2VkT2JqZWN0cyA9IGF3YWl0IHRyaWdnZXJzLm1heWJlUnVuQWZ0ZXJGaW5kVHJpZ2dlcihcbiAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRmluZCxcbiAgICAgIGF1dGgsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBvYmplY3RzRm9yQWZ0ZXJGaW5kLFxuICAgICAgY29uZmlnLFxuICAgICAgbmV3IFBhcnNlLlF1ZXJ5KGNsYXNzTmFtZSkud2l0aEpTT04oeyB3aGVyZTogcmVzdFdoZXJlLCAuLi5yZXN0T3B0aW9ucyB9KSxcbiAgICAgIGNvbnRleHQsXG4gICAgICBpc0dldFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0czogYWZ0ZXJGaW5kUHJvY2Vzc2VkT2JqZWN0cyxcbiAgICB9O1xuICB9XG5cbiAgLy8gTm9ybWFsIHBhdGg6IGV4ZWN1dGUgZGF0YWJhc2UgcXVlcnkgd2l0aCBtb2RpZmllZCBjb25kaXRpb25zXG4gIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICBtZXRob2Q6IGlzR2V0ID8gUmVzdFF1ZXJ5Lk1ldGhvZC5nZXQgOiBSZXN0UXVlcnkuTWV0aG9kLmZpbmQsXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgZm9yIGFuIG9iamVjdCB3aXRoIG9wdGlvbmFsIGtleXMgJ3Jlc3VsdHMnIGFuZCAnY291bnQnLlxuY29uc3QgZmluZCA9IGFzeW5jIChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgcmVzdFdoZXJlLCByZXN0T3B0aW9ucywgY2xpZW50U0RLLCBjb250ZXh0KSA9PiB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ2ZpbmQnLCBjbGFzc05hbWUsIGF1dGgpO1xuICByZXR1cm4gcnVuRmluZFRyaWdnZXJzKFxuICAgIGNvbmZpZyxcbiAgICBhdXRoLFxuICAgIGNsYXNzTmFtZSxcbiAgICByZXN0V2hlcmUsXG4gICAgcmVzdE9wdGlvbnMsXG4gICAgY2xpZW50U0RLLFxuICAgIGNvbnRleHQsXG4gICAgeyBpc0dldDogZmFsc2UgfVxuICApO1xufTtcblxuLy8gZ2V0IGlzIGp1c3QgbGlrZSBmaW5kIGJ1dCBvbmx5IHF1ZXJpZXMgYW4gb2JqZWN0SWQuXG5jb25zdCBnZXQgPSBhc3luYyAoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIG9iamVjdElkLCByZXN0T3B0aW9ucywgY2xpZW50U0RLLCBjb250ZXh0KSA9PiB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ2dldCcsIGNsYXNzTmFtZSwgYXV0aCk7XG4gIHJldHVybiBydW5GaW5kVHJpZ2dlcnMoXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHsgb2JqZWN0SWQgfSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgICB7IGlzR2V0OiB0cnVlIH1cbiAgKTtcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZG9lc24ndCByZXNvbHZlIHRvIGFueSB1c2VmdWwgdmFsdWUuXG5mdW5jdGlvbiBkZWwoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIG9iamVjdElkLCBjb250ZXh0KSB7XG4gIGlmICh0eXBlb2Ygb2JqZWN0SWQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfSlNPTiwgJ2JhZCBvYmplY3RJZCcpO1xuICB9XG5cbiAgaWYgKGNsYXNzTmFtZSA9PT0gJ19Vc2VyJyAmJiBhdXRoLmlzVW5hdXRoZW50aWNhdGVkKCkpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuU0VTU0lPTl9NSVNTSU5HLCAnSW5zdWZmaWNpZW50IGF1dGggdG8gZGVsZXRlIHVzZXInKTtcbiAgfVxuXG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ2RlbGV0ZScsIGNsYXNzTmFtZSwgYXV0aCk7XG5cbiAgbGV0IGluZmxhdGVkT2JqZWN0O1xuICBsZXQgc2NoZW1hQ29udHJvbGxlcjtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoYXNUcmlnZ2VycyA9IGNoZWNrVHJpZ2dlcnMoY2xhc3NOYW1lLCBjb25maWcsIFsnYmVmb3JlRGVsZXRlJywgJ2FmdGVyRGVsZXRlJ10pO1xuICAgICAgY29uc3QgaGFzTGl2ZVF1ZXJ5ID0gY2hlY2tMaXZlUXVlcnkoY2xhc3NOYW1lLCBjb25maWcpO1xuICAgICAgaWYgKGhhc1RyaWdnZXJzIHx8IGhhc0xpdmVRdWVyeSB8fCBjbGFzc05hbWUgPT0gJ19TZXNzaW9uJykge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlOiB7IG9iamVjdElkIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcXVlcnkuZXhlY3V0ZSh7IG9wOiAnZGVsZXRlJyB9KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UucmVzdWx0cyAmJiByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSZXN1bHQgPSByZXNwb25zZS5yZXN1bHRzWzBdO1xuICAgICAgICAgICAgZmlyc3RSZXN1bHQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICAgICAgaWYgKGNsYXNzTmFtZSA9PT0gJ19TZXNzaW9uJyAmJiAhYXV0aC5pc01hc3RlciAmJiAhYXV0aC5pc01haW50ZW5hbmNlKSB7XG4gICAgICAgICAgICAgIGlmICghYXV0aC51c2VyIHx8IGZpcnN0UmVzdWx0LnVzZXIub2JqZWN0SWQgIT09IGF1dGgudXNlci5pZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdJbnZhbGlkIHNlc3Npb24gdG9rZW4nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNhY2hlQWRhcHRlciA9IGNvbmZpZy5jYWNoZUNvbnRyb2xsZXI7XG4gICAgICAgICAgICBjYWNoZUFkYXB0ZXIudXNlci5kZWwoZmlyc3RSZXN1bHQuc2Vzc2lvblRva2VuKTtcbiAgICAgICAgICAgIGluZmxhdGVkT2JqZWN0ID0gUGFyc2UuT2JqZWN0LmZyb21KU09OKGZpcnN0UmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blRyaWdnZXIoXG4gICAgICAgICAgICAgIHRyaWdnZXJzLlR5cGVzLmJlZm9yZURlbGV0ZSxcbiAgICAgICAgICAgICAgYXV0aCxcbiAgICAgICAgICAgICAgaW5mbGF0ZWRPYmplY3QsXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kIGZvciBkZWxldGUuJyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSlcbiAgICAudGhlbigoKSA9PiB7XG4gICAgICBpZiAoIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICByZXR1cm4gYXV0aC5nZXRVc2VyUm9sZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9KVxuICAgIC50aGVuKCgpID0+IGNvbmZpZy5kYXRhYmFzZS5sb2FkU2NoZW1hKCkpXG4gICAgLnRoZW4ocyA9PiB7XG4gICAgICBzY2hlbWFDb250cm9sbGVyID0gcztcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7fTtcbiAgICAgIGlmICghYXV0aC5pc01hc3RlciAmJiAhYXV0aC5pc01haW50ZW5hbmNlKSB7XG4gICAgICAgIG9wdGlvbnMuYWNsID0gWycqJ107XG4gICAgICAgIGlmIChhdXRoLnVzZXIpIHtcbiAgICAgICAgICBvcHRpb25zLmFjbC5wdXNoKGF1dGgudXNlci5pZCk7XG4gICAgICAgICAgb3B0aW9ucy5hY2wgPSBvcHRpb25zLmFjbC5jb25jYXQoYXV0aC51c2VyUm9sZXMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWcuZGF0YWJhc2UuZGVzdHJveShcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgb2JqZWN0SWQ6IG9iamVjdElkLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBzY2hlbWFDb250cm9sbGVyXG4gICAgICApO1xuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgLy8gTm90aWZ5IExpdmVRdWVyeSBzZXJ2ZXIgaWYgcG9zc2libGVcbiAgICAgIGNvbnN0IHBlcm1zID0gc2NoZW1hQ29udHJvbGxlci5nZXRDbGFzc0xldmVsUGVybWlzc2lvbnMoY2xhc3NOYW1lKTtcbiAgICAgIGNvbmZpZy5saXZlUXVlcnlDb250cm9sbGVyLm9uQWZ0ZXJEZWxldGUoY2xhc3NOYW1lLCBpbmZsYXRlZE9iamVjdCwgbnVsbCwgcGVybXMpO1xuICAgICAgcmV0dXJuIHRyaWdnZXJzLm1heWJlUnVuVHJpZ2dlcihcbiAgICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJEZWxldGUsXG4gICAgICAgIGF1dGgsXG4gICAgICAgIGluZmxhdGVkT2JqZWN0LFxuICAgICAgICBudWxsLFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICk7XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoKTtcbiAgICB9KTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgZm9yIGEge3Jlc3BvbnNlLCBzdGF0dXMsIGxvY2F0aW9ufSBvYmplY3QuXG5mdW5jdGlvbiBjcmVhdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RPYmplY3QsIGNsaWVudFNESywgY29udGV4dCkge1xuICBlbmZvcmNlUm9sZVNlY3VyaXR5KCdjcmVhdGUnLCBjbGFzc05hbWUsIGF1dGgpO1xuICB2YXIgd3JpdGUgPSBuZXcgUmVzdFdyaXRlKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCBudWxsLCByZXN0T2JqZWN0LCBudWxsLCBjbGllbnRTREssIGNvbnRleHQpO1xuICByZXR1cm4gd3JpdGUuZXhlY3V0ZSgpO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGNvbnRhaW5zIHRoZSBmaWVsZHMgb2YgdGhlIHVwZGF0ZSB0aGF0IHRoZVxuLy8gUkVTVCBBUEkgaXMgc3VwcG9zZWQgdG8gcmV0dXJuLlxuLy8gVXN1YWxseSwgdGhpcyBpcyBqdXN0IHVwZGF0ZWRBdC5cbmZ1bmN0aW9uIHVwZGF0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgcmVzdFdoZXJlLCByZXN0T2JqZWN0LCBjbGllbnRTREssIGNvbnRleHQpIHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgndXBkYXRlJywgY2xhc3NOYW1lLCBhdXRoKTtcblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoYXNUcmlnZ2VycyA9IGNoZWNrVHJpZ2dlcnMoY2xhc3NOYW1lLCBjb25maWcsIFsnYmVmb3JlU2F2ZScsICdhZnRlclNhdmUnXSk7XG4gICAgICBjb25zdCBoYXNMaXZlUXVlcnkgPSBjaGVja0xpdmVRdWVyeShjbGFzc05hbWUsIGNvbmZpZyk7XG4gICAgICBpZiAoaGFzVHJpZ2dlcnMgfHwgaGFzTGl2ZVF1ZXJ5KSB7XG4gICAgICAgIC8vIERvIG5vdCB1c2UgZmluZCwgYXMgaXQgcnVucyB0aGUgYmVmb3JlIGZpbmRzXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBhdXRoLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICByZXN0V2hlcmUsXG4gICAgICAgICAgcnVuQWZ0ZXJGaW5kOiBmYWxzZSxcbiAgICAgICAgICBydW5CZWZvcmVGaW5kOiBmYWxzZSxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5LmV4ZWN1dGUoe1xuICAgICAgICAgIG9wOiAndXBkYXRlJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9KVxuICAgIC50aGVuKCh7IHJlc3VsdHMgfSkgPT4ge1xuICAgICAgdmFyIG9yaWdpbmFsUmVzdE9iamVjdDtcbiAgICAgIGlmIChyZXN1bHRzICYmIHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIG9yaWdpbmFsUmVzdE9iamVjdCA9IHJlc3VsdHNbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFJlc3RXcml0ZShcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBhdXRoLFxuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIHJlc3RXaGVyZSxcbiAgICAgICAgcmVzdE9iamVjdCxcbiAgICAgICAgb3JpZ2luYWxSZXN0T2JqZWN0LFxuICAgICAgICBjbGllbnRTREssXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgICd1cGRhdGUnXG4gICAgICApLmV4ZWN1dGUoKTtcbiAgICB9KVxuICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICBoYW5kbGVTZXNzaW9uTWlzc2luZ0Vycm9yKGVycm9yLCBjbGFzc05hbWUsIGF1dGgpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVTZXNzaW9uTWlzc2luZ0Vycm9yKGVycm9yLCBjbGFzc05hbWUsIGF1dGgpIHtcbiAgLy8gSWYgd2UncmUgdHJ5aW5nIHRvIHVwZGF0ZSBhIHVzZXIgd2l0aG91dCAvIHdpdGggYmFkIHNlc3Npb24gdG9rZW5cbiAgaWYgKFxuICAgIGNsYXNzTmFtZSA9PT0gJ19Vc2VyJyAmJlxuICAgIGVycm9yLmNvZGUgPT09IFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQgJiZcbiAgICAhYXV0aC5pc01hc3RlciAmJlxuICAgICFhdXRoLmlzTWFpbnRlbmFuY2VcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlNFU1NJT05fTUlTU0lORywgJ0luc3VmZmljaWVudCBhdXRoLicpO1xuICB9XG4gIHRocm93IGVycm9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY3JlYXRlLFxuICBkZWwsXG4gIGZpbmQsXG4gIGdldCxcbiAgdXBkYXRlLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLO0FBRXZDLElBQUlFLFNBQVMsR0FBR0QsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUN0QyxJQUFJRSxTQUFTLEdBQUdGLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEMsSUFBSUcsUUFBUSxHQUFHSCxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3BDLE1BQU07RUFBRUk7QUFBb0IsQ0FBQyxHQUFHSixPQUFPLENBQUMsY0FBYyxDQUFDO0FBRXZELFNBQVNLLGFBQWFBLENBQUNDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUU7RUFDL0MsT0FBT0EsS0FBSyxDQUFDQyxJQUFJLENBQUNDLFdBQVcsSUFBSTtJQUMvQixPQUFPUCxRQUFRLENBQUNRLFVBQVUsQ0FBQ0wsU0FBUyxFQUFFSCxRQUFRLENBQUNTLEtBQUssQ0FBQ0YsV0FBVyxDQUFDLEVBQUVILE1BQU0sQ0FBQ00sYUFBYSxDQUFDO0VBQzFGLENBQUMsQ0FBQztBQUNKO0FBRUEsU0FBU0MsY0FBY0EsQ0FBQ1IsU0FBUyxFQUFFQyxNQUFNLEVBQUU7RUFDekMsT0FBT0EsTUFBTSxDQUFDUSxtQkFBbUIsSUFBSVIsTUFBTSxDQUFD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
|
|
260
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJSZXN0UXVlcnkiLCJSZXN0V3JpdGUiLCJ0cmlnZ2VycyIsImVuZm9yY2VSb2xlU2VjdXJpdHkiLCJjcmVhdGVTYW5pdGl6ZWRFcnJvciIsImNoZWNrVHJpZ2dlcnMiLCJjbGFzc05hbWUiLCJjb25maWciLCJ0eXBlcyIsInNvbWUiLCJ0cmlnZ2VyVHlwZSIsImdldFRyaWdnZXIiLCJUeXBlcyIsImFwcGxpY2F0aW9uSWQiLCJjaGVja0xpdmVRdWVyeSIsImxpdmVRdWVyeUNvbnRyb2xsZXIiLCJoYXNMaXZlUXVlcnkiLCJydW5GaW5kVHJpZ2dlcnMiLCJhdXRoIiwicmVzdFdoZXJlIiwicmVzdE9wdGlvbnMiLCJjbGllbnRTREsiLCJjb250ZXh0Iiwib3B0aW9ucyIsImlzR2V0IiwiZXhwbGFpbiIsImlzTWFzdGVyIiwiYWxsb3dQdWJsaWNFeHBsYWluIiwiZGF0YWJhc2VPcHRpb25zIiwiRXJyb3IiLCJJTlZBTElEX1FVRVJZIiwicmVzdWx0IiwibWF5YmVSdW5RdWVyeVRyaWdnZXIiLCJiZWZvcmVGaW5kIiwib2JqZWN0cyIsIm9iamVjdHNGcm9tQmVmb3JlRmluZCIsIm9iamVjdHNGb3JBZnRlckZpbmQiLCJpc01haW50ZW5hbmNlIiwiaWRzIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwibyIsImlkIiwib2JqZWN0SWQiLCJmaWx0ZXIiLCJCb29sZWFuIiwibGVuZ3RoIiwicmVmaWx0ZXJXaGVyZSIsIiRpbiIsInJlZmlsdGVyUXVlcnkiLCJtZXRob2QiLCJNZXRob2QiLCJnZXQiLCJmaW5kIiwicnVuQmVmb3JlRmluZCIsInJ1bkFmdGVyRmluZCIsInJlZmlsdGVyZWQiLCJleGVjdXRlIiwicmVzdWx0cyIsImFmdGVyRmluZFByb2Nlc3NlZE9iamVjdHMiLCJtYXliZVJ1bkFmdGVyRmluZFRyaWdnZXIiLCJhZnRlckZpbmQiLCJRdWVyeSIsIndpdGhKU09OIiwid2hlcmUiLCJxdWVyeSIsImRlbCIsIklOVkFMSURfSlNPTiIsImlzVW5hdXRoZW50aWNhdGVkIiwiU0VTU0lPTl9NSVNTSU5HIiwiaW5mbGF0ZWRPYmplY3QiLCJzY2hlbWFDb250cm9sbGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiaGFzVHJpZ2dlcnMiLCJvcCIsInJlc3BvbnNlIiwiZmlyc3RSZXN1bHQiLCJ1c2VyIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwiY2FjaGVBZGFwdGVyIiwiY2FjaGVDb250cm9sbGVyIiwic2Vzc2lvblRva2VuIiwiT2JqZWN0IiwiZnJvbUpTT04iLCJtYXliZVJ1blRyaWdnZXIiLCJiZWZvcmVEZWxldGUiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwiZ2V0VXNlclJvbGVzIiwiZGF0YWJhc2UiLCJsb2FkU2NoZW1hIiwicyIsImFjbCIsInB1c2giLCJjb25jYXQiLCJ1c2VyUm9sZXMiLCJkZXN0cm95IiwicGVybXMiLCJnZXRDbGFzc0xldmVsUGVybWlzc2lvbnMiLCJvbkFmdGVyRGVsZXRlIiwiYWZ0ZXJEZWxldGUiLCJjYXRjaCIsImVycm9yIiwiaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvciIsImNyZWF0ZSIsInJlc3RPYmplY3QiLCJ3cml0ZSIsInVwZGF0ZSIsIm9yaWdpbmFsUmVzdE9iamVjdCIsImNvZGUiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGhlbHBlcnMgZm9yIHJ1bm5pbmcgb3BlcmF0aW9ucyBpbiBSRVNUIGZvcm1hdC5cbi8vIFRoZSBnb2FsIGlzIHRoYXQgaGFuZGxlcnMgdGhhdCBleHBsaWNpdGx5IGhhbmRsZSBhbiBleHByZXNzIHJvdXRlXG4vLyBzaG91bGQganVzdCBiZSBzaGFsbG93IHdyYXBwZXJzIGFyb3VuZCB0aGluZ3MgaW4gdGhpcyBmaWxlLCBidXRcbi8vIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgbm90IGV4cGxpY2l0bHkgZGVwZW5kIG9uIHRoZSByZXF1ZXN0XG4vLyBvYmplY3QuXG4vLyBUaGlzIG1lYW5zIHRoYXQgb25lIG9mIHRoZXNlIGhhbmRsZXJzIGNhbiBzdXBwb3J0IG11bHRpcGxlXG4vLyByb3V0ZXMuIFRoYXQncyB1c2VmdWwgZm9yIHRoZSByb3V0ZXMgdGhhdCBkbyByZWFsbHkgc2ltaWxhclxuLy8gdGhpbmdzLlxuXG52YXIgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5cbnZhciBSZXN0UXVlcnkgPSByZXF1aXJlKCcuL1Jlc3RRdWVyeScpO1xudmFyIFJlc3RXcml0ZSA9IHJlcXVpcmUoJy4vUmVzdFdyaXRlJyk7XG52YXIgdHJpZ2dlcnMgPSByZXF1aXJlKCcuL3RyaWdnZXJzJyk7XG5jb25zdCB7IGVuZm9yY2VSb2xlU2VjdXJpdHkgfSA9IHJlcXVpcmUoJy4vU2hhcmVkUmVzdCcpO1xuY29uc3QgeyBjcmVhdGVTYW5pdGl6ZWRFcnJvciB9ID0gcmVxdWlyZSgnLi9FcnJvcicpO1xuXG5mdW5jdGlvbiBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCB0eXBlcykge1xuICByZXR1cm4gdHlwZXMuc29tZSh0cmlnZ2VyVHlwZSA9PiB7XG4gICAgcmV0dXJuIHRyaWdnZXJzLmdldFRyaWdnZXIoY2xhc3NOYW1lLCB0cmlnZ2Vycy5UeXBlc1t0cmlnZ2VyVHlwZV0sIGNvbmZpZy5hcHBsaWNhdGlvbklkKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTGl2ZVF1ZXJ5KGNsYXNzTmFtZSwgY29uZmlnKSB7XG4gIHJldHVybiBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlciAmJiBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlci5oYXNMaXZlUXVlcnkoY2xhc3NOYW1lKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJ1bkZpbmRUcmlnZ2VycyhcbiAgY29uZmlnLFxuICBhdXRoLFxuICBjbGFzc05hbWUsXG4gIHJlc3RXaGVyZSxcbiAgcmVzdE9wdGlvbnMsXG4gIGNsaWVudFNESyxcbiAgY29udGV4dCxcbiAgb3B0aW9ucyA9IHt9XG4pIHtcbiAgY29uc3QgeyBpc0dldCB9ID0gb3B0aW9ucztcblxuICBpZiAocmVzdE9wdGlvbnMgJiYgcmVzdE9wdGlvbnMuZXhwbGFpbiAmJiAhYXV0aC5pc01hc3Rlcikge1xuICAgIGNvbnN0IGFsbG93UHVibGljRXhwbGFpbiA9IGNvbmZpZy5kYXRhYmFzZU9wdGlvbnM/LmFsbG93UHVibGljRXhwbGFpbiA/PyB0cnVlO1xuXG4gICAgaWYgKCFhbGxvd1B1YmxpY0V4cGxhaW4pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgICAgUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSxcbiAgICAgICAgJ1VzaW5nIHRoZSBleHBsYWluIHF1ZXJ5IHBhcmFtZXRlciByZXF1aXJlcyB0aGUgbWFzdGVyIGtleSdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gUnVuIGJlZm9yZUZpbmQgdHJpZ2dlciAtIG1heSBtb2RpZnkgcXVlcnkgb3IgcmV0dXJuIG9iamVjdHMgZGlyZWN0bHlcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5RdWVyeVRyaWdnZXIoXG4gICAgdHJpZ2dlcnMuVHlwZXMuYmVmb3JlRmluZCxcbiAgICBjbGFzc05hbWUsXG4gICAgcmVzdFdoZXJlLFxuICAgIHJlc3RPcHRpb25zLFxuICAgIGNvbmZpZyxcbiAgICBhdXRoLFxuICAgIGNvbnRleHQsXG4gICAgaXNHZXRcbiAgKTtcblxuICByZXN0V2hlcmUgPSByZXN1bHQucmVzdFdoZXJlIHx8IHJlc3RXaGVyZTtcbiAgcmVzdE9wdGlvbnMgPSByZXN1bHQucmVzdE9wdGlvbnMgfHwgcmVzdE9wdGlvbnM7XG5cbiAgLy8gU2hvcnQtY2lyY3VpdCBwYXRoOiBiZWZvcmVGaW5kIHJldHVybmVkIG9iamVjdHMgZGlyZWN0bHlcbiAgLy8gU2VjdXJpdHkgcmlzazogVGhlc2Ugb2JqZWN0cyBtYXkgaGF2ZSBiZWVuIGZldGNoZWQgd2l0aCBtYXN0ZXIgcHJpdmlsZWdlc1xuICBpZiAocmVzdWx0Py5vYmplY3RzKSB7XG4gICAgY29uc3Qgb2JqZWN0c0Zyb21CZWZvcmVGaW5kID0gcmVzdWx0Lm9iamVjdHM7XG5cbiAgICBsZXQgb2JqZWN0c0ZvckFmdGVyRmluZCA9IG9iamVjdHNGcm9tQmVmb3JlRmluZDtcblxuICAgIC8vIFNlY3VyaXR5IGNoZWNrOiBSZS1maWx0ZXIgb2JqZWN0cyBpZiBub3QgbWFzdGVyIHRvIGVuc3VyZSBBQ0wvQ0xQIGNvbXBsaWFuY2VcbiAgICBpZiAoIWF1dGg/LmlzTWFzdGVyICYmICFhdXRoPy5pc01haW50ZW5hbmNlKSB7XG4gICAgICBjb25zdCBpZHMgPSAoQXJyYXkuaXNBcnJheShvYmplY3RzRnJvbUJlZm9yZUZpbmQpID8gb2JqZWN0c0Zyb21CZWZvcmVGaW5kIDogW29iamVjdHNGcm9tQmVmb3JlRmluZF0pXG4gICAgICAgIC5tYXAobyA9PiAobyAmJiAoby5pZCB8fCBvLm9iamVjdElkKSkgfHwgbnVsbClcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgLy8gT2JqZWN0cyB3aXRob3V0IElEcyBhcmUobm9ybWFsbHkpIHVuc2F2ZWQgb2JqZWN0c1xuICAgICAgLy8gRm9yIHVuc2F2ZWQgb2JqZWN0cywgdGhlIEFDTCBzZWN1cml0eSBkb2VzIG5vdCBhcHBseSwgc28gbm8gbmVlZCB0byByZWRvIHRoZSBxdWVyeS5cbiAgICAgIC8vIEZvciBzYXZlZCBvYmplY3RzLCB3ZSBuZWVkIHRvIHJlLXF1ZXJ5IHRvIGVuc3VyZSBwcm9wZXIgQUNML0NMUCBlbmZvcmNlbWVudFxuICAgICAgaWYgKGlkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHJlZmlsdGVyV2hlcmUgPSBpc0dldCA/IHsgb2JqZWN0SWQ6IGlkc1swXSB9IDogeyBvYmplY3RJZDogeyAkaW46IGlkcyB9IH07XG5cbiAgICAgICAgLy8gUmUtcXVlcnkgd2l0aCBwcm9wZXIgc2VjdXJpdHk6IG5vIHRyaWdnZXJzIHRvIGF2b2lkIGluZmluaXRlIGxvb3BzXG4gICAgICAgIGNvbnN0IHJlZmlsdGVyUXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgICAgICAgIG1ldGhvZDogaXNHZXQgPyBSZXN0UXVlcnkuTWV0aG9kLmdldCA6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlOiByZWZpbHRlcldoZXJlLFxuICAgICAgICAgIHJlc3RPcHRpb25zLFxuICAgICAgICAgIGNsaWVudFNESyxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICAgICAgICAgIHJ1bkFmdGVyRmluZDogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHJlZmlsdGVyZWQgPSBhd2FpdCByZWZpbHRlclF1ZXJ5LmV4ZWN1dGUoKTtcbiAgICAgICAgb2JqZWN0c0ZvckFmdGVyRmluZCA9IChyZWZpbHRlcmVkICYmIHJlZmlsdGVyZWQucmVzdWx0cykgfHwgW107XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUnVuIGFmdGVyRmluZCB0cmlnZ2VyIG9uIHNlY3VyaXR5LWZpbHRlcmVkIG9iamVjdHNcbiAgICBjb25zdCBhZnRlckZpbmRQcm9jZXNzZWRPYmplY3RzID0gYXdhaXQgdHJpZ2dlcnMubWF5YmVSdW5BZnRlckZpbmRUcmlnZ2VyKFxuICAgICAgdHJpZ2dlcnMuVHlwZXMuYWZ0ZXJGaW5kLFxuICAgICAgYXV0aCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIG9iamVjdHNGb3JBZnRlckZpbmQsXG4gICAgICBjb25maWcsXG4gICAgICBuZXcgUGFyc2UuUXVlcnkoY2xhc3NOYW1lKS53aXRoSlNPTih7IHdoZXJlOiByZXN0V2hlcmUsIC4uLnJlc3RPcHRpb25zIH0pLFxuICAgICAgY29udGV4dCxcbiAgICAgIGlzR2V0XG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZXN1bHRzOiBhZnRlckZpbmRQcm9jZXNzZWRPYmplY3RzLFxuICAgIH07XG4gIH1cblxuICAvLyBOb3JtYWwgcGF0aDogZXhlY3V0ZSBkYXRhYmFzZSBxdWVyeSB3aXRoIG1vZGlmaWVkIGNvbmRpdGlvbnNcbiAgY29uc3QgcXVlcnkgPSBhd2FpdCBSZXN0UXVlcnkoe1xuICAgIG1ldGhvZDogaXNHZXQgPyBSZXN0UXVlcnkuTWV0aG9kLmdldCA6IFJlc3RRdWVyeS5NZXRob2QuZmluZCxcbiAgICBjb25maWcsXG4gICAgYXV0aCxcbiAgICBjbGFzc05hbWUsXG4gICAgcmVzdFdoZXJlLFxuICAgIHJlc3RPcHRpb25zLFxuICAgIGNsaWVudFNESyxcbiAgICBjb250ZXh0LFxuICAgIHJ1bkJlZm9yZUZpbmQ6IGZhbHNlLFxuICB9KTtcblxuICByZXR1cm4gcXVlcnkuZXhlY3V0ZSgpO1xufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgYW4gb2JqZWN0IHdpdGggb3B0aW9uYWwga2V5cyAncmVzdWx0cycgYW5kICdjb3VudCcuXG5jb25zdCBmaW5kID0gYXN5bmMgKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCByZXN0V2hlcmUsIHJlc3RPcHRpb25zLCBjbGllbnRTREssIGNvbnRleHQpID0+IHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnZmluZCcsIGNsYXNzTmFtZSwgYXV0aCk7XG4gIHJldHVybiBydW5GaW5kVHJpZ2dlcnMoXG4gICAgY29uZmlnLFxuICAgIGF1dGgsXG4gICAgY2xhc3NOYW1lLFxuICAgIHJlc3RXaGVyZSxcbiAgICByZXN0T3B0aW9ucyxcbiAgICBjbGllbnRTREssXG4gICAgY29udGV4dCxcbiAgICB7IGlzR2V0OiBmYWxzZSB9XG4gICk7XG59O1xuXG4vLyBnZXQgaXMganVzdCBsaWtlIGZpbmQgYnV0IG9ubHkgcXVlcmllcyBhbiBvYmplY3RJZC5cbmNvbnN0IGdldCA9IGFzeW5jIChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgb2JqZWN0SWQsIHJlc3RPcHRpb25zLCBjbGllbnRTREssIGNvbnRleHQpID0+IHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnZ2V0JywgY2xhc3NOYW1lLCBhdXRoKTtcbiAgcmV0dXJuIHJ1bkZpbmRUcmlnZ2VycyhcbiAgICBjb25maWcsXG4gICAgYXV0aCxcbiAgICBjbGFzc05hbWUsXG4gICAgeyBvYmplY3RJZCB9LFxuICAgIHJlc3RPcHRpb25zLFxuICAgIGNsaWVudFNESyxcbiAgICBjb250ZXh0LFxuICAgIHsgaXNHZXQ6IHRydWUgfVxuICApO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBkb2Vzbid0IHJlc29sdmUgdG8gYW55IHVzZWZ1bCB2YWx1ZS5cbmZ1bmN0aW9uIGRlbChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgb2JqZWN0SWQsIGNvbnRleHQpIHtcbiAgaWYgKHR5cGVvZiBvYmplY3RJZCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9KU09OLCAnYmFkIG9iamVjdElkJyk7XG4gIH1cblxuICBpZiAoY2xhc3NOYW1lID09PSAnX1VzZXInICYmIGF1dGguaXNVbmF1dGhlbnRpY2F0ZWQoKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5TRVNTSU9OX01JU1NJTkcsICdJbnN1ZmZpY2llbnQgYXV0aCB0byBkZWxldGUgdXNlcicpO1xuICB9XG5cbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnZGVsZXRlJywgY2xhc3NOYW1lLCBhdXRoKTtcblxuICBsZXQgaW5mbGF0ZWRPYmplY3Q7XG4gIGxldCBzY2hlbWFDb250cm9sbGVyO1xuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGhhc1RyaWdnZXJzID0gY2hlY2tUcmlnZ2VycyhjbGFzc05hbWUsIGNvbmZpZywgWydiZWZvcmVEZWxldGUnLCAnYWZ0ZXJEZWxldGUnXSk7XG4gICAgICBjb25zdCBoYXNMaXZlUXVlcnkgPSBjaGVja0xpdmVRdWVyeShjbGFzc05hbWUsIGNvbmZpZyk7XG4gICAgICBpZiAoaGFzVHJpZ2dlcnMgfHwgaGFzTGl2ZVF1ZXJ5IHx8IGNsYXNzTmFtZSA9PSAnX1Nlc3Npb24nKSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gYXdhaXQgUmVzdFF1ZXJ5KHtcbiAgICAgICAgICBtZXRob2Q6IFJlc3RRdWVyeS5NZXRob2QuZ2V0LFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBhdXRoLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICByZXN0V2hlcmU6IHsgb2JqZWN0SWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyeS5leGVjdXRlKHsgb3A6ICdkZWxldGUnIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5yZXN1bHRzICYmIHJlc3BvbnNlLnJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdHNbMF07XG4gICAgICAgICAgICBmaXJzdFJlc3VsdC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgICAgICBpZiAoY2xhc3NOYW1lID09PSAnX1Nlc3Npb24nICYmICFhdXRoLmlzTWFzdGVyICYmICFhdXRoLmlzTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgICAgICAgaWYgKCFhdXRoLnVzZXIgfHwgZmlyc3RSZXN1bHQudXNlci5vYmplY3RJZCAhPT0gYXV0aC51c2VyLmlkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgY3JlYXRlU2FuaXRpemVkRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnSW52YWxpZCBzZXNzaW9uIHRva2VuJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYWNoZUFkYXB0ZXIgPSBjb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgICAgICAgICAgY2FjaGVBZGFwdGVyLnVzZXIuZGVsKGZpcnN0UmVzdWx0LnNlc3Npb25Ub2tlbik7XG4gICAgICAgICAgICBpbmZsYXRlZE9iamVjdCA9IFBhcnNlLk9iamVjdC5mcm9tSlNPTihmaXJzdFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gdHJpZ2dlcnMubWF5YmVSdW5UcmlnZ2VyKFxuICAgICAgICAgICAgICB0cmlnZ2Vycy5UeXBlcy5iZWZvcmVEZWxldGUsXG4gICAgICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgICAgIGluZmxhdGVkT2JqZWN0LFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnT2JqZWN0IG5vdCBmb3VuZCBmb3IgZGVsZXRlLicpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKCFhdXRoLmlzTWFzdGVyICYmICFhdXRoLmlzTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgcmV0dXJuIGF1dGguZ2V0VXNlclJvbGVzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSlcbiAgICAudGhlbigoKSA9PiBjb25maWcuZGF0YWJhc2UubG9hZFNjaGVtYSgpKVxuICAgIC50aGVuKHMgPT4ge1xuICAgICAgc2NoZW1hQ29udHJvbGxlciA9IHM7XG4gICAgICBjb25zdCBvcHRpb25zID0ge307XG4gICAgICBpZiAoIWF1dGguaXNNYXN0ZXIgJiYgIWF1dGguaXNNYWludGVuYW5jZSkge1xuICAgICAgICBvcHRpb25zLmFjbCA9IFsnKiddO1xuICAgICAgICBpZiAoYXV0aC51c2VyKSB7XG4gICAgICAgICAgb3B0aW9ucy5hY2wucHVzaChhdXRoLnVzZXIuaWQpO1xuICAgICAgICAgIG9wdGlvbnMuYWNsID0gb3B0aW9ucy5hY2wuY29uY2F0KGF1dGgudXNlclJvbGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29uZmlnLmRhdGFiYXNlLmRlc3Ryb3koXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIG9iamVjdElkOiBvYmplY3RJZCxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgc2NoZW1hQ29udHJvbGxlclxuICAgICAgKTtcbiAgICB9KVxuICAgIC50aGVuKCgpID0+IHtcbiAgICAgIC8vIE5vdGlmeSBMaXZlUXVlcnkgc2VydmVyIGlmIHBvc3NpYmxlXG4gICAgICBjb25zdCBwZXJtcyA9IHNjaGVtYUNvbnRyb2xsZXIuZ2V0Q2xhc3NMZXZlbFBlcm1pc3Npb25zKGNsYXNzTmFtZSk7XG4gICAgICBjb25maWcubGl2ZVF1ZXJ5Q29udHJvbGxlci5vbkFmdGVyRGVsZXRlKGNsYXNzTmFtZSwgaW5mbGF0ZWRPYmplY3QsIG51bGwsIHBlcm1zKTtcbiAgICAgIHJldHVybiB0cmlnZ2Vycy5tYXliZVJ1blRyaWdnZXIoXG4gICAgICAgIHRyaWdnZXJzLlR5cGVzLmFmdGVyRGVsZXRlLFxuICAgICAgICBhdXRoLFxuICAgICAgICBpbmZsYXRlZE9iamVjdCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgIH0pXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGhhbmRsZVNlc3Npb25NaXNzaW5nRXJyb3IoZXJyb3IsIGNsYXNzTmFtZSwgYXV0aCk7XG4gICAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIGZvciBhIHtyZXNwb25zZSwgc3RhdHVzLCBsb2NhdGlvbn0gb2JqZWN0LlxuZnVuY3Rpb24gY3JlYXRlKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCByZXN0T2JqZWN0LCBjbGllbnRTREssIGNvbnRleHQpIHtcbiAgZW5mb3JjZVJvbGVTZWN1cml0eSgnY3JlYXRlJywgY2xhc3NOYW1lLCBhdXRoKTtcbiAgdmFyIHdyaXRlID0gbmV3IFJlc3RXcml0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgbnVsbCwgcmVzdE9iamVjdCwgbnVsbCwgY2xpZW50U0RLLCBjb250ZXh0KTtcbiAgcmV0dXJuIHdyaXRlLmV4ZWN1dGUoKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBjb250YWlucyB0aGUgZmllbGRzIG9mIHRoZSB1cGRhdGUgdGhhdCB0aGVcbi8vIFJFU1QgQVBJIGlzIHN1cHBvc2VkIHRvIHJldHVybi5cbi8vIFVzdWFsbHksIHRoaXMgaXMganVzdCB1cGRhdGVkQXQuXG5mdW5jdGlvbiB1cGRhdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHJlc3RXaGVyZSwgcmVzdE9iamVjdCwgY2xpZW50U0RLLCBjb250ZXh0KSB7XG4gIGVuZm9yY2VSb2xlU2VjdXJpdHkoJ3VwZGF0ZScsIGNsYXNzTmFtZSwgYXV0aCk7XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGFzVHJpZ2dlcnMgPSBjaGVja1RyaWdnZXJzKGNsYXNzTmFtZSwgY29uZmlnLCBbJ2JlZm9yZVNhdmUnLCAnYWZ0ZXJTYXZlJ10pO1xuICAgICAgY29uc3QgaGFzTGl2ZVF1ZXJ5ID0gY2hlY2tMaXZlUXVlcnkoY2xhc3NOYW1lLCBjb25maWcpO1xuICAgICAgaWYgKGhhc1RyaWdnZXJzIHx8IGhhc0xpdmVRdWVyeSkge1xuICAgICAgICAvLyBEbyBub3QgdXNlIGZpbmQsIGFzIGl0IHJ1bnMgdGhlIGJlZm9yZSBmaW5kc1xuICAgICAgICBjb25zdCBxdWVyeSA9IGF3YWl0IFJlc3RRdWVyeSh7XG4gICAgICAgICAgbWV0aG9kOiBSZXN0UXVlcnkuTWV0aG9kLmdldCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgcmVzdFdoZXJlLFxuICAgICAgICAgIHJ1bkFmdGVyRmluZDogZmFsc2UsXG4gICAgICAgICAgcnVuQmVmb3JlRmluZDogZmFsc2UsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyeS5leGVjdXRlKHtcbiAgICAgICAgICBvcDogJ3VwZGF0ZScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgfSlcbiAgICAudGhlbigoeyByZXN1bHRzIH0pID0+IHtcbiAgICAgIHZhciBvcmlnaW5hbFJlc3RPYmplY3Q7XG4gICAgICBpZiAocmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICBvcmlnaW5hbFJlc3RPYmplY3QgPSByZXN1bHRzWzBdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBSZXN0V3JpdGUoXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICByZXN0V2hlcmUsXG4gICAgICAgIHJlc3RPYmplY3QsXG4gICAgICAgIG9yaWdpbmFsUmVzdE9iamVjdCxcbiAgICAgICAgY2xpZW50U0RLLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICAndXBkYXRlJ1xuICAgICAgKS5leGVjdXRlKCk7XG4gICAgfSlcbiAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlU2Vzc2lvbk1pc3NpbmdFcnJvcihlcnJvciwgY2xhc3NOYW1lLCBhdXRoKSB7XG4gIC8vIElmIHdlJ3JlIHRyeWluZyB0byB1cGRhdGUgYSB1c2VyIHdpdGhvdXQgLyB3aXRoIGJhZCBzZXNzaW9uIHRva2VuXG4gIGlmIChcbiAgICBjbGFzc05hbWUgPT09ICdfVXNlcicgJiZcbiAgICBlcnJvci5jb2RlID09PSBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5EICYmXG4gICAgIWF1dGguaXNNYXN0ZXIgJiZcbiAgICAhYXV0aC5pc01haW50ZW5hbmNlXG4gICkge1xuICAgIHRocm93IGNyZWF0ZVNhbml0aXplZEVycm9yKFBhcnNlLkVycm9yLlNFU1NJT05fTUlTU0lORywgJ0luc3VmZmljaWVudCBhdXRoLicpO1xuICB9XG4gIHRocm93IGVycm9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY3JlYXRlLFxuICBkZWwsXG4gIGZpbmQsXG4gIGdldCxcbiAgdXBkYXRlLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLEtBQUssR0FBR0MsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDRCxLQUFLO0FBRXZDLElBQUlFLFNBQVMsR0FBR0QsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUN0QyxJQUFJRSxTQUFTLEdBQUdGLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDdEMsSUFBSUcsUUFBUSxHQUFHSCxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3BDLE1BQU07RUFBRUk7QUFBb0IsQ0FBQyxHQUFHSixPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ3ZELE1BQU07RUFBRUs7QUFBcUIsQ0FBQyxHQUFHTCxPQUFPLENBQUMsU0FBUyxDQUFDO0FBRW5ELFNBQVNNLGFBQWFBLENBQUNDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUU7RUFDL0MsT0FBT0EsS0FBSyxDQUFDQyxJQUFJLENBQUNDLFdBQVcsSUFBSTtJQUMvQixPQUFPUixRQUFRLENBQUNTLFVBQVUsQ0FBQ0wsU0FBUyxFQUFFSixRQUFRLENBQUNVLEtBQUssQ0FBQ0YsV0FBVyxD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parse-server",
|
|
3
|
-
"version": "8.5.0-alpha.
|
|
3
|
+
"version": "8.5.0-alpha.13",
|
|
4
4
|
"description": "An express module providing a Parse-compatible API server",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -89,6 +89,7 @@
|
|
|
89
89
|
"deep-diff": "1.0.2",
|
|
90
90
|
"eslint": "9.27.0",
|
|
91
91
|
"eslint-plugin-expect-type": "0.6.2",
|
|
92
|
+
"eslint-plugin-unused-imports": "4.3.0",
|
|
92
93
|
"flow-bin": "0.271.0",
|
|
93
94
|
"form-data": "4.0.4",
|
|
94
95
|
"globals": "16.2.0",
|