@nlabs/reaktor 0.1.11 → 0.1.12

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.
Files changed (48) hide show
  1. package/package.json +14 -14
  2. package/lib/config.js +0 -139
  3. package/lib/data/conversations.js +0 -228
  4. package/lib/data/dynamodb.js +0 -172
  5. package/lib/data/email.js +0 -194
  6. package/lib/data/files.js +0 -463
  7. package/lib/data/groups.js +0 -401
  8. package/lib/data/images.js +0 -841
  9. package/lib/data/index.js +0 -234
  10. package/lib/data/ios.js +0 -327
  11. package/lib/data/locations.js +0 -148
  12. package/lib/data/messages.js +0 -281
  13. package/lib/data/notifications.js +0 -59
  14. package/lib/data/payments.js +0 -798
  15. package/lib/data/posts.js +0 -637
  16. package/lib/data/reactions.js +0 -243
  17. package/lib/data/s3.js +0 -133
  18. package/lib/data/search.js +0 -111
  19. package/lib/data/sms.js +0 -79
  20. package/lib/data/subscription.js +0 -311
  21. package/lib/data/tags.js +0 -343
  22. package/lib/data/users.js +0 -415
  23. package/lib/index.js +0 -42
  24. package/lib/types/apps.js +0 -2
  25. package/lib/types/arangodb.js +0 -2
  26. package/lib/types/auth.js +0 -2
  27. package/lib/types/conversations.js +0 -2
  28. package/lib/types/email.js +0 -2
  29. package/lib/types/files.js +0 -2
  30. package/lib/types/google.js +0 -2
  31. package/lib/types/groups.js +0 -2
  32. package/lib/types/images.js +0 -2
  33. package/lib/types/index.js +0 -210
  34. package/lib/types/locations.js +0 -2
  35. package/lib/types/messages.js +0 -2
  36. package/lib/types/notifications.js +0 -2
  37. package/lib/types/payments.js +0 -2
  38. package/lib/types/posts.js +0 -2
  39. package/lib/types/reactions.js +0 -2
  40. package/lib/types/tags.js +0 -2
  41. package/lib/types/users.js +0 -2
  42. package/lib/utils/analytics.js +0 -59
  43. package/lib/utils/arangodb.js +0 -131
  44. package/lib/utils/auth.js +0 -104
  45. package/lib/utils/graphql.js +0 -19
  46. package/lib/utils/index.js +0 -78
  47. package/lib/utils/objects.js +0 -54
  48. package/lib/utils/redis.js +0 -28
package/lib/data/email.js DELETED
@@ -1,194 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.sesSend = exports.sendTemplate = exports.sendEmail = exports.appTemplate = void 0;
7
-
8
- var _awsSdk = _interopRequireWildcard(require("aws-sdk"));
9
-
10
- var _fs = _interopRequireDefault(require("fs"));
11
-
12
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
13
-
14
- var _config = require("../config");
15
-
16
- var _s = require("./s3");
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
21
-
22
- /**
23
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
24
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
25
- */
26
- // const eventCategory: string = 'email';
27
- var appTemplate = function appTemplate(app) {
28
- var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
29
- var vars = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
30
- var updatedMessage = '';
31
-
32
- if (!(0, _isEmpty.default)(app)) {
33
- updatedMessage = message.replace(/\[appName\]/g, app.name).replace(/\[appUrl\]/g, app.url).replace(/\[appEmail\]/g, app.email);
34
- }
35
-
36
- Object.keys(vars).forEach(function (key) {
37
- if (vars[key]) {
38
- updatedMessage = message.replace(new RegExp("\\[".concat(key, "\\]"), 'g'), vars[key]);
39
- }
40
- });
41
- return updatedMessage;
42
- };
43
-
44
- exports.appTemplate = appTemplate;
45
-
46
- var sendEmail = function sendEmail(params) {
47
- var _params$app = params.app,
48
- app = _params$app === void 0 ? {} : _params$app,
49
- html = params.html,
50
- subject = params.subject,
51
- _params$subTitle = params.subTitle,
52
- subTitle = _params$subTitle === void 0 ? '' : _params$subTitle,
53
- text = params.text,
54
- _params$title = params.title,
55
- title = _params$title === void 0 ? '' : _params$title,
56
- _params$user = params.user,
57
- user = _params$user === void 0 ? {} : _params$user;
58
- var to = [user.email];
59
- var promise;
60
- var formatSubject = appTemplate(app, subject);
61
- var formatSubTitle = appTemplate(app, subTitle);
62
- var formatTitle = appTemplate(app, title);
63
- var formatText = appTemplate(app, text);
64
- var formatHtml = appTemplate(app, html);
65
- var hasCustomEmail = app._key,
66
- urlFacebook = app.urlFacebook,
67
- urlTwitter = app.urlTwitter;
68
-
69
- var parseTemplate = function parseTemplate(body) {
70
- var templateBody = appTemplate(app, body || ''); // Links
71
-
72
- var links = '';
73
- var spacer = '<td width="5"><img width="1" height="1" border="0" title="" alt="" ' + 'src="https://box.reaktor.io/images/email/spacer.gif"/></td>';
74
-
75
- if (urlFacebook) {
76
- links = "<td width=\"30\"><a href=\"".concat(urlFacebook, "\"><img width=\"30\" height=\"30\" border=\"0\" ") + 'title="Facebook" alt="Facebook" src="https://box.reaktor.io/images/email/icon-facebook.png"/></a></td>';
77
- }
78
-
79
- if (urlTwitter) {
80
- if (urlFacebook) {
81
- links += spacer;
82
- }
83
-
84
- links += "<td width=\"30\"><a href=\"".concat(urlTwitter, "\"><img width=\"30\" height=\"30\" border=\"0\" ") + 'title="Twitter" alt="Twitter" src="https://box.reaktor.io/images/email/icon-twitter.png"/></a></td>';
85
- }
86
-
87
- if (!links.length) {
88
- links += spacer;
89
- }
90
-
91
- return templateBody.replace(/\[title\]/g, formatTitle).replace(/\[subTitle\]/g, formatSubTitle).replace(/\[subject\]/g, formatSubject).replace(/\[message\]/g, formatHtml).replace(/\[links\]/g, links);
92
- };
93
-
94
- if (hasCustomEmail) {
95
- var s3Params = {
96
- Bucket: null,
97
- Key: "apps/templates/email.html"
98
- };
99
- promise = (0, _s.s3Get)(s3Params).then(function (results) {
100
- return parseTemplate(results.Body.toString());
101
- });
102
- } else {
103
- promise = new Promise(function (resolve, reject) {
104
- _fs.default.readFile('./templates/email/layout.html', 'utf8', function (err, data) {
105
- if (err) {
106
- return reject(err);
107
- }
108
-
109
- return resolve(parseTemplate(data));
110
- });
111
- });
112
- }
113
-
114
- return promise.then(function (parsedHtml) {
115
- var emailParams = {
116
- Destination: {
117
- ToAddresses: to
118
- },
119
- Message: {
120
- Body: {
121
- Html: {
122
- Data: parsedHtml
123
- },
124
- Text: {
125
- Data: formatText
126
- }
127
- },
128
- Subject: {
129
- Data: formatSubject
130
- }
131
- },
132
- Source: "\"".concat(app.supportName, "\" <noreply@").concat(_config.Config.get('app.url'), ">")
133
- };
134
- return sesSend(emailParams);
135
- });
136
- };
137
-
138
- exports.sendEmail = sendEmail;
139
-
140
- var sendTemplate = function sendTemplate(templateName, emailParams) {
141
- var app = emailParams.app,
142
- user = emailParams.user,
143
- subject = emailParams.subject,
144
- subTitle = emailParams.subTitle,
145
- title = emailParams.title,
146
- vars = emailParams.vars;
147
-
148
- try {
149
- var html = _fs.default.readFileSync("./templates/email/".concat(templateName, ".html"), 'utf8');
150
-
151
- var templateHtml = appTemplate(app, html, vars);
152
-
153
- var text = _fs.default.readFileSync("./templates/sms/".concat(templateName, ".txt"), 'utf8');
154
-
155
- var templateText = appTemplate(app, text, vars);
156
- var params = {
157
- app: app,
158
- html: templateHtml,
159
- subTitle: subTitle,
160
- subject: subject,
161
- text: templateText,
162
- title: title,
163
- user: user
164
- };
165
- return sendEmail(params).then(function () {
166
- return true;
167
- }).catch(function () {
168
- return false;
169
- });
170
- } catch (error) {
171
- return Promise.reject(error);
172
- }
173
- }; // AWS::SES
174
-
175
-
176
- exports.sendTemplate = sendTemplate;
177
-
178
- var sesSend = function sesSend(params) {
179
- return new Promise(function (resolve, reject) {
180
- _awsSdk.default.config.update(_config.Config.get('aws'));
181
-
182
- var ses = new _awsSdk.SES();
183
- ses.sendEmail(params, function (error, response) {
184
- if (error) {
185
- return reject(error);
186
- }
187
-
188
- return resolve(response);
189
- });
190
- });
191
- };
192
-
193
- exports.sesSend = sesSend;
194
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2VtYWlsLnRzIl0sIm5hbWVzIjpbImFwcFRlbXBsYXRlIiwiYXBwIiwibWVzc2FnZSIsInZhcnMiLCJ1cGRhdGVkTWVzc2FnZSIsInJlcGxhY2UiLCJuYW1lIiwidXJsIiwiZW1haWwiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsIlJlZ0V4cCIsInNlbmRFbWFpbCIsInBhcmFtcyIsImh0bWwiLCJzdWJqZWN0Iiwic3ViVGl0bGUiLCJ0ZXh0IiwidGl0bGUiLCJ1c2VyIiwidG8iLCJwcm9taXNlIiwiZm9ybWF0U3ViamVjdCIsImZvcm1hdFN1YlRpdGxlIiwiZm9ybWF0VGl0bGUiLCJmb3JtYXRUZXh0IiwiZm9ybWF0SHRtbCIsImhhc0N1c3RvbUVtYWlsIiwiX2tleSIsInVybEZhY2Vib29rIiwidXJsVHdpdHRlciIsInBhcnNlVGVtcGxhdGUiLCJib2R5IiwidGVtcGxhdGVCb2R5IiwibGlua3MiLCJzcGFjZXIiLCJsZW5ndGgiLCJzM1BhcmFtcyIsIkJ1Y2tldCIsIktleSIsInRoZW4iLCJyZXN1bHRzIiwiQm9keSIsInRvU3RyaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmcyIsInJlYWRGaWxlIiwiZXJyIiwiZGF0YSIsInBhcnNlZEh0bWwiLCJlbWFpbFBhcmFtcyIsIkRlc3RpbmF0aW9uIiwiVG9BZGRyZXNzZXMiLCJNZXNzYWdlIiwiSHRtbCIsIkRhdGEiLCJUZXh0IiwiU3ViamVjdCIsIlNvdXJjZSIsInN1cHBvcnROYW1lIiwiQ29uZmlnIiwiZ2V0Iiwic2VzU2VuZCIsInNlbmRUZW1wbGF0ZSIsInRlbXBsYXRlTmFtZSIsInJlYWRGaWxlU3luYyIsInRlbXBsYXRlSHRtbCIsInRlbXBsYXRlVGV4dCIsImNhdGNoIiwiZXJyb3IiLCJhd3MiLCJjb25maWciLCJ1cGRhdGUiLCJzZXMiLCJTRVMiLCJyZXNwb25zZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBOztBQUdBOztBQUNBOztBQUVBOztBQUdBOzs7Ozs7QUFiQTs7OztBQWVBO0FBRU8sSUFBTUEsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsR0FBRCxFQUEyRDtBQUFBLE1BQTVDQyxPQUE0Qyx1RUFBMUIsRUFBMEI7QUFBQSxNQUF0QkMsSUFBc0IsdUVBQWYsRUFBZTtBQUNwRixNQUFJQyxjQUFzQixHQUFHLEVBQTdCOztBQUVBLE1BQUcsQ0FBQyxzQkFBUUgsR0FBUixDQUFKLEVBQWtCO0FBQ2hCRyxJQUFBQSxjQUFjLEdBQUdGLE9BQU8sQ0FBQ0csT0FBUixDQUFnQixjQUFoQixFQUFnQ0osR0FBRyxDQUFDSyxJQUFwQyxFQUNkRCxPQURjLENBQ04sYUFETSxFQUNTSixHQUFHLENBQUNNLEdBRGIsRUFFZEYsT0FGYyxDQUVOLGVBRk0sRUFFV0osR0FBRyxDQUFDTyxLQUZmLENBQWpCO0FBR0Q7O0FBRURDLEVBQUFBLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUCxJQUFaLEVBQWtCUSxPQUFsQixDQUEwQixVQUFDQyxHQUFELEVBQWlCO0FBQ3pDLFFBQUdULElBQUksQ0FBQ1MsR0FBRCxDQUFQLEVBQWM7QUFDWlIsTUFBQUEsY0FBYyxHQUFHRixPQUFPLENBQUNHLE9BQVIsQ0FBZ0IsSUFBSVEsTUFBSixjQUFpQkQsR0FBakIsVUFBMkIsR0FBM0IsQ0FBaEIsRUFBaURULElBQUksQ0FBQ1MsR0FBRCxDQUFyRCxDQUFqQjtBQUNEO0FBQ0YsR0FKRDtBQU1BLFNBQU9SLGNBQVA7QUFDRCxDQWhCTTs7OztBQWtCQSxJQUFNVSxTQUFTLEdBQUcsU0FBWkEsU0FBWSxDQUFDQyxNQUFELEVBQXlDO0FBQUEsb0JBUzVEQSxNQVQ0RCxDQUU5RGQsR0FGOEQ7QUFBQSxNQUU5REEsR0FGOEQsNEJBRXhELEVBRndEO0FBQUEsTUFHOURlLElBSDhELEdBUzVERCxNQVQ0RCxDQUc5REMsSUFIOEQ7QUFBQSxNQUk5REMsT0FKOEQsR0FTNURGLE1BVDRELENBSTlERSxPQUo4RDtBQUFBLHlCQVM1REYsTUFUNEQsQ0FLOURHLFFBTDhEO0FBQUEsTUFLOURBLFFBTDhELGlDQUtuRCxFQUxtRDtBQUFBLE1BTTlEQyxJQU44RCxHQVM1REosTUFUNEQsQ0FNOURJLElBTjhEO0FBQUEsc0JBUzVESixNQVQ0RCxDQU85REssS0FQOEQ7QUFBQSxNQU85REEsS0FQOEQsOEJBT3RELEVBUHNEO0FBQUEscUJBUzVETCxNQVQ0RCxDQVE5RE0sSUFSOEQ7QUFBQSxNQVE5REEsSUFSOEQsNkJBUXZELEVBUnVEO0FBV2hFLE1BQU1DLEVBQUUsR0FBRyxDQUFDRCxJQUFJLENBQUNiLEtBQU4sQ0FBWDtBQUNBLE1BQUllLE9BQUo7QUFFQSxNQUFNQyxhQUFxQixHQUFHeEIsV0FBVyxDQUFDQyxHQUFELEVBQU1nQixPQUFOLENBQXpDO0FBQ0EsTUFBTVEsY0FBc0IsR0FBR3pCLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNaUIsUUFBTixDQUExQztBQUNBLE1BQU1RLFdBQW1CLEdBQUcxQixXQUFXLENBQUNDLEdBQUQsRUFBTW1CLEtBQU4sQ0FBdkM7QUFDQSxNQUFNTyxVQUFrQixHQUFHM0IsV0FBVyxDQUFDQyxHQUFELEVBQU1rQixJQUFOLENBQXRDO0FBQ0EsTUFBTVMsVUFBa0IsR0FBRzVCLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNZSxJQUFOLENBQXRDO0FBbEJnRSxNQW1CbkRhLGNBbkJtRCxHQW1CUjVCLEdBbkJRLENBbUJ6RDZCLElBbkJ5RDtBQUFBLE1BbUJuQ0MsV0FuQm1DLEdBbUJSOUIsR0FuQlEsQ0FtQm5DOEIsV0FuQm1DO0FBQUEsTUFtQnRCQyxVQW5Cc0IsR0FtQlIvQixHQW5CUSxDQW1CdEIrQixVQW5Cc0I7O0FBcUJoRSxNQUFNQyxhQUFhLEdBQUcsU0FBaEJBLGFBQWdCLENBQUNDLElBQUQsRUFBa0I7QUFDdEMsUUFBTUMsWUFBb0IsR0FBR25DLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNaUMsSUFBSSxJQUFJLEVBQWQsQ0FBeEMsQ0FEc0MsQ0FHdEM7O0FBQ0EsUUFBSUUsS0FBYSxHQUFHLEVBQXBCO0FBQ0EsUUFBTUMsTUFBTSxHQUFHLHdFQUNiLDZEQURGOztBQUdBLFFBQUdOLFdBQUgsRUFBZ0I7QUFDZEssTUFBQUEsS0FBSyxHQUFHLHFDQUEyQkwsV0FBM0Isd0RBQ04sd0dBREY7QUFFRDs7QUFFRCxRQUFHQyxVQUFILEVBQWU7QUFDYixVQUFHRCxXQUFILEVBQWdCO0FBQ2RLLFFBQUFBLEtBQUssSUFBSUMsTUFBVDtBQUNEOztBQUVERCxNQUFBQSxLQUFLLElBQUkscUNBQTJCSixVQUEzQix3REFDUCxxR0FERjtBQUVEOztBQUVELFFBQUcsQ0FBQ0ksS0FBSyxDQUFDRSxNQUFWLEVBQWtCO0FBQ2hCRixNQUFBQSxLQUFLLElBQUlDLE1BQVQ7QUFDRDs7QUFFRCxXQUFPRixZQUFZLENBQUM5QixPQUFiLENBQXFCLFlBQXJCLEVBQW1DcUIsV0FBbkMsRUFDSnJCLE9BREksQ0FDSSxlQURKLEVBQ3FCb0IsY0FEckIsRUFFSnBCLE9BRkksQ0FFSSxjQUZKLEVBRW9CbUIsYUFGcEIsRUFHSm5CLE9BSEksQ0FHSSxjQUhKLEVBR29CdUIsVUFIcEIsRUFJSnZCLE9BSkksQ0FJSSxZQUpKLEVBSWtCK0IsS0FKbEIsQ0FBUDtBQUtELEdBL0JEOztBQWlDQSxNQUFHUCxjQUFILEVBQW1CO0FBQ2pCLFFBQU1VLFFBQTBCLEdBQUc7QUFBQ0MsTUFBQUEsTUFBTSxFQUFFLElBQVQ7QUFBZUMsTUFBQUEsR0FBRztBQUFsQixLQUFuQztBQUNBbEIsSUFBQUEsT0FBTyxHQUFHLGNBQU1nQixRQUFOLEVBQWdCRyxJQUFoQixDQUFxQixVQUFDQyxPQUFEO0FBQUEsYUFBYVYsYUFBYSxDQUFDVSxPQUFPLENBQUNDLElBQVIsQ0FBYUMsUUFBYixFQUFELENBQTFCO0FBQUEsS0FBckIsQ0FBVjtBQUNELEdBSEQsTUFHTztBQUNMdEIsSUFBQUEsT0FBTyxHQUFHLElBQUl1QixPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ3pDQyxrQkFBR0MsUUFBSCxDQUFZLCtCQUFaLEVBQTZDLE1BQTdDLEVBQXFELFVBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFlO0FBQ2xFLFlBQUdELEdBQUgsRUFBUTtBQUNOLGlCQUFPSCxNQUFNLENBQUNHLEdBQUQsQ0FBYjtBQUNEOztBQUVELGVBQU9KLE9BQU8sQ0FBQ2QsYUFBYSxDQUFDbUIsSUFBRCxDQUFkLENBQWQ7QUFDRCxPQU5EO0FBT0QsS0FSUyxDQUFWO0FBU0Q7O0FBRUQsU0FBTzdCLE9BQU8sQ0FBQ21CLElBQVIsQ0FBYSxVQUFDVyxVQUFELEVBQXdCO0FBQzFDLFFBQU1DLFdBQTZCLEdBQUc7QUFDcENDLE1BQUFBLFdBQVcsRUFBRTtBQUFDQyxRQUFBQSxXQUFXLEVBQUVsQztBQUFkLE9BRHVCO0FBRXBDbUMsTUFBQUEsT0FBTyxFQUFFO0FBQ1BiLFFBQUFBLElBQUksRUFBRTtBQUNKYyxVQUFBQSxJQUFJLEVBQUU7QUFBQ0MsWUFBQUEsSUFBSSxFQUFFTjtBQUFQLFdBREY7QUFFSk8sVUFBQUEsSUFBSSxFQUFFO0FBQUNELFlBQUFBLElBQUksRUFBRWhDO0FBQVA7QUFGRixTQURDO0FBS1BrQyxRQUFBQSxPQUFPLEVBQUU7QUFBQ0YsVUFBQUEsSUFBSSxFQUFFbkM7QUFBUDtBQUxGLE9BRjJCO0FBU3BDc0MsTUFBQUEsTUFBTSxjQUFNN0QsR0FBRyxDQUFDOEQsV0FBVix5QkFBbUNDLGVBQU9DLEdBQVAsQ0FBVyxTQUFYLENBQW5DO0FBVDhCLEtBQXRDO0FBWUEsV0FBT0MsT0FBTyxDQUFDWixXQUFELENBQWQ7QUFDRCxHQWRNLENBQVA7QUFlRCxDQXBGTTs7OztBQXNGQSxJQUFNYSxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFDQyxZQUFELEVBQXVCZCxXQUF2QixFQUFvRTtBQUFBLE1BQ3ZGckQsR0FEdUYsR0FDL0JxRCxXQUQrQixDQUN2RnJELEdBRHVGO0FBQUEsTUFDbEZvQixJQURrRixHQUMvQmlDLFdBRCtCLENBQ2xGakMsSUFEa0Y7QUFBQSxNQUM1RUosT0FENEUsR0FDL0JxQyxXQUQrQixDQUM1RXJDLE9BRDRFO0FBQUEsTUFDbkVDLFFBRG1FLEdBQy9Cb0MsV0FEK0IsQ0FDbkVwQyxRQURtRTtBQUFBLE1BQ3pERSxLQUR5RCxHQUMvQmtDLFdBRCtCLENBQ3pEbEMsS0FEeUQ7QUFBQSxNQUNsRGpCLElBRGtELEdBQy9CbUQsV0FEK0IsQ0FDbERuRCxJQURrRDs7QUFHOUYsTUFBSTtBQUNGLFFBQU1hLElBQVksR0FBR2lDLFlBQUdvQixZQUFILDZCQUFxQ0QsWUFBckMsWUFBMEQsTUFBMUQsQ0FBckI7O0FBQ0EsUUFBTUUsWUFBb0IsR0FBR3RFLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNZSxJQUFOLEVBQVliLElBQVosQ0FBeEM7O0FBQ0EsUUFBTWdCLElBQVksR0FBRzhCLFlBQUdvQixZQUFILDJCQUFtQ0QsWUFBbkMsV0FBdUQsTUFBdkQsQ0FBckI7O0FBQ0EsUUFBTUcsWUFBb0IsR0FBR3ZFLFdBQVcsQ0FBQ0MsR0FBRCxFQUFNa0IsSUFBTixFQUFZaEIsSUFBWixDQUF4QztBQUVBLFFBQU1ZLE1BQU0sR0FBRztBQUNiZCxNQUFBQSxHQUFHLEVBQUhBLEdBRGE7QUFFYmUsTUFBQUEsSUFBSSxFQUFFc0QsWUFGTztBQUdicEQsTUFBQUEsUUFBUSxFQUFSQSxRQUhhO0FBSWJELE1BQUFBLE9BQU8sRUFBUEEsT0FKYTtBQUtiRSxNQUFBQSxJQUFJLEVBQUVvRCxZQUxPO0FBTWJuRCxNQUFBQSxLQUFLLEVBQUxBLEtBTmE7QUFPYkMsTUFBQUEsSUFBSSxFQUFKQTtBQVBhLEtBQWY7QUFVQSxXQUFPUCxTQUFTLENBQUNDLE1BQUQsQ0FBVCxDQUNKMkIsSUFESSxDQUNDO0FBQUEsYUFBTSxJQUFOO0FBQUEsS0FERCxFQUVKOEIsS0FGSSxDQUVFO0FBQUEsYUFBTSxLQUFOO0FBQUEsS0FGRixDQUFQO0FBR0QsR0FuQkQsQ0FtQkUsT0FBTUMsS0FBTixFQUFhO0FBQ2IsV0FBTzNCLE9BQU8sQ0FBQ0UsTUFBUixDQUFleUIsS0FBZixDQUFQO0FBQ0Q7QUFDRixDQXpCTSxDLENBMkJQOzs7OztBQUNPLElBQU1QLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNuRCxNQUFELEVBQTBEO0FBQy9FLFNBQU8sSUFBSStCLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEMwQixvQkFBSUMsTUFBSixDQUFXQyxNQUFYLENBQWtCWixlQUFPQyxHQUFQLENBQVcsS0FBWCxDQUFsQjs7QUFDQSxRQUFNWSxHQUFRLEdBQUcsSUFBSUMsV0FBSixFQUFqQjtBQUVBRCxJQUFBQSxHQUFHLENBQUMvRCxTQUFKLENBQWNDLE1BQWQsRUFBc0IsVUFBQzBELEtBQUQsRUFBZU0sUUFBZixFQUErQztBQUNuRSxVQUFHTixLQUFILEVBQVU7QUFDUixlQUFPekIsTUFBTSxDQUFDeUIsS0FBRCxDQUFiO0FBQ0Q7O0FBRUQsYUFBTzFCLE9BQU8sQ0FBQ2dDLFFBQUQsQ0FBZDtBQUNELEtBTkQ7QUFPRCxHQVhNLENBQVA7QUFZRCxDQWJNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBhd3MsIHtTRVN9IGZyb20gJ2F3cy1zZGsnO1xuaW1wb3J0IHtHZXRPYmplY3RSZXF1ZXN0fSBmcm9tICdhd3Mtc2RrL2NsaWVudHMvczMnO1xuaW1wb3J0IHtTZW5kRW1haWxSZXF1ZXN0LCBTZW5kRW1haWxSZXNwb25zZX0gZnJvbSAnYXdzLXNkay9jbGllbnRzL3Nlcyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7QXBwVHlwZX0gZnJvbSAnLi4vdHlwZXMvYXBwcyc7XG5pbXBvcnQge0VtYWlsVHlwZX0gZnJvbSAnLi4vdHlwZXMvZW1haWwnO1xuaW1wb3J0IHtzM0dldH0gZnJvbSAnLi9zMyc7XG5cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdlbWFpbCc7XG5cbmV4cG9ydCBjb25zdCBhcHBUZW1wbGF0ZSA9IChhcHA6IEFwcFR5cGUsIG1lc3NhZ2U6IHN0cmluZyA9ICcnLCB2YXJzID0ge30pOiBzdHJpbmcgPT4ge1xuICBsZXQgdXBkYXRlZE1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuXG4gIGlmKCFpc0VtcHR5KGFwcCkpIHtcbiAgICB1cGRhdGVkTWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXFxbYXBwTmFtZVxcXS9nLCBhcHAubmFtZSlcbiAgICAgIC5yZXBsYWNlKC9cXFthcHBVcmxcXF0vZywgYXBwLnVybClcbiAgICAgIC5yZXBsYWNlKC9cXFthcHBFbWFpbFxcXS9nLCBhcHAuZW1haWwpO1xuICB9XG5cbiAgT2JqZWN0LmtleXModmFycykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICBpZih2YXJzW2tleV0pIHtcbiAgICAgIHVwZGF0ZWRNZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKG5ldyBSZWdFeHAoYFxcXFxbJHtrZXl9XFxcXF1gLCAnZycpLCB2YXJzW2tleV0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHVwZGF0ZWRNZXNzYWdlO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlbmRFbWFpbCA9IChwYXJhbXM6IEVtYWlsVHlwZSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCB7XG4gICAgYXBwID0ge30sXG4gICAgaHRtbCxcbiAgICBzdWJqZWN0LFxuICAgIHN1YlRpdGxlID0gJycsXG4gICAgdGV4dCxcbiAgICB0aXRsZSA9ICcnLFxuICAgIHVzZXIgPSB7fVxuICB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHRvID0gW3VzZXIuZW1haWxdO1xuICBsZXQgcHJvbWlzZTtcblxuICBjb25zdCBmb3JtYXRTdWJqZWN0OiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHN1YmplY3QpO1xuICBjb25zdCBmb3JtYXRTdWJUaXRsZTogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBzdWJUaXRsZSk7XG4gIGNvbnN0IGZvcm1hdFRpdGxlOiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHRpdGxlKTtcbiAgY29uc3QgZm9ybWF0VGV4dDogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCB0ZXh0KTtcbiAgY29uc3QgZm9ybWF0SHRtbDogc3RyaW5nID0gYXBwVGVtcGxhdGUoYXBwLCBodG1sKTtcbiAgY29uc3Qge19rZXk6IGhhc0N1c3RvbUVtYWlsLCB1cmxGYWNlYm9vaywgdXJsVHdpdHRlcn0gPSBhcHA7XG5cbiAgY29uc3QgcGFyc2VUZW1wbGF0ZSA9IChib2R5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZUJvZHk6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgYm9keSB8fCAnJyk7XG5cbiAgICAvLyBMaW5rc1xuICAgIGxldCBsaW5rczogc3RyaW5nID0gJyc7XG4gICAgY29uc3Qgc3BhY2VyID0gJzx0ZCB3aWR0aD1cIjVcIj48aW1nIHdpZHRoPVwiMVwiIGhlaWdodD1cIjFcIiBib3JkZXI9XCIwXCIgdGl0bGU9XCJcIiBhbHQ9XCJcIiAnICtcbiAgICAgICdzcmM9XCJodHRwczovL2JveC5yZWFrdG9yLmlvL2ltYWdlcy9lbWFpbC9zcGFjZXIuZ2lmXCIvPjwvdGQ+JztcblxuICAgIGlmKHVybEZhY2Vib29rKSB7XG4gICAgICBsaW5rcyA9IGA8dGQgd2lkdGg9XCIzMFwiPjxhIGhyZWY9XCIke3VybEZhY2Vib29rfVwiPjxpbWcgd2lkdGg9XCIzMFwiIGhlaWdodD1cIjMwXCIgYm9yZGVyPVwiMFwiIGAgK1xuICAgICAgICAndGl0bGU9XCJGYWNlYm9va1wiIGFsdD1cIkZhY2Vib29rXCIgc3JjPVwiaHR0cHM6Ly9ib3gucmVha3Rvci5pby9pbWFnZXMvZW1haWwvaWNvbi1mYWNlYm9vay5wbmdcIi8+PC9hPjwvdGQ+JztcbiAgICB9XG5cbiAgICBpZih1cmxUd2l0dGVyKSB7XG4gICAgICBpZih1cmxGYWNlYm9vaykge1xuICAgICAgICBsaW5rcyArPSBzcGFjZXI7XG4gICAgICB9XG5cbiAgICAgIGxpbmtzICs9IGA8dGQgd2lkdGg9XCIzMFwiPjxhIGhyZWY9XCIke3VybFR3aXR0ZXJ9XCI+PGltZyB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzBcIiBib3JkZXI9XCIwXCIgYCArXG4gICAgICAgICd0aXRsZT1cIlR3aXR0ZXJcIiBhbHQ9XCJUd2l0dGVyXCIgc3JjPVwiaHR0cHM6Ly9ib3gucmVha3Rvci5pby9pbWFnZXMvZW1haWwvaWNvbi10d2l0dGVyLnBuZ1wiLz48L2E+PC90ZD4nO1xuICAgIH1cblxuICAgIGlmKCFsaW5rcy5sZW5ndGgpIHtcbiAgICAgIGxpbmtzICs9IHNwYWNlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcGxhdGVCb2R5LnJlcGxhY2UoL1xcW3RpdGxlXFxdL2csIGZvcm1hdFRpdGxlKVxuICAgICAgLnJlcGxhY2UoL1xcW3N1YlRpdGxlXFxdL2csIGZvcm1hdFN1YlRpdGxlKVxuICAgICAgLnJlcGxhY2UoL1xcW3N1YmplY3RcXF0vZywgZm9ybWF0U3ViamVjdClcbiAgICAgIC5yZXBsYWNlKC9cXFttZXNzYWdlXFxdL2csIGZvcm1hdEh0bWwpXG4gICAgICAucmVwbGFjZSgvXFxbbGlua3NcXF0vZywgbGlua3MpO1xuICB9O1xuXG4gIGlmKGhhc0N1c3RvbUVtYWlsKSB7XG4gICAgY29uc3QgczNQYXJhbXM6IEdldE9iamVjdFJlcXVlc3QgPSB7QnVja2V0OiBudWxsLCBLZXk6IGBhcHBzL3RlbXBsYXRlcy9lbWFpbC5odG1sYH07XG4gICAgcHJvbWlzZSA9IHMzR2V0KHMzUGFyYW1zKS50aGVuKChyZXN1bHRzKSA9PiBwYXJzZVRlbXBsYXRlKHJlc3VsdHMuQm9keS50b1N0cmluZygpKSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGZzLnJlYWRGaWxlKCcuL3RlbXBsYXRlcy9lbWFpbC9sYXlvdXQuaHRtbCcsICd1dGY4JywgKGVyciwgZGF0YSkgPT4ge1xuICAgICAgICBpZihlcnIpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzb2x2ZShwYXJzZVRlbXBsYXRlKGRhdGEpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHByb21pc2UudGhlbigocGFyc2VkSHRtbDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZW1haWxQYXJhbXM6IFNlbmRFbWFpbFJlcXVlc3QgPSB7XG4gICAgICBEZXN0aW5hdGlvbjoge1RvQWRkcmVzc2VzOiB0b30sXG4gICAgICBNZXNzYWdlOiB7XG4gICAgICAgIEJvZHk6IHtcbiAgICAgICAgICBIdG1sOiB7RGF0YTogcGFyc2VkSHRtbH0sXG4gICAgICAgICAgVGV4dDoge0RhdGE6IGZvcm1hdFRleHR9XG4gICAgICAgIH0sXG4gICAgICAgIFN1YmplY3Q6IHtEYXRhOiBmb3JtYXRTdWJqZWN0fVxuICAgICAgfSxcbiAgICAgIFNvdXJjZTogYFwiJHthcHAuc3VwcG9ydE5hbWV9XCIgPG5vcmVwbHlAJHtDb25maWcuZ2V0KCdhcHAudXJsJyl9PmBcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNlc1NlbmQoZW1haWxQYXJhbXMpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZW5kVGVtcGxhdGUgPSAodGVtcGxhdGVOYW1lOiBzdHJpbmcsIGVtYWlsUGFyYW1zOiBFbWFpbFR5cGUpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge2FwcCwgdXNlciwgc3ViamVjdCwgc3ViVGl0bGUsIHRpdGxlLCB2YXJzfTogRW1haWxUeXBlID0gZW1haWxQYXJhbXM7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBodG1sOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYC4vdGVtcGxhdGVzL2VtYWlsLyR7dGVtcGxhdGVOYW1lfS5odG1sYCwgJ3V0ZjgnKTtcbiAgICBjb25zdCB0ZW1wbGF0ZUh0bWw6IHN0cmluZyA9IGFwcFRlbXBsYXRlKGFwcCwgaHRtbCwgdmFycyk7XG4gICAgY29uc3QgdGV4dDogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGAuL3RlbXBsYXRlcy9zbXMvJHt0ZW1wbGF0ZU5hbWV9LnR4dGAsICd1dGY4Jyk7XG4gICAgY29uc3QgdGVtcGxhdGVUZXh0OiBzdHJpbmcgPSBhcHBUZW1wbGF0ZShhcHAsIHRleHQsIHZhcnMpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYXBwLFxuICAgICAgaHRtbDogdGVtcGxhdGVIdG1sLFxuICAgICAgc3ViVGl0bGUsXG4gICAgICBzdWJqZWN0LFxuICAgICAgdGV4dDogdGVtcGxhdGVUZXh0LFxuICAgICAgdGl0bGUsXG4gICAgICB1c2VyXG4gICAgfTtcblxuICAgIHJldHVybiBzZW5kRW1haWwocGFyYW1zKVxuICAgICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAgIC5jYXRjaCgoKSA9PiBmYWxzZSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICB9XG59O1xuXG4vLyBBV1M6OlNFU1xuZXhwb3J0IGNvbnN0IHNlc1NlbmQgPSAocGFyYW1zOiBTZW5kRW1haWxSZXF1ZXN0KTogUHJvbWlzZTxTZW5kRW1haWxSZXNwb25zZT4gPT4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGF3cy5jb25maWcudXBkYXRlKENvbmZpZy5nZXQoJ2F3cycpKTtcbiAgICBjb25zdCBzZXM6IFNFUyA9IG5ldyBTRVMoKTtcblxuICAgIHNlcy5zZW5kRW1haWwocGFyYW1zLCAoZXJyb3I6IEVycm9yLCByZXNwb25zZTogU2VuZEVtYWlsUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfSk7XG4gIH0pO1xufTtcbiJdfQ==