@nlabs/reaktor 0.1.11 → 0.1.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.
@@ -17,7 +17,7 @@ var _config = require("../config");
17
17
 
18
18
  var _utils2 = require("../utils");
19
19
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
21
 
22
22
  function _templateObject() {
23
23
  var data = _taggedTemplateLiteral(["UPSERT {googleId: ", "}\n INSERT ", "\n UPDATE ", "\n IN locations RETURN NEW"]);
@@ -56,7 +56,7 @@ var addLocation = function addLocation(context, location) {
56
56
 
57
57
  if (status === 'OK' && results.length) {
58
58
  var geodata = results[0];
59
- var addressComponents = (0, _get.default)(geodata, 'address_components');
59
+ var addressComponents = (0, _get["default"])(geodata, 'address_components');
60
60
 
61
61
  var getFieldVal = function getFieldVal(name) {
62
62
  var _ref = addressComponents.find(function (addressField) {
@@ -79,17 +79,17 @@ var addLocation = function addLocation(context, location) {
79
79
 
80
80
  var formatItemType = (0, _utils.parseChar)(itemType).toLowerCase();
81
81
  var formatItemId = (0, _utils.parseId)(itemId);
82
- var googleId = (0, _get.default)(geodata, 'place_id');
82
+ var googleId = (0, _get["default"])(geodata, 'place_id');
83
83
  var update = {};
84
84
  var insert = {
85
85
  _key: (0, _utils.createHash)("post-".concat(sessionId)),
86
86
  added: now,
87
87
  city: getFieldVal('locality'),
88
88
  country: getFieldVal('country'),
89
- formatted: (0, _get.default)(geodata, 'formatted_address'),
89
+ formatted: (0, _get["default"])(geodata, 'formatted_address'),
90
90
  googleId: googleId,
91
- latitude: (0, _get.default)(geodata, 'geometry.location.lat'),
92
- longitude: (0, _get.default)(geodata, 'geometry.location.lng'),
91
+ latitude: (0, _get["default"])(geodata, 'geometry.location.lat'),
92
+ longitude: (0, _get["default"])(geodata, 'geometry.location.lng'),
93
93
  state: getFieldVal('administrative_area_level_1'),
94
94
  street: [streetNumber, route].filter(function (obj) {
95
95
  return obj;
@@ -129,7 +129,7 @@ var addLocation = function addLocation(context, location) {
129
129
 
130
130
 
131
131
  return updatedLocation;
132
- }).catch(function (error) {
132
+ })["catch"](function (error) {
133
133
  return (0, _utils2.logError)({
134
134
  action: action,
135
135
  category: eventCategory,
@@ -145,4 +145,4 @@ var addLocation = function addLocation(context, location) {
145
145
  };
146
146
 
147
147
  exports.addLocation = addLocation;
148
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2xvY2F0aW9ucy50cyJdLCJuYW1lcyI6WyJldmVudENhdGVnb3J5IiwiYWRkTG9jYXRpb24iLCJjb250ZXh0IiwibG9jYXRpb24iLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImFkZHJlc3MiLCJpdGVtSWQiLCJpdGVtVHlwZSIsImdlb2NvZGVVcmwiLCJDb25maWciLCJnZXQiLCJwYXJhbXMiLCJrZXkiLCJ1cmwiLCJ0aGVuIiwianNvbiIsInJlc3VsdHMiLCJzdGF0dXMiLCJsZW5ndGgiLCJnZW9kYXRhIiwiYWRkcmVzc0NvbXBvbmVudHMiLCJnZXRGaWVsZFZhbCIsIm5hbWUiLCJmaW5kIiwiYWRkcmVzc0ZpZWxkIiwidHlwZXMiLCJmaW5kSW5kZXgiLCJmaWVsZFR5cGUiLCJzaG9ydF9uYW1lIiwic2hvcnROYW1lIiwic3RyZWV0TnVtYmVyIiwicm91dGUiLCJub3ciLCJEYXRlIiwiZm9ybWF0SXRlbVR5cGUiLCJ0b0xvd2VyQ2FzZSIsImZvcm1hdEl0ZW1JZCIsImdvb2dsZUlkIiwidXBkYXRlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwiY2l0eSIsImNvdW50cnkiLCJmb3JtYXR0ZWQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInN0YXRlIiwic3RyZWV0IiwiZmlsdGVyIiwib2JqIiwiam9pbiIsInppcCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwiY3Vyc29yIiwibmV4dCIsInVwZGF0ZWRMb2NhdGlvbiIsIml0ZW1Eb2NJZCIsInVwZGF0ZWRMb2NhdGlvbktleSIsImVkZ2VDb2xsZWN0aW9uIiwibG9jYXRpb25JZCIsImxvY2F0aW9uRG9jSWQiLCJlZGdlSWQiLCJlZGdlIiwic2F2ZSIsImNhdGNoIiwiZXJyb3IiLCJjYXRlZ29yeSIsImxhYmVsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBRUE7O0FBSUE7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJ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QixDQUErQixhQUEvQixDQUF2QjtBQUNBLGNBQU1DLFVBQWtCLEdBQUdGLGtCQUEzQjtBQUNBLGNBQU1HLGFBQXFCLHVCQUFnQkQsVUFBaEIsQ0FBM0I7QUFDQSxjQUFNRSxNQUFNLEdBQUcsNkNBQTBCRixVQUExQixjQUF3QzNELFNBQXhDLEVBQWY7QUFDQSxjQUFNOEQsSUFBUyxHQUFHO0FBQUN6QixZQUFBQSxJQUFJLEVBQUV3QjtBQUFQLFdBQWxCO0FBRUEsaUJBQU9ILGNBQWMsQ0FBQ0ssSUFBZixDQUFvQkQsSUFBcEIsRUFBMEJOLFNBQTFCLEVBQXFDSSxhQUFyQyxFQUFvRGpELElBQXBELENBQXlEO0FBQUEsbUJBQU00QyxlQUFOO0FBQUEsV0FBekQsQ0FBUDtBQUNELFNBckIyQyxDQXVCNUM7OztBQUNBLGVBQU9BLGVBQVA7QUFDRCxPQTNCSSxFQTRCSlMsS0E1QkksQ0E0QkUsVUFBQ0MsS0FBRDtBQUFBLGVBQWtCLHNCQUFTO0FBQ2hDbkUsVUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ29FLFVBQUFBLFFBQVEsRUFBRXhFLGFBRnNCO0FBR2hDeUUsVUFBQUEsS0FBSyxFQUFFO0FBSHlCLFNBQVQsRUFJdEJGLEtBSnNCLEVBSWZyRSxPQUplLEVBSU5lLElBSk0sQ0FJRDtBQUFBLGlCQUFNLElBQU47QUFBQSxTQUpDLENBQWxCO0FBQUEsT0E1QkYsQ0FBUDtBQWlDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQWxGSSxDQUFQO0FBbUZELENBOUZNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXQsIHF1ZXJ5U3RyaW5nfSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge0dvb2dsZU1hcHNBZGRyZXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMnO1xuaW1wb3J0IHtsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2xvY2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBhZGRMb2NhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhdGlvbjogTG9jYXRpb25UeXBlKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7YWRkcmVzcywgaXRlbUlkLCBpdGVtVHlwZX0gPSBsb2NhdGlvbjtcbiAgY29uc3QgZ2VvY29kZVVybDogc3RyaW5nID0gQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUudXJsJyk7XG4gIGNvbnN0IHBhcmFtczogb2JqZWN0ID0ge1xuICAgIGFkZHJlc3MsXG4gICAga2V5OiBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS5rZXknKVxuICB9O1xuICBjb25zdCB1cmw6IHN0cmluZyA9IGAke2dlb2NvZGVVcmx9PyR7cXVlcnlTdHJpbmcocGFyYW1zKX1gO1xuXG4gIHJldHVybiBodHRwR2V0KHVybClcbiAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgY29uc3Qge3Jlc3VsdHMgPSBbXSwgc3RhdHVzID0gJyd9ID0ganNvbjtcblxuICAgICAgaWYoc3RhdHVzID09PSAnT0snICYmIHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGdlb2RhdGE6IG9iamVjdCA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IGFkZHJlc3NDb21wb25lbnRzOiBHb29nbGVNYXBzQWRkcmVzc1R5cGVbXSA9IGdldChnZW9kYXRhLCAnYWRkcmVzc19jb21wb25lbnRzJyk7XG4gICAgICAgIGNvbnN0IGdldEZpZWxkVmFsID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgY29uc3Qge3Nob3J0X25hbWU6IHNob3J0TmFtZSA9ICcnfSA9IGFkZHJlc3NDb21wb25lbnRzLmZpbmQoKGFkZHJlc3NGaWVsZDogR29vZ2xlTWFwc0FkZHJlc3NUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlcy5maW5kSW5kZXgoKGZpZWxkVHlwZTogc3RyaW5nKSA9PiBmaWVsZFR5cGUgPT09IG5hbWUpID49IDA7XG4gICAgICAgICAgfSkgfHwge307XG5cbiAgICAgICAgICByZXR1cm4gc2hvcnROYW1lO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFN0cmVldFxuICAgICAgICBjb25zdCBzdHJlZXROdW1iZXI6IHN0cmluZyA9IGdldEZpZWxkVmFsKCdzdHJlZXRfbnVtYmVyJyk7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBnZXRGaWVsZFZhbCgncm91dGUnKTtcblxuICAgICAgICAvLyBMb2NhdGlvblxuICAgICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gSXRlbVxuICAgICAgICBjb25zdCBmb3JtYXRJdGVtVHlwZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQ6IHN0cmluZyA9IGdldChnZW9kYXRhLCAncGxhY2VfaWQnKTtcbiAgICAgICAgY29uc3QgdXBkYXRlOiBMb2NhdGlvblR5cGUgPSB7fTtcbiAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKSxcbiAgICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICAgIGNpdHk6IGdldEZpZWxkVmFsKCdsb2NhbGl0eScpLFxuICAgICAgICAgIGNvdW50cnk6IGdldEZpZWxkVmFsKCdjb3VudHJ5JyksXG4gICAgICAgICAgZm9ybWF0dGVkOiBnZXQoZ2VvZGF0YSwgJ2Zvcm1hdHRlZF9hZGRyZXNzJyksXG4gICAgICAgICAgZ29vZ2xlSWQsXG4gICAgICAgICAgbGF0aXR1ZGU6IGdldChnZW9kYXRhLCAnZ2VvbWV0cnkubG9jYXRpb24ubGF0JyksXG4gICAgICAgICAgbG9uZ2l0dWRlOiBnZXQoZ2VvZGF0YSwgJ2dlb21ldHJ5LmxvY2F0aW9uLmxuZycpLFxuICAgICAgICAgIHN0YXRlOiBnZXRGaWVsZFZhbCgnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgICAgICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgICAgICAgIHppcDogZ2V0RmllbGRWYWwoJ3Bvc3RhbF9jb2RlJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge2dvb2dsZUlkOiAke2dvb2dsZUlkfX1cbiAgICAgICAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICAgIElOIGxvY2F0aW9ucyBSRVRVUk4gTkVXYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAudGhlbigodXBkYXRlZExvY2F0aW9uOiBMb2NhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1Eb2NJZDogc3RyaW5nO1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IHVwZGF0ZWRMb2NhdGlvbktleX0gPSB1cGRhdGVkTG9jYXRpb247XG5cbiAgICAgICAgICAgIHN3aXRjaChmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdwb3N0cyc6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gYHBvc3RzLyR7Zm9ybWF0SXRlbUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgdmFsaWQgaXRlbSBkb2MgaWQsIGNyZWF0ZSBhbiBlZGdlXG4gICAgICAgICAgICBpZihpdGVtRG9jSWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuZWRnZUNvbGxlY3Rpb24oJ2hhc0xvY2F0aW9uJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQ6IHN0cmluZyA9IHVwZGF0ZWRMb2NhdGlvbktleTtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZDogc3RyaW5nID0gYGxvY2F0aW9ucy8ke2xvY2F0aW9uSWR9YDtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZTogYW55ID0ge19rZXk6IGVkZ2VJZH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwgaXRlbURvY0lkLCBsb2NhdGlvbkRvY0lkKS50aGVuKCgpID0+IHVwZGF0ZWRMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZExvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7fTtcbiAgICB9KTtcbn07XG4iXX0=
148
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2xvY2F0aW9ucy50cyJdLCJuYW1lcyI6WyJldmVudENhdGVnb3J5IiwiYWRkTG9jYXRpb24iLCJjb250ZXh0IiwibG9jYXRpb24iLCJhY3Rpb24iLCJkYXRhYmFzZSIsInNlc3Npb25JZCIsInVzZXJJZCIsImFkZHJlc3MiLCJpdGVtSWQiLCJpdGVtVHlwZSIsImdlb2NvZGVVcmwiLCJDb25maWciLCJnZXQiLCJwYXJhbXMiLCJrZXkiLCJ1cmwiLCJ0aGVuIiwianNvbiIsInJlc3VsdHMiLCJzdGF0dXMiLCJsZW5ndGgiLCJnZW9kYXRhIiwiYWRkcmVzc0NvbXBvbmVudHMiLCJnZXRGaWVsZFZhbCIsIm5hbWUiLCJmaW5kIiwiYWRkcmVzc0ZpZWxkIiwidHlwZXMiLCJmaW5kSW5kZXgiLCJmaWVsZFR5cGUiLCJzaG9ydF9uYW1lIiwic2hvcnROYW1lIiwic3RyZWV0TnVtYmVyIiwicm91dGUiLCJub3ciLCJEYXRlIiwiZm9ybWF0SXRlbVR5cGUiLCJ0b0xvd2VyQ2FzZSIsImZvcm1hdEl0ZW1JZCIsImdvb2dsZUlkIiwidXBkYXRlIiwiaW5zZXJ0IiwiX2tleSIsImFkZGVkIiwiY2l0eSIsImNvdW50cnkiLCJmb3JtYXR0ZWQiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsInN0YXRlIiwic3RyZWV0IiwiZmlsdGVyIiwib2JqIiwiam9pbiIsInppcCIsImFxbFFyeSIsImFxbCIsInF1ZXJ5IiwiY3Vyc29yIiwibmV4dCIsInVwZGF0ZWRMb2NhdGlvbiIsIml0ZW1Eb2NJZCIsInVwZGF0ZWRMb2NhdGlvbktleSIsImVkZ2VDb2xsZWN0aW9uIiwibG9jYXRpb25JZCIsImxvY2F0aW9uRG9jSWQiLCJlZGdlSWQiLCJlZGdlIiwic2F2ZSIsImVycm9yIiwiY2F0ZWdvcnkiLCJsYWJlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBOztBQUNBOztBQUNBOztBQUdBOztBQUVBOztBQUlBOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsYUFB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YUFBL0IsQ0FBdkI7QUFDQSxjQUFNQyxVQUFrQixHQUFHRixrQkFBM0I7QUFDQSxjQUFNRyxhQUFxQix1QkFBZ0JELFVBQWhCLENBQTNCO0FBQ0EsY0FBTUUsTUFBTSxHQUFHLDZDQUEwQkYsVUFBMUIsY0FBd0MzRCxTQUF4QyxFQUFmO0FBQ0EsY0FBTThELElBQVMsR0FBRztBQUFDekIsWUFBQUEsSUFBSSxFQUFFd0I7QUFBUCxXQUFsQjtBQUVBLGlCQUFPSCxjQUFjLENBQUNLLElBQWYsQ0FBb0JELElBQXBCLEVBQTBCTixTQUExQixFQUFxQ0ksYUFBckMsRUFBb0RqRCxJQUFwRCxDQUF5RDtBQUFBLG1CQUFNNEMsZUFBTjtBQUFBLFdBQXpELENBQVA7QUFDRCxTQXJCMkMsQ0F1QjVDOzs7QUFDQSxlQUFPQSxlQUFQO0FBQ0QsT0EzQkksV0E0QkUsVUFBQ1MsS0FBRDtBQUFBLGVBQWtCLHNCQUFTO0FBQ2hDbEUsVUFBQUEsTUFBTSxFQUFOQSxNQURnQztBQUVoQ21FLFVBQUFBLFFBQVEsRUFBRXZFLGFBRnNCO0FBR2hDd0UsVUFBQUEsS0FBSyxFQUFFO0FBSHlCLFNBQVQsRUFJdEJGLEtBSnNCLEVBSWZwRSxPQUplLEVBSU5lLElBSk0sQ0FJRDtBQUFBLGlCQUFNLElBQU47QUFBQSxTQUpDLENBQWxCO0FBQUEsT0E1QkYsQ0FBUDtBQWlDRDs7QUFFRCxXQUFPLEVBQVA7QUFDRCxHQWxGSSxDQUFQO0FBbUZELENBOUZNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXQsIHF1ZXJ5U3RyaW5nfSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2FxbC1xdWVyeSc7XG5pbXBvcnQge0FycmF5Q3Vyc29yfSBmcm9tICdhcmFuZ29qcy9saWIvY2pzL2N1cnNvcic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQge0dvb2dsZU1hcHNBZGRyZXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMnO1xuaW1wb3J0IHtsb2dFcnJvciwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2xvY2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBhZGRMb2NhdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhdGlvbjogTG9jYXRpb25UeXBlKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkJztcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7YWRkcmVzcywgaXRlbUlkLCBpdGVtVHlwZX0gPSBsb2NhdGlvbjtcbiAgY29uc3QgZ2VvY29kZVVybDogc3RyaW5nID0gQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUudXJsJyk7XG4gIGNvbnN0IHBhcmFtczogb2JqZWN0ID0ge1xuICAgIGFkZHJlc3MsXG4gICAga2V5OiBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS5rZXknKVxuICB9O1xuICBjb25zdCB1cmw6IHN0cmluZyA9IGAke2dlb2NvZGVVcmx9PyR7cXVlcnlTdHJpbmcocGFyYW1zKX1gO1xuXG4gIHJldHVybiBodHRwR2V0KHVybClcbiAgICAudGhlbigoanNvbikgPT4ge1xuICAgICAgY29uc3Qge3Jlc3VsdHMgPSBbXSwgc3RhdHVzID0gJyd9ID0ganNvbjtcblxuICAgICAgaWYoc3RhdHVzID09PSAnT0snICYmIHJlc3VsdHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGdlb2RhdGE6IG9iamVjdCA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IGFkZHJlc3NDb21wb25lbnRzOiBHb29nbGVNYXBzQWRkcmVzc1R5cGVbXSA9IGdldChnZW9kYXRhLCAnYWRkcmVzc19jb21wb25lbnRzJyk7XG4gICAgICAgIGNvbnN0IGdldEZpZWxkVmFsID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgY29uc3Qge3Nob3J0X25hbWU6IHNob3J0TmFtZSA9ICcnfSA9IGFkZHJlc3NDb21wb25lbnRzLmZpbmQoKGFkZHJlc3NGaWVsZDogR29vZ2xlTWFwc0FkZHJlc3NUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICAgICAgICAgIHJldHVybiB0eXBlcy5maW5kSW5kZXgoKGZpZWxkVHlwZTogc3RyaW5nKSA9PiBmaWVsZFR5cGUgPT09IG5hbWUpID49IDA7XG4gICAgICAgICAgfSkgfHwge307XG5cbiAgICAgICAgICByZXR1cm4gc2hvcnROYW1lO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFN0cmVldFxuICAgICAgICBjb25zdCBzdHJlZXROdW1iZXI6IHN0cmluZyA9IGdldEZpZWxkVmFsKCdzdHJlZXRfbnVtYmVyJyk7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBnZXRGaWVsZFZhbCgncm91dGUnKTtcblxuICAgICAgICAvLyBMb2NhdGlvblxuICAgICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gSXRlbVxuICAgICAgICBjb25zdCBmb3JtYXRJdGVtVHlwZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQ6IHN0cmluZyA9IGdldChnZW9kYXRhLCAncGxhY2VfaWQnKTtcbiAgICAgICAgY29uc3QgdXBkYXRlOiBMb2NhdGlvblR5cGUgPSB7fTtcbiAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKSxcbiAgICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICAgIGNpdHk6IGdldEZpZWxkVmFsKCdsb2NhbGl0eScpLFxuICAgICAgICAgIGNvdW50cnk6IGdldEZpZWxkVmFsKCdjb3VudHJ5JyksXG4gICAgICAgICAgZm9ybWF0dGVkOiBnZXQoZ2VvZGF0YSwgJ2Zvcm1hdHRlZF9hZGRyZXNzJyksXG4gICAgICAgICAgZ29vZ2xlSWQsXG4gICAgICAgICAgbGF0aXR1ZGU6IGdldChnZW9kYXRhLCAnZ2VvbWV0cnkubG9jYXRpb24ubGF0JyksXG4gICAgICAgICAgbG9uZ2l0dWRlOiBnZXQoZ2VvZGF0YSwgJ2dlb21ldHJ5LmxvY2F0aW9uLmxuZycpLFxuICAgICAgICAgIHN0YXRlOiBnZXRGaWVsZFZhbCgnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgICAgICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgICAgICAgIHppcDogZ2V0RmllbGRWYWwoJ3Bvc3RhbF9jb2RlJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge2dvb2dsZUlkOiAke2dvb2dsZUlkfX1cbiAgICAgICAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICAgIElOIGxvY2F0aW9ucyBSRVRVUk4gTkVXYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAudGhlbigodXBkYXRlZExvY2F0aW9uOiBMb2NhdGlvblR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1Eb2NJZDogc3RyaW5nO1xuICAgICAgICAgICAgY29uc3Qge19rZXk6IHVwZGF0ZWRMb2NhdGlvbktleX0gPSB1cGRhdGVkTG9jYXRpb247XG5cbiAgICAgICAgICAgIHN3aXRjaChmb3JtYXRJdGVtVHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdwb3N0cyc6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gYHBvc3RzLyR7Zm9ybWF0SXRlbUlkfWA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaXRlbURvY0lkID0gJyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgdmFsaWQgaXRlbSBkb2MgaWQsIGNyZWF0ZSBhbiBlZGdlXG4gICAgICAgICAgICBpZihpdGVtRG9jSWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZSkuZWRnZUNvbGxlY3Rpb24oJ2hhc0xvY2F0aW9uJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQ6IHN0cmluZyA9IHVwZGF0ZWRMb2NhdGlvbktleTtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZDogc3RyaW5nID0gYGxvY2F0aW9ucy8ke2xvY2F0aW9uSWR9YDtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZTogYW55ID0ge19rZXk6IGVkZ2VJZH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwgaXRlbURvY0lkLCBsb2NhdGlvbkRvY0lkKS50aGVuKCgpID0+IHVwZGF0ZWRMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZExvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7fTtcbiAgICB9KTtcbn07XG4iXX0=
@@ -17,7 +17,7 @@ var _utils2 = require("../utils");
17
17
 
18
18
  var _conversations = require("./conversations");
19
19
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
21
 
22
22
  function _templateObject5() {
23
23
  var data = _taggedTemplateLiteral(["FOR m IN messages\n FILTER m.added < DATE_TIMESTAMP(DATE_SUBTRACT(DATE_NOW(), 60, 'day')) && LENGTH(m.saved) > 0\n REMOVE m IN messages\n RETURN OLD"]);
@@ -85,7 +85,7 @@ var getMessageList = function getMessageList(context, convoId, from, to) {
85
85
  var aqlQry = "FOR m IN messages\n FILTER m.to == \"".concat(conversationKey, "\"\n ").concat(limit.aql, "\n SORT m.added\n RETURN m");
86
86
  return (0, _utils2.useDb)(database).query(aqlQry).then(function (cursor) {
87
87
  return cursor.all();
88
- }).catch(function (error) {
88
+ })["catch"](function (error) {
89
89
  throw error;
90
90
  });
91
91
  });
@@ -120,7 +120,7 @@ var updateMessage = function updateMessage(context, message) {
120
120
  var formatMsgId = (0, _utils.parseId)(msgId);
121
121
  var updatedId = formatMsgId === '' ? (0, _utils.createHash)("message-".concat(sessionId)) : formatMsgId;
122
122
 
123
- var insert = _objectSpread({}, (0, _cloneDeep.default)(update), {
123
+ var insert = _objectSpread({}, (0, _cloneDeep["default"])(update), {
124
124
  _key: updatedId,
125
125
  added: now
126
126
  });
@@ -156,7 +156,7 @@ var updateMessage = function updateMessage(context, message) {
156
156
  // }
157
157
  console.log('updatedMessage', updatedMessage);
158
158
  return updatedMessage;
159
- }).catch(function (error) {
159
+ })["catch"](function (error) {
160
160
  throw error;
161
161
  });
162
162
  });
@@ -176,13 +176,13 @@ var saveMessage = function saveMessage(context, msgId, convoId) {
176
176
  }).then(function () {
177
177
  var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
178
178
 
179
- if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
179
+ if (!(0, _isEmpty["default"])(message)) {// Broadcast to message box
180
180
  // const msg: MessageType = Messages.getMessageObject(message);
181
181
  // io.to(message.toId).emit('message_save', msg);
182
182
  }
183
183
 
184
184
  return message;
185
- }).catch(function (error) {
185
+ })["catch"](function (error) {
186
186
  throw error;
187
187
  });
188
188
  });
@@ -202,13 +202,13 @@ var unsaveMessage = function unsaveMessage(context, msgId, convoId) {
202
202
  }).then(function () {
203
203
  var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
204
204
 
205
- if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
205
+ if (!(0, _isEmpty["default"])(message)) {// Broadcast to message box
206
206
  // const msg: MessageType = Messages.getMessageObject(message);
207
207
  // io.to(message.id).emit('message_unsave', msg);
208
208
  }
209
209
 
210
210
  return message;
211
- }).catch(function (error) {
211
+ })["catch"](function (error) {
212
212
  throw error;
213
213
  });
214
214
  });
@@ -228,13 +228,13 @@ var deleteMessage = function deleteMessage(context, msgId, convoId) {
228
228
  }).then(function () {
229
229
  var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
230
230
 
231
- if (!(0, _isEmpty.default)(message)) {// Broadcast to message box
231
+ if (!(0, _isEmpty["default"])(message)) {// Broadcast to message box
232
232
  // const msg: MessageType = Messages.getMessageObject(message);
233
233
  // io.to(message.toId).emit('message_delete', msg);
234
234
  }
235
235
 
236
236
  return message;
237
- }).catch(function (error) {
237
+ })["catch"](function (error) {
238
238
  throw error;
239
239
  });
240
240
  });
@@ -272,10 +272,10 @@ var cleanMessages = function cleanMessages(database) {
272
272
  return cursor.all();
273
273
  }).then(function (list) {
274
274
  return list.length;
275
- }).catch(function (error) {
275
+ })["catch"](function (error) {
276
276
  throw error;
277
277
  });
278
278
  };
279
279
 
280
280
  exports.cleanMessages = cleanMessages;
281
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbImdldE1lc3NhZ2VMaXN0IiwiY29udGV4dCIsImNvbnZvSWQiLCJmcm9tIiwidG8iLCJkYXRhYmFzZSIsImZvcm1hdENvbnZvSWQiLCJ0aGVuIiwiY29udmVyc2F0aW9uIiwiY29udmVyc2F0aW9uS2V5IiwiX2tleSIsImxpbWl0IiwiYXFsUXJ5IiwiYXFsIiwicXVlcnkiLCJjdXJzb3IiLCJhbGwiLCJjYXRjaCIsImVycm9yIiwidXBkYXRlTWVzc2FnZSIsIm1lc3NhZ2UiLCJzZXNzaW9uSWQiLCJ1c2VySWQiLCJmaWxlcyIsImltYWdlcyIsIm1zZ0lkIiwiRXJyb3IiLCJub3ciLCJEYXRlIiwidXBkYXRlIiwiY29udGVudCIsIm1vZGlmaWVkIiwiZm9ybWF0TXNnSWQiLCJ1cGRhdGVkSWQiLCJpbnNlcnQiLCJhZGRlZCIsIm5leHQiLCJ1cGRhdGVkTWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJzYXZlTWVzc2FnZSIsImZvcm1hdElkIiwidW5zYXZlTWVzc2FnZSIsImRlbGV0ZU1lc3NhZ2UiLCJnZXRNZXNzYWdlIiwiZGF0YSIsInJlYWQiLCJzYXZlZCIsImNsZWFuTWVzc2FnZXMiLCJsaXN0IiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBTUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBRU8sSUFBTUEsY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUM1QkMsT0FENEIsRUFFNUJDLE9BRjRCLEVBRzVCQyxJQUg0QixFQUk1QkMsRUFKNEIsRUFLRDtBQUFBLE1BQ3BCQyxRQURvQixHQUNSSixPQURRLENBQ3BCSSxRQURvQjtBQUUzQixNQUFNQyxhQUFxQixHQUFHLG9CQUFRSixPQUFSLENBQTlCO0FBRUEsU0FBTyxvQ0FBZ0JELE9BQWhCLEVBQXlC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dCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVZhckNoYXJ9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9hcWwtcXVlcnknO1xuaW1wb3J0IHtBcnJheUN1cnNvcn0gZnJvbSAnYXJhbmdvanMvbGliL2Nqcy9jdXJzb3InO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5JztcblxuaW1wb3J0IHtBcmFuZ29EQkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYic7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgnO1xuaW1wb3J0IHtDb252ZXJzYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9jb252ZXJzYXRpb25zJztcbmltcG9ydCB7TWVzc2FnZUlucHV0VHlwZSwgTWVzc2FnZVR5cGV9IGZyb20gJy4uL3R5cGVzL21lc3NhZ2VzJztcbmltcG9ydCB7Z2V0TGltaXQsIHVzZURifSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2dldENvbnZlcnNhdGlvbn0gZnJvbSAnLi9jb252ZXJzYXRpb25zJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGNvbnN0IGdldE1lc3NhZ2VMaXN0ID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb252b0lkOiBzdHJpbmcsXG4gIGZyb206IG51bWJlcixcbiAgdG86IG51bWJlclxuKTogUHJvbWlzZTxNZXNzYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgZm9ybWF0Q29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGxpbWl0OiBBcmFuZ29EQkxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuICAgICAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBGSUxURVIgbS50byA9PSBcIiR7Y29udmVyc2F0aW9uS2V5fVwiXG4gICAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgICAgU09SVCBtLmFkZGVkXG4gICAgICAgICAgUkVUVVJOIG1gO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlOiBNZXNzYWdlSW5wdXRUeXBlKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtjb252b0lkLCBmaWxlcywgaW1hZ2VzLCBtc2dJZH0gPSBtZXNzYWdlO1xuICBjb25zdCBmb3JtYXRDb252b0lkOiBzdHJpbmcgPSBwYXJzZUlkKGNvbnZvSWQpO1xuXG4gIGlmKGZvcm1hdENvbnZvSWQgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlZF9jb252b0lkJyk7XG4gIH1cblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGZvcm1hdENvbnZvSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB1cGRhdGU6IE1lc3NhZ2VUeXBlID0ge1xuICAgICAgICBjb250ZW50OiBwYXJzZVZhckNoYXIobWVzc2FnZS5jb250ZW50LCA2NDApLFxuICAgICAgICBjb252b0lkOiBmb3JtYXRDb252b0lkLFxuICAgICAgICBmaWxlczogZmlsZXMgfHwgW10sXG4gICAgICAgIGltYWdlczogaW1hZ2VzIHx8IFtdLFxuICAgICAgICBtb2RpZmllZDogbm93LFxuICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdE1zZ0lkOiBzdHJpbmcgPSBwYXJzZUlkKG1zZ0lkKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRJZDogc3RyaW5nID0gZm9ybWF0TXNnSWQgPT09ICcnID8gY3JlYXRlSGFzaChgbWVzc2FnZS0ke3Nlc3Npb25JZH1gKSA6IGZvcm1hdE1zZ0lkO1xuICAgICAgY29uc3QgaW5zZXJ0OiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgLi4uY2xvbmVEZWVwKHVwZGF0ZSksXG4gICAgICAgIF9rZXk6IHVwZGF0ZWRJZCxcbiAgICAgICAgYWRkZWQ6IG5vd1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke3VwZGF0ZWRJZH0sIGNvbnZvSWQ6ICR7Y29udmVyc2F0aW9uS2V5fX1cbiAgICAgICAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgICAgICAgVVBEQVRFICR7dXBkYXRlfVxuICAgICAgICAgIElOIG1lc3NhZ2VzIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKCh1cGRhdGVkTWVzc2FnZTogTWVzc2FnZVR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgIC8vIGNvbnN0IHtcbiAgICAgICAgICAvLyAgIF9rZXk6IG1zZ0lkLFxuICAgICAgICAgIC8vICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgICAgICAgIC8vICAgY29udGVudDogbXNnQ29udGVudCxcbiAgICAgICAgICAvLyAgIGZpbGVzOiBtc2dGaWxlcyxcbiAgICAgICAgICAvLyAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgICAgICAgIC8vICAgcmVhZDogbXNnUmVhZCxcbiAgICAgICAgICAvLyAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICAgICAgICAvLyAgIHRvSWQ6IG1zZ1RvSWRcbiAgICAgICAgICAvLyB9ID0gdXBkYXRlZE1lc3NhZ2U7XG5cbiAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAvLyBpZihpbykge1xuICAgICAgICAgIC8vICAgY29uc3QgbXNnOiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgICAvLyAgICAgYWRkZWQ6IG1zZ0FkZGVkLFxuICAgICAgICAgIC8vICAgICBjb250ZW50OiBtc2dDb250ZW50LFxuICAgICAgICAgIC8vICAgICBmaWxlczogbXNnRmlsZXMsXG4gICAgICAgICAgLy8gICAgIGZyb21JZDogbXNnRnJvbUlkLFxuICAgICAgICAgIC8vICAgICBpZDogbXNnSWQsXG4gICAgICAgICAgLy8gICAgIHJlYWQ6IG1zZ1JlYWQsXG4gICAgICAgICAgLy8gICAgIHNhdmVkOiBtc2dTYXZlZCxcbiAgICAgICAgICAvLyAgICAgdG9JZDogbXNnVG9JZFxuICAgICAgICAgIC8vICAgfTtcblxuICAgICAgICAgIC8vICAgaW8udG8obXNnVG9JZCkuZW1pdCgnbWVzc2FnZV91cGRhdGUnLCBtc2cpO1xuICAgICAgICAgIC8vIH1cblxuICAgICAgICAgIGNvbnNvbGUubG9nKCd1cGRhdGVkTWVzc2FnZScsIHVwZGF0ZWRNZXNzYWdlKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZE1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNhdmVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1zZ0lkOiBzdHJpbmcsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtc2dJZCk7XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBjb252b0lkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX1cbiAgICAgICAgVVBEQVRFIG0gV0lUSCB7c2F2ZWQ6IEFQUEVORChtLnNhdmVkLCAke3Nlc3Npb25JZH0sIHRydWUpfSBJTiBtZXNzYWdlc1xuICAgICAgICBSRVRVUk4gTkVXYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZVR5cGUgPSB7fSkgPT4ge1xuICAgICAgICAgIGlmKCFpc0VtcHR5KG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAgIC8vIGNvbnN0IG1zZzogTWVzc2FnZVR5cGUgPSBNZXNzYWdlcy5nZXRNZXNzYWdlT2JqZWN0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gaW8udG8obWVzc2FnZS50b0lkKS5lbWl0KCdtZXNzYWdlX3NhdmUnLCBtc2cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1bnNhdmVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1zZ0lkOiBzdHJpbmcsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtc2dJZCk7XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBjb252b0lkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX1cbiAgICAgICAgICBVUERBVEUgbSBXSVRIIHtzYXZlZDogUkVNT1ZFX1ZBTFVFKG0uc2F2ZWQsICR7c2Vzc2lvbklkfSl9IElOIG1lc3NhZ2VzXG4gICAgICAgICAgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UuaWQpLmVtaXQoJ21lc3NhZ2VfdW5zYXZlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9ICYmIG0uZnJvbSA9PSAke3Nlc3Npb25JZH1cbiAgICAgICAgUkVNT1ZFIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9kZWxldGUnLCBtc2cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNZXNzYWdlID0gKGRhdGE6IE1lc3NhZ2VUeXBlKTogTWVzc2FnZVR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgYWRkZWQsXG4gICAgY29udGVudCxcbiAgICBjb252b0lkLFxuICAgIGZpbGVzLFxuICAgIF9rZXk6IG1zZ0lkLFxuICAgIHJlYWQsXG4gICAgc2F2ZWQsXG4gICAgdXNlcklkXG4gIH0gPSBkYXRhO1xuXG4gIHJldHVybiB7XG4gICAgYWRkZWQsXG4gICAgY29udGVudCxcbiAgICBjb252b0lkLFxuICAgIGZpbGVzLFxuICAgIG1zZ0lkLFxuICAgIHJlYWQsXG4gICAgc2F2ZWQsXG4gICAgdXNlcklkXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYW5NZXNzYWdlcyA9IChkYXRhYmFzZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgLy8gUmVtb3ZlIGFsbCBtZXNzYWdlcyB0aGF0IGFyZSBvdmVyIDYwIGRheXMgYW5kIG5vdCBzYXZlZFxuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgIEZJTFRFUiBtLmFkZGVkIDwgREFURV9USU1FU1RBTVAoREFURV9TVUJUUkFDVChEQVRFX05PVygpLCA2MCwgJ2RheScpKSAmJiBMRU5HVEgobS5zYXZlZCkgPiAwXG4gICAgICBSRU1PVkUgbSBJTiBtZXNzYWdlc1xuICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigobGlzdDogTWVzc2FnZVR5cGVbXSkgPT4gbGlzdC5sZW5ndGgpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcbiJdfQ==
281
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbImdldE1lc3NhZ2VMaXN0IiwiY29udGV4dCIsImNvbnZvSWQiLCJmcm9tIiwidG8iLCJkYXRhYmFzZSIsImZvcm1hdENvbnZvSWQiLCJ0aGVuIiwiY29udmVyc2F0aW9uIiwiY29udmVyc2F0aW9uS2V5IiwiX2tleSIsImxpbWl0IiwiYXFsUXJ5IiwiYXFsIiwicXVlcnkiLCJjdXJzb3IiLCJhbGwiLCJlcnJvciIsInVwZGF0ZU1lc3NhZ2UiLCJtZXNzYWdlIiwic2Vzc2lvbklkIiwidXNlcklkIiwiZmlsZXMiLCJpbWFnZXMiLCJtc2dJZCIsIkVycm9yIiwibm93IiwiRGF0ZSIsInVwZGF0ZSIsImNvbnRlbnQiLCJtb2RpZmllZCIsImZvcm1hdE1zZ0lkIiwidXBkYXRlZElkIiwiaW5zZXJ0IiwiYWRkZWQiLCJuZXh0IiwidXBkYXRlZE1lc3NhZ2UiLCJjb25zb2xlIiwibG9nIiwic2F2ZU1lc3NhZ2UiLCJmb3JtYXRJZCIsInVuc2F2ZU1lc3NhZ2UiLCJkZWxldGVNZXNzYWdlIiwiZ2V0TWVzc2FnZSIsImRhdGEiLCJyZWFkIiwic2F2ZWQiLCJjbGVhbk1lc3NhZ2VzIiwibGlzdCIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBOztBQUNBOztBQUdBOztBQUNBOztBQU1BOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUVPLElBQU1BLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FDNUJDLE9BRDRCLEVBRTVCQyxPQUY0QixFQUc1QkMsSUFINEIsRUFJNUJDLEVBSjRCLEVBS0Q7QUFBQSxNQUNwQkMsUUFEb0IsR0FDUkosT0FEUSxDQUNwQkksUUFEb0I7QUFFM0IsTUFBTUMsYUFBcUIsR0FBRyxvQkFBUUosT0FBUixDQUE5QjtBQUVBLFNBQU8sb0NBQWdCRCxPQUFoQixFQUF5QkssYUFBekIs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VndELENBSzFEdEIsS0FMMEQ7QUFBQSxNQU1wREUsS0FOb0QsR0FVeERvQixJQVZ3RCxDQU0xRGxDLElBTjBEO0FBQUEsTUFPMURtQyxJQVAwRCxHQVV4REQsSUFWd0QsQ0FPMURDLElBUDBEO0FBQUEsTUFRMURDLEtBUjBELEdBVXhERixJQVZ3RCxDQVExREUsS0FSMEQ7QUFBQSxNQVMxRHpCLE1BVDBELEdBVXhEdUIsSUFWd0QsQ0FTMUR2QixNQVQwRDtBQVk1RCxTQUFPO0FBQ0xhLElBQUFBLEtBQUssRUFBTEEsS0FESztBQUVMTCxJQUFBQSxPQUFPLEVBQVBBLE9BRks7QUFHTDNCLElBQUFBLE9BQU8sRUFBUEEsT0FISztBQUlMb0IsSUFBQUEsS0FBSyxFQUFMQSxLQUpLO0FBS0xFLElBQUFBLEtBQUssRUFBTEEsS0FMSztBQU1McUIsSUFBQUEsSUFBSSxFQUFKQSxJQU5LO0FBT0xDLElBQUFBLEtBQUssRUFBTEEsS0FQSztBQVFMekIsSUFBQUEsTUFBTSxFQUFOQTtBQVJLLEdBQVA7QUFVRCxDQXRCTTs7OztBQXdCQSxJQUFNMEIsYUFBYSxHQUFHLFNBQWhCQSxhQUFnQixDQUFDMUMsUUFBRCxFQUF1QztBQUNsRTtBQUNBLE1BQU1PLE1BQU0sT0FBR0MsYUFBSCxxQkFBWjtBQUtBLFNBQU8sbUJBQU1SLFFBQU4sRUFBZ0JTLEtBQWhCLENBQXNCRixNQUF0QixFQUNKTCxJQURJLENBQ0MsVUFBQ1EsTUFBRDtBQUFBLFdBQXlCQSxNQUFNLENBQUNDLEdBQVAsRUFBekI7QUFBQSxHQURELEVBRUpULElBRkksQ0FFQyxVQUFDeUMsSUFBRDtBQUFBLFdBQXlCQSxJQUFJLENBQUNDLE1BQTlCO0FBQUEsR0FGRCxXQUdFLFVBQUNoQyxLQUFELEVBQWtCO0FBQ3ZCLFVBQU1BLEtBQU47QUFDRCxHQUxJLENBQVA7QUFNRCxDQWJNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VJZCwgcGFyc2VWYXJDaGFyfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvYXFsLXF1ZXJ5JztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2xpYi9janMvY3Vyc29yJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5cbmltcG9ydCB7QXJhbmdvREJMaW1pdH0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGInO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoJztcbmltcG9ydCB7Q29udmVyc2F0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvY29udmVyc2F0aW9ucyc7XG5pbXBvcnQge01lc3NhZ2VJbnB1dFR5cGUsIE1lc3NhZ2VUeXBlfSBmcm9tICcuLi90eXBlcy9tZXNzYWdlcyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtnZXRDb252ZXJzYXRpb259IGZyb20gJy4vY29udmVyc2F0aW9ucyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdtZXNzYWdlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRNZXNzYWdlTGlzdCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udm9JZDogc3RyaW5nLFxuICBmcm9tOiBudW1iZXIsXG4gIHRvOiBudW1iZXJcbik6IFByb21pc2U8TWVzc2FnZVR5cGVbXT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0Q29udm9JZDogc3RyaW5nID0gcGFyc2VJZChjb252b0lkKTtcblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGZvcm1hdENvbnZvSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBsaW1pdDogQXJhbmdvREJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgICAgIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgICAgRklMVEVSIG0udG8gPT0gXCIke2NvbnZlcnNhdGlvbktleX1cIlxuICAgICAgICAgICR7bGltaXQuYXFsfVxuICAgICAgICAgIFNPUlQgbS5hZGRlZFxuICAgICAgICAgIFJFVFVSTiBtYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZTogTWVzc2FnZUlucHV0VHlwZSk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlLCB1c2VySWQ6IHNlc3Npb25JZH0gPSBjb250ZXh0O1xuICBjb25zdCB7Y29udm9JZCwgZmlsZXMsIGltYWdlcywgbXNnSWR9ID0gbWVzc2FnZTtcbiAgY29uc3QgZm9ybWF0Q29udm9JZDogc3RyaW5nID0gcGFyc2VJZChjb252b0lkKTtcblxuICBpZihmb3JtYXRDb252b0lkID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVxdWlyZWRfY29udm9JZCcpO1xuICB9XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBmb3JtYXRDb252b0lkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdXBkYXRlOiBNZXNzYWdlVHlwZSA9IHtcbiAgICAgICAgY29udGVudDogcGFyc2VWYXJDaGFyKG1lc3NhZ2UuY29udGVudCwgNjQwKSxcbiAgICAgICAgY29udm9JZDogZm9ybWF0Q29udm9JZCxcbiAgICAgICAgZmlsZXM6IGZpbGVzIHx8IFtdLFxuICAgICAgICBpbWFnZXM6IGltYWdlcyB8fCBbXSxcbiAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWRcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRNc2dJZDogc3RyaW5nID0gcGFyc2VJZChtc2dJZCk7XG4gICAgICBjb25zdCB1cGRhdGVkSWQ6IHN0cmluZyA9IGZvcm1hdE1zZ0lkID09PSAnJyA/IGNyZWF0ZUhhc2goYG1lc3NhZ2UtJHtzZXNzaW9uSWR9YCkgOiBmb3JtYXRNc2dJZDtcbiAgICAgIGNvbnN0IGluc2VydDogTWVzc2FnZVR5cGUgPSB7XG4gICAgICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgICAgICBfa2V5OiB1cGRhdGVkSWQsXG4gICAgICAgIGFkZGVkOiBub3dcbiAgICAgIH07XG4gICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHt1cGRhdGVkSWR9LCBjb252b0lkOiAke2NvbnZlcnNhdGlvbktleX19XG4gICAgICAgICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICBJTiBtZXNzYWdlcyBSRVRVUk4gTkVXYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigodXBkYXRlZE1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICAvLyBjb25zdCB7XG4gICAgICAgICAgLy8gICBfa2V5OiBtc2dJZCxcbiAgICAgICAgICAvLyAgIGFkZGVkOiBtc2dBZGRlZCxcbiAgICAgICAgICAvLyAgIGNvbnRlbnQ6IG1zZ0NvbnRlbnQsXG4gICAgICAgICAgLy8gICBmaWxlczogbXNnRmlsZXMsXG4gICAgICAgICAgLy8gICBmcm9tSWQ6IG1zZ0Zyb21JZCxcbiAgICAgICAgICAvLyAgIHJlYWQ6IG1zZ1JlYWQsXG4gICAgICAgICAgLy8gICBzYXZlZDogbXNnU2F2ZWQsXG4gICAgICAgICAgLy8gICB0b0lkOiBtc2dUb0lkXG4gICAgICAgICAgLy8gfSA9IHVwZGF0ZWRNZXNzYWdlO1xuXG4gICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgLy8gaWYoaW8pIHtcbiAgICAgICAgICAvLyAgIGNvbnN0IG1zZzogTWVzc2FnZVR5cGUgPSB7XG4gICAgICAgICAgLy8gICAgIGFkZGVkOiBtc2dBZGRlZCxcbiAgICAgICAgICAvLyAgICAgY29udGVudDogbXNnQ29udGVudCxcbiAgICAgICAgICAvLyAgICAgZmlsZXM6IG1zZ0ZpbGVzLFxuICAgICAgICAgIC8vICAgICBmcm9tSWQ6IG1zZ0Zyb21JZCxcbiAgICAgICAgICAvLyAgICAgaWQ6IG1zZ0lkLFxuICAgICAgICAgIC8vICAgICByZWFkOiBtc2dSZWFkLFxuICAgICAgICAgIC8vICAgICBzYXZlZDogbXNnU2F2ZWQsXG4gICAgICAgICAgLy8gICAgIHRvSWQ6IG1zZ1RvSWRcbiAgICAgICAgICAvLyAgIH07XG5cbiAgICAgICAgICAvLyAgIGlvLnRvKG1zZ1RvSWQpLmVtaXQoJ21lc3NhZ2VfdXBkYXRlJywgbXNnKTtcbiAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZygndXBkYXRlZE1lc3NhZ2UnLCB1cGRhdGVkTWVzc2FnZSk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRNZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9XG4gICAgICAgIFVQREFURSBtIFdJVEgge3NhdmVkOiBBUFBFTkQobS5zYXZlZCwgJHtzZXNzaW9uSWR9LCB0cnVlKX0gSU4gbWVzc2FnZXNcbiAgICAgICAgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yOiBBcnJheUN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0ge30pID0+IHtcbiAgICAgICAgICBpZighaXNFbXB0eShtZXNzYWdlKSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtc2c6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9zYXZlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5zYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtc2dJZDogc3RyaW5nLCBjb252b0lkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZSwgdXNlcklkOiBzZXNzaW9uSWR9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobXNnSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udm9JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9XG4gICAgICAgICAgVVBEQVRFIG0gV0lUSCB7c2F2ZWQ6IFJFTU9WRV9WQUxVRShtLnNhdmVkLCAke3Nlc3Npb25JZH0pfSBJTiBtZXNzYWdlc1xuICAgICAgICAgIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbXNnOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VzLmdldE1lc3NhZ2VPYmplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBpby50byhtZXNzYWdlLmlkKS5lbWl0KCdtZXNzYWdlX3Vuc2F2ZScsIG1zZyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbXNnSWQ6IHN0cmluZywgY29udm9JZDogc3RyaW5nKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2UsIHVzZXJJZDogc2Vzc2lvbklkfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKG1zZ0lkKTtcblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGNvbnZvSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fSAmJiBtLmZyb20gPT0gJHtzZXNzaW9uSWR9XG4gICAgICAgIFJFTU9WRSBtIElOIG1lc3NhZ2VzXG4gICAgICAgIFJFVFVSTiBPTERgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2UpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgICAgaWYoIWlzRW1wdHkobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbXNnOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VzLmdldE1lc3NhZ2VPYmplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBpby50byhtZXNzYWdlLnRvSWQpLmVtaXQoJ21lc3NhZ2VfZGVsZXRlJywgbXNnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVzc2FnZSA9IChkYXRhOiBNZXNzYWdlVHlwZSk6IE1lc3NhZ2VUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIGFkZGVkLFxuICAgIGNvbnRlbnQsXG4gICAgY29udm9JZCxcbiAgICBmaWxlcyxcbiAgICBfa2V5OiBtc2dJZCxcbiAgICByZWFkLFxuICAgIHNhdmVkLFxuICAgIHVzZXJJZFxuICB9ID0gZGF0YTtcblxuICByZXR1cm4ge1xuICAgIGFkZGVkLFxuICAgIGNvbnRlbnQsXG4gICAgY29udm9JZCxcbiAgICBmaWxlcyxcbiAgICBtc2dJZCxcbiAgICByZWFkLFxuICAgIHNhdmVkLFxuICAgIHVzZXJJZFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFuTWVzc2FnZXMgPSAoZGF0YWJhc2U6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIC8vIFJlbW92ZSBhbGwgbWVzc2FnZXMgdGhhdCBhcmUgb3ZlciA2MCBkYXlzIGFuZCBub3Qgc2F2ZWRcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICBGSUxURVIgbS5hZGRlZCA8IERBVEVfVElNRVNUQU1QKERBVEVfU1VCVFJBQ1QoREFURV9OT1coKSwgNjAsICdkYXknKSkgJiYgTEVOR1RIKG0uc2F2ZWQpID4gMFxuICAgICAgUkVNT1ZFIG0gSU4gbWVzc2FnZXNcbiAgICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKGxpc3Q6IE1lc3NhZ2VUeXBlW10pID0+IGxpc3QubGVuZ3RoKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG4iXX0=