@nlabs/reaktor 0.1.3 → 0.1.5

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.
@@ -174,6 +174,31 @@ export var getGroupDetails = function getGroupDetails(context, groupId) {
174
174
  });
175
175
  });
176
176
  };
177
+ export var createGroupEdge = function createGroupEdge(database, userId, groupId, type) {
178
+ var action = 'createGroupEdge';
179
+ var formatUserId = parseId(userId);
180
+ var formatGroupId = parseId(groupId);
181
+ var formatType = parseChar(type, 16);
182
+ var now = Date.now();
183
+ var edgeCollection = useDb(database).edgeCollection('isGrouped');
184
+ var edgeId = createHash("group-".concat(formatUserId, "-").concat(formatGroupId));
185
+ var edge = {
186
+ _key: edgeId,
187
+ added: now,
188
+ type: formatType
189
+ };
190
+ return edgeCollection.save(edge, "users/".concat(formatUserId), "groups/".concat(formatGroupId)).catch(function (error) {
191
+ return logError({
192
+ action: action,
193
+ category: eventCategory,
194
+ label: 'db_error'
195
+ }, error, {
196
+ id: formatUserId
197
+ }).then(function () {
198
+ return null;
199
+ });
200
+ });
201
+ };
177
202
  export var addGroup = function addGroup(context) {
178
203
  var item = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
179
204
  var action = 'add';
@@ -326,29 +351,4 @@ export var isGrouped = function isGrouped(database, userId, groupId) {
326
351
  });
327
352
  });
328
353
  };
329
- export var createGroupEdge = function createGroupEdge(database, userId, groupId, type) {
330
- var action = 'createGroupEdge';
331
- var formatUserId = parseId(userId);
332
- var formatGroupId = parseId(groupId);
333
- var formatType = parseChar(type, 16);
334
- var now = Date.now();
335
- var edgeCollection = useDb(database).edgeCollection('isGrouped');
336
- var edgeId = createHash("group-".concat(formatUserId, "-").concat(formatGroupId));
337
- var edge = {
338
- _key: edgeId,
339
- added: now,
340
- type: formatType
341
- };
342
- return edgeCollection.save(edge, "users/".concat(formatUserId), "groups/".concat(formatGroupId)).catch(function (error) {
343
- return logError({
344
- action: action,
345
- category: eventCategory,
346
- label: 'db_error'
347
- }, error, {
348
- id: formatUserId
349
- }).then(function () {
350
- return null;
351
- });
352
- });
353
- };
354
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2dyb3Vwcy50cyJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VDaGFyIiwicGFyc2VJZCIsImFxbCIsImZsYXR0ZW4iLCJ1bmlxQnkiLCJnZXRMaW1pdCIsImxvZ0Vycm9yIiwidXNlRGIiLCJleHRyYWN0VGFncyIsImV2ZW50Q2F0ZWdvcnkiLCJnZXRHcm91cExpc3QiLCJjb250ZXh0IiwiZnJvbSIsInRvIiwiYWN0aW9uIiwiZGF0YWJhc2UiLCJsaW1pdCIsImFxbFFyeSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiZ2V0R3JvdXBMaXN0QnlVc2VyIiwic2Vzc2lvbklkIiwidXNlcklkIiwiZ2V0R3JvdXBMaXN0QnlUYWdzIiwidGFncyIsIlByb21pc2UiLCJtYXAiLCJ0YWdOYW1lIiwiZm9ybWF0VGFnTmFtZSIsInJlc3VsdHMiLCJnZXRHcm91cCIsIml0ZW1JZCIsImZvcm1hdEl0ZW1JZCIsIm5leHQiLCJncm91cCIsImdldEdyb3VwRGV0YWlscyIsImdyb3VwSWQiLCJmb3JtYXRHcm91cElkIiwiYWRkR3JvdXAiLCJpdGVtIiwibm93IiwiRGF0ZSIsImRlc2NyaXB0aW9uIiwibmFtZSIsInR5cGUiLCJpZCIsImZvcm1hdERlc2MiLCJzdWJzdHIiLCJmb3JtYXRUeXBlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwibW9kaWZpZWQiLCJkYiIsIml0ZW1UeXBlIiwiY3JlYXRlR3JvdXBFZGdlIiwidXBkYXRlR3JvdXAiLCJ1cGRhdGUiLCJncm91cEtleSIsImRlbGV0ZUdyb3VwIiwiZ2V0R3JvdXBzQnlSZWFjdGlvbiIsInJlYWN0aW9uIiwiZm9ybWF0UmVhY3Rpb24iLCJ1c2VyRG9jSWQiLCJpc0dyb3VwZWQiLCJmb3JtYXRVc2VySWQiLCJpc1ZhbGlkIiwibGVuZ3RoIiwiZWRnZUNvbGxlY3Rpb24iLCJlZGdlSWQiLCJlZGdlIiwic2F2ZSJd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QSxXQUFrQmpCLFFBQVEsQ0FBQztBQUNoQ1EsTUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ1UsTUFBQUEsUUFBUSxFQUFFZixhQUZzQjtBQUdoQ2dCLE1BQUFBLEtBQUssRUFBRTtBQUh5QixLQUFELEVBSTlCRixLQUo4QixFQUl2QjtBQUFDNEIsTUFBQUEsRUFBRSxFQUFFb0I7QUFBTCxLQUp1QixDQUFSLENBSUtwRCxJQUpMLENBSVU7QUFBQSxhQUFNLElBQU47QUFBQSxLQUpWLENBQWxCO0FBQUEsR0FERixDQUFQO0FBTUQsQ0F0Qk0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGZsYXR0ZW4gZnJvbSAnbG9kYXNoL2ZsYXR0ZW4nO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gvdW5pcUJ5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtHcm91cEVkZ2VUeXBlLCBHcm91cFR5cGUsIEdyb3VwVXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL2dyb3Vwcyc7XG5pbXBvcnQge2dldExpbWl0LCBsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7ZXh0cmFjdFRhZ3N9IGZyb20gJy4vdGFncyc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdncm91cHMnO1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdEJ5QXBwJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgZyBpbiBncm91cHNcbiAgICAgIExFVCB1c2VycyA9IChcbiAgICAgICAgRk9SIHUsIGwgSU4gT1VUQk9VTkQgZy5faWQgaXNHcm91cGVkXG4gICAgICAgIFJFVFVSTiBNRVJHRSAodSwge3R5cGU6bC50eXBlfSlcbiAgICAgIClcbiAgICAgICR7bGltaXQuYXFsfVxuICAgICAgU09SVCBnLmFkZGVkXG4gICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UoZywge3VzZXJzOnVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0QnlVc2VyID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGZyb206IG51bWJlciwgdG86IG51bWJlcik6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgLy8gY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdEJ5VXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBnLCBlIElOIElOQk9VTkQgXCIke2B1c2Vycy8ke3Nlc3Npb25JZH1gfVwiIGlzR3JvdXBlZFxuICAgICAgTEVUIHVzZXJzID0gKFxuICAgICAgICBGT1IgdSwgbCBJTiBPVVRCT1VORCBnLl9pZCBpc0dyb3VwZWRcbiAgICAgICAgUkVUVVJOIE1FUkdFICh1LCB7dHlwZTpsLnR5cGV9KVxuICAgICAgKVxuICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICBTT1JUIGcuYWRkZWRcbiAgICAgIFJFVFVSTiBESVNUSU5DVCBNRVJHRShnLCB7dXNlcnM6dXNlcnN9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBMaXN0QnlUYWdzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHRhZ3M6IHN0cmluZ1tdLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPEdyb3VwVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldExpc3RCeVRhZ3MnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcblxuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgKHRhZ3MgfHwgW10pLm1hcCgodGFnTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBmb3JtYXRUYWdOYW1lOiBzdHJpbmcgPSBwYXJzZUlkKHRhZ05hbWUpO1xuICAgICAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gICAgICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgcCwgZSBJTiBPVVRCT1VORCBcIiR7YHRhZ3MvJHtmb3JtYXRUYWdOYW1lfWB9XCIgaXNUYWdnZWRcbiAgICAgICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICAgIExFVCBsaWtlcyA9IChcbiAgICAgICAgICAgIEZPUiBwb3N0LCBsaWtlIElOIElOQk9VTkQgcC5faWQgbGlrZXNcbiAgICAgICAgICAgIEZJTFRFUiBsaWtlLnZhbHVlID09ICdsaWtlJ1xuICAgICAgICAgICAgUkVUVVJOIGxpa2VcbiAgICAgICAgICApXG4gICAgICAgICAgTEVUIGRpc2xpa2VzID0gKFxuICAgICAgICAgICAgRk9SIHBvc3QsIGxpa2UgSU4gSU5CT1VORCBwLl9pZCBsaWtlc1xuICAgICAgICAgICAgRklMVEVSIGxpa2UudmFsdWUgPT0gJ2Rpc2xpa2UnXG4gICAgICAgICAgICBSRVRVUk4gbGlrZVxuICAgICAgICAgIClcbiAgICAgICAgICBGSUxURVIgZS50eXBlID09ICdwb3N0JyAmJiBwLnVzZXJJZCA9PSB1Ll9rZXlcbiAgICAgICAgICAke2xpbWl0LmFxbH1cbiAgICAgICAgICBTT1JUIHAuYWRkZWRcbiAgICAgICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UocCwge3VzZXI6dSwgbGlrZXM6TEVOR1RIKGxpa2VzKSwgZGlzbGlrZXM6TEVOR1RIKGRpc2xpa2VzKX0pYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gICAgfSlcbiAgKVxuICAgIC50aGVuKChyZXN1bHRzKSA9PiB1bmlxQnkoZmxhdHRlbihyZXN1bHRzKSwgJ19rZXknKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcsIGUgSU4gSU5CT1VORCAke2B1c2Vycy8ke3Nlc3Npb25JZH1gfSBpc0dyb3VwZWRcbiAgICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRJdGVtSWR9XG4gICAgICBMRVQgdXNlcnMgPSAoXG4gICAgICAgIEZPUiB1LCBsIElOIE9VVEJPVU5EIGcuX2lkIGlzR3JvdXBlZFxuICAgICAgICBSRVRVUk4gTUVSR0UgKHUsIHt0eXBlOmwudHlwZX0pXG4gICAgICApXG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UoZywge3VzZXJzOnVzZXJzfSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IGdyb3VwKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwRGV0YWlscyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBncm91cElkOiBzdHJpbmcpOiBQcm9taXNlPEdyb3VwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXREZXRhaWxzJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEdyb3VwSWQ6IHN0cmluZyA9IHBhcnNlSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcgSU4gZ3JvdXBzXG4gICAgICBGSUxURVIgZy5fa2V5ID09ICR7Zm9ybWF0R3JvdXBJZH1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiBnYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoZ3JvdXA6IEdyb3VwVHlwZSA9IHt9KSA9PiBncm91cClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtOiBHcm91cFR5cGUgPSB7fSk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB7XG4gICAgZGVzY3JpcHRpb24gPSAnJyxcbiAgICBuYW1lID0gJ1VudGl0bGVkJyxcbiAgICB0eXBlXG4gIH06IEdyb3VwVHlwZSA9IGl0ZW07XG4gIGNvbnN0IGlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGBncm91cC0ke3Nlc3Npb25JZH1gKTtcbiAgY29uc3QgZm9ybWF0RGVzYzogc3RyaW5nID0gZGVzY3JpcHRpb24uc3Vic3RyKDAsIDY0MCk7XG4gIGNvbnN0IGZvcm1hdFR5cGU6IHN0cmluZyA9IHBhcnNlQ2hhcih0eXBlLCAxNikgfHwgJ3ByaXZhdGUnO1xuICBjb25zdCBpbnNlcnQ6IEdyb3VwVHlwZSA9IHtcbiAgICBfa2V5OiBpZCxcbiAgICBhZGRlZDogbm93LFxuICAgIGRlc2NyaXB0aW9uOiBmb3JtYXREZXNjLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZSxcbiAgICB0eXBlOiBmb3JtYXRUeXBlXG4gIH07XG4gIGNvbnN0IGRiOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGdyb3VwcyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gZGIucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1UeXBlOiBzdHJpbmcgPSAnZ3JvdXBzJztcblxuICAgICAgLy8gVXBkYXRlIGxpbmtlZCB0YWdzXG4gICAgICBjb25zdCB7X2tleTogZ3JvdXBJZH06IEdyb3VwVHlwZSA9IGdyb3VwO1xuICAgICAgcmV0dXJuIGV4dHJhY3RUYWdzKGRiLCBpdGVtVHlwZSwgZ3JvdXBJZCwgZm9ybWF0RGVzYylcbiAgICAgICAgLnRoZW4oKCkgPT4gY3JlYXRlR3JvdXBFZGdlKGRhdGFiYXNlLCBzZXNzaW9uSWQsIGdyb3VwSWQsICdhZG1pbicpLnRoZW4oKCkgPT4gZ3JvdXApKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUdyb3VwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW06IEdyb3VwVHlwZSA9IHt9KTogUHJvbWlzZTxHcm91cFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBkZXNjcmlwdGlvbiA9ICcnLFxuICAgIGlkLFxuICAgIG5hbWUgPSAnVW50aXRsZWQnXG4gIH06IEdyb3VwVHlwZSA9IGl0ZW07XG4gIGNvbnN0IGl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpZCk7XG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZm9ybWF0RGVzYzogc3RyaW5nID0gZGVzY3JpcHRpb24uc3Vic3RyKDAsIDY0MCk7XG4gIGNvbnN0IHVwZGF0ZTogYW55ID0ge1xuICAgIGRlc2NyaXB0aW9uOiBmb3JtYXREZXNjLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgbmFtZVxuICB9O1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZSk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFICR7aXRlbUlkfSBXSVRIICR7dXBkYXRlfSBJTiBncm91cHMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoZ3JvdXA6IEdyb3VwVHlwZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogZ3JvdXBLZXl9ID0gZ3JvdXA7XG4gICAgICBjb25zdCBpdGVtVHlwZTogc3RyaW5nID0gJ2dyb3Vwcyc7XG5cbiAgICAgIC8vIFVwZGF0ZSBsaW5rZWQgdGFnc1xuICAgICAgcmV0dXJuIGV4dHJhY3RUYWdzKGRiLCBpdGVtVHlwZSwgZ3JvdXBLZXksIGRlc2NyaXB0aW9uKS50aGVuKCgpID0+IGdyb3VwKTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUdyb3VwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW1JZDogc3RyaW5nKTogUHJvbWlzZTxHcm91cFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VJZChpdGVtSWQpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBnIElOIGdyb3Vwc1xuICAgICAgRklMVEVSIGcuX2tleSA9PSAke2Zvcm1hdEl0ZW1JZH1cbiAgICAgIFJFTU9WRSBnIElOIGdyb3Vwc1xuICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGdyb3VwOiBHcm91cFR5cGUgPSB7fSkgPT4gZ3JvdXApXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBzQnlSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxHcm91cFR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRHcm91cHNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbjogc3RyaW5nID0gcGFyc2VDaGFyKHJlYWN0aW9uLCAzMik7XG4gIGNvbnN0IHVzZXJEb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSwgciBJTiBPVVRCT1VORCAke3VzZXJEb2NJZH0gaGFzUmVhY3Rpb25cbiAgICAgIEZJTFRFUiByLnZhbHVlID09ICR7Zm9ybWF0UmVhY3Rpb259XG4gICAgICBDT0xMRUNUIHJlYWN0aW9uTmFtZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICBSRVRVUk4ge3ZhbHVlOiByZWFjdGlvbk5hbWUsIGNvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX1gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNHcm91cGVkID0gKGRhdGFiYXNlOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpOiBQcm9taXNlPEdyb3VwVXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnaXNHcm91cGVkJztcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGZvcm1hdEdyb3VwSWQ6IHN0cmluZyA9IHBhcnNlSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGcgSU4gZ3JvdXBzXG4gICAgRklMVEVSIGcuX2tleSA9PSAke2Zvcm1hdEdyb3VwSWR9XG4gICAgRk9SIHUgSU4gSU5CT1VORCBnLl9pZCBpc0dyb3VwZWRcbiAgICBGSUxURVIgdS5fa2V5ID09ICR7Zm9ybWF0VXNlcklkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gdWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigocmVzdWx0cyA9IFtdKSA9PiB7XG4gICAgICBjb25zdCBpc1ZhbGlkID0gISFyZXN1bHRzLmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3JvdXBJZCxcbiAgICAgICAgaXNWYWxpZCxcbiAgICAgICAgdXNlcklkXG4gICAgICB9O1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwge2lkOiB1c2VySWR9KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cEVkZ2UgPSAoZGF0YWJhc2U6IHN0cmluZywgdXNlcklkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZywgdHlwZTogc3RyaW5nKTogUHJvbWlzZTxHcm91cEVkZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2NyZWF0ZUdyb3VwRWRnZSc7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBmb3JtYXRHcm91cElkOiBzdHJpbmcgPSBwYXJzZUlkKGdyb3VwSWQpO1xuICBjb25zdCBmb3JtYXRUeXBlOiBzdHJpbmcgPSBwYXJzZUNoYXIodHlwZSwgMTYpO1xuXG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuZWRnZUNvbGxlY3Rpb24oJ2lzR3JvdXBlZCcpO1xuICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYGdyb3VwLSR7Zm9ybWF0VXNlcklkfS0ke2Zvcm1hdEdyb3VwSWR9YCk7XG5cbiAgY29uc3QgZWRnZTogYW55ID0ge1xuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBhZGRlZDogbm93LFxuICAgIHR5cGU6IGZvcm1hdFR5cGVcbiAgfTtcblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCBgdXNlcnMvJHtmb3JtYXRVc2VySWR9YCwgYGdyb3Vwcy8ke2Zvcm1hdEdyb3VwSWR9YClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCB7aWQ6IGZvcm1hdFVzZXJJZH0pLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcbiJdfQ==
354
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2dyb3Vwcy50cyJdLCJuYW1lcyI6WyJjcmVhdGVIYXNoIiwicGFyc2VDaGFyIiwicGFyc2VJZCIsImFxbCIsImZsYXR0ZW4iLCJ1bmlxQnkiLCJnZXRMaW1pdCIsImxvZ0Vycm9yIiwidXNlRGIiLCJleHRyYWN0VGFncyIsImV2ZW50Q2F0ZWdvcnkiLCJnZXRHcm91cExpc3QiLCJjb250ZXh0IiwiZnJvbSIsInRvIiwiYWN0aW9uIiwiZGF0YWJhc2UiLCJsaW1pdCIsImFxbFFyeSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsImFsbCIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIiwiZ2V0R3JvdXBMaXN0QnlVc2VyIiwic2Vzc2lvbklkIiwidXNlcklkIiwiZ2V0R3JvdXBMaXN0QnlUYWdzIiwidGFncyIsIlByb21pc2UiLCJtYXAiLCJ0YWdOYW1lIiwiZm9ybWF0VGFnTmFtZSIsInJlc3VsdHMiLCJnZXRHcm91cCIsIml0ZW1JZCIsImZvcm1hdEl0ZW1JZCIsIm5leHQiLCJncm91cCIsImdldEdyb3VwRGV0YWlscyIsImdyb3VwSWQiLCJmb3JtYXRHcm91cElkIiwiY3JlYXRlR3JvdXBFZGdlIiwidHlwZSIsImZvcm1hdFVzZXJJZCIsImZvcm1hdFR5cGUiLCJub3ciLCJEYXRlIiwiZWRnZUNvbGxlY3Rpb24iLCJlZGdlSWQiLCJlZGdlIiwiX2tleSIsImFkZGVkIiwic2F2ZSIsImlkIiwiYWRkR3JvdXAiLCJpdGVtIiwiZGVzY3JpcHRpb24iLCJuYW1lIiwiZm9ybWF0RGVzYyIsInN1YnN0ciIsImluc2VydCIsIm1vZGlmaWVkIiwiZGIiLCJpdGVtVHlwZSIsInVwZGF0ZUdyb3VwIiwidXBkYXRlIiwiZ3JvdXBLZXkiLCJkZWxldGVHcm91cCIsImdldEdyb3Vwc0J5UmVhY3Rpb24iLCJyZWFjdGlvbiIsImZvcm1hdFJlYWN0aW9uIiwidXNlckRvY0lkIiwiaXNHcm91cGVkIiwiaXNWYWxpZCIsImxlbmd0aCJd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akIsUUFBUSxDQUFDO0FBQ2hDUSxNQUFBQSxNQUFNLEVBQU5BLE1BRGdDO0FBRWhDVSxNQUFBQSxRQUFRLEVBQUVmLGFBRnNCO0FBR2hDZ0IsTUFBQUEsS0FBSyxFQUFFO0FBSHlCLEtBQUQsRUFJOUJGLEtBSjhCLEVBSXZCO0FBQUNpQyxNQUFBQSxFQUFFLEVBQUU1QjtBQUFMLEtBSnVCLENBQVIsQ0FJRFQsSUFKQyxDQUlJO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FKSixDQUFsQjtBQUFBLEdBWEYsQ0FBUDtBQWdCRCxDQTNCTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VDaGFyLCBwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWwsIERhdGFiYXNlfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQgZmxhdHRlbiBmcm9tICdsb2Rhc2gvZmxhdHRlbic7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuXG5pbXBvcnQge0FyYW5nb0RCTGltaXR9IGZyb20gJy4uL3R5cGVzL2FyYW5nb2RiJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge0dyb3VwRWRnZVR5cGUsIEdyb3VwVHlwZSwgR3JvdXBVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMvZ3JvdXBzJztcbmltcG9ydCB7Z2V0TGltaXQsIGxvZ0Vycm9yLCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtleHRyYWN0VGFnc30gZnJvbSAnLi90YWdzJztcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2dyb3Vwcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cExpc3QgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogUHJvbWlzZTxHcm91cFR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRMaXN0QnlBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RCTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBnIGluIGdyb3Vwc1xuICAgICAgTEVUIHVzZXJzID0gKFxuICAgICAgICBGT1IgdSwgbCBJTiBPVVRCT1VORCBnLl9pZCBpc0dyb3VwZWRcbiAgICAgICAgUkVUVVJOIE1FUkdFICh1LCB7dHlwZTpsLnR5cGV9KVxuICAgICAgKVxuICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICBTT1JUIGcuYWRkZWRcbiAgICAgIFJFVFVSTiBESVNUSU5DVCBNRVJHRShnLCB7dXNlcnM6dXNlcnN9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cExpc3RCeVVzZXIgPSAoY29udGV4dDogQXBpQ29udGV4dCwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKTogUHJvbWlzZTxHcm91cFR5cGVbXT4gPT4ge1xuICAvLyBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRMaXN0QnlVc2VyJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGcsIGUgSU4gSU5CT1VORCBcIiR7YHVzZXJzLyR7c2Vzc2lvbklkfWB9XCIgaXNHcm91cGVkXG4gICAgICBMRVQgdXNlcnMgPSAoXG4gICAgICAgIEZPUiB1LCBsIElOIE9VVEJPVU5EIGcuX2lkIGlzR3JvdXBlZFxuICAgICAgICBSRVRVUk4gTUVSR0UgKHUsIHt0eXBlOmwudHlwZX0pXG4gICAgICApXG4gICAgICAke2xpbWl0LmFxbH1cbiAgICAgIFNPUlQgZy5hZGRlZFxuICAgICAgUkVUVVJOIERJU1RJTkNUIE1FUkdFKGcsIHt1c2Vyczp1c2Vyc30pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHcm91cExpc3RCeVRhZ3MgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHRhZ3M6IHN0cmluZ1tdLFxuICBmcm9tOiBudW1iZXIsXG4gIHRvOiBudW1iZXJcbik6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdEJ5VGFncyc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuXG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAodGFncyB8fCBbXSkubWFwKCh0YWdOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGZvcm1hdFRhZ05hbWU6IHN0cmluZyA9IHBhcnNlSWQodGFnTmFtZSk7XG4gICAgICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgICAgIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBwLCBlIElOIE9VVEJPVU5EIFwiJHtgdGFncy8ke2Zvcm1hdFRhZ05hbWV9YH1cIiBpc1RhZ2dlZFxuICAgICAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICAgICAgTEVUIGxpa2VzID0gKFxuICAgICAgICAgICAgRk9SIHBvc3QsIGxpa2UgSU4gSU5CT1VORCBwLl9pZCBsaWtlc1xuICAgICAgICAgICAgRklMVEVSIGxpa2UudmFsdWUgPT0gJ2xpa2UnXG4gICAgICAgICAgICBSRVRVUk4gbGlrZVxuICAgICAgICAgIClcbiAgICAgICAgICBMRVQgZGlzbGlrZXMgPSAoXG4gICAgICAgICAgICBGT1IgcG9zdCwgbGlrZSBJTiBJTkJPVU5EIHAuX2lkIGxpa2VzXG4gICAgICAgICAgICBGSUxURVIgbGlrZS52YWx1ZSA9PSAnZGlzbGlrZSdcbiAgICAgICAgICAgIFJFVFVSTiBsaWtlXG4gICAgICAgICAgKVxuICAgICAgICAgIEZJTFRFUiBlLnR5cGUgPT0gJ3Bvc3QnICYmIHAudXNlcklkID09IHUuX2tleVxuICAgICAgICAgICR7bGltaXQuYXFsfVxuICAgICAgICAgIFNPUlQgcC5hZGRlZFxuICAgICAgICAgIFJFVFVSTiBESVNUSU5DVCBNRVJHRShwLCB7dXNlcjp1LCBsaWtlczpMRU5HVEgobGlrZXMpLCBkaXNsaWtlczpMRU5HVEgoZGlzbGlrZXMpfSlgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSkudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcbiAgICB9KVxuICApXG4gICAgLnRoZW4oKHJlc3VsdHMpID0+IHVuaXFCeShmbGF0dGVuKHJlc3VsdHMpLCAnX2tleScpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGl0ZW1JZDogc3RyaW5nKTogUHJvbWlzZTxHcm91cFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUlkKGl0ZW1JZCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgZywgZSBJTiBJTkJPVU5EICR7YHVzZXJzLyR7c2Vzc2lvbklkfWB9IGlzR3JvdXBlZFxuICAgICAgRklMVEVSIGcuX2tleSA9PSAke2Zvcm1hdEl0ZW1JZH1cbiAgICAgIExFVCB1c2VycyA9IChcbiAgICAgICAgRk9SIHUsIGwgSU4gT1VUQk9VTkQgZy5faWQgaXNHcm91cGVkXG4gICAgICAgIFJFVFVSTiBNRVJHRSAodSwge3R5cGU6bC50eXBlfSlcbiAgICAgIClcbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiBESVNUSU5DVCBNRVJHRShnLCB7dXNlcnM6dXNlcnN9KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGdyb3VwOiBHcm91cFR5cGUgPSB7fSkgPT4gZ3JvdXApXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0R3JvdXBEZXRhaWxzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGdyb3VwSWQ6IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldERldGFpbHMnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0R3JvdXBJZDogc3RyaW5nID0gcGFyc2VJZChncm91cElkKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgZyBJTiBncm91cHNcbiAgICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRHcm91cElkfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIGdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IGdyb3VwKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUdyb3VwRWRnZSA9IChcbiAgZGF0YWJhc2U6IHN0cmluZyxcbiAgdXNlcklkOiBzdHJpbmcsXG4gIGdyb3VwSWQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nXG4pOiBQcm9taXNlPEdyb3VwRWRnZVR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnY3JlYXRlR3JvdXBFZGdlJztcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGZvcm1hdEdyb3VwSWQ6IHN0cmluZyA9IHBhcnNlSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGZvcm1hdFR5cGU6IHN0cmluZyA9IHBhcnNlQ2hhcih0eXBlLCAxNik7XG5cbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCBlZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlKS5lZGdlQ29sbGVjdGlvbignaXNHcm91cGVkJyk7XG4gIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgZ3JvdXAtJHtmb3JtYXRVc2VySWR9LSR7Zm9ybWF0R3JvdXBJZH1gKTtcblxuICBjb25zdCBlZGdlOiBhbnkgPSB7XG4gICAgX2tleTogZWRnZUlkLFxuICAgIGFkZGVkOiBub3csXG4gICAgdHlwZTogZm9ybWF0VHlwZVxuICB9O1xuXG4gIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIGB1c2Vycy8ke2Zvcm1hdFVzZXJJZH1gLCBgZ3JvdXBzLyR7Zm9ybWF0R3JvdXBJZH1gKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIHtpZDogZm9ybWF0VXNlcklkfSkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkR3JvdXAgPSAoY29udGV4dDogQXBpQ29udGV4dCwgaXRlbTogR3JvdXBUeXBlID0ge30pOiBQcm9taXNlPEdyb3VwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGQnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3Qge1xuICAgIGRlc2NyaXB0aW9uID0gJycsXG4gICAgbmFtZSA9ICdVbnRpdGxlZCcsXG4gICAgdHlwZVxuICB9OiBHcm91cFR5cGUgPSBpdGVtO1xuICBjb25zdCBpZDogc3RyaW5nID0gY3JlYXRlSGFzaChgZ3JvdXAtJHtzZXNzaW9uSWR9YCk7XG4gIGNvbnN0IGZvcm1hdERlc2M6IHN0cmluZyA9IGRlc2NyaXB0aW9uLnN1YnN0cigwLCA2NDApO1xuICBjb25zdCBmb3JtYXRUeXBlOiBzdHJpbmcgPSBwYXJzZUNoYXIodHlwZSwgMTYpIHx8ICdwcml2YXRlJztcbiAgY29uc3QgaW5zZXJ0OiBHcm91cFR5cGUgPSB7XG4gICAgX2tleTogaWQsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBkZXNjcmlwdGlvbjogZm9ybWF0RGVzYyxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIG5hbWUsXG4gICAgdHlwZTogZm9ybWF0VHlwZVxuICB9O1xuICBjb25zdCBkYjogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZSk7XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBncm91cHMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGRiLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigoZ3JvdXA6IEdyb3VwVHlwZSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCBpdGVtVHlwZTogc3RyaW5nID0gJ2dyb3Vwcyc7XG5cbiAgICAgIC8vIFVwZGF0ZSBsaW5rZWQgdGFnc1xuICAgICAgY29uc3Qge19rZXk6IGdyb3VwSWR9OiBHcm91cFR5cGUgPSBncm91cDtcbiAgICAgIHJldHVybiBleHRyYWN0VGFncyhkYiwgaXRlbVR5cGUsIGdyb3VwSWQsIGZvcm1hdERlc2MpXG4gICAgICAgIC50aGVuKCgpID0+IGNyZWF0ZUdyb3VwRWRnZShkYXRhYmFzZSwgc2Vzc2lvbklkLCBncm91cElkLCAnYWRtaW4nKS50aGVuKCgpID0+IGdyb3VwKSk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtOiBHcm91cFR5cGUgPSB7fSk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCB7XG4gICAgZGVzY3JpcHRpb24gPSAnJyxcbiAgICBpZCxcbiAgICBuYW1lID0gJ1VudGl0bGVkJ1xuICB9OiBHcm91cFR5cGUgPSBpdGVtO1xuICBjb25zdCBpdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaWQpO1xuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IGZvcm1hdERlc2M6IHN0cmluZyA9IGRlc2NyaXB0aW9uLnN1YnN0cigwLCA2NDApO1xuICBjb25zdCB1cGRhdGU6IGFueSA9IHtcbiAgICBkZXNjcmlwdGlvbjogZm9ybWF0RGVzYyxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIG5hbWVcbiAgfTtcbiAgY29uc3QgZGI6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2UpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2l0ZW1JZH0gV0lUSCAke3VwZGF0ZX0gSU4gZ3JvdXBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYi5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGdyb3VwOiBHcm91cFR5cGUgPSB7fSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGdyb3VwS2V5fSA9IGdyb3VwO1xuICAgICAgY29uc3QgaXRlbVR5cGU6IHN0cmluZyA9ICdncm91cHMnO1xuXG4gICAgICAvLyBVcGRhdGUgbGlua2VkIHRhZ3NcbiAgICAgIHJldHVybiBleHRyYWN0VGFncyhkYiwgaXRlbVR5cGUsIGdyb3VwS2V5LCBkZXNjcmlwdGlvbikudGhlbigoKSA9PiBncm91cCk7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2RiX2Vycm9yJ1xuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVHcm91cCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBpdGVtSWQ6IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgZyBJTiBncm91cHNcbiAgICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRJdGVtSWR9XG4gICAgICBSRU1PVkUgZyBJTiBncm91cHNcbiAgICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKChncm91cDogR3JvdXBUeXBlID0ge30pID0+IGdyb3VwKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3Vwc0J5UmVhY3Rpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgcmVhY3Rpb246IHN0cmluZyk6IFByb21pc2U8R3JvdXBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0R3JvdXBzQnlSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb246IHN0cmluZyA9IHBhcnNlQ2hhcihyZWFjdGlvbiwgMzIpO1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHUsIHIgSU4gT1VUQk9VTkQgJHt1c2VyRG9jSWR9IGhhc1JlYWN0aW9uXG4gICAgICBGSUxURVIgci52YWx1ZSA9PSAke2Zvcm1hdFJlYWN0aW9ufVxuICAgICAgQ09MTEVDVCByZWFjdGlvbk5hbWUgPSByLnZhbHVlIElOVE8gcmVhY3Rpb25JdGVtc1xuICAgICAgUkVUVVJOIHt2YWx1ZTogcmVhY3Rpb25OYW1lLCBjb3VudDogTEVOR1RIKHJlYWN0aW9uSXRlbXNbKl0uci52YWx1ZSl9YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzR3JvdXBlZCA9IChkYXRhYmFzZTogc3RyaW5nLCB1c2VySWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nKTogUHJvbWlzZTxHcm91cFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2lzR3JvdXBlZCc7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBmb3JtYXRHcm91cElkOiBzdHJpbmcgPSBwYXJzZUlkKGdyb3VwSWQpO1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBnIElOIGdyb3Vwc1xuICAgIEZJTFRFUiBnLl9rZXkgPT0gJHtmb3JtYXRHcm91cElkfVxuICAgIEZPUiB1IElOIElOQk9VTkQgZy5faWQgaXNHcm91cGVkXG4gICAgRklMVEVSIHUuX2tleSA9PSAke2Zvcm1hdFVzZXJJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKHJlc3VsdHMgPSBbXSkgPT4ge1xuICAgICAgY29uc3QgaXNWYWxpZCA9ICEhcmVzdWx0cy5sZW5ndGg7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGdyb3VwSWQsXG4gICAgICAgIGlzVmFsaWQsXG4gICAgICAgIHVzZXJJZFxuICAgICAgfTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIHtpZDogdXNlcklkfSkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuIl19
@@ -1,12 +1,19 @@
1
1
  /// <reference types="node" />
2
- import { ApiContext, FileEdgeType, FileType, ImageType, ImageUrlData } from '../types';
2
+ import { PutObjectRequest } from 'aws-sdk/clients/s3';
3
+ import { ApiContext, ArangoDBLimit, ImageEdgeType, ImageLinkType, ImageOptions, ImageType, ImageUrlData } from '../types';
4
+ export declare const parseImageOptions: (options?: ImageOptions) => {
5
+ limit: ArangoDBLimit;
6
+ type: string;
7
+ };
8
+ export declare const getImageOptional: (fields: string[]) => any;
3
9
  export declare const getImageListByUser: (context: ApiContext, userId: string, from: number, to: number) => Promise<ImageType[]>;
10
+ export declare const getImageListByLink: (context: ApiContext, itemId: string, itemType: ImageLinkType, options: ImageOptions) => Promise<ImageType[]>;
4
11
  export declare const getImageListByGroup: (context: ApiContext, params: any) => Promise<ImageType[]>;
5
12
  export declare const getImage: (context: ApiContext, id: string) => Promise<ImageType>;
6
- export declare const updateImage: (context: ApiContext, item: FileType) => Promise<ImageType>;
7
- export declare const addImage: (context: ApiContext, image: ImageType) => Promise<ImageType>;
8
- export declare const addImageEdge: (context: ApiContext, imageEdge: FileEdgeType) => Promise<object>;
9
- export declare const deleteImage: (context: ApiContext, imgId: any) => Promise<ImageType>;
10
- export declare const getPathUserImages: (userID: string, photoId: string, type: string, dir?: string) => string;
13
+ export declare const getPathUserImages: (sub: string, imgId: string, type: string, dir?: string) => string;
11
14
  export declare const getUrlImages: (data: ImageUrlData) => string;
12
- export declare const resizeSaveImage: (userId: string, photoId: string, buffer: Buffer, type?: string) => Promise<ImageType>;
15
+ export declare const resizeSaveImage: (context: ApiContext, imgId: string, buffer: Buffer, type?: string, s3Options?: PutObjectRequest) => Promise<ImageType>;
16
+ export declare const addImage: (context: ApiContext, image: ImageType, s3Options: PutObjectRequest) => Promise<ImageType>;
17
+ export declare const addImageEdge: (context: ApiContext, imageEdge: ImageEdgeType) => Promise<object>;
18
+ export declare const updateImage: (context: ApiContext, item: ImageType, s3Options: PutObjectRequest) => Promise<ImageType>;
19
+ export declare const deleteImage: (context: ApiContext, imgId: string) => Promise<ImageType>;