parse-server 9.4.0-alpha.2 → 9.4.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Adapters/Files/GridFSBucketAdapter.js +11 -2
- package/lib/Adapters/Storage/Mongo/MongoCollection.js +9 -2
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +7 -2
- package/lib/Options/Definitions.js +7 -1
- package/lib/Options/docs.js +2 -1
- package/lib/Options/index.js +1 -1
- package/lib/ParseServer.js +19 -3
- package/lib/defaults.js +12 -4
- package/package.json +1 -1
- package/types/Options/index.d.ts +1 -0
|
@@ -28,6 +28,7 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
28
28
|
const defaultMongoOptions = {};
|
|
29
29
|
const _mongoOptions = Object.assign(defaultMongoOptions, mongoOptions);
|
|
30
30
|
this._clientMetadata = mongoOptions.clientMetadata;
|
|
31
|
+
this._batchSize = mongoOptions.batchSize;
|
|
31
32
|
// Remove Parse Server-specific options that should not be passed to MongoDB client
|
|
32
33
|
for (const key of _defaults.ParseServerDatabaseOptions) {
|
|
33
34
|
delete _mongoOptions[key];
|
|
@@ -116,6 +117,8 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
116
117
|
const bucket = await this._getBucket();
|
|
117
118
|
const documents = await bucket.find({
|
|
118
119
|
filename
|
|
120
|
+
}, {
|
|
121
|
+
batchSize: this._batchSize
|
|
119
122
|
}).toArray();
|
|
120
123
|
if (documents.length === 0) {
|
|
121
124
|
throw new Error('FileNotFound');
|
|
@@ -169,7 +172,9 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
169
172
|
if (options.fileNames !== undefined) {
|
|
170
173
|
fileNames = options.fileNames;
|
|
171
174
|
} else {
|
|
172
|
-
const fileNamesIterator = await bucket.find(
|
|
175
|
+
const fileNamesIterator = await bucket.find({}, {
|
|
176
|
+
batchSize: this._batchSize
|
|
177
|
+
}).toArray();
|
|
173
178
|
fileNamesIterator.forEach(file => {
|
|
174
179
|
fileNames.push(file.filename);
|
|
175
180
|
});
|
|
@@ -202,6 +207,8 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
202
207
|
const bucket = await this._getBucket();
|
|
203
208
|
const files = await bucket.find({
|
|
204
209
|
filename
|
|
210
|
+
}, {
|
|
211
|
+
batchSize: this._batchSize
|
|
205
212
|
}).toArray();
|
|
206
213
|
if (files.length === 0) {
|
|
207
214
|
return {};
|
|
@@ -217,6 +224,8 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
217
224
|
const bucket = await this._getBucket();
|
|
218
225
|
const files = await bucket.find({
|
|
219
226
|
filename
|
|
227
|
+
}, {
|
|
228
|
+
batchSize: this._batchSize
|
|
220
229
|
}).toArray();
|
|
221
230
|
if (files.length === 0) {
|
|
222
231
|
throw new Error('FileNotFound');
|
|
@@ -268,4 +277,4 @@ class GridFSBucketAdapter extends _FilesAdapter.FilesAdapter {
|
|
|
268
277
|
}
|
|
269
278
|
exports.GridFSBucketAdapter = GridFSBucketAdapter;
|
|
270
279
|
var _default = exports.default = GridFSBucketAdapter;
|
|
271
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZ29kYiIsInJlcXVpcmUiLCJfRmlsZXNBZGFwdGVyIiwiX2RlZmF1bHRzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJjcnlwdG8iLCJHcmlkRlNCdWNrZXRBZGFwdGVyIiwiRmlsZXNBZGFwdGVyIiwiY29uc3RydWN0b3IiLCJtb25nb0RhdGFiYXNlVVJJIiwiZGVmYXVsdHMiLCJEZWZhdWx0TW9uZ29VUkkiLCJtb25nb09wdGlvbnMiLCJlbmNyeXB0aW9uS2V5IiwidW5kZWZpbmVkIiwiX2RhdGFiYXNlVVJJIiwiX2FsZ29yaXRobSIsIl9lbmNyeXB0aW9uS2V5IiwiY3JlYXRlSGFzaCIsInVwZGF0ZSIsIlN0cmluZyIsImRpZ2VzdCIsInN1YnN0cmluZyIsImRlZmF1bHRNb25nb09wdGlvbnMiLCJfbW9uZ29PcHRpb25zIiwiYXNzaWduIiwiX2NsaWVudE1ldGFkYXRhIiwiY2xpZW50TWV0YWRhdGEiLCJrZXkiLCJQYXJzZVNlcnZlckRhdGFiYXNlT3B0aW9ucyIsInN1cHBvcnRzU3RyZWFtaW5nIiwiX2Nvbm5lY3QiLCJfY29ubmVjdGlvblByb21pc2UiLCJvcHRpb25zIiwiZHJpdmVySW5mbyIsIm5hbWUiLCJ2ZXJzaW9uIiwiTW9uZ29DbGllbnQiLCJjb25uZWN0IiwidGhlbiIsImNsaWVudCIsIl9jbGllbnQiLCJkYiIsInMiLCJkYk5hbWUiLCJfZ2V0QnVja2V0IiwiZGF0YWJhc2UiLCJHcmlkRlNCdWNrZXQiLCJjcmVhdGVGaWxlIiwiZmlsZW5hbWUiLCJkYXRhIiwiY29udGVudFR5cGUiLCJidWNrZXQiLCJzdHJlYW0iLCJvcGVuVXBsb2FkU3RyZWFtIiwibWV0YWRhdGEiLCJwaXBlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjaHVua3MiLCJvbiIsImNodW5rIiwicHVzaCIsIkJ1ZmZlciIsImNvbmNhdCIsImVyciIsImRlc3Ryb3kiLCJpdiIsInJhbmRvbUJ5dGVzIiwiY2lwaGVyIiwiY3JlYXRlQ2lwaGVyaXYiLCJlbmNyeXB0ZWRSZXN1bHQiLCJmaW5hbCIsImdldEF1dGhUYWciLCJ3cml0ZSIsImVuZCIsImRlbGV0ZUZpbGUiLCJkb2N1bWVudHMiLCJmaW5kIiwidG9BcnJheSIsImxlbmd0aCIsIkVycm9yIiwiYWxsIiwibWFwIiwiZG9jIiwiZGVsZXRlIiwiX2lkIiwiZ2V0RmlsZURhdGEiLCJvcGVuRG93bmxvYWRTdHJlYW1CeU5hbWUiLCJyZWFkIiwiYXV0aFRhZ0xvY2F0aW9uIiwiaXZMb2NhdGlvbiIsImF1dGhUYWciLCJzbGljZSIsImVuY3J5cHRlZCIsImRlY2lwaGVyIiwiY3JlYXRlRGVjaXBoZXJpdiIsInNldEF1dGhUYWciLCJkZWNyeXB0ZWQiLCJyb3RhdGVFbmNyeXB0aW9uS2V5IiwiZmlsZU5hbWVzIiwib2xkS2V5RmlsZUFkYXB0ZXIiLCJvbGRLZXkiLCJmaWxlTmFtZXNJdGVyYXRvciIsImZvckVhY2giLCJmaWxlIiwiZmlsZU5hbWVzTm90Um90YXRlZCIsImZpbGVOYW1lc1JvdGF0ZWQiLCJmaWxlTmFtZSIsInBsYWluVGV4dERhdGEiLCJmaWx0ZXIiLCJ2YWx1ZSIsInJvdGF0ZWQiLCJub3RSb3RhdGVkIiwiZ2V0RmlsZUxvY2F0aW9uIiwiY29uZmlnIiwiZW5jb2RlZEZpbGVuYW1lIiwic3BsaXQiLCJlbmNvZGVVUklDb21wb25lbnQiLCJqb2luIiwibW91bnQiLCJhcHBsaWNhdGlvbklkIiwiZ2V0TWV0YWRhdGEiLCJmaWxlcyIsImhhbmRsZUZpbGVTdHJlYW0iLCJyZXEiLCJyZXMiLCJwYXJ0cyIsInJlcGxhY2UiLCJwYXJ0aWFsc3RhcnQiLCJwYXJ0aWFsZW5kIiwiZmlsZUxlbmd0aCIsImZpbGVTdGFydCIsInBhcnNlSW50IiwiZmlsZUVuZCIsInN0YXJ0IiwiTWF0aCIsIm1pbiIsIm1heCIsImlzTmFOIiwic3RhdHVzIiwiaGVhZGVyIiwic2VuZCIsIm1lc3NhZ2UiLCJoYW5kbGVTaHV0ZG93biIsImNsb3NlIiwidmFsaWRhdGVGaWxlbmFtZSIsImV4cG9ydHMiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9GaWxlcy9HcmlkRlNCdWNrZXRBZGFwdGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuIEdyaWRGU0J1Y2tldEFkYXB0ZXJcbiBTdG9yZXMgZmlsZXMgaW4gTW9uZ28gdXNpbmcgR3JpZEZTXG4gUmVxdWlyZXMgdGhlIGRhdGFiYXNlIGFkYXB0ZXIgdG8gYmUgYmFzZWQgb24gbW9uZ29jbGllbnRcblxuIEBmbG93IHdlYWtcbiAqL1xuXG4vLyBAZmxvdy1kaXNhYmxlLW5leHRcbmltcG9ydCB7IE1vbmdvQ2xpZW50LCBHcmlkRlNCdWNrZXQsIERiIH0gZnJvbSAnbW9uZ29kYic7XG5pbXBvcnQgeyBGaWxlc0FkYXB0ZXIsIHZhbGlkYXRlRmlsZW5hbWUgfSBmcm9tICcuL0ZpbGVzQWRhcHRlcic7XG5pbXBvcnQgZGVmYXVsdHMsIHsgUGFyc2VTZXJ2ZXJEYXRhYmFzZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9kZWZhdWx0cyc7XG5jb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcblxuZXhwb3J0IGNsYXNzIEdyaWRGU0J1Y2tldEFkYXB0ZXIgZXh0ZW5kcyBGaWxlc0FkYXB0ZXIge1xuICBfZGF0YWJhc2VVUkk6IHN0cmluZztcbiAgX2Nvbm5lY3Rpb25Qcm9taXNlOiBQcm9taXNlPERiPjtcbiAgX21vbmdvT3B0aW9uczogT2JqZWN0O1xuICBfYWxnb3JpdGhtOiBzdHJpbmc7XG4gIF9jbGllbnRNZXRhZGF0YTogP3sgbmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtb25nb0RhdGFiYXNlVVJJID0gZGVmYXVsdHMuRGVmYXVsdE1vbmdvVVJJLFxuICAgIG1vbmdvT3B0aW9ucyA9IHt9LFxuICAgIGVuY3J5cHRpb25LZXkgPSB1bmRlZmluZWRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9kYXRhYmFzZVVSSSA9IG1vbmdvRGF0YWJhc2VVUkk7XG4gICAgdGhpcy5fYWxnb3JpdGhtID0gJ2Flcy0yNTYtZ2NtJztcbiAgICB0aGlzLl9lbmNyeXB0aW9uS2V5ID1cbiAgICAgIGVuY3J5cHRpb25LZXkgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGNyeXB0b1xuICAgICAgICAgIC5jcmVhdGVIYXNoKCdzaGEyNTYnKVxuICAgICAgICAgIC51cGRhdGUoU3RyaW5nKGVuY3J5cHRpb25LZXkpKVxuICAgICAgICAgIC5kaWdlc3QoJ2Jhc2U2NCcpXG4gICAgICAgICAgLnN1YnN0cmluZygwLCAzMilcbiAgICAgICAgOiBudWxsO1xuICAgIGNvbnN0IGRlZmF1bHRNb25nb09wdGlvbnMgPSB7fTtcbiAgICBjb25zdCBfbW9uZ29PcHRpb25zID0gT2JqZWN0LmFzc2lnbihkZWZhdWx0TW9uZ29PcHRpb25zLCBtb25nb09wdGlvbnMpO1xuICAgIHRoaXMuX2NsaWVudE1ldGFkYXRhID0gbW9uZ29PcHRpb25zLmNsaWVudE1ldGFkYXRhO1xuICAgIC8vIFJlbW92ZSBQYXJzZSBTZXJ2ZXItc3BlY2lmaWMgb3B0aW9ucyB0aGF0IHNob3VsZCBub3QgYmUgcGFzc2VkIHRvIE1vbmdvREIgY2xpZW50XG4gICAgZm9yIChjb25zdCBrZXkgb2YgUGFyc2VTZXJ2ZXJEYXRhYmFzZU9wdGlvbnMpIHtcbiAgICAgIGRlbGV0ZSBfbW9uZ29PcHRpb25zW2tleV07XG4gICAgfVxuICAgIHRoaXMuX21vbmdvT3B0aW9ucyA9IF9tb25nb09wdGlvbnM7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTdHJlYW1pbmcoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBfY29ubmVjdCgpIHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlKSB7XG4gICAgICAvLyBPbmx5IHVzZSBkcml2ZXJJbmZvIGlmIGNsaWVudE1ldGFkYXRhIG9wdGlvbiBpcyBzZXRcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLnRoaXMuX21vbmdvT3B0aW9ucyB9O1xuICAgICAgaWYgKHRoaXMuX2NsaWVudE1ldGFkYXRhKSB7XG4gICAgICAgIG9wdGlvbnMuZHJpdmVySW5mbyA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLl9jbGllbnRNZXRhZGF0YS5uYW1lLFxuICAgICAgICAgIHZlcnNpb246IHRoaXMuX2NsaWVudE1ldGFkYXRhLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY29ubmVjdGlvblByb21pc2UgPSBNb25nb0NsaWVudC5jb25uZWN0KHRoaXMuX2RhdGFiYXNlVVJJLCBvcHRpb25zKS50aGVuKFxuICAgICAgICBjbGllbnQgPT4ge1xuICAgICAgICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDtcbiAgICAgICAgICByZXR1cm4gY2xpZW50LmRiKGNsaWVudC5zLm9wdGlvbnMuZGJOYW1lKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICB9XG5cbiAgX2dldEJ1Y2tldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdCgpLnRoZW4oZGF0YWJhc2UgPT4gbmV3IEdyaWRGU0J1Y2tldChkYXRhYmFzZSkpO1xuICB9XG5cbiAgLy8gRm9yIGEgZ2l2ZW4gY29uZmlnIG9iamVjdCwgZmlsZW5hbWUsIGFuZCBkYXRhLCBzdG9yZSBhIGZpbGVcbiAgLy8gUmV0dXJucyBhIHByb21pc2VcbiAgYXN5bmMgY3JlYXRlRmlsZShmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjb250ZW50VHlwZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgYnVja2V0Lm9wZW5VcGxvYWRTdHJlYW0oZmlsZW5hbWUsIHtcbiAgICAgIG1ldGFkYXRhOiBvcHRpb25zLm1ldGFkYXRhLFxuICAgIH0pO1xuXG4gICAgLy8gSWYgZGF0YSBpcyBhIHN0cmVhbSBhbmQgZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBidWZmZXIgZmlyc3RcbiAgICAvLyAoQUVTLTI1Ni1HQ00gbmVlZHMgY29tcGxldGUgZGF0YSBmb3IgZm9ybWF0OiBbZW5jcnlwdGVkXVtJVl1bYXV0aFRhZ10pXG4gICAgaWYgKHR5cGVvZiBkYXRhPy5waXBlID09PSAnZnVuY3Rpb24nICYmIHRoaXMuX2VuY3J5cHRpb25LZXkgIT09IG51bGwpIHtcbiAgICAgIGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBkYXRhLm9uKCdkYXRhJywgY2h1bmsgPT4gY2h1bmtzLnB1c2goY2h1bmspKTtcbiAgICAgICAgZGF0YS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZShCdWZmZXIuY29uY2F0KGNodW5rcykpKTtcbiAgICAgICAgZGF0YS5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhPy5waXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBQaXBlIHJlYWRhYmxlIHN0cmVhbSBkaXJlY3RseSBpbnRvIEdyaWRGUyB1cGxvYWQgc3RyZWFtXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBkYXRhLnBpcGUoc3RyZWFtKTtcbiAgICAgICAgc3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGRhdGEub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICAgIHN0cmVhbS5kZXN0cm95KGVycik7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQnVmZmVyIHBhdGggKGV4aXN0aW5nIGJlaGF2aW9yKVxuICAgIGlmICh0aGlzLl9lbmNyeXB0aW9uS2V5ICE9PSBudWxsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7XG4gICAgICAgIGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdih0aGlzLl9hbGdvcml0aG0sIHRoaXMuX2VuY3J5cHRpb25LZXksIGl2KTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkUmVzdWx0ID0gQnVmZmVyLmNvbmNhdChbXG4gICAgICAgICAgY2lwaGVyLnVwZGF0ZShkYXRhKSxcbiAgICAgICAgICBjaXBoZXIuZmluYWwoKSxcbiAgICAgICAgICBpdixcbiAgICAgICAgICBjaXBoZXIuZ2V0QXV0aFRhZygpLFxuICAgICAgICBdKTtcbiAgICAgICAgYXdhaXQgc3RyZWFtLndyaXRlKGVuY3J5cHRlZFJlc3VsdCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBzdHJlYW0ud3JpdGUoZGF0YSk7XG4gICAgfVxuICAgIHN0cmVhbS5lbmQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCByZWplY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRmlsZShmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3QgZG9jdW1lbnRzID0gYXdhaXQgYnVja2V0LmZpbmQoeyBmaWxlbmFtZSB9KS50b0FycmF5KCk7XG4gICAgaWYgKGRvY3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZU5vdEZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGRvY3VtZW50cy5tYXAoZG9jID0+IHtcbiAgICAgICAgcmV0dXJuIGJ1Y2tldC5kZWxldGUoZG9jLl9pZCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBhc3luYyBnZXRGaWxlRGF0YShmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3Qgc3RyZWFtID0gYnVja2V0Lm9wZW5Eb3dubG9hZFN0cmVhbUJ5TmFtZShmaWxlbmFtZSk7XG4gICAgc3RyZWFtLnJlYWQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICBzdHJlYW0ub24oJ2RhdGEnLCBkYXRhID0+IHtcbiAgICAgICAgY2h1bmtzLnB1c2goZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gQnVmZmVyLmNvbmNhdChjaHVua3MpO1xuICAgICAgICBpZiAodGhpcy5fZW5jcnlwdGlvbktleSAhPT0gbnVsbCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBhdXRoVGFnTG9jYXRpb24gPSBkYXRhLmxlbmd0aCAtIDE2O1xuICAgICAgICAgICAgY29uc3QgaXZMb2NhdGlvbiA9IGRhdGEubGVuZ3RoIC0gMzI7XG4gICAgICAgICAgICBjb25zdCBhdXRoVGFnID0gZGF0YS5zbGljZShhdXRoVGFnTG9jYXRpb24pO1xuICAgICAgICAgICAgY29uc3QgaXYgPSBkYXRhLnNsaWNlKGl2TG9jYXRpb24sIGF1dGhUYWdMb2NhdGlvbik7XG4gICAgICAgICAgICBjb25zdCBlbmNyeXB0ZWQgPSBkYXRhLnNsaWNlKDAsIGl2TG9jYXRpb24pO1xuICAgICAgICAgICAgY29uc3QgZGVjaXBoZXIgPSBjcnlwdG8uY3JlYXRlRGVjaXBoZXJpdih0aGlzLl9hbGdvcml0aG0sIHRoaXMuX2VuY3J5cHRpb25LZXksIGl2KTtcbiAgICAgICAgICAgIGRlY2lwaGVyLnNldEF1dGhUYWcoYXV0aFRhZyk7XG4gICAgICAgICAgICBjb25zdCBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtkZWNpcGhlci51cGRhdGUoZW5jcnlwdGVkKSwgZGVjaXBoZXIuZmluYWwoKV0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGVjcnlwdGVkKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIGVyciA9PiB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByb3RhdGVFbmNyeXB0aW9uS2V5KG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcbiAgICBsZXQgb2xkS2V5RmlsZUFkYXB0ZXIgPSB7fTtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBpZiAob3B0aW9ucy5vbGRLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2xkS2V5RmlsZUFkYXB0ZXIgPSBuZXcgR3JpZEZTQnVja2V0QWRhcHRlcihcbiAgICAgICAgdGhpcy5fZGF0YWJhc2VVUkksXG4gICAgICAgIHRoaXMuX21vbmdvT3B0aW9ucyxcbiAgICAgICAgb3B0aW9ucy5vbGRLZXlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9sZEtleUZpbGVBZGFwdGVyID0gbmV3IEdyaWRGU0J1Y2tldEFkYXB0ZXIodGhpcy5fZGF0YWJhc2VVUkksIHRoaXMuX21vbmdvT3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmZpbGVOYW1lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBmaWxlTmFtZXMgPSBvcHRpb25zLmZpbGVOYW1lcztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsZU5hbWVzSXRlcmF0b3IgPSBhd2FpdCBidWNrZXQuZmluZCgpLnRvQXJyYXkoKTtcbiAgICAgIGZpbGVOYW1lc0l0ZXJhdG9yLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgIGZpbGVOYW1lcy5wdXNoKGZpbGUuZmlsZW5hbWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBmaWxlTmFtZXNOb3RSb3RhdGVkID0gZmlsZU5hbWVzO1xuICAgIGNvbnN0IGZpbGVOYW1lc1JvdGF0ZWQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGZpbGVOYW1lcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGxhaW5UZXh0RGF0YSA9IGF3YWl0IG9sZEtleUZpbGVBZGFwdGVyLmdldEZpbGVEYXRhKGZpbGVOYW1lKTtcbiAgICAgICAgLy8gT3ZlcndyaXRlIGZpbGUgd2l0aCBkYXRhIGVuY3J5cHRlZCB3aXRoIG5ldyBrZXlcbiAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVGaWxlKGZpbGVOYW1lLCBwbGFpblRleHREYXRhKTtcbiAgICAgICAgZmlsZU5hbWVzUm90YXRlZC5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgZmlsZU5hbWVzTm90Um90YXRlZCA9IGZpbGVOYW1lc05vdFJvdGF0ZWQuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gZmlsZU5hbWU7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyByb3RhdGVkOiBmaWxlTmFtZXNSb3RhdGVkLCBub3RSb3RhdGVkOiBmaWxlTmFtZXNOb3RSb3RhdGVkIH07XG4gIH1cblxuICBnZXRGaWxlTG9jYXRpb24oY29uZmlnLCBmaWxlbmFtZSkge1xuICAgIGNvbnN0IGVuY29kZWRGaWxlbmFtZSA9IGZpbGVuYW1lLnNwbGl0KCcvJykubWFwKGVuY29kZVVSSUNvbXBvbmVudCkuam9pbignLycpO1xuICAgIHJldHVybiBjb25maWcubW91bnQgKyAnL2ZpbGVzLycgKyBjb25maWcuYXBwbGljYXRpb25JZCArICcvJyArIGVuY29kZWRGaWxlbmFtZTtcbiAgfVxuXG4gIGFzeW5jIGdldE1ldGFkYXRhKGZpbGVuYW1lKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBidWNrZXQuZmluZCh7IGZpbGVuYW1lIH0pLnRvQXJyYXkoKTtcbiAgICBpZiAoZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHsgbWV0YWRhdGEgfSA9IGZpbGVzWzBdO1xuICAgIHJldHVybiB7IG1ldGFkYXRhIH07XG4gIH1cblxuICBhc3luYyBoYW5kbGVGaWxlU3RyZWFtKGZpbGVuYW1lOiBzdHJpbmcsIHJlcSwgcmVzLCBjb250ZW50VHlwZSkge1xuICAgIGNvbnN0IGJ1Y2tldCA9IGF3YWl0IHRoaXMuX2dldEJ1Y2tldCgpO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgYnVja2V0LmZpbmQoeyBmaWxlbmFtZSB9KS50b0FycmF5KCk7XG4gICAgaWYgKGZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlTm90Rm91bmQnKTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSByZXFcbiAgICAgIC5nZXQoJ1JhbmdlJylcbiAgICAgIC5yZXBsYWNlKC9ieXRlcz0vLCAnJylcbiAgICAgIC5zcGxpdCgnLScpO1xuICAgIGNvbnN0IHBhcnRpYWxzdGFydCA9IHBhcnRzWzBdO1xuICAgIGNvbnN0IHBhcnRpYWxlbmQgPSBwYXJ0c1sxXTtcblxuICAgIGNvbnN0IGZpbGVMZW5ndGggPSBmaWxlc1swXS5sZW5ndGg7XG4gICAgY29uc3QgZmlsZVN0YXJ0ID0gcGFyc2VJbnQocGFydGlhbHN0YXJ0LCAxMCk7XG4gICAgY29uc3QgZmlsZUVuZCA9IHBhcnRpYWxlbmQgPyBwYXJzZUludChwYXJ0aWFsZW5kLCAxMCkgOiBmaWxlTGVuZ3RoO1xuXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5taW4oZmlsZVN0YXJ0IHx8IDAsIGZpbGVFbmQsIGZpbGVMZW5ndGgpO1xuICAgIGxldCBlbmQgPSBNYXRoLm1heChmaWxlU3RhcnQgfHwgMCwgZmlsZUVuZCkgKyAxIHx8IGZpbGVMZW5ndGg7XG4gICAgaWYgKGlzTmFOKGZpbGVTdGFydCkpIHtcbiAgICAgIHN0YXJ0ID0gZmlsZUxlbmd0aCAtIGVuZCArIDE7XG4gICAgICBlbmQgPSBmaWxlTGVuZ3RoO1xuICAgIH1cbiAgICBlbmQgPSBNYXRoLm1pbihlbmQsIGZpbGVMZW5ndGgpO1xuICAgIHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnQsIDApO1xuXG4gICAgcmVzLnN0YXR1cygyMDYpO1xuICAgIHJlcy5oZWFkZXIoJ0FjY2VwdC1SYW5nZXMnLCAnYnl0ZXMnKTtcbiAgICByZXMuaGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIGVuZCAtIHN0YXJ0KTtcbiAgICByZXMuaGVhZGVyKCdDb250ZW50LVJhbmdlJywgJ2J5dGVzICcgKyBzdGFydCArICctJyArIGVuZCArICcvJyArIGZpbGVMZW5ndGgpO1xuICAgIHJlcy5oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGNvbnRlbnRUeXBlKTtcbiAgICBjb25zdCBzdHJlYW0gPSBidWNrZXQub3BlbkRvd25sb2FkU3RyZWFtQnlOYW1lKGZpbGVuYW1lKTtcbiAgICBzdHJlYW0uc3RhcnQoc3RhcnQpO1xuICAgIGlmIChlbmQpIHtcbiAgICAgIHN0cmVhbS5lbmQoZW5kKTtcbiAgICB9XG4gICAgc3RyZWFtLm9uKCdkYXRhJywgY2h1bmsgPT4ge1xuICAgICAgcmVzLndyaXRlKGNodW5rKTtcbiAgICB9KTtcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZSA9PiB7XG4gICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICByZXMuc2VuZChlLm1lc3NhZ2UpO1xuICAgIH0pO1xuICAgIHN0cmVhbS5vbignZW5kJywgKCkgPT4ge1xuICAgICAgcmVzLmVuZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlU2h1dGRvd24oKSB7XG4gICAgaWYgKCF0aGlzLl9jbGllbnQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudC5jbG9zZShmYWxzZSk7XG4gIH1cblxuICB2YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlRmlsZW5hbWUoZmlsZW5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdyaWRGU0J1Y2tldEFkYXB0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQVNBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLGFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFNBQUEsR0FBQUMsdUJBQUEsQ0FBQUgsT0FBQTtBQUFzRSxTQUFBRyx3QkFBQUMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUgsdUJBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFB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
|
|
280
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9uZ29kYiIsInJlcXVpcmUiLCJfRmlsZXNBZGFwdGVyIiwiX2RlZmF1bHRzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJjcnlwdG8iLCJHcmlkRlNCdWNrZXRBZGFwdGVyIiwiRmlsZXNBZGFwdGVyIiwiY29uc3RydWN0b3IiLCJtb25nb0RhdGFiYXNlVVJJIiwiZGVmYXVsdHMiLCJEZWZhdWx0TW9uZ29VUkkiLCJtb25nb09wdGlvbnMiLCJlbmNyeXB0aW9uS2V5IiwidW5kZWZpbmVkIiwiX2RhdGFiYXNlVVJJIiwiX2FsZ29yaXRobSIsIl9lbmNyeXB0aW9uS2V5IiwiY3JlYXRlSGFzaCIsInVwZGF0ZSIsIlN0cmluZyIsImRpZ2VzdCIsInN1YnN0cmluZyIsImRlZmF1bHRNb25nb09wdGlvbnMiLCJfbW9uZ29PcHRpb25zIiwiYXNzaWduIiwiX2NsaWVudE1ldGFkYXRhIiwiY2xpZW50TWV0YWRhdGEiLCJfYmF0Y2hTaXplIiwiYmF0Y2hTaXplIiwia2V5IiwiUGFyc2VTZXJ2ZXJEYXRhYmFzZU9wdGlvbnMiLCJzdXBwb3J0c1N0cmVhbWluZyIsIl9jb25uZWN0IiwiX2Nvbm5lY3Rpb25Qcm9taXNlIiwib3B0aW9ucyIsImRyaXZlckluZm8iLCJuYW1lIiwidmVyc2lvbiIsIk1vbmdvQ2xpZW50IiwiY29ubmVjdCIsInRoZW4iLCJjbGllbnQiLCJfY2xpZW50IiwiZGIiLCJzIiwiZGJOYW1lIiwiX2dldEJ1Y2tldCIsImRhdGFiYXNlIiwiR3JpZEZTQnVja2V0IiwiY3JlYXRlRmlsZSIsImZpbGVuYW1lIiwiZGF0YSIsImNvbnRlbnRUeXBlIiwiYnVja2V0Iiwic3RyZWFtIiwib3BlblVwbG9hZFN0cmVhbSIsIm1ldGFkYXRhIiwicGlwZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiY2h1bmtzIiwib24iLCJjaHVuayIsInB1c2giLCJCdWZmZXIiLCJjb25jYXQiLCJlcnIiLCJkZXN0cm95IiwiaXYiLCJyYW5kb21CeXRlcyIsImNpcGhlciIsImNyZWF0ZUNpcGhlcml2IiwiZW5jcnlwdGVkUmVzdWx0IiwiZmluYWwiLCJnZXRBdXRoVGFnIiwid3JpdGUiLCJlbmQiLCJkZWxldGVGaWxlIiwiZG9jdW1lbnRzIiwiZmluZCIsInRvQXJyYXkiLCJsZW5ndGgiLCJFcnJvciIsImFsbCIsIm1hcCIsImRvYyIsImRlbGV0ZSIsIl9pZCIsImdldEZpbGVEYXRhIiwib3BlbkRvd25sb2FkU3RyZWFtQnlOYW1lIiwicmVhZCIsImF1dGhUYWdMb2NhdGlvbiIsIml2TG9jYXRpb24iLCJhdXRoVGFnIiwic2xpY2UiLCJlbmNyeXB0ZWQiLCJkZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJzZXRBdXRoVGFnIiwiZGVjcnlwdGVkIiwicm90YXRlRW5jcnlwdGlvbktleSIsImZpbGVOYW1lcyIsIm9sZEtleUZpbGVBZGFwdGVyIiwib2xkS2V5IiwiZmlsZU5hbWVzSXRlcmF0b3IiLCJmb3JFYWNoIiwiZmlsZSIsImZpbGVOYW1lc05vdFJvdGF0ZWQiLCJmaWxlTmFtZXNSb3RhdGVkIiwiZmlsZU5hbWUiLCJwbGFpblRleHREYXRhIiwiZmlsdGVyIiwidmFsdWUiLCJyb3RhdGVkIiwibm90Um90YXRlZCIsImdldEZpbGVMb2NhdGlvbiIsImNvbmZpZyIsImVuY29kZWRGaWxlbmFtZSIsInNwbGl0IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwiam9pbiIsIm1vdW50IiwiYXBwbGljYXRpb25JZCIsImdldE1ldGFkYXRhIiwiZmlsZXMiLCJoYW5kbGVGaWxlU3RyZWFtIiwicmVxIiwicmVzIiwicGFydHMiLCJyZXBsYWNlIiwicGFydGlhbHN0YXJ0IiwicGFydGlhbGVuZCIsImZpbGVMZW5ndGgiLCJmaWxlU3RhcnQiLCJwYXJzZUludCIsImZpbGVFbmQiLCJzdGFydCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJpc05hTiIsInN0YXR1cyIsImhlYWRlciIsInNlbmQiLCJtZXNzYWdlIiwiaGFuZGxlU2h1dGRvd24iLCJjbG9zZSIsInZhbGlkYXRlRmlsZW5hbWUiLCJleHBvcnRzIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvRmlsZXMvR3JpZEZTQnVja2V0QWRhcHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiBHcmlkRlNCdWNrZXRBZGFwdGVyXG4gU3RvcmVzIGZpbGVzIGluIE1vbmdvIHVzaW5nIEdyaWRGU1xuIFJlcXVpcmVzIHRoZSBkYXRhYmFzZSBhZGFwdGVyIHRvIGJlIGJhc2VkIG9uIG1vbmdvY2xpZW50XG5cbiBAZmxvdyB3ZWFrXG4gKi9cblxuLy8gQGZsb3ctZGlzYWJsZS1uZXh0XG5pbXBvcnQgeyBNb25nb0NsaWVudCwgR3JpZEZTQnVja2V0LCBEYiB9IGZyb20gJ21vbmdvZGInO1xuaW1wb3J0IHsgRmlsZXNBZGFwdGVyLCB2YWxpZGF0ZUZpbGVuYW1lIH0gZnJvbSAnLi9GaWxlc0FkYXB0ZXInO1xuaW1wb3J0IGRlZmF1bHRzLCB7IFBhcnNlU2VydmVyRGF0YWJhc2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGVmYXVsdHMnO1xuY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG5cbmV4cG9ydCBjbGFzcyBHcmlkRlNCdWNrZXRBZGFwdGVyIGV4dGVuZHMgRmlsZXNBZGFwdGVyIHtcbiAgX2RhdGFiYXNlVVJJOiBzdHJpbmc7XG4gIF9jb25uZWN0aW9uUHJvbWlzZTogUHJvbWlzZTxEYj47XG4gIF9tb25nb09wdGlvbnM6IE9iamVjdDtcbiAgX2FsZ29yaXRobTogc3RyaW5nO1xuICBfY2xpZW50TWV0YWRhdGE6ID97IG5hbWU6IHN0cmluZywgdmVyc2lvbjogc3RyaW5nIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbW9uZ29EYXRhYmFzZVVSSSA9IGRlZmF1bHRzLkRlZmF1bHRNb25nb1VSSSxcbiAgICBtb25nb09wdGlvbnMgPSB7fSxcbiAgICBlbmNyeXB0aW9uS2V5ID0gdW5kZWZpbmVkXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZGF0YWJhc2VVUkkgPSBtb25nb0RhdGFiYXNlVVJJO1xuICAgIHRoaXMuX2FsZ29yaXRobSA9ICdhZXMtMjU2LWdjbSc7XG4gICAgdGhpcy5fZW5jcnlwdGlvbktleSA9XG4gICAgICBlbmNyeXB0aW9uS2V5ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBjcnlwdG9cbiAgICAgICAgICAuY3JlYXRlSGFzaCgnc2hhMjU2JylcbiAgICAgICAgICAudXBkYXRlKFN0cmluZyhlbmNyeXB0aW9uS2V5KSlcbiAgICAgICAgICAuZGlnZXN0KCdiYXNlNjQnKVxuICAgICAgICAgIC5zdWJzdHJpbmcoMCwgMzIpXG4gICAgICAgIDogbnVsbDtcbiAgICBjb25zdCBkZWZhdWx0TW9uZ29PcHRpb25zID0ge307XG4gICAgY29uc3QgX21vbmdvT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdE1vbmdvT3B0aW9ucywgbW9uZ29PcHRpb25zKTtcbiAgICB0aGlzLl9jbGllbnRNZXRhZGF0YSA9IG1vbmdvT3B0aW9ucy5jbGllbnRNZXRhZGF0YTtcbiAgICB0aGlzLl9iYXRjaFNpemUgPSBtb25nb09wdGlvbnMuYmF0Y2hTaXplO1xuICAgIC8vIFJlbW92ZSBQYXJzZSBTZXJ2ZXItc3BlY2lmaWMgb3B0aW9ucyB0aGF0IHNob3VsZCBub3QgYmUgcGFzc2VkIHRvIE1vbmdvREIgY2xpZW50XG4gICAgZm9yIChjb25zdCBrZXkgb2YgUGFyc2VTZXJ2ZXJEYXRhYmFzZU9wdGlvbnMpIHtcbiAgICAgIGRlbGV0ZSBfbW9uZ29PcHRpb25zW2tleV07XG4gICAgfVxuICAgIHRoaXMuX21vbmdvT3B0aW9ucyA9IF9tb25nb09wdGlvbnM7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNTdHJlYW1pbmcoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBfY29ubmVjdCgpIHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlKSB7XG4gICAgICAvLyBPbmx5IHVzZSBkcml2ZXJJbmZvIGlmIGNsaWVudE1ldGFkYXRhIG9wdGlvbiBpcyBzZXRcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IC4uLnRoaXMuX21vbmdvT3B0aW9ucyB9O1xuICAgICAgaWYgKHRoaXMuX2NsaWVudE1ldGFkYXRhKSB7XG4gICAgICAgIG9wdGlvbnMuZHJpdmVySW5mbyA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLl9jbGllbnRNZXRhZGF0YS5uYW1lLFxuICAgICAgICAgIHZlcnNpb246IHRoaXMuX2NsaWVudE1ldGFkYXRhLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY29ubmVjdGlvblByb21pc2UgPSBNb25nb0NsaWVudC5jb25uZWN0KHRoaXMuX2RhdGFiYXNlVVJJLCBvcHRpb25zKS50aGVuKFxuICAgICAgICBjbGllbnQgPT4ge1xuICAgICAgICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDtcbiAgICAgICAgICByZXR1cm4gY2xpZW50LmRiKGNsaWVudC5zLm9wdGlvbnMuZGJOYW1lKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Qcm9taXNlO1xuICB9XG5cbiAgX2dldEJ1Y2tldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdCgpLnRoZW4oZGF0YWJhc2UgPT4gbmV3IEdyaWRGU0J1Y2tldChkYXRhYmFzZSkpO1xuICB9XG5cbiAgLy8gRm9yIGEgZ2l2ZW4gY29uZmlnIG9iamVjdCwgZmlsZW5hbWUsIGFuZCBkYXRhLCBzdG9yZSBhIGZpbGVcbiAgLy8gUmV0dXJucyBhIHByb21pc2VcbiAgYXN5bmMgY3JlYXRlRmlsZShmaWxlbmFtZTogc3RyaW5nLCBkYXRhLCBjb250ZW50VHlwZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgYnVja2V0Lm9wZW5VcGxvYWRTdHJlYW0oZmlsZW5hbWUsIHtcbiAgICAgIG1ldGFkYXRhOiBvcHRpb25zLm1ldGFkYXRhLFxuICAgIH0pO1xuXG4gICAgLy8gSWYgZGF0YSBpcyBhIHN0cmVhbSBhbmQgZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBidWZmZXIgZmlyc3RcbiAgICAvLyAoQUVTLTI1Ni1HQ00gbmVlZHMgY29tcGxldGUgZGF0YSBmb3IgZm9ybWF0OiBbZW5jcnlwdGVkXVtJVl1bYXV0aFRhZ10pXG4gICAgaWYgKHR5cGVvZiBkYXRhPy5waXBlID09PSAnZnVuY3Rpb24nICYmIHRoaXMuX2VuY3J5cHRpb25LZXkgIT09IG51bGwpIHtcbiAgICAgIGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBkYXRhLm9uKCdkYXRhJywgY2h1bmsgPT4gY2h1bmtzLnB1c2goY2h1bmspKTtcbiAgICAgICAgZGF0YS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZShCdWZmZXIuY29uY2F0KGNodW5rcykpKTtcbiAgICAgICAgZGF0YS5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhPy5waXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBQaXBlIHJlYWRhYmxlIHN0cmVhbSBkaXJlY3RseSBpbnRvIEdyaWRGUyB1cGxvYWQgc3RyZWFtXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBkYXRhLnBpcGUoc3RyZWFtKTtcbiAgICAgICAgc3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgICAgc3RyZWFtLm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGRhdGEub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICAgIHN0cmVhbS5kZXN0cm95KGVycik7XG4gICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQnVmZmVyIHBhdGggKGV4aXN0aW5nIGJlaGF2aW9yKVxuICAgIGlmICh0aGlzLl9lbmNyeXB0aW9uS2V5ICE9PSBudWxsKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7XG4gICAgICAgIGNvbnN0IGNpcGhlciA9IGNyeXB0by5jcmVhdGVDaXBoZXJpdih0aGlzLl9hbGdvcml0aG0sIHRoaXMuX2VuY3J5cHRpb25LZXksIGl2KTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkUmVzdWx0ID0gQnVmZmVyLmNvbmNhdChbXG4gICAgICAgICAgY2lwaGVyLnVwZGF0ZShkYXRhKSxcbiAgICAgICAgICBjaXBoZXIuZmluYWwoKSxcbiAgICAgICAgICBpdixcbiAgICAgICAgICBjaXBoZXIuZ2V0QXV0aFRhZygpLFxuICAgICAgICBdKTtcbiAgICAgICAgYXdhaXQgc3RyZWFtLndyaXRlKGVuY3J5cHRlZFJlc3VsdCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBzdHJlYW0ud3JpdGUoZGF0YSk7XG4gICAgfVxuICAgIHN0cmVhbS5lbmQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgc3RyZWFtLm9uKCdmaW5pc2gnLCByZXNvbHZlKTtcbiAgICAgIHN0cmVhbS5vbignZXJyb3InLCByZWplY3QpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlRmlsZShmaWxlbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3QgZG9jdW1lbnRzID0gYXdhaXQgYnVja2V0LmZpbmQoeyBmaWxlbmFtZSB9LCB7IGJhdGNoU2l6ZTogdGhpcy5fYmF0Y2hTaXplIH0pLnRvQXJyYXkoKTtcbiAgICBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlTm90Rm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgZG9jdW1lbnRzLm1hcChkb2MgPT4ge1xuICAgICAgICByZXR1cm4gYnVja2V0LmRlbGV0ZShkb2MuX2lkKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEZpbGVEYXRhKGZpbGVuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidWNrZXQgPSBhd2FpdCB0aGlzLl9nZXRCdWNrZXQoKTtcbiAgICBjb25zdCBzdHJlYW0gPSBidWNrZXQub3BlbkRvd25sb2FkU3RyZWFtQnlOYW1lKGZpbGVuYW1lKTtcbiAgICBzdHJlYW0ucmVhZCgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICAgIHN0cmVhbS5vbignZGF0YScsIGRhdGEgPT4ge1xuICAgICAgICBjaHVua3MucHVzaChkYXRhKTtcbiAgICAgIH0pO1xuICAgICAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuY29uY2F0KGNodW5rcyk7XG4gICAgICAgIGlmICh0aGlzLl9lbmNyeXB0aW9uS2V5ICE9PSBudWxsKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhUYWdMb2NhdGlvbiA9IGRhdGEubGVuZ3RoIC0gMTY7XG4gICAgICAgICAgICBjb25zdCBpdkxvY2F0aW9uID0gZGF0YS5sZW5ndGggLSAzMjtcbiAgICAgICAgICAgIGNvbnN0IGF1dGhUYWcgPSBkYXRhLnNsaWNlKGF1dGhUYWdMb2NhdGlvbik7XG4gICAgICAgICAgICBjb25zdCBpdiA9IGRhdGEuc2xpY2UoaXZMb2NhdGlvbiwgYXV0aFRhZ0xvY2F0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IGRhdGEuc2xpY2UoMCwgaXZMb2NhdGlvbik7XG4gICAgICAgICAgICBjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KHRoaXMuX2FsZ29yaXRobSwgdGhpcy5fZW5jcnlwdGlvbktleSwgaXYpO1xuICAgICAgICAgICAgZGVjaXBoZXIuc2V0QXV0aFRhZyhhdXRoVGFnKTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQpLCBkZWNpcGhlci5maW5hbCgpXSk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShkZWNyeXB0ZWQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfSk7XG4gICAgICBzdHJlYW0ub24oJ2Vycm9yJywgZXJyID0+IHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJvdGF0ZUVuY3J5cHRpb25LZXkob3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xuICAgIGxldCBvbGRLZXlGaWxlQWRhcHRlciA9IHt9O1xuICAgIGNvbnN0IGJ1Y2tldCA9IGF3YWl0IHRoaXMuX2dldEJ1Y2tldCgpO1xuICAgIGlmIChvcHRpb25zLm9sZEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvbGRLZXlGaWxlQWRhcHRlciA9IG5ldyBHcmlkRlNCdWNrZXRBZGFwdGVyKFxuICAgICAgICB0aGlzLl9kYXRhYmFzZVVSSSxcbiAgICAgICAgdGhpcy5fbW9uZ29PcHRpb25zLFxuICAgICAgICBvcHRpb25zLm9sZEtleVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2xkS2V5RmlsZUFkYXB0ZXIgPSBuZXcgR3JpZEZTQnVja2V0QWRhcHRlcih0aGlzLl9kYXRhYmFzZVVSSSwgdGhpcy5fbW9uZ29PcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZmlsZU5hbWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGZpbGVOYW1lcyA9IG9wdGlvbnMuZmlsZU5hbWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWxlTmFtZXNJdGVyYXRvciA9IGF3YWl0IGJ1Y2tldC5maW5kKHt9LCB7IGJhdGNoU2l6ZTogdGhpcy5fYmF0Y2hTaXplIH0pLnRvQXJyYXkoKTtcbiAgICAgIGZpbGVOYW1lc0l0ZXJhdG9yLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgIGZpbGVOYW1lcy5wdXNoKGZpbGUuZmlsZW5hbWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBmaWxlTmFtZXNOb3RSb3RhdGVkID0gZmlsZU5hbWVzO1xuICAgIGNvbnN0IGZpbGVOYW1lc1JvdGF0ZWQgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGZpbGVOYW1lIG9mIGZpbGVOYW1lcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGxhaW5UZXh0RGF0YSA9IGF3YWl0IG9sZEtleUZpbGVBZGFwdGVyLmdldEZpbGVEYXRhKGZpbGVOYW1lKTtcbiAgICAgICAgLy8gT3ZlcndyaXRlIGZpbGUgd2l0aCBkYXRhIGVuY3J5cHRlZCB3aXRoIG5ldyBrZXlcbiAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVGaWxlKGZpbGVOYW1lLCBwbGFpblRleHREYXRhKTtcbiAgICAgICAgZmlsZU5hbWVzUm90YXRlZC5wdXNoKGZpbGVOYW1lKTtcbiAgICAgICAgZmlsZU5hbWVzTm90Um90YXRlZCA9IGZpbGVOYW1lc05vdFJvdGF0ZWQuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gZmlsZU5hbWU7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyByb3RhdGVkOiBmaWxlTmFtZXNSb3RhdGVkLCBub3RSb3RhdGVkOiBmaWxlTmFtZXNOb3RSb3RhdGVkIH07XG4gIH1cblxuICBnZXRGaWxlTG9jYXRpb24oY29uZmlnLCBmaWxlbmFtZSkge1xuICAgIGNvbnN0IGVuY29kZWRGaWxlbmFtZSA9IGZpbGVuYW1lLnNwbGl0KCcvJykubWFwKGVuY29kZVVSSUNvbXBvbmVudCkuam9pbignLycpO1xuICAgIHJldHVybiBjb25maWcubW91bnQgKyAnL2ZpbGVzLycgKyBjb25maWcuYXBwbGljYXRpb25JZCArICcvJyArIGVuY29kZWRGaWxlbmFtZTtcbiAgfVxuXG4gIGFzeW5jIGdldE1ldGFkYXRhKGZpbGVuYW1lKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBidWNrZXQuZmluZCh7IGZpbGVuYW1lIH0sIHsgYmF0Y2hTaXplOiB0aGlzLl9iYXRjaFNpemUgfSkudG9BcnJheSgpO1xuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgeyBtZXRhZGF0YSB9ID0gZmlsZXNbMF07XG4gICAgcmV0dXJuIHsgbWV0YWRhdGEgfTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUZpbGVTdHJlYW0oZmlsZW5hbWU6IHN0cmluZywgcmVxLCByZXMsIGNvbnRlbnRUeXBlKSB7XG4gICAgY29uc3QgYnVja2V0ID0gYXdhaXQgdGhpcy5fZ2V0QnVja2V0KCk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBidWNrZXQuZmluZCh7IGZpbGVuYW1lIH0sIHsgYmF0Y2hTaXplOiB0aGlzLl9iYXRjaFNpemUgfSkudG9BcnJheSgpO1xuICAgIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmlsZU5vdEZvdW5kJyk7XG4gICAgfVxuICAgIGNvbnN0IHBhcnRzID0gcmVxXG4gICAgICAuZ2V0KCdSYW5nZScpXG4gICAgICAucmVwbGFjZSgvYnl0ZXM9LywgJycpXG4gICAgICAuc3BsaXQoJy0nKTtcbiAgICBjb25zdCBwYXJ0aWFsc3RhcnQgPSBwYXJ0c1swXTtcbiAgICBjb25zdCBwYXJ0aWFsZW5kID0gcGFydHNbMV07XG5cbiAgICBjb25zdCBmaWxlTGVuZ3RoID0gZmlsZXNbMF0ubGVuZ3RoO1xuICAgIGNvbnN0IGZpbGVTdGFydCA9IHBhcnNlSW50KHBhcnRpYWxzdGFydCwgMTApO1xuICAgIGNvbnN0IGZpbGVFbmQgPSBwYXJ0aWFsZW5kID8gcGFyc2VJbnQocGFydGlhbGVuZCwgMTApIDogZmlsZUxlbmd0aDtcblxuICAgIGxldCBzdGFydCA9IE1hdGgubWluKGZpbGVTdGFydCB8fCAwLCBmaWxlRW5kLCBmaWxlTGVuZ3RoKTtcbiAgICBsZXQgZW5kID0gTWF0aC5tYXgoZmlsZVN0YXJ0IHx8IDAsIGZpbGVFbmQpICsgMSB8fCBmaWxlTGVuZ3RoO1xuICAgIGlmIChpc05hTihmaWxlU3RhcnQpKSB7XG4gICAgICBzdGFydCA9IGZpbGVMZW5ndGggLSBlbmQgKyAxO1xuICAgICAgZW5kID0gZmlsZUxlbmd0aDtcbiAgICB9XG4gICAgZW5kID0gTWF0aC5taW4oZW5kLCBmaWxlTGVuZ3RoKTtcbiAgICBzdGFydCA9IE1hdGgubWF4KHN0YXJ0LCAwKTtcblxuICAgIHJlcy5zdGF0dXMoMjA2KTtcbiAgICByZXMuaGVhZGVyKCdBY2NlcHQtUmFuZ2VzJywgJ2J5dGVzJyk7XG4gICAgcmVzLmhlYWRlcignQ29udGVudC1MZW5ndGgnLCBlbmQgLSBzdGFydCk7XG4gICAgcmVzLmhlYWRlcignQ29udGVudC1SYW5nZScsICdieXRlcyAnICsgc3RhcnQgKyAnLScgKyBlbmQgKyAnLycgKyBmaWxlTGVuZ3RoKTtcbiAgICByZXMuaGVhZGVyKCdDb250ZW50LVR5cGUnLCBjb250ZW50VHlwZSk7XG4gICAgY29uc3Qgc3RyZWFtID0gYnVja2V0Lm9wZW5Eb3dubG9hZFN0cmVhbUJ5TmFtZShmaWxlbmFtZSk7XG4gICAgc3RyZWFtLnN0YXJ0KHN0YXJ0KTtcbiAgICBpZiAoZW5kKSB7XG4gICAgICBzdHJlYW0uZW5kKGVuZCk7XG4gICAgfVxuICAgIHN0cmVhbS5vbignZGF0YScsIGNodW5rID0+IHtcbiAgICAgIHJlcy53cml0ZShjaHVuayk7XG4gICAgfSk7XG4gICAgc3RyZWFtLm9uKCdlcnJvcicsIGUgPT4ge1xuICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgcmVzLnNlbmQoZS5tZXNzYWdlKTtcbiAgICB9KTtcbiAgICBzdHJlYW0ub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHJlcy5lbmQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVNodXRkb3duKCkge1xuICAgIGlmICghdGhpcy5fY2xpZW50KSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jbGllbnQuY2xvc2UoZmFsc2UpO1xuICB9XG5cbiAgdmFsaWRhdGVGaWxlbmFtZShmaWxlbmFtZSkge1xuICAgIHJldHVybiB2YWxpZGF0ZUZpbGVuYW1lKGZpbGVuYW1lKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHcmlkRlNCdWNrZXRBZGFwdGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFTQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxTQUFBLEdBQUFDLHVCQUFB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
|
|
@@ -22,6 +22,7 @@ class MongoCollection {
|
|
|
22
22
|
sort,
|
|
23
23
|
keys,
|
|
24
24
|
maxTimeMS,
|
|
25
|
+
batchSize,
|
|
25
26
|
readPreference,
|
|
26
27
|
hint,
|
|
27
28
|
caseInsensitive,
|
|
@@ -41,6 +42,7 @@ class MongoCollection {
|
|
|
41
42
|
sort,
|
|
42
43
|
keys,
|
|
43
44
|
maxTimeMS,
|
|
45
|
+
batchSize,
|
|
44
46
|
readPreference,
|
|
45
47
|
hint,
|
|
46
48
|
caseInsensitive,
|
|
@@ -66,6 +68,7 @@ class MongoCollection {
|
|
|
66
68
|
sort,
|
|
67
69
|
keys,
|
|
68
70
|
maxTimeMS,
|
|
71
|
+
batchSize,
|
|
69
72
|
readPreference,
|
|
70
73
|
hint,
|
|
71
74
|
caseInsensitive,
|
|
@@ -90,6 +93,7 @@ class MongoCollection {
|
|
|
90
93
|
sort,
|
|
91
94
|
keys,
|
|
92
95
|
maxTimeMS,
|
|
96
|
+
batchSize,
|
|
93
97
|
readPreference,
|
|
94
98
|
hint,
|
|
95
99
|
caseInsensitive,
|
|
@@ -102,7 +106,8 @@ class MongoCollection {
|
|
|
102
106
|
sort,
|
|
103
107
|
readPreference,
|
|
104
108
|
hint,
|
|
105
|
-
comment
|
|
109
|
+
comment,
|
|
110
|
+
batchSize
|
|
106
111
|
});
|
|
107
112
|
if (keys) {
|
|
108
113
|
findOperation = findOperation.project(keys);
|
|
@@ -149,6 +154,7 @@ class MongoCollection {
|
|
|
149
154
|
}
|
|
150
155
|
aggregate(pipeline, {
|
|
151
156
|
maxTimeMS,
|
|
157
|
+
batchSize,
|
|
152
158
|
readPreference,
|
|
153
159
|
hint,
|
|
154
160
|
explain,
|
|
@@ -156,6 +162,7 @@ class MongoCollection {
|
|
|
156
162
|
} = {}) {
|
|
157
163
|
return this._mongoCollection.aggregate(pipeline, {
|
|
158
164
|
maxTimeMS,
|
|
165
|
+
batchSize,
|
|
159
166
|
readPreference,
|
|
160
167
|
hint,
|
|
161
168
|
explain,
|
|
@@ -202,4 +209,4 @@ class MongoCollection {
|
|
|
202
209
|
}
|
|
203
210
|
}
|
|
204
211
|
exports.default = MongoCollection;
|
|
205
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb25nb2RiIiwicmVxdWlyZSIsIkNvbGxlY3Rpb24iLCJNb25nb0NvbGxlY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm1vbmdvQ29sbGVjdGlvbiIsIl9tb25nb0NvbGxlY3Rpb24iLCJmaW5kIiwicXVlcnkiLCJza2lwIiwibGltaXQiLCJzb3J0Iiwia2V5cyIsIm1heFRpbWVNUyIsInJlYWRQcmVmZXJlbmNlIiwiaGludCIsImNhc2VJbnNlbnNpdGl2ZSIsImV4cGxhaW4iLCJjb21tZW50IiwiJHNjb3JlIiwic2NvcmUiLCIkbWV0YSIsIl9yYXdGaW5kIiwiY2F0Y2giLCJlcnJvciIsImNvZGUiLCJtZXNzYWdlIiwibWF0Y2giLCJrZXkiLCJpbmRleCIsImNyZWF0ZUluZGV4IiwidGhlbiIsImNhc2VJbnNlbnNpdGl2ZUNvbGxhdGlvbiIsImxvY2FsZSIsInN0cmVuZ3RoIiwiZmluZE9wZXJhdGlvbiIsInByb2plY3QiLCJjb2xsYXRpb24iLCJ0b0FycmF5IiwiY291bnQiLCJPYmplY3QiLCJsZW5ndGgiLCJlc3RpbWF0ZWREb2N1bWVudENvdW50IiwiY291bnRPcGVyYXRpb24iLCJjb3VudERvY3VtZW50cyIsImRpc3RpbmN0IiwiZmllbGQiLCJhZ2dyZWdhdGUiLCJwaXBlbGluZSIsImluc2VydE9uZSIsIm9iamVjdCIsInNlc3Npb24iLCJ1cHNlcnRPbmUiLCJ1cGRhdGUiLCJ1cGRhdGVPbmUiLCJ1cHNlcnQiLCJ1cGRhdGVNYW55IiwiZGVsZXRlTWFueSIsIl9lbnN1cmVTcGFyc2VVbmlxdWVJbmRleEluQmFja2dyb3VuZCIsImluZGV4UmVxdWVzdCIsInVuaXF1ZSIsImJhY2tncm91bmQiLCJzcGFyc2UiLCJkcm9wIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQWRhcHRlcnMvU3RvcmFnZS9Nb25nby9Nb25nb0NvbGxlY3Rpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29kYiA9IHJlcXVpcmUoJ21vbmdvZGInKTtcbmNvbnN0IENvbGxlY3Rpb24gPSBtb25nb2RiLkNvbGxlY3Rpb247XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vbmdvQ29sbGVjdGlvbiB7XG4gIF9tb25nb0NvbGxlY3Rpb246IENvbGxlY3Rpb247XG5cbiAgY29uc3RydWN0b3IobW9uZ29Db2xsZWN0aW9uOiBDb2xsZWN0aW9uKSB7XG4gICAgdGhpcy5fbW9uZ29Db2xsZWN0aW9uID0gbW9uZ29Db2xsZWN0aW9uO1xuICB9XG5cbiAgLy8gRG9lcyBhIGZpbmQgd2l0aCBcInNtYXJ0IGluZGV4aW5nXCIuXG4gIC8vIEN1cnJlbnRseSB0aGlzIGp1c3QgbWVhbnMsIGlmIGl0IG5lZWRzIGEgZ2VvaW5kZXggYW5kIHRoZXJlIGlzXG4gIC8vIG5vbmUsIHRoZW4gYnVpbGQgdGhlIGdlb2luZGV4LlxuICAvLyBUaGlzIGNvdWxkIGJlIGltcHJvdmVkIGEgbG90IGJ1dCBpdCdzIG5vdCBjbGVhciBpZiB0aGF0J3MgYSBnb29kXG4gIC8vIGlkZWEuIE9yIGV2ZW4gaWYgdGhpcyBiZWhhdmlvciBpcyBhIGdvb2QgaWRlYS5cbiAgZmluZChcbiAgICBxdWVyeSxcbiAgICB7XG4gICAgICBza2lwLFxuICAgICAgbGltaXQsXG4gICAgICBzb3J0LFxuICAgICAga2V5cyxcbiAgICAgIG1heFRpbWVNUyxcbiAgICAgIHJlYWRQcmVmZXJlbmNlLFxuICAgICAgaGludCxcbiAgICAgIGNhc2VJbnNlbnNpdGl2ZSxcbiAgICAgIGV4cGxhaW4sXG4gICAgICBjb21tZW50LFxuICAgIH0gPSB7fVxuICApIHtcbiAgICAvLyBTdXBwb3J0IGZvciBGdWxsIFRleHQgU2VhcmNoIC0gJHRleHRcbiAgICBpZiAoa2V5cyAmJiBrZXlzLiRzY29yZSkge1xuICAgICAgZGVsZXRlIGtleXMuJHNjb3JlO1xuICAgICAga2V5cy5zY29yZSA9IHsgJG1ldGE6ICd0ZXh0U2NvcmUnIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yYXdGaW5kKHF1ZXJ5LCB7XG4gICAgICBza2lwLFxuICAgICAgbGltaXQsXG4gICAgICBzb3J0LFxuICAgICAga2V5cyxcbiAgICAgIG1heFRpbWVNUyxcbiAgICAgIHJlYWRQcmVmZXJlbmNlLFxuICAgICAgaGludCxcbiAgICAgIGNhc2VJbnNlbnNpdGl2ZSxcbiAgICAgIGV4cGxhaW4sXG4gICAgICBjb21tZW50LFxuICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIC8vIENoZWNrIGZvciBcIm5vIGdlb2luZGV4XCIgZXJyb3JcbiAgICAgIGlmIChlcnJvci5jb2RlICE9IDE3MDA3ICYmICFlcnJvci5tZXNzYWdlLm1hdGNoKC91bmFibGUgdG8gZmluZCBpbmRleCBmb3IgLmdlb05lYXIvKSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBrZXkgbmVlZHMgYW4gaW5kZXhcbiAgICAgIGNvbnN0IGtleSA9IGVycm9yLm1lc3NhZ2UubWF0Y2goL2ZpZWxkPShbQS1aYS16XzAtOV0rKSAvKVsxXTtcbiAgICAgIGlmICgha2V5KSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5kZXggPSB7fTtcbiAgICAgIGluZGV4W2tleV0gPSAnMmQnO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5fbW9uZ29Db2xsZWN0aW9uXG4gICAgICAgICAgLmNyZWF0ZUluZGV4KGluZGV4KVxuICAgICAgICAgIC8vIFJldHJ5LCBidXQganVzdCBvbmNlLlxuICAgICAgICAgIC50aGVuKCgpID0+XG4gICAgICAgICAgICB0aGlzLl9yYXdGaW5kKHF1ZXJ5LCB7XG4gICAgICAgICAgICAgIHNraXAsXG4gICAgICAgICAgICAgIGxpbWl0LFxuICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgICBtYXhUaW1lTVMsXG4gICAgICAgICAgICAgIHJlYWRQcmVmZXJlbmNlLFxuICAgICAgICAgICAgICBoaW50LFxuICAgICAgICAgICAgICBjYXNlSW5zZW5zaXRpdmUsXG4gICAgICAgICAgICAgIGV4cGxhaW4sXG4gICAgICAgICAgICAgIGNvbW1lbnQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29sbGF0aW9uIHRvIHN1cHBvcnQgY2FzZSBpbnNlbnNpdGl2ZSBxdWVyaWVzXG4gICAqL1xuICBzdGF0aWMgY2FzZUluc2Vuc2l0aXZlQ29sbGF0aW9uKCkge1xuICAgIHJldHVybiB7IGxvY2FsZTogJ2VuX1VTJywgc3RyZW5ndGg6IDIgfTtcbiAgfVxuXG4gIF9yYXdGaW5kKFxuICAgIHF1ZXJ5LFxuICAgIHtcbiAgICAgIHNraXAsXG4gICAgICBsaW1pdCxcbiAgICAgIHNvcnQsXG4gICAgICBrZXlzLFxuICAgICAgbWF4VGltZU1TLFxuICAgICAgcmVhZFByZWZlcmVuY2UsXG4gICAgICBoaW50LFxuICAgICAgY2FzZUluc2Vuc2l0aXZlLFxuICAgICAgZXhwbGFpbixcbiAgICAgIGNvbW1lbnQsXG4gICAgfSA9IHt9XG4gICkge1xuICAgIGxldCBmaW5kT3BlcmF0aW9uID0gdGhpcy5fbW9uZ29Db2xsZWN0aW9uLmZpbmQocXVlcnksIHtcbiAgICAgIHNraXAsXG4gICAgICBsaW1pdCxcbiAgICAgIHNvcnQsXG4gICAgICByZWFkUHJlZmVyZW5jZSxcbiAgICAgIGhpbnQsXG4gICAgICBjb21tZW50LFxuICAgIH0pO1xuXG4gICAgaWYgKGtleXMpIHtcbiAgICAgIGZpbmRPcGVyYXRpb24gPSBmaW5kT3BlcmF0aW9uLnByb2plY3Qoa2V5cyk7XG4gICAgfVxuXG4gICAgaWYgKGNhc2VJbnNlbnNpdGl2ZSkge1xuICAgICAgZmluZE9wZXJhdGlvbiA9IGZpbmRPcGVyYXRpb24uY29sbGF0aW9uKE1vbmdvQ29sbGVjdGlvbi5jYXNlSW5zZW5zaXRpdmVDb2xsYXRpb24oKSk7XG4gICAgfVxuXG4gICAgaWYgKG1heFRpbWVNUykge1xuICAgICAgZmluZE9wZXJhdGlvbiA9IGZpbmRPcGVyYXRpb24ubWF4VGltZU1TKG1heFRpbWVNUyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4cGxhaW4gPyBmaW5kT3BlcmF0aW9uLmV4cGxhaW4oZXhwbGFpbikgOiBmaW5kT3BlcmF0aW9uLnRvQXJyYXkoKTtcbiAgfVxuXG4gIGNvdW50KHF1ZXJ5LCB7IHNraXAsIGxpbWl0LCBzb3J0LCBtYXhUaW1lTVMsIHJlYWRQcmVmZXJlbmNlLCBoaW50LCBjb21tZW50IH0gPSB7fSkge1xuICAgIC8vIElmIHF1ZXJ5IGlzIGVtcHR5LCB0aGVuIHVzZSBlc3RpbWF0ZWREb2N1bWVudENvdW50IGluc3RlYWQuXG4gICAgLy8gVGhpcyBpcyBkdWUgdG8gY291bnREb2N1bWVudHMgcGVyZm9ybWluZyBhIHNjYW4sXG4gICAgLy8gd2hpY2ggZ3JlYXRseSBpbmNyZWFzZXMgZXhlY3V0aW9uIHRpbWUgd2hlbiBiZWluZyBydW4gb24gbGFyZ2UgY29sbGVjdGlvbnMuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9BdXRvbWF0dGljL21vbmdvb3NlL2lzc3Vlcy82NzEzIGZvciBtb3JlIGluZm8gcmVnYXJkaW5nIHRoaXMgcHJvYmxlbS5cbiAgICBpZiAodHlwZW9mIHF1ZXJ5ICE9PSAnb2JqZWN0JyB8fCAhT2JqZWN0LmtleXMocXVlcnkpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuX21vbmdvQ29sbGVjdGlvbi5lc3RpbWF0ZWREb2N1bWVudENvdW50KHtcbiAgICAgICAgbWF4VGltZU1TLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY291bnRPcGVyYXRpb24gPSB0aGlzLl9tb25nb0NvbGxlY3Rpb24uY291bnREb2N1bWVudHMocXVlcnksIHtcbiAgICAgIHNraXAsXG4gICAgICBsaW1pdCxcbiAgICAgIHNvcnQsXG4gICAgICBtYXhUaW1lTVMsXG4gICAgICByZWFkUHJlZmVyZW5jZSxcbiAgICAgIGhpbnQsXG4gICAgICBjb21tZW50LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvdW50T3BlcmF0aW9uO1xuICB9XG5cbiAgZGlzdGluY3QoZmllbGQsIHF1ZXJ5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21vbmdvQ29sbGVjdGlvbi5kaXN0aW5jdChmaWVsZCwgcXVlcnkpO1xuICB9XG5cbiAgYWdncmVnYXRlKHBpcGVsaW5lLCB7IG1heFRpbWVNUywgcmVhZFByZWZlcmVuY2UsIGhpbnQsIGV4cGxhaW4sIGNvbW1lbnQgfSA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuX21vbmdvQ29sbGVjdGlvblxuICAgICAgLmFnZ3JlZ2F0ZShwaXBlbGluZSwgeyBtYXhUaW1lTVMsIHJlYWRQcmVmZXJlbmNlLCBoaW50LCBleHBsYWluLCBjb21tZW50IH0pXG4gICAgICAudG9BcnJheSgpO1xuICB9XG5cbiAgaW5zZXJ0T25lKG9iamVjdCwgc2Vzc2lvbikge1xuICAgIHJldHVybiB0aGlzLl9tb25nb0NvbGxlY3Rpb24uaW5zZXJ0T25lKG9iamVjdCwgeyBzZXNzaW9uIH0pO1xuICB9XG5cbiAgLy8gQXRvbWljYWxseSB1cGRhdGVzIGRhdGEgaW4gdGhlIGRhdGFiYXNlIGZvciBhIHNpbmdsZSAoZmlyc3QpIG9iamVjdCB0aGF0IG1hdGNoZWQgdGhlIHF1ZXJ5XG4gIC8vIElmIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBtYXRjaGVzIHRoZSBxdWVyeSAtIGRvZXMgaW5zZXJ0XG4gIC8vIFBvc3RncmVzIE5vdGU6IGBJTlNFUlQgLi4uIE9OIENPTkZMSUNUIFVQREFURWAgdGhhdCBpcyBhdmFpbGFibGUgc2luY2UgOS41LlxuICB1cHNlcnRPbmUocXVlcnksIHVwZGF0ZSwgc2Vzc2lvbikge1xuICAgIHJldHVybiB0aGlzLl9tb25nb0NvbGxlY3Rpb24udXBkYXRlT25lKHF1ZXJ5LCB1cGRhdGUsIHtcbiAgICAgIHVwc2VydDogdHJ1ZSxcbiAgICAgIHNlc3Npb24sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVPbmUocXVlcnksIHVwZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLl9tb25nb0NvbGxlY3Rpb24udXBkYXRlT25lKHF1ZXJ5LCB1cGRhdGUpO1xuICB9XG5cbiAgdXBkYXRlTWFueShxdWVyeSwgdXBkYXRlLCBzZXNzaW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vbmdvQ29sbGVjdGlvbi51cGRhdGVNYW55KHF1ZXJ5LCB1cGRhdGUsIHsgc2Vzc2lvbiB9KTtcbiAgfVxuXG4gIGRlbGV0ZU1hbnkocXVlcnksIHNlc3Npb24pIHtcbiAgICByZXR1cm4gdGhpcy5fbW9uZ29Db2xsZWN0aW9uLmRlbGV0ZU1hbnkocXVlcnksIHsgc2Vzc2lvbiB9KTtcbiAgfVxuXG4gIF9lbnN1cmVTcGFyc2VVbmlxdWVJbmRleEluQmFja2dyb3VuZChpbmRleFJlcXVlc3QpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9uZ29Db2xsZWN0aW9uLmNyZWF0ZUluZGV4KGluZGV4UmVxdWVzdCwge1xuICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgYmFja2dyb3VuZDogdHJ1ZSxcbiAgICAgIHNwYXJzZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGRyb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vbmdvQ29sbGVjdGlvbi5kcm9wKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBUyxDQUFDO0FBQ2xDLE1BQU1DLFVBQVUsR0FBR0YsT0FBTyxDQUFDRSxVQUFVO0FBRXRCLE1BQU1DLGVBQWUsQ0FBQztFQUduQ0MsV0FBV0EsQ0FBQ0MsZUFBMkIsRUFBRTtJQUN2QyxJQUFJLENBQUNDLGdCQUFnQixHQUFHRCxlQUFlO0VBQ3pDOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQUUsSUFBSUEsQ0FDRkMsS0FBSyxFQUNMO0lBQ0VDLElBQUk7SUFDSkMsS0FBSztJQUNMQyxJQUFJO0lBQ0pDLElBQUk7SUFDSkMsU0FBUztJQUNUQyxjQUFjO0lBQ2RDLElBQUk7SUFD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
|
|
212
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb25nb2RiIiwicmVxdWlyZSIsIkNvbGxlY3Rpb24iLCJNb25nb0NvbGxlY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm1vbmdvQ29sbGVjdGlvbiIsIl9tb25nb0NvbGxlY3Rpb24iLCJmaW5kIiwicXVlcnkiLCJza2lwIiwibGltaXQiLCJzb3J0Iiwia2V5cyIsIm1heFRpbWVNUyIsImJhdGNoU2l6ZSIsInJlYWRQcmVmZXJlbmNlIiwiaGludCIsImNhc2VJbnNlbnNpdGl2ZSIsImV4cGxhaW4iLCJjb21tZW50IiwiJHNjb3JlIiwic2NvcmUiLCIkbWV0YSIsIl9yYXdGaW5kIiwiY2F0Y2giLCJlcnJvciIsImNvZGUiLCJtZXNzYWdlIiwibWF0Y2giLCJrZXkiLCJpbmRleCIsImNyZWF0ZUluZGV4IiwidGhlbiIsImNhc2VJbnNlbnNpdGl2ZUNvbGxhdGlvbiIsImxvY2FsZSIsInN0cmVuZ3RoIiwiZmluZE9wZXJhdGlvbiIsInByb2plY3QiLCJjb2xsYXRpb24iLCJ0b0FycmF5IiwiY291bnQiLCJPYmplY3QiLCJsZW5ndGgiLCJlc3RpbWF0ZWREb2N1bWVudENvdW50IiwiY291bnRPcGVyYXRpb24iLCJjb3VudERvY3VtZW50cyIsImRpc3RpbmN0IiwiZmllbGQiLCJhZ2dyZWdhdGUiLCJwaXBlbGluZSIsImluc2VydE9uZSIsIm9iamVjdCIsInNlc3Npb24iLCJ1cHNlcnRPbmUiLCJ1cGRhdGUiLCJ1cGRhdGVPbmUiLCJ1cHNlcnQiLCJ1cGRhdGVNYW55IiwiZGVsZXRlTWFueSIsIl9lbnN1cmVTcGFyc2VVbmlxdWVJbmRleEluQmFja2dyb3VuZCIsImluZGV4UmVxdWVzdCIsInVuaXF1ZSIsImJhY2tncm91bmQiLCJzcGFyc2UiLCJkcm9wIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQWRhcHRlcnMvU3RvcmFnZS9Nb25nby9Nb25nb0NvbGxlY3Rpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29kYiA9IHJlcXVpcmUoJ21vbmdvZGInKTtcbmNvbnN0IENvbGxlY3Rpb24gPSBtb25nb2RiLkNvbGxlY3Rpb247XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vbmdvQ29sbGVjdGlvbiB7XG4gIF9tb25nb0NvbGxlY3Rpb246IENvbGxlY3Rpb247XG5cbiAgY29uc3RydWN0b3IobW9uZ29Db2xsZWN0aW9uOiBDb2xsZWN0aW9uKSB7XG4gICAgdGhpcy5fbW9uZ29Db2xsZWN0aW9uID0gbW9uZ29Db2xsZWN0aW9uO1xuICB9XG5cbiAgLy8gRG9lcyBhIGZpbmQgd2l0aCBcInNtYXJ0IGluZGV4aW5nXCIuXG4gIC8vIEN1cnJlbnRseSB0aGlzIGp1c3QgbWVhbnMsIGlmIGl0IG5lZWRzIGEgZ2VvaW5kZXggYW5kIHRoZXJlIGlzXG4gIC8vIG5vbmUsIHRoZW4gYnVpbGQgdGhlIGdlb2luZGV4LlxuICAvLyBUaGlzIGNvdWxkIGJlIGltcHJvdmVkIGEgbG90IGJ1dCBpdCdzIG5vdCBjbGVhciBpZiB0aGF0J3MgYSBnb29kXG4gIC8vIGlkZWEuIE9yIGV2ZW4gaWYgdGhpcyBiZWhhdmlvciBpcyBhIGdvb2QgaWRlYS5cbiAgZmluZChcbiAgICBxdWVyeSxcbiAgICB7XG4gICAgICBza2lwLFxuICAgICAgbGltaXQsXG4gICAgICBzb3J0LFxuICAgICAga2V5cyxcbiAgICAgIG1heFRpbWVNUyxcbiAgICAgIGJhdGNoU2l6ZSxcbiAgICAgIHJlYWRQcmVmZXJlbmNlLFxuICAgICAgaGludCxcbiAgICAgIGNhc2VJbnNlbnNpdGl2ZSxcbiAgICAgIGV4cGxhaW4sXG4gICAgICBjb21tZW50LFxuICAgIH0gPSB7fVxuICApIHtcbiAgICAvLyBTdXBwb3J0IGZvciBGdWxsIFRleHQgU2VhcmNoIC0gJHRleHRcbiAgICBpZiAoa2V5cyAmJiBrZXlzLiRzY29yZSkge1xuICAgICAgZGVsZXRlIGtleXMuJHNjb3JlO1xuICAgICAga2V5cy5zY29yZSA9IHsgJG1ldGE6ICd0ZXh0U2NvcmUnIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yYXdGaW5kKHF1ZXJ5LCB7XG4gICAgICBza2lwLFxuICAgICAgbGltaXQsXG4gICAgICBzb3J0LFxuICAgICAga2V5cyxcbiAgICAgIG1heFRpbWVNUyxcbiAgICAgIGJhdGNoU2l6ZSxcbiAgICAgIHJlYWRQcmVmZXJlbmNlLFxuICAgICAgaGludCxcbiAgICAgIGNhc2VJbnNlbnNpdGl2ZSxcbiAgICAgIGV4cGxhaW4sXG4gICAgICBjb21tZW50LFxuICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIC8vIENoZWNrIGZvciBcIm5vIGdlb2luZGV4XCIgZXJyb3JcbiAgICAgIGlmIChlcnJvci5jb2RlICE9IDE3MDA3ICYmICFlcnJvci5tZXNzYWdlLm1hdGNoKC91bmFibGUgdG8gZmluZCBpbmRleCBmb3IgLmdlb05lYXIvKSkge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBrZXkgbmVlZHMgYW4gaW5kZXhcbiAgICAgIGNvbnN0IGtleSA9IGVycm9yLm1lc3NhZ2UubWF0Y2goL2ZpZWxkPShbQS1aYS16XzAtOV0rKSAvKVsxXTtcbiAgICAgIGlmICgha2V5KSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5kZXggPSB7fTtcbiAgICAgIGluZGV4W2tleV0gPSAnMmQnO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5fbW9uZ29Db2xsZWN0aW9uXG4gICAgICAgICAgLmNyZWF0ZUluZGV4KGluZGV4KVxuICAgICAgICAgIC8vIFJldHJ5LCBidXQganVzdCBvbmNlLlxuICAgICAgICAgIC50aGVuKCgpID0+XG4gICAgICAgICAgICB0aGlzLl9yYXdGaW5kKHF1ZXJ5LCB7XG4gICAgICAgICAgICAgIHNraXAsXG4gICAgICAgICAgICAgIGxpbWl0LFxuICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICBrZXlzLFxuICAgICAgICAgICAgICBtYXhUaW1lTVMsXG4gICAgICAgICAgICAgIGJhdGNoU2l6ZSxcbiAgICAgICAgICAgICAgcmVhZFByZWZlcmVuY2UsXG4gICAgICAgICAgICAgIGhpbnQsXG4gICAgICAgICAgICAgIGNhc2VJbnNlbnNpdGl2ZSxcbiAgICAgICAgICAgICAgZXhwbGFpbixcbiAgICAgICAgICAgICAgY29tbWVudCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsYXRpb24gdG8gc3VwcG9ydCBjYXNlIGluc2Vuc2l0aXZlIHF1ZXJpZXNcbiAgICovXG4gIHN0YXRpYyBjYXNlSW5zZW5zaXRpdmVDb2xsYXRpb24oKSB7XG4gICAgcmV0dXJuIHsgbG9jYWxlOiAnZW5fVVMnLCBzdHJlbmd0aDogMiB9O1xuICB9XG5cbiAgX3Jhd0ZpbmQoXG4gICAgcXVlcnksXG4gICAge1xuICAgICAgc2tpcCxcbiAgICAgIGxpbWl0LFxuICAgICAgc29ydCxcbiAgICAgIGtleXMsXG4gICAgICBtYXhUaW1lTVMsXG4gICAgICBiYXRjaFNpemUsXG4gICAgICByZWFkUHJlZmVyZW5jZSxcbiAgICAgIGhpbnQsXG4gICAgICBjYXNlSW5zZW5zaXRpdmUsXG4gICAgICBleHBsYWluLFxuICAgICAgY29tbWVudCxcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgbGV0IGZpbmRPcGVyYXRpb24gPSB0aGlzLl9tb25nb0NvbGxlY3Rpb24uZmluZChxdWVyeSwge1xuICAgICAgc2tpcCxcbiAgICAgIGxpbWl0LFxuICAgICAgc29ydCxcbiAgICAgIHJlYWRQcmVmZXJlbmNlLFxuICAgICAgaGludCxcbiAgICAgIGNvbW1lbnQsXG4gICAgICBiYXRjaFNpemUsXG4gICAgfSk7XG5cbiAgICBpZiAoa2V5cykge1xuICAgICAgZmluZE9wZXJhdGlvbiA9IGZpbmRPcGVyYXRpb24ucHJvamVjdChrZXlzKTtcbiAgICB9XG5cbiAgICBpZiAoY2FzZUluc2Vuc2l0aXZlKSB7XG4gICAgICBmaW5kT3BlcmF0aW9uID0gZmluZE9wZXJhdGlvbi5jb2xsYXRpb24oTW9uZ29Db2xsZWN0aW9uLmNhc2VJbnNlbnNpdGl2ZUNvbGxhdGlvbigpKTtcbiAgICB9XG5cbiAgICBpZiAobWF4VGltZU1TKSB7XG4gICAgICBmaW5kT3BlcmF0aW9uID0gZmluZE9wZXJhdGlvbi5tYXhUaW1lTVMobWF4VGltZU1TKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXhwbGFpbiA/IGZpbmRPcGVyYXRpb24uZXhwbGFpbihleHBsYWluKSA6IGZpbmRPcGVyYXRpb24udG9BcnJheSgpO1xuICB9XG5cbiAgY291bnQocXVlcnksIHsgc2tpcCwgbGltaXQsIHNvcnQsIG1heFRpbWVNUywgcmVhZFByZWZlcmVuY2UsIGhpbnQsIGNvbW1lbnQgfSA9IHt9KSB7XG4gICAgLy8gSWYgcXVlcnkgaXMgZW1wdHksIHRoZW4gdXNlIGVzdGltYXRlZERvY3VtZW50Q291bnQgaW5zdGVhZC5cbiAgICAvLyBUaGlzIGlzIGR1ZSB0byBjb3VudERvY3VtZW50cyBwZXJmb3JtaW5nIGEgc2NhbixcbiAgICAvLyB3aGljaCBncmVhdGx5IGluY3JlYXNlcyBleGVjdXRpb24gdGltZSB3aGVuIGJlaW5nIHJ1biBvbiBsYXJnZSBjb2xsZWN0aW9ucy5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0F1dG9tYXR0aWMvbW9uZ29vc2UvaXNzdWVzLzY3MTMgZm9yIG1vcmUgaW5mbyByZWdhcmRpbmcgdGhpcyBwcm9ibGVtLlxuICAgIGlmICh0eXBlb2YgcXVlcnkgIT09ICdvYmplY3QnIHx8ICFPYmplY3Qua2V5cyhxdWVyeSkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbW9uZ29Db2xsZWN0aW9uLmVzdGltYXRlZERvY3VtZW50Q291bnQoe1xuICAgICAgICBtYXhUaW1lTVMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudE9wZXJhdGlvbiA9IHRoaXMuX21vbmdvQ29sbGVjdGlvbi5jb3VudERvY3VtZW50cyhxdWVyeSwge1xuICAgICAgc2tpcCxcbiAgICAgIGxpbWl0LFxuICAgICAgc29ydCxcbiAgICAgIG1heFRpbWVNUyxcbiAgICAgIHJlYWRQcmVmZXJlbmNlLFxuICAgICAgaGludCxcbiAgICAgIGNvbW1lbnQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY291bnRPcGVyYXRpb247XG4gIH1cblxuICBkaXN0aW5jdChmaWVsZCwgcXVlcnkpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9uZ29Db2xsZWN0aW9uLmRpc3RpbmN0KGZpZWxkLCBxdWVyeSk7XG4gIH1cblxuICBhZ2dyZWdhdGUocGlwZWxpbmUsIHsgbWF4VGltZU1TLCBiYXRjaFNpemUsIHJlYWRQcmVmZXJlbmNlLCBoaW50LCBleHBsYWluLCBjb21tZW50IH0gPSB7fSkge1xuICAgIHJldHVybiB0aGlzLl9tb25nb0NvbGxlY3Rpb25cbiAgICAgIC5hZ2dyZWdhdGUocGlwZWxpbmUsIHsgbWF4VGltZU1TLCBiYXRjaFNpemUsIHJlYWRQcmVmZXJlbmNlLCBoaW50LCBleHBsYWluLCBjb21tZW50IH0pXG4gICAgICAudG9BcnJheSgpO1xuICB9XG5cbiAgaW5zZXJ0T25lKG9iamVjdCwgc2Vzc2lvbikge1xuICAgIHJldHVybiB0aGlzLl9tb25nb0NvbGxlY3Rpb24uaW5zZXJ0T25lKG9iamVjdCwgeyBzZXNzaW9uIH0pO1xuICB9XG5cbiAgLy8gQXRvbWljYWxseSB1cGRhdGVzIGRhdGEgaW4gdGhlIGRhdGFiYXNlIGZvciBhIHNpbmdsZSAoZmlyc3QpIG9iamVjdCB0aGF0IG1hdGNoZWQgdGhlIHF1ZXJ5XG4gIC8vIElmIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCBtYXRjaGVzIHRoZSBxdWVyeSAtIGRvZXMgaW5zZXJ0XG4gIC8vIFBvc3RncmVzIE5vdGU6IGBJTlNFUlQgLi4uIE9OIENPTkZMSUNUIFVQREFURWAgdGhhdCBpcyBhdmFpbGFibGUgc2luY2UgOS41LlxuICB1cHNlcnRPbmUocXVlcnksIHVwZGF0ZSwgc2Vzc2lvbikge1xuICAgIHJldHVybiB0aGlzLl9tb25nb0NvbGxlY3Rpb24udXBkYXRlT25lKHF1ZXJ5LCB1cGRhdGUsIHtcbiAgICAgIHVwc2VydDogdHJ1ZSxcbiAgICAgIHNlc3Npb24sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVPbmUocXVlcnksIHVwZGF0ZSkge1xuICAgIHJldHVybiB0aGlzLl9tb25nb0NvbGxlY3Rpb24udXBkYXRlT25lKHF1ZXJ5LCB1cGRhdGUpO1xuICB9XG5cbiAgdXBkYXRlTWFueShxdWVyeSwgdXBkYXRlLCBzZXNzaW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vbmdvQ29sbGVjdGlvbi51cGRhdGVNYW55KHF1ZXJ5LCB1cGRhdGUsIHsgc2Vzc2lvbiB9KTtcbiAgfVxuXG4gIGRlbGV0ZU1hbnkocXVlcnksIHNlc3Npb24pIHtcbiAgICByZXR1cm4gdGhpcy5fbW9uZ29Db2xsZWN0aW9uLmRlbGV0ZU1hbnkocXVlcnksIHsgc2Vzc2lvbiB9KTtcbiAgfVxuXG4gIF9lbnN1cmVTcGFyc2VVbmlxdWVJbmRleEluQmFja2dyb3VuZChpbmRleFJlcXVlc3QpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9uZ29Db2xsZWN0aW9uLmNyZWF0ZUluZGV4KGluZGV4UmVxdWVzdCwge1xuICAgICAgdW5pcXVlOiB0cnVlLFxuICAgICAgYmFja2dyb3VuZDogdHJ1ZSxcbiAgICAgIHNwYXJzZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGRyb3AoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vbmdvQ29sbGVjdGlvbi5kcm9wKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBUyxDQUFDO0FBQ2xDLE1BQU1DLFVBQVUsR0FBR0YsT0FBTyxDQUFDRSxVQUFVO0FBRXRCLE1BQU1DLGVBQWUsQ0FBQztFQUduQ0MsV0FBV0EsQ0FBQ0MsZUFBMkIsRUFBRTtJQUN2QyxJQUFJLENBQUNDLGdCQUFnQixHQUFHRCxlQUFlO0VBQ3pDOztF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
|