@payloadcms/db-mongodb 3.0.0-alpha.2 → 3.0.0-alpha.20
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/dist/connect.d.ts.map +1 -1
- package/dist/connect.js +15 -24
- package/dist/create.js +6 -21
- package/dist/createGlobal.js +6 -21
- package/dist/createGlobalVersion.js +4 -14
- package/dist/createMigration.js +9 -24
- package/dist/createVersion.js +4 -14
- package/dist/deleteMany.js +4 -14
- package/dist/deleteOne.js +6 -21
- package/dist/deleteVersions.js +4 -14
- package/dist/destroy.d.ts.map +1 -1
- package/dist/destroy.js +7 -21
- package/dist/find.js +10 -25
- package/dist/findGlobal.js +8 -23
- package/dist/findGlobalVersions.js +12 -27
- package/dist/findOne.js +6 -21
- package/dist/findVersions.js +10 -25
- package/dist/index.js +64 -79
- package/dist/init.js +24 -39
- package/dist/migrateFresh.js +11 -24
- package/dist/models/buildCollectionSchema.js +8 -23
- package/dist/models/buildGlobalModel.js +9 -24
- package/dist/models/buildSchema.d.ts +1 -2
- package/dist/models/buildSchema.d.ts.map +1 -1
- package/dist/models/buildSchema.js +22 -32
- package/dist/queries/buildAndOrConditions.js +4 -14
- package/dist/queries/buildQuery.js +6 -16
- package/dist/queries/buildSearchParams.js +20 -32
- package/dist/queries/buildSortParam.js +4 -14
- package/dist/queries/getLocalizedSortProperty.js +8 -18
- package/dist/queries/getLocalizedSortProperty.spec.js +19 -23
- package/dist/queries/mock.js +0 -1
- package/dist/queries/operatorMap.js +2 -12
- package/dist/queries/parseParams.js +12 -27
- package/dist/queries/sanitizeQueryValue.js +8 -23
- package/dist/queryDrafts.js +11 -26
- package/dist/testCredentials.js +4 -25
- package/dist/transactions/beginTransaction.js +6 -16
- package/dist/transactions/commitTransaction.js +2 -12
- package/dist/transactions/rollbackTransaction.js +2 -12
- package/dist/types.js +2 -5
- package/dist/updateGlobal.js +6 -21
- package/dist/updateGlobalVersion.js +4 -14
- package/dist/updateOne.js +8 -23
- package/dist/updateVersion.js +4 -14
- package/dist/utilities/handleError.js +6 -21
- package/dist/utilities/sanitizeInternalFields.js +2 -12
- package/dist/withSession.js +5 -12
- package/package.json +4 -3
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment */ /* eslint-disable class-methods-use-this */ /* eslint-disable @typescript-eslint/no-use-before-define */
|
|
2
|
-
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _mongoose = require("mongoose");
|
|
12
|
-
const _types = require("payload/types");
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment */ /* eslint-disable class-methods-use-this */ /* eslint-disable @typescript-eslint/no-use-before-define */ import mongoose from 'mongoose';
|
|
2
|
+
import { fieldAffectsData, fieldIsLocalized, fieldIsPresentationalOnly, tabHasName } from 'payload/types';
|
|
13
3
|
const formatBaseSchema = (field, buildSchemaOptions)=>{
|
|
14
4
|
const { disableUnique, draftsEnabled, indexSortableFields } = buildSchemaOptions;
|
|
15
5
|
const schema = {
|
|
@@ -17,7 +7,7 @@ const formatBaseSchema = (field, buildSchemaOptions)=>{
|
|
|
17
7
|
required: false,
|
|
18
8
|
unique: !disableUnique && field.unique || false
|
|
19
9
|
};
|
|
20
|
-
if (schema.unique && (field.localized || draftsEnabled ||
|
|
10
|
+
if (schema.unique && (field.localized || draftsEnabled || fieldAffectsData(field) && field.type !== 'group' && field.type !== 'tab' && field.required !== true)) {
|
|
21
11
|
schema.sparse = true;
|
|
22
12
|
}
|
|
23
13
|
if (field.hidden) {
|
|
@@ -26,7 +16,7 @@ const formatBaseSchema = (field, buildSchemaOptions)=>{
|
|
|
26
16
|
return schema;
|
|
27
17
|
};
|
|
28
18
|
const localizeSchema = (entity, schema, localization)=>{
|
|
29
|
-
if (
|
|
19
|
+
if (fieldIsLocalized(entity) && localization && Array.isArray(localization.locales)) {
|
|
30
20
|
return {
|
|
31
21
|
type: localization.localeCodes.reduce((localeSchema, locale)=>({
|
|
32
22
|
...localeSchema,
|
|
@@ -44,17 +34,17 @@ const buildSchema = (config, configFields, buildSchemaOptions = {})=>{
|
|
|
44
34
|
let fields = {};
|
|
45
35
|
let schemaFields = configFields;
|
|
46
36
|
if (!allowIDField) {
|
|
47
|
-
const idField = schemaFields.find((field)=>
|
|
37
|
+
const idField = schemaFields.find((field)=>fieldAffectsData(field) && field.name === 'id');
|
|
48
38
|
if (idField) {
|
|
49
39
|
fields = {
|
|
50
40
|
_id: idField.type === 'number' ? Number : String
|
|
51
41
|
};
|
|
52
|
-
schemaFields = schemaFields.filter((field)=>!(
|
|
42
|
+
schemaFields = schemaFields.filter((field)=>!(fieldAffectsData(field) && field.name === 'id'));
|
|
53
43
|
}
|
|
54
44
|
}
|
|
55
|
-
const schema = new
|
|
45
|
+
const schema = new mongoose.Schema(fields, options);
|
|
56
46
|
schemaFields.forEach((field)=>{
|
|
57
|
-
if (!
|
|
47
|
+
if (!fieldIsPresentationalOnly(field)) {
|
|
58
48
|
const addFieldSchema = fieldToSchemaMap[field.type];
|
|
59
49
|
if (addFieldSchema) {
|
|
60
50
|
addFieldSchema(field, schema, config, buildSchemaOptions);
|
|
@@ -88,7 +78,7 @@ const fieldToSchemaMap = {
|
|
|
88
78
|
blocks: (field, schema, config, buildSchemaOptions)=>{
|
|
89
79
|
const fieldSchema = {
|
|
90
80
|
type: [
|
|
91
|
-
new
|
|
81
|
+
new mongoose.Schema({}, {
|
|
92
82
|
_id: false,
|
|
93
83
|
discriminatorKey: 'blockType'
|
|
94
84
|
})
|
|
@@ -99,7 +89,7 @@ const fieldToSchemaMap = {
|
|
|
99
89
|
[field.name]: localizeSchema(field, fieldSchema, config.localization)
|
|
100
90
|
});
|
|
101
91
|
field.blocks.forEach((blockItem)=>{
|
|
102
|
-
const blockSchema = new
|
|
92
|
+
const blockSchema = new mongoose.Schema({}, {
|
|
103
93
|
_id: false,
|
|
104
94
|
id: false
|
|
105
95
|
});
|
|
@@ -190,7 +180,7 @@ const fieldToSchemaMap = {
|
|
|
190
180
|
json: (field, schema, config, buildSchemaOptions)=>{
|
|
191
181
|
const baseSchema = {
|
|
192
182
|
...formatBaseSchema(field, buildSchemaOptions),
|
|
193
|
-
type:
|
|
183
|
+
type: mongoose.Schema.Types.Mixed
|
|
194
184
|
};
|
|
195
185
|
schema.add({
|
|
196
186
|
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
@@ -272,20 +262,20 @@ const fieldToSchemaMap = {
|
|
|
272
262
|
localeSchema = {
|
|
273
263
|
...formatBaseSchema(field, buildSchemaOptions),
|
|
274
264
|
_id: false,
|
|
275
|
-
type:
|
|
265
|
+
type: mongoose.Schema.Types.Mixed,
|
|
276
266
|
relationTo: {
|
|
277
267
|
type: String,
|
|
278
268
|
enum: field.relationTo
|
|
279
269
|
},
|
|
280
270
|
value: {
|
|
281
|
-
type:
|
|
271
|
+
type: mongoose.Schema.Types.Mixed,
|
|
282
272
|
refPath: `${field.name}.${locale}.relationTo`
|
|
283
273
|
}
|
|
284
274
|
};
|
|
285
275
|
} else {
|
|
286
276
|
localeSchema = {
|
|
287
277
|
...formatBaseSchema(field, buildSchemaOptions),
|
|
288
|
-
type:
|
|
278
|
+
type: mongoose.Schema.Types.Mixed,
|
|
289
279
|
ref: field.relationTo
|
|
290
280
|
};
|
|
291
281
|
}
|
|
@@ -305,13 +295,13 @@ const fieldToSchemaMap = {
|
|
|
305
295
|
schemaToReturn = {
|
|
306
296
|
...formatBaseSchema(field, buildSchemaOptions),
|
|
307
297
|
_id: false,
|
|
308
|
-
type:
|
|
298
|
+
type: mongoose.Schema.Types.Mixed,
|
|
309
299
|
relationTo: {
|
|
310
300
|
type: String,
|
|
311
301
|
enum: field.relationTo
|
|
312
302
|
},
|
|
313
303
|
value: {
|
|
314
|
-
type:
|
|
304
|
+
type: mongoose.Schema.Types.Mixed,
|
|
315
305
|
refPath: `${field.name}.relationTo`
|
|
316
306
|
}
|
|
317
307
|
};
|
|
@@ -326,7 +316,7 @@ const fieldToSchemaMap = {
|
|
|
326
316
|
} else {
|
|
327
317
|
schemaToReturn = {
|
|
328
318
|
...formatBaseSchema(field, buildSchemaOptions),
|
|
329
|
-
type:
|
|
319
|
+
type: mongoose.Schema.Types.Mixed,
|
|
330
320
|
ref: field.relationTo
|
|
331
321
|
};
|
|
332
322
|
if (field.hasMany) {
|
|
@@ -345,7 +335,7 @@ const fieldToSchemaMap = {
|
|
|
345
335
|
richText: (field, schema, config, buildSchemaOptions)=>{
|
|
346
336
|
const baseSchema = {
|
|
347
337
|
...formatBaseSchema(field, buildSchemaOptions),
|
|
348
|
-
type:
|
|
338
|
+
type: mongoose.Schema.Types.Mixed
|
|
349
339
|
};
|
|
350
340
|
schema.add({
|
|
351
341
|
[field.name]: localizeSchema(field, baseSchema, config.localization)
|
|
@@ -379,7 +369,7 @@ const fieldToSchemaMap = {
|
|
|
379
369
|
},
|
|
380
370
|
tabs: (field, schema, config, buildSchemaOptions)=>{
|
|
381
371
|
field.tabs.forEach((tab)=>{
|
|
382
|
-
if (
|
|
372
|
+
if (tabHasName(tab)) {
|
|
383
373
|
const baseSchema = {
|
|
384
374
|
type: buildSchema(config, tab.fields, {
|
|
385
375
|
disableUnique: buildSchemaOptions.disableUnique,
|
|
@@ -427,7 +417,7 @@ const fieldToSchemaMap = {
|
|
|
427
417
|
upload: (field, schema, config, buildSchemaOptions)=>{
|
|
428
418
|
const baseSchema = {
|
|
429
419
|
...formatBaseSchema(field, buildSchemaOptions),
|
|
430
|
-
type:
|
|
420
|
+
type: mongoose.Schema.Types.Mixed,
|
|
431
421
|
ref: field.relationTo
|
|
432
422
|
};
|
|
433
423
|
schema.add({
|
|
@@ -435,6 +425,6 @@ const fieldToSchemaMap = {
|
|
|
435
425
|
});
|
|
436
426
|
}
|
|
437
427
|
};
|
|
438
|
-
|
|
428
|
+
export default buildSchema;
|
|
439
429
|
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvYnVpbGRTY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lICovXG5pbXBvcnQgdHlwZSB7IEluZGV4T3B0aW9ucywgU2NoZW1hT3B0aW9ucywgU2NoZW1hVHlwZU9wdGlvbnMgfSBmcm9tICdtb25nb29zZSdcbmltcG9ydCB0eXBlIHsgU2FuaXRpemVkQ29uZmlnLCBTYW5pdGl6ZWRMb2NhbGl6YXRpb25Db25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHtcbiAgQXJyYXlGaWVsZCxcbiAgQmxvY2ssXG4gIEJsb2NrRmllbGQsXG4gIENoZWNrYm94RmllbGQsXG4gIENvZGVGaWVsZCxcbiAgQ29sbGFwc2libGVGaWVsZCxcbiAgRGF0ZUZpZWxkLFxuICBFbWFpbEZpZWxkLFxuICBGaWVsZCxcbiAgRmllbGRBZmZlY3RpbmdEYXRhLFxuICBHcm91cEZpZWxkLFxuICBKU09ORmllbGQsXG4gIE5vblByZXNlbnRhdGlvbmFsRmllbGQsXG4gIE51bWJlckZpZWxkLFxuICBQb2ludEZpZWxkLFxuICBSYWRpb0ZpZWxkLFxuICBSZWxhdGlvbnNoaXBGaWVsZCxcbiAgUmljaFRleHRGaWVsZCxcbiAgUm93RmllbGQsXG4gIFNlbGVjdEZpZWxkLFxuICBUYWIsXG4gIFRhYnNGaWVsZCxcbiAgVGV4dEZpZWxkLFxuICBUZXh0YXJlYUZpZWxkLFxuICBVcGxvYWRGaWVsZCxcbn0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgU2NoZW1hIH0gZnJvbSAnbW9uZ29vc2UnXG5pbXBvcnQge1xuICBmaWVsZEFmZmVjdHNEYXRhLFxuICBmaWVsZElzTG9jYWxpemVkLFxuICBmaWVsZElzUHJlc2VudGF0aW9uYWxPbmx5LFxuICB0YWJIYXNOYW1lLFxufSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBCdWlsZFNjaGVtYU9wdGlvbnMgPSB7XG4gIGFsbG93SURGaWVsZD86IGJvb2xlYW5cbiAgZGlzYWJsZVVuaXF1ZT86IGJvb2xlYW5cbiAgZHJhZnRzRW5hYmxlZD86IGJvb2xlYW5cbiAgaW5kZXhTb3J0YWJsZUZpZWxkcz86IGJvb2xlYW5cbiAgb3B0aW9ucz86IFNjaGVtYU9wdGlvbnNcbn1cblxudHlwZSBGaWVsZFNjaGVtYUdlbmVyYXRvciA9IChcbiAgZmllbGQ6IEZpZWxkLFxuICBzY2hlbWE6IFNjaGVtYSxcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuKSA9PiB2b2lkXG5cbmNvbnN0IGZvcm1hdEJhc2VTY2hlbWEgPSAoZmllbGQ6IEZpZWxkQWZmZWN0aW5nRGF0YSwgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMpID0+IHtcbiAgY29uc3QgeyBkaXNhYmxlVW5pcXVlLCBkcmFmdHNFbmFibGVkLCBpbmRleFNvcnRhYmxlRmllbGRzIH0gPSBidWlsZFNjaGVtYU9wdGlvbnNcbiAgY29uc3Qgc2NoZW1hOiBTY2hlbWFUeXBlT3B0aW9uczx1bmtub3duPiA9IHtcbiAgICBpbmRleDogZmllbGQuaW5kZXggfHwgKCFkaXNhYmxlVW5pcXVlICYmIGZpZWxkLnVuaXF1ZSkgfHwgaW5kZXhTb3J0YWJsZUZpZWxkcyB8fCBmYWxzZSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgdW5pcXVlOiAoIWRpc2FibGVVbmlxdWUgJiYgZmllbGQudW5pcXVlKSB8fCBmYWxzZSxcbiAgfVxuXG4gIGlmIChcbiAgICBzY2hlbWEudW5pcXVlICYmXG4gICAgKGZpZWxkLmxvY2FsaXplZCB8fFxuICAgICAgZHJhZnRzRW5hYmxlZCB8fFxuICAgICAgKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmXG4gICAgICAgIGZpZWxkLnR5cGUgIT09ICdncm91cCcgJiZcbiAgICAgICAgZmllbGQudHlwZSAhPT0gJ3RhYicgJiZcbiAgICAgICAgZmllbGQucmVxdWlyZWQgIT09IHRydWUpKVxuICApIHtcbiAgICBzY2hlbWEuc3BhcnNlID0gdHJ1ZVxuICB9XG5cbiAgaWYgKGZpZWxkLmhpZGRlbikge1xuICAgIHNjaGVtYS5oaWRkZW4gPSB0cnVlXG4gIH1cblxuICByZXR1cm4gc2NoZW1hXG59XG5cbmNvbnN0IGxvY2FsaXplU2NoZW1hID0gKFxuICBlbnRpdHk6IE5vblByZXNlbnRhdGlvbmFsRmllbGQgfCBUYWIsXG4gIHNjaGVtYSxcbiAgbG9jYWxpemF0aW9uOiBTYW5pdGl6ZWRMb2NhbGl6YXRpb25Db25maWcgfCBmYWxzZSxcbikgPT4ge1xuICBpZiAoZmllbGRJc0xvY2FsaXplZChlbnRpdHkpICYmIGxvY2FsaXphdGlvbiAmJiBBcnJheS5pc0FycmF5KGxvY2FsaXphdGlvbi5sb2NhbGVzKSkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBsb2NhbGl6YXRpb24ubG9jYWxlQ29kZXMucmVkdWNlKFxuICAgICAgICAobG9jYWxlU2NoZW1hLCBsb2NhbGUpID0+ICh7XG4gICAgICAgICAgLi4ubG9jYWxlU2NoZW1hLFxuICAgICAgICAgIFtsb2NhbGVdOiBzY2hlbWEsXG4gICAgICAgIH0pLFxuICAgICAgICB7XG4gICAgICAgICAgX2lkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgICBsb2NhbGl6ZWQ6IHRydWUsXG4gICAgfVxuICB9XG4gIHJldHVybiBzY2hlbWFcbn1cblxuY29uc3QgYnVpbGRTY2hlbWEgPSAoXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICBjb25maWdGaWVsZHM6IEZpZWxkW10sXG4gIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zID0ge30sXG4pOiBTY2hlbWEgPT4ge1xuICBjb25zdCB7IGFsbG93SURGaWVsZCwgb3B0aW9ucyB9ID0gYnVpbGRTY2hlbWFPcHRpb25zXG4gIGxldCBmaWVsZHMgPSB7fVxuXG4gIGxldCBzY2hlbWFGaWVsZHMgPSBjb25maWdGaWVsZHNcblxuICBpZiAoIWFsbG93SURGaWVsZCkge1xuICAgIGNvbnN0IGlkRmllbGQgPSBzY2hlbWFGaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpXG4gICAgaWYgKGlkRmllbGQpIHtcbiAgICAgIGZpZWxkcyA9IHtcbiAgICAgICAgX2lkOiBpZEZpZWxkLnR5cGUgPT09ICdudW1iZXInID8gTnVtYmVyIDogU3RyaW5nLFxuICAgICAgfVxuICAgICAgc2NoZW1hRmllbGRzID0gc2NoZW1hRmllbGRzLmZpbHRlcihcbiAgICAgICAgKGZpZWxkKSA9PiAhKGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcpLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjaGVtYSA9IG5ldyBTY2hlbWEoZmllbGRzLCBvcHRpb25zKVxuXG4gIHNjaGVtYUZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgIGlmICghZmllbGRJc1ByZXNlbnRhdGlvbmFsT25seShmaWVsZCkpIHtcbiAgICAgIGNvbnN0IGFkZEZpZWxkU2NoZW1hOiBGaWVsZFNjaGVtYUdlbmVyYXRvciA9IGZpZWxkVG9TY2hlbWFNYXBbZmllbGQudHlwZV1cblxuICAgICAgaWYgKGFkZEZpZWxkU2NoZW1hKSB7XG4gICAgICAgIGFkZEZpZWxkU2NoZW1hKGZpZWxkLCBzY2hlbWEsIGNvbmZpZywgYnVpbGRTY2hlbWFPcHRpb25zKVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gc2NoZW1hXG59XG5cbmNvbnN0IGZpZWxkVG9TY2hlbWFNYXA6IFJlY29yZDxzdHJpbmcsIEZpZWxkU2NoZW1hR2VuZXJhdG9yPiA9IHtcbiAgYXJyYXk6IChcbiAgICBmaWVsZDogQXJyYXlGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKSA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHtcbiAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICB0eXBlOiBbXG4gICAgICAgIGJ1aWxkU2NoZW1hKGNvbmZpZywgZmllbGQuZmllbGRzLCB7XG4gICAgICAgICAgYWxsb3dJREZpZWxkOiB0cnVlLFxuICAgICAgICAgIGRpc2FibGVVbmlxdWU6IGJ1aWxkU2NoZW1hT3B0aW9ucy5kaXNhYmxlVW5pcXVlLFxuICAgICAgICAgIGRyYWZ0c0VuYWJsZWQ6IGJ1aWxkU2NoZW1hT3B0aW9ucy5kcmFmdHNFbmFibGVkLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIF9pZDogZmFsc2UsXG4gICAgICAgICAgICBpZDogZmFsc2UsXG4gICAgICAgICAgICBtaW5pbWl6ZTogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgYmxvY2tzOiAoXG4gICAgZmllbGQ6IEJsb2NrRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGZpZWxkU2NoZW1hID0ge1xuICAgICAgdHlwZTogW25ldyBTY2hlbWEoe30sIHsgX2lkOiBmYWxzZSwgZGlzY3JpbWluYXRvcktleTogJ2Jsb2NrVHlwZScgfSldLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgZmllbGRTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG5cbiAgICBmaWVsZC5ibG9ja3MuZm9yRWFjaCgoYmxvY2tJdGVtOiBCbG9jaykgPT4ge1xuICAgICAgY29uc3QgYmxvY2tTY2hlbWEgPSBuZXcgU2NoZW1hKHt9LCB7IF9pZDogZmFsc2UsIGlkOiBmYWxzZSB9KVxuXG4gICAgICBibG9ja0l0ZW0uZmllbGRzLmZvckVhY2goKGJsb2NrRmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgYWRkRmllbGRTY2hlbWE6IEZpZWxkU2NoZW1hR2VuZXJhdG9yID0gZmllbGRUb1NjaGVtYU1hcFtibG9ja0ZpZWxkLnR5cGVdXG4gICAgICAgIGlmIChhZGRGaWVsZFNjaGVtYSkge1xuICAgICAgICAgIGFkZEZpZWxkU2NoZW1hKGJsb2NrRmllbGQsIGJsb2NrU2NoZW1hLCBjb25maWcsIGJ1aWxkU2NoZW1hT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBjb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgIGNvbmZpZy5sb2NhbGl6YXRpb24ubG9jYWxlQ29kZXMuZm9yRWFjaCgobG9jYWxlQ29kZSkgPT4ge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFBvc3NpYmxlIGluY29ycmVjdCB0eXBpbmcgaW4gbW9uZ29vc2UgdHlwZXMsIHRoaXMgd29ya3NcbiAgICAgICAgICBzY2hlbWEucGF0aChgJHtmaWVsZC5uYW1lfS4ke2xvY2FsZUNvZGV9YCkuZGlzY3JpbWluYXRvcihibG9ja0l0ZW0uc2x1ZywgYmxvY2tTY2hlbWEpXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgUG9zc2libGUgaW5jb3JyZWN0IHR5cGluZyBpbiBtb25nb29zZSB0eXBlcywgdGhpcyB3b3Jrc1xuICAgICAgICBzY2hlbWEucGF0aChmaWVsZC5uYW1lKS5kaXNjcmltaW5hdG9yKGJsb2NrSXRlbS5zbHVnLCBibG9ja1NjaGVtYSlcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICBjaGVja2JveDogKFxuICAgIGZpZWxkOiBDaGVja2JveEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0geyAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLCB0eXBlOiBCb29sZWFuIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgY29kZTogKFxuICAgIGZpZWxkOiBDb2RlRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IFN0cmluZyB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIGNvbGxhcHNpYmxlOiAoXG4gICAgZmllbGQ6IENvbGxhcHNpYmxlRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGZpZWxkLmZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZDogRmllbGQpID0+IHtcbiAgICAgIGNvbnN0IGFkZEZpZWxkU2NoZW1hOiBGaWVsZFNjaGVtYUdlbmVyYXRvciA9IGZpZWxkVG9TY2hlbWFNYXBbc3ViRmllbGQudHlwZV1cblxuICAgICAgaWYgKGFkZEZpZWxkU2NoZW1hKSB7XG4gICAgICAgIGFkZEZpZWxkU2NoZW1hKHN1YkZpZWxkLCBzY2hlbWEsIGNvbmZpZywgYnVpbGRTY2hlbWFPcHRpb25zKVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGRhdGU6IChcbiAgICBmaWVsZDogRGF0ZUZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0geyAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLCB0eXBlOiBEYXRlIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgZW1haWw6IChcbiAgICBmaWVsZDogRW1haWxGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHsgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSwgdHlwZTogU3RyaW5nIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgZ3JvdXA6IChcbiAgICBmaWVsZDogR3JvdXBGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgZm9ybWF0dGVkQmFzZVNjaGVtYSA9IGZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucylcblxuICAgIC8vIGNhcnJ5IGluZGV4U29ydGFibGVGaWVsZHMgdGhyb3VnaCB0byB2ZXJzaW9ucyBpZiBkcmFmdHMgZW5hYmxlZFxuICAgIGNvbnN0IGluZGV4U29ydGFibGVGaWVsZHMgPVxuICAgICAgYnVpbGRTY2hlbWFPcHRpb25zLmluZGV4U29ydGFibGVGaWVsZHMgJiZcbiAgICAgIGZpZWxkLm5hbWUgPT09ICd2ZXJzaW9uJyAmJlxuICAgICAgYnVpbGRTY2hlbWFPcHRpb25zLmRyYWZ0c0VuYWJsZWRcblxuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXR0ZWRCYXNlU2NoZW1hLFxuICAgICAgdHlwZTogYnVpbGRTY2hlbWEoY29uZmlnLCBmaWVsZC5maWVsZHMsIHtcbiAgICAgICAgZGlzYWJsZVVuaXF1ZTogYnVpbGRTY2hlbWFPcHRpb25zLmRpc2FibGVVbmlxdWUsXG4gICAgICAgIGRyYWZ0c0VuYWJsZWQ6IGJ1aWxkU2NoZW1hT3B0aW9ucy5kcmFmdHNFbmFibGVkLFxuICAgICAgICBpbmRleFNvcnRhYmxlRmllbGRzLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgX2lkOiBmYWxzZSxcbiAgICAgICAgICBpZDogZmFsc2UsXG4gICAgICAgICAgbWluaW1pemU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBqc29uOiAoXG4gICAgZmllbGQ6IEpTT05GaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHsgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSwgdHlwZTogU2NoZW1hLlR5cGVzLk1peGVkIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgbnVtYmVyOiAoXG4gICAgZmllbGQ6IE51bWJlckZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgIHR5cGU6IGZpZWxkLmhhc01hbnkgPyBbTnVtYmVyXSA6IE51bWJlcixcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIHBvaW50OiAoXG4gICAgZmllbGQ6IFBvaW50RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWE6IFNjaGVtYVR5cGVPcHRpb25zPHVua25vd24+ID0ge1xuICAgICAgdHlwZToge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIGVudW06IFsnUG9pbnQnXSxcbiAgICAgIH0sXG4gICAgICBjb29yZGluYXRlczoge1xuICAgICAgICB0eXBlOiBbTnVtYmVyXSxcbiAgICAgICAgZGVmYXVsdDogZmllbGQuZGVmYXVsdFZhbHVlIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9XG4gICAgaWYgKGJ1aWxkU2NoZW1hT3B0aW9ucy5kaXNhYmxlVW5pcXVlICYmIGZpZWxkLnVuaXF1ZSAmJiBmaWVsZC5sb2NhbGl6ZWQpIHtcbiAgICAgIGJhc2VTY2hlbWEuY29vcmRpbmF0ZXMuc3BhcnNlID0gdHJ1ZVxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcblxuICAgIGlmIChmaWVsZC5pbmRleCA9PT0gdHJ1ZSB8fCBmaWVsZC5pbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBpbmRleE9wdGlvbnM6IEluZGV4T3B0aW9ucyA9IHt9XG4gICAgICBpZiAoIWJ1aWxkU2NoZW1hT3B0aW9ucy5kaXNhYmxlVW5pcXVlICYmIGZpZWxkLnVuaXF1ZSkge1xuICAgICAgICBpbmRleE9wdGlvbnMuc3BhcnNlID0gdHJ1ZVxuICAgICAgICBpbmRleE9wdGlvbnMudW5pcXVlID0gdHJ1ZVxuICAgICAgfVxuICAgICAgaWYgKGZpZWxkLmxvY2FsaXplZCAmJiBjb25maWcubG9jYWxpemF0aW9uKSB7XG4gICAgICAgIGNvbmZpZy5sb2NhbGl6YXRpb24ubG9jYWxlcy5mb3JFYWNoKChsb2NhbGUpID0+IHtcbiAgICAgICAgICBzY2hlbWEuaW5kZXgoeyBbYCR7ZmllbGQubmFtZX0uJHtsb2NhbGV9YF06ICcyZHNwaGVyZScgfSwgaW5kZXhPcHRpb25zKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NoZW1hLmluZGV4KHsgW2ZpZWxkLm5hbWVdOiAnMmRzcGhlcmUnIH0sIGluZGV4T3B0aW9ucylcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHJhZGlvOiAoXG4gICAgZmllbGQ6IFJhZGlvRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZW51bTogZmllbGQub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHJldHVybiBvcHRpb24udmFsdWVcbiAgICAgICAgcmV0dXJuIG9wdGlvblxuICAgICAgfSksXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICByZWxhdGlvbnNoaXA6IChcbiAgICBmaWVsZDogUmVsYXRpb25zaGlwRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICkgPT4ge1xuICAgIGNvbnN0IGhhc01hbnlSZWxhdGlvbnMgPSBBcnJheS5pc0FycmF5KGZpZWxkLnJlbGF0aW9uVG8pXG4gICAgbGV0IHNjaGVtYVRvUmV0dXJuOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cblxuICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgc2NoZW1hVG9SZXR1cm4gPSB7XG4gICAgICAgIHR5cGU6IGNvbmZpZy5sb2NhbGl6YXRpb24ubG9jYWxlQ29kZXMucmVkdWNlKChsb2NhbGVzLCBsb2NhbGUpID0+IHtcbiAgICAgICAgICBsZXQgbG9jYWxlU2NoZW1hOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cblxuICAgICAgICAgIGlmIChoYXNNYW55UmVsYXRpb25zKSB7XG4gICAgICAgICAgICBsb2NhbGVTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICAgICAgICAgIF9pZDogZmFsc2UsXG4gICAgICAgICAgICAgIHR5cGU6IFNjaGVtYS5UeXBlcy5NaXhlZCxcbiAgICAgICAgICAgICAgcmVsYXRpb25UbzogeyB0eXBlOiBTdHJpbmcsIGVudW06IGZpZWxkLnJlbGF0aW9uVG8gfSxcbiAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBTY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICAgICAgICAgICAgcmVmUGF0aDogYCR7ZmllbGQubmFtZX0uJHtsb2NhbGV9LnJlbGF0aW9uVG9gLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2NhbGVTY2hlbWEgPSB7XG4gICAgICAgICAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICAgICAgICAgIHR5cGU6IFNjaGVtYS5UeXBlcy5NaXhlZCxcbiAgICAgICAgICAgICAgcmVmOiBmaWVsZC5yZWxhdGlvblRvLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5sb2NhbGVzLFxuICAgICAgICAgICAgW2xvY2FsZV06IGZpZWxkLmhhc01hbnkgPyB7IHR5cGU6IFtsb2NhbGVTY2hlbWFdLCBkZWZhdWx0OiB1bmRlZmluZWQgfSA6IGxvY2FsZVNjaGVtYSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sIHt9KSxcbiAgICAgICAgbG9jYWxpemVkOiB0cnVlLFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaGFzTWFueVJlbGF0aW9ucykge1xuICAgICAgc2NoZW1hVG9SZXR1cm4gPSB7XG4gICAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICAgIF9pZDogZmFsc2UsXG4gICAgICAgIHR5cGU6IFNjaGVtYS5UeXBlcy5NaXhlZCxcbiAgICAgICAgcmVsYXRpb25UbzogeyB0eXBlOiBTdHJpbmcsIGVudW06IGZpZWxkLnJlbGF0aW9uVG8gfSxcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICB0eXBlOiBTY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICAgICAgcmVmUGF0aDogYCR7ZmllbGQubmFtZX0ucmVsYXRpb25Ub2AsXG4gICAgICAgIH0sXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICAgIHR5cGU6IFtzY2hlbWFUb1JldHVybl0sXG4gICAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgICB0eXBlOiBTY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICAgIHJlZjogZmllbGQucmVsYXRpb25UbyxcbiAgICAgIH1cblxuICAgICAgaWYgKGZpZWxkLmhhc01hbnkpIHtcbiAgICAgICAgc2NoZW1hVG9SZXR1cm4gPSB7XG4gICAgICAgICAgdHlwZTogW3NjaGVtYVRvUmV0dXJuXSxcbiAgICAgICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogc2NoZW1hVG9SZXR1cm4sXG4gICAgfSlcbiAgfSxcbiAgcmljaFRleHQ6IChcbiAgICBmaWVsZDogUmljaFRleHRGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHsgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSwgdHlwZTogU2NoZW1hLlR5cGVzLk1peGVkIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgcm93OiAoXG4gICAgZmllbGQ6IFJvd0ZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBmaWVsZC5maWVsZHMuZm9yRWFjaCgoc3ViRmllbGQ6IEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBhZGRGaWVsZFNjaGVtYTogRmllbGRTY2hlbWFHZW5lcmF0b3IgPSBmaWVsZFRvU2NoZW1hTWFwW3N1YkZpZWxkLnR5cGVdXG5cbiAgICAgIGlmIChhZGRGaWVsZFNjaGVtYSkge1xuICAgICAgICBhZGRGaWVsZFNjaGVtYShzdWJGaWVsZCwgc2NoZW1hLCBjb25maWcsIGJ1aWxkU2NoZW1hT3B0aW9ucylcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICBzZWxlY3Q6IChcbiAgICBmaWVsZDogU2VsZWN0RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZW51bTogZmllbGQub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHJldHVybiBvcHRpb24udmFsdWVcbiAgICAgICAgcmV0dXJuIG9wdGlvblxuICAgICAgfSksXG4gICAgfVxuXG4gICAgaWYgKGJ1aWxkU2NoZW1hT3B0aW9ucy5kcmFmdHNFbmFibGVkIHx8ICFmaWVsZC5yZXF1aXJlZCkge1xuICAgICAgYmFzZVNjaGVtYS5lbnVtLnB1c2gobnVsbClcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBmaWVsZC5oYXNNYW55ID8gW2Jhc2VTY2hlbWFdIDogYmFzZVNjaGVtYSxcbiAgICAgICAgY29uZmlnLmxvY2FsaXphdGlvbixcbiAgICAgICksXG4gICAgfSlcbiAgfSxcbiAgdGFiczogKFxuICAgIGZpZWxkOiBUYWJzRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICBpZiAodGFiSGFzTmFtZSh0YWIpKSB7XG4gICAgICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAgICAgdHlwZTogYnVpbGRTY2hlbWEoY29uZmlnLCB0YWIuZmllbGRzLCB7XG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlOiBidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGRyYWZ0c0VuYWJsZWQ6IGJ1aWxkU2NoZW1hT3B0aW9ucy5kcmFmdHNFbmFibGVkLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpZDogZmFsc2UsXG4gICAgICAgICAgICAgIG1pbmltaXplOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cblxuICAgICAgICBzY2hlbWEuYWRkKHtcbiAgICAgICAgICBbdGFiLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYSh0YWIsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFiLmZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZDogRmllbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRGaWVsZFNjaGVtYTogRmllbGRTY2hlbWFHZW5lcmF0b3IgPSBmaWVsZFRvU2NoZW1hTWFwW3N1YkZpZWxkLnR5cGVdXG5cbiAgICAgICAgICBpZiAoYWRkRmllbGRTY2hlbWEpIHtcbiAgICAgICAgICAgIGFkZEZpZWxkU2NoZW1hKHN1YkZpZWxkLCBzY2hlbWEsIGNvbmZpZywgYnVpbGRTY2hlbWFPcHRpb25zKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICB0ZXh0OiAoXG4gICAgZmllbGQ6IFRleHRGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHtcbiAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICB0eXBlOiBmaWVsZC5oYXNNYW55ID8gW1N0cmluZ10gOiBTdHJpbmcsXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICB0ZXh0YXJlYTogKFxuICAgIGZpZWxkOiBUZXh0YXJlYUZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0geyAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLCB0eXBlOiBTdHJpbmcgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICB1cGxvYWQ6IChcbiAgICBmaWVsZDogVXBsb2FkRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgdHlwZTogU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgcmVmOiBmaWVsZC5yZWxhdGlvblRvLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgYnVpbGRTY2hlbWFcbiJdLCJuYW1lcyI6WyJmb3JtYXRCYXNlU2NoZW1hIiwiZmllbGQiLCJidWlsZFNjaGVtYU9wdGlvbnMiLCJkaXNhYmxlVW5pcXVlIiwiZHJhZnRzRW5hYmxlZCIsImluZGV4U29ydGFibGVGaWVsZHMiLCJzY2hlbWEiLCJpbmRleCIsInVuaXF1ZSIsInJlcXVpcmVkIiwibG9jYWxpemVkIiwiZmllbGRBZmZlY3RzRGF0YSIsInR5cGUiLCJzcGFyc2UiLCJoaWRkZW4iLCJsb2NhbGl6ZVNjaGVtYSIsImVudGl0eSIsImxvY2FsaXphdGlvbiIsImZpZWxkSXNMb2NhbGl6ZWQiLCJBcnJheSIsImlzQXJyYXkiLCJsb2NhbGVzIiwibG9jYWxlQ29kZXMiLCJyZWR1Y2UiLCJsb2NhbGVTY2hlbWEiLCJsb2NhbGUiLCJfaWQiLCJidWlsZFNjaGVtYSIsImNvbmZpZyIsImNvbmZpZ0ZpZWxkcyIsImFsbG93SURGaWVsZCIsIm9wdGlvbnMiLCJmaWVsZHMiLCJzY2hlbWFGaWVsZHMiLCJpZEZpZWxkIiwiZmluZCIsIm5hbWUiLCJOdW1iZXIiLCJTdHJpbmciLCJmaWx0ZXIiLCJTY2hlbWEiLCJmb3JFYWNoIiwiZmllbGRJc1ByZXNlbnRhdGlvbmFsT25seSIsImFkZEZpZWxkU2NoZW1hIiwiZmllbGRUb1NjaGVtYU1hcCIsImFycmF5IiwiYmFzZVNjaGVtYSIsImlkIiwibWluaW1pemUiLCJkZWZhdWx0IiwidW5kZWZpbmVkIiwiYWRkIiwiYmxvY2tzIiwiZmllbGRTY2hlbWEiLCJkaXNjcmltaW5hdG9yS2V5IiwiYmxvY2tJdGVtIiwiYmxvY2tTY2hlbWEiLCJibG9ja0ZpZWxkIiwibG9jYWxlQ29kZSIsInBhdGgiLCJkaXNjcmltaW5hdG9yIiwic2x1ZyIsImNoZWNrYm94IiwiQm9vbGVhbiIsImNvZGUiLCJjb2xsYXBzaWJsZSIsInN1YkZpZWxkIiwiZGF0ZSIsIkRhdGUiLCJlbWFpbCIsImdyb3VwIiwiZm9ybWF0dGVkQmFzZVNjaGVtYSIsImpzb24iLCJUeXBlcyIsIk1peGVkIiwibnVtYmVyIiwiaGFzTWFueSIsInBvaW50IiwiZW51bSIsImNvb3JkaW5hdGVzIiwiZGVmYXVsdFZhbHVlIiwiaW5kZXhPcHRpb25zIiwicmFkaW8iLCJtYXAiLCJvcHRpb24iLCJ2YWx1ZSIsInJlbGF0aW9uc2hpcCIsImhhc01hbnlSZWxhdGlvbnMiLCJyZWxhdGlvblRvIiwic2NoZW1hVG9SZXR1cm4iLCJyZWZQYXRoIiwicmVmIiwicmljaFRleHQiLCJyb3ciLCJzZWxlY3QiLCJwdXNoIiwidGFicyIsInRhYiIsInRhYkhhc05hbWUiLCJ0ZXh0IiwidGV4dGFyZWEiLCJ1cGxvYWQiXSwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRCxHQUNwRCx5Q0FBeUMsR0FDekMsMERBQTBELEdBQzFELHVDQUF1Qzs7OzsrQkFtbEJ2Qzs7O2VBQUE7OzswQkFwakJ1Qjt1QkFNaEI7QUFpQlAsTUFBTUEsbUJBQW1CLENBQUNDLE9BQTJCQztJQUNuRCxNQUFNLEVBQUVDLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxtQkFBbUIsRUFBRSxHQUFHSDtJQUM5RCxNQUFNSSxTQUFxQztRQUN6Q0MsT0FBT04sTUFBTU0sS0FBSyxJQUFLLENBQUNKLGlCQUFpQkYsTUFBTU8sTUFBTSxJQUFLSCx1QkFBdUI7UUFDakZJLFVBQVU7UUFDVkQsUUFBUSxBQUFDLENBQUNMLGlCQUFpQkYsTUFBTU8sTUFBTSxJQUFLO0lBQzlDO0lBRUEsSUFDRUYsT0FBT0UsTUFBTSxJQUNaUCxDQUFBQSxNQUFNUyxTQUFTLElBQ2ROLGlCQUNDTyxJQUFBQSx1QkFBZ0IsRUFBQ1YsVUFDaEJBLE1BQU1XLElBQUksS0FBSyxXQUNmWCxNQUFNVyxJQUFJLEtBQUssU0FDZlgsTUFBTVEsUUFBUSxLQUFLLElBQUksR0FDM0I7UUFDQUgsT0FBT08sTUFBTSxHQUFHO0lBQ2xCO0lBRUEsSUFBSVosTUFBTWEsTUFBTSxFQUFFO1FBQ2hCUixPQUFPUSxNQUFNLEdBQUc7SUFDbEI7SUFFQSxPQUFPUjtBQUNUO0FBRUEsTUFBTVMsaUJBQWlCLENBQ3JCQyxRQUNBVixRQUNBVztJQUVBLElBQUlDLElBQUFBLHVCQUFnQixFQUFDRixXQUFXQyxnQkFBZ0JFLE1BQU1DLE9BQU8sQ0FBQ0gsYUFBYUksT0FBTyxHQUFHO1FBQ25GLE9BQU87WUFDTFQsTUFBTUssYUFBYUssV0FBVyxDQUFDQyxNQUFNLENBQ25DLENBQUNDLGNBQWNDLFNBQVksQ0FBQTtv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
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbHMvYnVpbGRTY2hlbWEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi9cbmltcG9ydCB0eXBlIHsgSW5kZXhPcHRpb25zLCBTY2hlbWEsIFNjaGVtYU9wdGlvbnMsIFNjaGVtYVR5cGVPcHRpb25zIH0gZnJvbSAnbW9uZ29vc2UnXG5pbXBvcnQgdHlwZSB7IFNhbml0aXplZENvbmZpZywgU2FuaXRpemVkTG9jYWxpemF0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZC9jb25maWcnXG5pbXBvcnQgdHlwZSB7XG4gIEFycmF5RmllbGQsXG4gIEJsb2NrLFxuICBCbG9ja0ZpZWxkLFxuICBDaGVja2JveEZpZWxkLFxuICBDb2RlRmllbGQsXG4gIENvbGxhcHNpYmxlRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRW1haWxGaWVsZCxcbiAgRmllbGQsXG4gIEZpZWxkQWZmZWN0aW5nRGF0YSxcbiAgR3JvdXBGaWVsZCxcbiAgSlNPTkZpZWxkLFxuICBOb25QcmVzZW50YXRpb25hbEZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgUG9pbnRGaWVsZCxcbiAgUmFkaW9GaWVsZCxcbiAgUmVsYXRpb25zaGlwRmllbGQsXG4gIFJpY2hUZXh0RmllbGQsXG4gIFJvd0ZpZWxkLFxuICBTZWxlY3RGaWVsZCxcbiAgVGFiLFxuICBUYWJzRmllbGQsXG4gIFRleHRGaWVsZCxcbiAgVGV4dGFyZWFGaWVsZCxcbiAgVXBsb2FkRmllbGQsXG59IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCBtb25nb29zZSBmcm9tICdtb25nb29zZSdcbmltcG9ydCB7XG4gIGZpZWxkQWZmZWN0c0RhdGEsXG4gIGZpZWxkSXNMb2NhbGl6ZWQsXG4gIGZpZWxkSXNQcmVzZW50YXRpb25hbE9ubHksXG4gIHRhYkhhc05hbWUsXG59IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmV4cG9ydCB0eXBlIEJ1aWxkU2NoZW1hT3B0aW9ucyA9IHtcbiAgYWxsb3dJREZpZWxkPzogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlPzogYm9vbGVhblxuICBkcmFmdHNFbmFibGVkPzogYm9vbGVhblxuICBpbmRleFNvcnRhYmxlRmllbGRzPzogYm9vbGVhblxuICBvcHRpb25zPzogU2NoZW1hT3B0aW9uc1xufVxuXG50eXBlIEZpZWxkU2NoZW1hR2VuZXJhdG9yID0gKFxuICBmaWVsZDogRmllbGQsXG4gIHNjaGVtYTogU2NoZW1hLFxuICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4pID0+IHZvaWRcblxuY29uc3QgZm9ybWF0QmFzZVNjaGVtYSA9IChmaWVsZDogRmllbGRBZmZlY3RpbmdEYXRhLCBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucykgPT4ge1xuICBjb25zdCB7IGRpc2FibGVVbmlxdWUsIGRyYWZ0c0VuYWJsZWQsIGluZGV4U29ydGFibGVGaWVsZHMgfSA9IGJ1aWxkU2NoZW1hT3B0aW9uc1xuICBjb25zdCBzY2hlbWE6IFNjaGVtYVR5cGVPcHRpb25zPHVua25vd24+ID0ge1xuICAgIGluZGV4OiBmaWVsZC5pbmRleCB8fCAoIWRpc2FibGVVbmlxdWUgJiYgZmllbGQudW5pcXVlKSB8fCBpbmRleFNvcnRhYmxlRmllbGRzIHx8IGZhbHNlLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICB1bmlxdWU6ICghZGlzYWJsZVVuaXF1ZSAmJiBmaWVsZC51bmlxdWUpIHx8IGZhbHNlLFxuICB9XG5cbiAgaWYgKFxuICAgIHNjaGVtYS51bmlxdWUgJiZcbiAgICAoZmllbGQubG9jYWxpemVkIHx8XG4gICAgICBkcmFmdHNFbmFibGVkIHx8XG4gICAgICAoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiZcbiAgICAgICAgZmllbGQudHlwZSAhPT0gJ2dyb3VwJyAmJlxuICAgICAgICBmaWVsZC50eXBlICE9PSAndGFiJyAmJlxuICAgICAgICBmaWVsZC5yZXF1aXJlZCAhPT0gdHJ1ZSkpXG4gICkge1xuICAgIHNjaGVtYS5zcGFyc2UgPSB0cnVlXG4gIH1cblxuICBpZiAoZmllbGQuaGlkZGVuKSB7XG4gICAgc2NoZW1hLmhpZGRlbiA9IHRydWVcbiAgfVxuXG4gIHJldHVybiBzY2hlbWFcbn1cblxuY29uc3QgbG9jYWxpemVTY2hlbWEgPSAoXG4gIGVudGl0eTogTm9uUHJlc2VudGF0aW9uYWxGaWVsZCB8IFRhYixcbiAgc2NoZW1hLFxuICBsb2NhbGl6YXRpb246IFNhbml0aXplZExvY2FsaXphdGlvbkNvbmZpZyB8IGZhbHNlLFxuKSA9PiB7XG4gIGlmIChmaWVsZElzTG9jYWxpemVkKGVudGl0eSkgJiYgbG9jYWxpemF0aW9uICYmIEFycmF5LmlzQXJyYXkobG9jYWxpemF0aW9uLmxvY2FsZXMpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IGxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5yZWR1Y2UoXG4gICAgICAgIChsb2NhbGVTY2hlbWEsIGxvY2FsZSkgPT4gKHtcbiAgICAgICAgICAuLi5sb2NhbGVTY2hlbWEsXG4gICAgICAgICAgW2xvY2FsZV06IHNjaGVtYSxcbiAgICAgICAgfSksXG4gICAgICAgIHtcbiAgICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgKSxcbiAgICAgIGxvY2FsaXplZDogdHJ1ZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNjaGVtYVxufVxuXG5jb25zdCBidWlsZFNjaGVtYSA9IChcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gIGNvbmZpZ0ZpZWxkczogRmllbGRbXSxcbiAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMgPSB7fSxcbik6IFNjaGVtYSA9PiB7XG4gIGNvbnN0IHsgYWxsb3dJREZpZWxkLCBvcHRpb25zIH0gPSBidWlsZFNjaGVtYU9wdGlvbnNcbiAgbGV0IGZpZWxkcyA9IHt9XG5cbiAgbGV0IHNjaGVtYUZpZWxkcyA9IGNvbmZpZ0ZpZWxkc1xuXG4gIGlmICghYWxsb3dJREZpZWxkKSB7XG4gICAgY29uc3QgaWRGaWVsZCA9IHNjaGVtYUZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJylcbiAgICBpZiAoaWRGaWVsZCkge1xuICAgICAgZmllbGRzID0ge1xuICAgICAgICBfaWQ6IGlkRmllbGQudHlwZSA9PT0gJ251bWJlcicgPyBOdW1iZXIgOiBTdHJpbmcsXG4gICAgICB9XG4gICAgICBzY2hlbWFGaWVsZHMgPSBzY2hlbWFGaWVsZHMuZmlsdGVyKFxuICAgICAgICAoZmllbGQpID0+ICEoZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyksXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NoZW1hID0gbmV3IG1vbmdvb3NlLlNjaGVtYShmaWVsZHMsIG9wdGlvbnMpXG5cbiAgc2NoZW1hRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgaWYgKCFmaWVsZElzUHJlc2VudGF0aW9uYWxPbmx5KGZpZWxkKSkge1xuICAgICAgY29uc3QgYWRkRmllbGRTY2hlbWE6IEZpZWxkU2NoZW1hR2VuZXJhdG9yID0gZmllbGRUb1NjaGVtYU1hcFtmaWVsZC50eXBlXVxuXG4gICAgICBpZiAoYWRkRmllbGRTY2hlbWEpIHtcbiAgICAgICAgYWRkRmllbGRTY2hlbWEoZmllbGQsIHNjaGVtYSwgY29uZmlnLCBidWlsZFNjaGVtYU9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBzY2hlbWFcbn1cblxuY29uc3QgZmllbGRUb1NjaGVtYU1hcDogUmVjb3JkPHN0cmluZywgRmllbGRTY2hlbWFHZW5lcmF0b3I+ID0ge1xuICBhcnJheTogKFxuICAgIGZpZWxkOiBBcnJheUZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgIHR5cGU6IFtcbiAgICAgICAgYnVpbGRTY2hlbWEoY29uZmlnLCBmaWVsZC5maWVsZHMsIHtcbiAgICAgICAgICBhbGxvd0lERmllbGQ6IHRydWUsXG4gICAgICAgICAgZGlzYWJsZVVuaXF1ZTogYnVpbGRTY2hlbWFPcHRpb25zLmRpc2FibGVVbmlxdWUsXG4gICAgICAgICAgZHJhZnRzRW5hYmxlZDogYnVpbGRTY2hlbWFPcHRpb25zLmRyYWZ0c0VuYWJsZWQsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgX2lkOiBmYWxzZSxcbiAgICAgICAgICAgIGlkOiBmYWxzZSxcbiAgICAgICAgICAgIG1pbmltaXplOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBibG9ja3M6IChcbiAgICBmaWVsZDogQmxvY2tGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgZmllbGRTY2hlbWEgPSB7XG4gICAgICB0eXBlOiBbbmV3IG1vbmdvb3NlLlNjaGVtYSh7fSwgeyBfaWQ6IGZhbHNlLCBkaXNjcmltaW5hdG9yS2V5OiAnYmxvY2tUeXBlJyB9KV0sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBmaWVsZFNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcblxuICAgIGZpZWxkLmJsb2Nrcy5mb3JFYWNoKChibG9ja0l0ZW06IEJsb2NrKSA9PiB7XG4gICAgICBjb25zdCBibG9ja1NjaGVtYSA9IG5ldyBtb25nb29zZS5TY2hlbWEoe30sIHsgX2lkOiBmYWxzZSwgaWQ6IGZhbHNlIH0pXG5cbiAgICAgIGJsb2NrSXRlbS5maWVsZHMuZm9yRWFjaCgoYmxvY2tGaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBhZGRGaWVsZFNjaGVtYTogRmllbGRTY2hlbWFHZW5lcmF0b3IgPSBmaWVsZFRvU2NoZW1hTWFwW2Jsb2NrRmllbGQudHlwZV1cbiAgICAgICAgaWYgKGFkZEZpZWxkU2NoZW1hKSB7XG4gICAgICAgICAgYWRkRmllbGRTY2hlbWEoYmxvY2tGaWVsZCwgYmxvY2tTY2hlbWEsIGNvbmZpZywgYnVpbGRTY2hlbWFPcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgICAgY29uZmlnLmxvY2FsaXphdGlvbi5sb2NhbGVDb2Rlcy5mb3JFYWNoKChsb2NhbGVDb2RlKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgUG9zc2libGUgaW5jb3JyZWN0IHR5cGluZyBpbiBtb25nb29zZSB0eXBlcywgdGhpcyB3b3Jrc1xuICAgICAgICAgIHNjaGVtYS5wYXRoKGAke2ZpZWxkLm5hbWV9LiR7bG9jYWxlQ29kZX1gKS5kaXNjcmltaW5hdG9yKGJsb2NrSXRlbS5zbHVnLCBibG9ja1NjaGVtYSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQb3NzaWJsZSBpbmNvcnJlY3QgdHlwaW5nIGluIG1vbmdvb3NlIHR5cGVzLCB0aGlzIHdvcmtzXG4gICAgICAgIHNjaGVtYS5wYXRoKGZpZWxkLm5hbWUpLmRpc2NyaW1pbmF0b3IoYmxvY2tJdGVtLnNsdWcsIGJsb2NrU2NoZW1hKVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG4gIGNoZWNrYm94OiAoXG4gICAgZmllbGQ6IENoZWNrYm94RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IEJvb2xlYW4gfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBjb2RlOiAoXG4gICAgZmllbGQ6IENvZGVGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHsgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSwgdHlwZTogU3RyaW5nIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgY29sbGFwc2libGU6IChcbiAgICBmaWVsZDogQ29sbGFwc2libGVGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgZmllbGQuZmllbGRzLmZvckVhY2goKHN1YkZpZWxkOiBGaWVsZCkgPT4ge1xuICAgICAgY29uc3QgYWRkRmllbGRTY2hlbWE6IEZpZWxkU2NoZW1hR2VuZXJhdG9yID0gZmllbGRUb1NjaGVtYU1hcFtzdWJGaWVsZC50eXBlXVxuXG4gICAgICBpZiAoYWRkRmllbGRTY2hlbWEpIHtcbiAgICAgICAgYWRkRmllbGRTY2hlbWEoc3ViRmllbGQsIHNjaGVtYSwgY29uZmlnLCBidWlsZFNjaGVtYU9wdGlvbnMpXG4gICAgICB9XG4gICAgfSlcbiAgfSxcbiAgZGF0ZTogKFxuICAgIGZpZWxkOiBEYXRlRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7IC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksIHR5cGU6IERhdGUgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBlbWFpbDogKFxuICAgIGZpZWxkOiBFbWFpbEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0geyAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLCB0eXBlOiBTdHJpbmcgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBncm91cDogKFxuICAgIGZpZWxkOiBHcm91cEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBmb3JtYXR0ZWRCYXNlU2NoZW1hID0gZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKVxuXG4gICAgLy8gY2FycnkgaW5kZXhTb3J0YWJsZUZpZWxkcyB0aHJvdWdoIHRvIHZlcnNpb25zIGlmIGRyYWZ0cyBlbmFibGVkXG4gICAgY29uc3QgaW5kZXhTb3J0YWJsZUZpZWxkcyA9XG4gICAgICBidWlsZFNjaGVtYU9wdGlvbnMuaW5kZXhTb3J0YWJsZUZpZWxkcyAmJlxuICAgICAgZmllbGQubmFtZSA9PT0gJ3ZlcnNpb24nICYmXG4gICAgICBidWlsZFNjaGVtYU9wdGlvbnMuZHJhZnRzRW5hYmxlZFxuXG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHtcbiAgICAgIC4uLmZvcm1hdHRlZEJhc2VTY2hlbWEsXG4gICAgICB0eXBlOiBidWlsZFNjaGVtYShjb25maWcsIGZpZWxkLmZpZWxkcywge1xuICAgICAgICBkaXNhYmxlVW5pcXVlOiBidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgZHJhZnRzRW5hYmxlZDogYnVpbGRTY2hlbWFPcHRpb25zLmRyYWZ0c0VuYWJsZWQsXG4gICAgICAgIGluZGV4U29ydGFibGVGaWVsZHMsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICAgIGlkOiBmYWxzZSxcbiAgICAgICAgICBtaW5pbWl6ZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIGpzb246IChcbiAgICBmaWVsZDogSlNPTkZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5NaXhlZCxcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG4gIH0sXG4gIG51bWJlcjogKFxuICAgIGZpZWxkOiBOdW1iZXJGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHtcbiAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICB0eXBlOiBmaWVsZC5oYXNNYW55ID8gW051bWJlcl0gOiBOdW1iZXIsXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICBwb2ludDogKFxuICAgIGZpZWxkOiBQb2ludEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hOiBTY2hlbWFUeXBlT3B0aW9uczx1bmtub3duPiA9IHtcbiAgICAgIHR5cGU6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXG4gICAgICB9LFxuICAgICAgY29vcmRpbmF0ZXM6IHtcbiAgICAgICAgdHlwZTogW051bWJlcl0sXG4gICAgICAgIGRlZmF1bHQ6IGZpZWxkLmRlZmF1bHRWYWx1ZSB8fCB1bmRlZmluZWQsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfVxuICAgIGlmIChidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSAmJiBmaWVsZC51bmlxdWUgJiYgZmllbGQubG9jYWxpemVkKSB7XG4gICAgICBiYXNlU2NoZW1hLmNvb3JkaW5hdGVzLnNwYXJzZSA9IHRydWVcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoZmllbGQsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgIH0pXG5cbiAgICBpZiAoZmllbGQuaW5kZXggPT09IHRydWUgfHwgZmllbGQuaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5kZXhPcHRpb25zOiBJbmRleE9wdGlvbnMgPSB7fVxuICAgICAgaWYgKCFidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSAmJiBmaWVsZC51bmlxdWUpIHtcbiAgICAgICAgaW5kZXhPcHRpb25zLnNwYXJzZSA9IHRydWVcbiAgICAgICAgaW5kZXhPcHRpb25zLnVuaXF1ZSA9IHRydWVcbiAgICAgIH1cbiAgICAgIGlmIChmaWVsZC5sb2NhbGl6ZWQgJiYgY29uZmlnLmxvY2FsaXphdGlvbikge1xuICAgICAgICBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZXMuZm9yRWFjaCgobG9jYWxlKSA9PiB7XG4gICAgICAgICAgc2NoZW1hLmluZGV4KHsgW2Ake2ZpZWxkLm5hbWV9LiR7bG9jYWxlfWBdOiAnMmRzcGhlcmUnIH0sIGluZGV4T3B0aW9ucylcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNjaGVtYS5pbmRleCh7IFtmaWVsZC5uYW1lXTogJzJkc3BoZXJlJyB9LCBpbmRleE9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuICB9LFxuICByYWRpbzogKFxuICAgIGZpZWxkOiBSYWRpb0ZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0ge1xuICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGVudW06IGZpZWxkLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSByZXR1cm4gb3B0aW9uLnZhbHVlXG4gICAgICAgIHJldHVybiBvcHRpb25cbiAgICAgIH0pLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgcmVsYXRpb25zaGlwOiAoXG4gICAgZmllbGQ6IFJlbGF0aW9uc2hpcEZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApID0+IHtcbiAgICBjb25zdCBoYXNNYW55UmVsYXRpb25zID0gQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKVxuICAgIGxldCBzY2hlbWFUb1JldHVybjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XG5cbiAgICBpZiAoZmllbGQubG9jYWxpemVkICYmIGNvbmZpZy5sb2NhbGl6YXRpb24pIHtcbiAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICB0eXBlOiBjb25maWcubG9jYWxpemF0aW9uLmxvY2FsZUNvZGVzLnJlZHVjZSgobG9jYWxlcywgbG9jYWxlKSA9PiB7XG4gICAgICAgICAgbGV0IGxvY2FsZVNjaGVtYTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9XG5cbiAgICAgICAgICBpZiAoaGFzTWFueVJlbGF0aW9ucykge1xuICAgICAgICAgICAgbG9jYWxlU2NoZW1hID0ge1xuICAgICAgICAgICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICB0eXBlOiBtb25nb29zZS5TY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICAgICAgICAgIHJlbGF0aW9uVG86IHsgdHlwZTogU3RyaW5nLCBlbnVtOiBmaWVsZC5yZWxhdGlvblRvIH0sXG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgICAgICAgICAgIHJlZlBhdGg6IGAke2ZpZWxkLm5hbWV9LiR7bG9jYWxlfS5yZWxhdGlvblRvYCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbG9jYWxlU2NoZW1hID0ge1xuICAgICAgICAgICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgICAgICAgICB0eXBlOiBtb25nb29zZS5TY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICAgICAgICAgIHJlZjogZmllbGQucmVsYXRpb25UbyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ubG9jYWxlcyxcbiAgICAgICAgICAgIFtsb2NhbGVdOiBmaWVsZC5oYXNNYW55ID8geyB0eXBlOiBbbG9jYWxlU2NoZW1hXSwgZGVmYXVsdDogdW5kZWZpbmVkIH0gOiBsb2NhbGVTY2hlbWEsXG4gICAgICAgICAgfVxuICAgICAgICB9LCB7fSksXG4gICAgICAgIGxvY2FsaXplZDogdHJ1ZSxcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGhhc01hbnlSZWxhdGlvbnMpIHtcbiAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICB0eXBlOiBtb25nb29zZS5TY2hlbWEuVHlwZXMuTWl4ZWQsXG4gICAgICAgIHJlbGF0aW9uVG86IHsgdHlwZTogU3RyaW5nLCBlbnVtOiBmaWVsZC5yZWxhdGlvblRvIH0sXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgICAgIHJlZlBhdGg6IGAke2ZpZWxkLm5hbWV9LnJlbGF0aW9uVG9gLFxuICAgICAgICB9LFxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQuaGFzTWFueSkge1xuICAgICAgICBzY2hlbWFUb1JldHVybiA9IHtcbiAgICAgICAgICB0eXBlOiBbc2NoZW1hVG9SZXR1cm5dLFxuICAgICAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzY2hlbWFUb1JldHVybiA9IHtcbiAgICAgICAgLi4uZm9ybWF0QmFzZVNjaGVtYShmaWVsZCwgYnVpbGRTY2hlbWFPcHRpb25zKSxcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgICByZWY6IGZpZWxkLnJlbGF0aW9uVG8sXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC5oYXNNYW55KSB7XG4gICAgICAgIHNjaGVtYVRvUmV0dXJuID0ge1xuICAgICAgICAgIHR5cGU6IFtzY2hlbWFUb1JldHVybl0sXG4gICAgICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IHNjaGVtYVRvUmV0dXJuLFxuICAgIH0pXG4gIH0sXG4gIHJpY2hUZXh0OiAoXG4gICAgZmllbGQ6IFJpY2hUZXh0RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbiAgcm93OiAoXG4gICAgZmllbGQ6IFJvd0ZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBmaWVsZC5maWVsZHMuZm9yRWFjaCgoc3ViRmllbGQ6IEZpZWxkKSA9PiB7XG4gICAgICBjb25zdCBhZGRGaWVsZFNjaGVtYTogRmllbGRTY2hlbWFHZW5lcmF0b3IgPSBmaWVsZFRvU2NoZW1hTWFwW3N1YkZpZWxkLnR5cGVdXG5cbiAgICAgIGlmIChhZGRGaWVsZFNjaGVtYSkge1xuICAgICAgICBhZGRGaWVsZFNjaGVtYShzdWJGaWVsZCwgc2NoZW1hLCBjb25maWcsIGJ1aWxkU2NoZW1hT3B0aW9ucylcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICBzZWxlY3Q6IChcbiAgICBmaWVsZDogU2VsZWN0RmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZW51bTogZmllbGQub3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHJldHVybiBvcHRpb24udmFsdWVcbiAgICAgICAgcmV0dXJuIG9wdGlvblxuICAgICAgfSksXG4gICAgfVxuXG4gICAgaWYgKGJ1aWxkU2NoZW1hT3B0aW9ucy5kcmFmdHNFbmFibGVkIHx8ICFmaWVsZC5yZXF1aXJlZCkge1xuICAgICAgYmFzZVNjaGVtYS5lbnVtLnB1c2gobnVsbClcbiAgICB9XG5cbiAgICBzY2hlbWEuYWRkKHtcbiAgICAgIFtmaWVsZC5uYW1lXTogbG9jYWxpemVTY2hlbWEoXG4gICAgICAgIGZpZWxkLFxuICAgICAgICBmaWVsZC5oYXNNYW55ID8gW2Jhc2VTY2hlbWFdIDogYmFzZVNjaGVtYSxcbiAgICAgICAgY29uZmlnLmxvY2FsaXphdGlvbixcbiAgICAgICksXG4gICAgfSlcbiAgfSxcbiAgdGFiczogKFxuICAgIGZpZWxkOiBUYWJzRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGZpZWxkLnRhYnMuZm9yRWFjaCgodGFiKSA9PiB7XG4gICAgICBpZiAodGFiSGFzTmFtZSh0YWIpKSB7XG4gICAgICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAgICAgdHlwZTogYnVpbGRTY2hlbWEoY29uZmlnLCB0YWIuZmllbGRzLCB7XG4gICAgICAgICAgICBkaXNhYmxlVW5pcXVlOiBidWlsZFNjaGVtYU9wdGlvbnMuZGlzYWJsZVVuaXF1ZSxcbiAgICAgICAgICAgIGRyYWZ0c0VuYWJsZWQ6IGJ1aWxkU2NoZW1hT3B0aW9ucy5kcmFmdHNFbmFibGVkLFxuICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICBfaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpZDogZmFsc2UsXG4gICAgICAgICAgICAgIG1pbmltaXplOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cblxuICAgICAgICBzY2hlbWEuYWRkKHtcbiAgICAgICAgICBbdGFiLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYSh0YWIsIGJhc2VTY2hlbWEsIGNvbmZpZy5sb2NhbGl6YXRpb24pLFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFiLmZpZWxkcy5mb3JFYWNoKChzdWJGaWVsZDogRmllbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRGaWVsZFNjaGVtYTogRmllbGRTY2hlbWFHZW5lcmF0b3IgPSBmaWVsZFRvU2NoZW1hTWFwW3N1YkZpZWxkLnR5cGVdXG5cbiAgICAgICAgICBpZiAoYWRkRmllbGRTY2hlbWEpIHtcbiAgICAgICAgICAgIGFkZEZpZWxkU2NoZW1hKHN1YkZpZWxkLCBzY2hlbWEsIGNvbmZpZywgYnVpbGRTY2hlbWFPcHRpb25zKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICB0ZXh0OiAoXG4gICAgZmllbGQ6IFRleHRGaWVsZCxcbiAgICBzY2hlbWE6IFNjaGVtYSxcbiAgICBjb25maWc6IFNhbml0aXplZENvbmZpZyxcbiAgICBidWlsZFNjaGVtYU9wdGlvbnM6IEJ1aWxkU2NoZW1hT3B0aW9ucyxcbiAgKTogdm9pZCA9PiB7XG4gICAgY29uc3QgYmFzZVNjaGVtYSA9IHtcbiAgICAgIC4uLmZvcm1hdEJhc2VTY2hlbWEoZmllbGQsIGJ1aWxkU2NoZW1hT3B0aW9ucyksXG4gICAgICB0eXBlOiBmaWVsZC5oYXNNYW55ID8gW1N0cmluZ10gOiBTdHJpbmcsXG4gICAgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICB0ZXh0YXJlYTogKFxuICAgIGZpZWxkOiBUZXh0YXJlYUZpZWxkLFxuICAgIHNjaGVtYTogU2NoZW1hLFxuICAgIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnLFxuICAgIGJ1aWxkU2NoZW1hT3B0aW9uczogQnVpbGRTY2hlbWFPcHRpb25zLFxuICApOiB2b2lkID0+IHtcbiAgICBjb25zdCBiYXNlU2NoZW1hID0geyAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLCB0eXBlOiBTdHJpbmcgfVxuXG4gICAgc2NoZW1hLmFkZCh7XG4gICAgICBbZmllbGQubmFtZV06IGxvY2FsaXplU2NoZW1hKGZpZWxkLCBiYXNlU2NoZW1hLCBjb25maWcubG9jYWxpemF0aW9uKSxcbiAgICB9KVxuICB9LFxuICB1cGxvYWQ6IChcbiAgICBmaWVsZDogVXBsb2FkRmllbGQsXG4gICAgc2NoZW1hOiBTY2hlbWEsXG4gICAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWcsXG4gICAgYnVpbGRTY2hlbWFPcHRpb25zOiBCdWlsZFNjaGVtYU9wdGlvbnMsXG4gICk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IGJhc2VTY2hlbWEgPSB7XG4gICAgICAuLi5mb3JtYXRCYXNlU2NoZW1hKGZpZWxkLCBidWlsZFNjaGVtYU9wdGlvbnMpLFxuICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk1peGVkLFxuICAgICAgcmVmOiBmaWVsZC5yZWxhdGlvblRvLFxuICAgIH1cblxuICAgIHNjaGVtYS5hZGQoe1xuICAgICAgW2ZpZWxkLm5hbWVdOiBsb2NhbGl6ZVNjaGVtYShmaWVsZCwgYmFzZVNjaGVtYSwgY29uZmlnLmxvY2FsaXphdGlvbiksXG4gICAgfSlcbiAgfSxcbn1cblxuZXhwb3J0IGRlZmF1bHQgYnVpbGRTY2hlbWFcbiJdLCJuYW1lcyI6WyJtb25nb29zZSIsImZpZWxkQWZmZWN0c0RhdGEiLCJmaWVsZElzTG9jYWxpemVkIiwiZmllbGRJc1ByZXNlbnRhdGlvbmFsT25seSIsInRhYkhhc05hbWUiLCJmb3JtYXRCYXNlU2NoZW1hIiwiZmllbGQiLCJidWlsZFNjaGVtYU9wdGlvbnMiLCJkaXNhYmxlVW5pcXVlIiwiZHJhZnRzRW5hYmxlZCIsImluZGV4U29ydGFibGVGaWVsZHMiLCJzY2hlbWEiLCJpbmRleCIsInVuaXF1ZSIsInJlcXVpcmVkIiwibG9jYWxpemVkIiwidHlwZSIsInNwYXJzZSIsImhpZGRlbiIsImxvY2FsaXplU2NoZW1hIiwiZW50aXR5IiwibG9jYWxpemF0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwibG9jYWxlcyIsImxvY2FsZUNvZGVzIiwicmVkdWNlIiwibG9jYWxlU2NoZW1hIiwibG9jYWxlIiwiX2lkIiwiYnVpbGRTY2hlbWEiLCJjb25maWciLCJjb25maWdGaWVsZHMiLCJhbGxvd0lERmllbGQiLCJvcHRpb25zIiwiZmllbGRzIiwic2NoZW1hRmllbGRzIiwiaWRGaWVsZCIsImZpbmQiLCJuYW1lIiwiTnVtYmVyIiwiU3RyaW5nIiwiZmlsdGVyIiwiU2NoZW1hIiwiZm9yRWFjaCIsImFkZEZpZWxkU2NoZW1hIiwiZmllbGRUb1NjaGVtYU1hcCIsImFycmF5IiwiYmFzZVNjaGVtYSIsImlkIiwibWluaW1pemUiLCJkZWZhdWx0IiwidW5kZWZpbmVkIiwiYWRkIiwiYmxvY2tzIiwiZmllbGRTY2hlbWEiLCJkaXNjcmltaW5hdG9yS2V5IiwiYmxvY2tJdGVtIiwiYmxvY2tTY2hlbWEiLCJibG9ja0ZpZWxkIiwibG9jYWxlQ29kZSIsInBhdGgiLCJkaXNjcmltaW5hdG9yIiwic2x1ZyIsImNoZWNrYm94IiwiQm9vbGVhbiIsImNvZGUiLCJjb2xsYXBzaWJsZSIsInN1YkZpZWxkIiwiZGF0ZSIsIkRhdGUiLCJlbWFpbCIsImdyb3VwIiwiZm9ybWF0dGVkQmFzZVNjaGVtYSIsImpzb24iLCJUeXBlcyIsIk1peGVkIiwibnVtYmVyIiwiaGFzTWFueSIsInBvaW50IiwiZW51bSIsImNvb3JkaW5hdGVzIiwiZGVmYXVsdFZhbHVlIiwiaW5kZXhPcHRpb25zIiwicmFkaW8iLCJtYXAiLCJvcHRpb24iLCJ2YWx1ZSIsInJlbGF0aW9uc2hpcCIsImhhc01hbnlSZWxhdGlvbnMiLCJyZWxhdGlvblRvIiwic2NoZW1hVG9SZXR1cm4iLCJyZWZQYXRoIiwicmVmIiwicmljaFRleHQiLCJyb3ciLCJzZWxlY3QiLCJwdXNoIiwidGFicyIsInRhYiIsInRleHQiLCJ0ZXh0YXJlYSIsInVwbG9hZCJdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9ELEdBQ3BELHlDQUF5QyxHQUN6QywwREFBMEQsR0ErQjFELE9BQU9BLGNBQWMsV0FBVTtBQUMvQixTQUNFQyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixFQUNoQkMseUJBQXlCLEVBQ3pCQyxVQUFVLFFBQ0wsZ0JBQWU7QUFpQnRCLE1BQU1DLG1CQUFtQixDQUFDQyxPQUEyQkM7SUFDbkQsTUFBTSxFQUFFQyxhQUFhLEVBQUVDLGFBQWEsRUFBRUMsbUJBQW1CLEVBQUUsR0FBR0g7SUFDOUQsTUFBTUksU0FBcUM7UUFDekNDLE9BQU9OLE1BQU1NLEtBQUssSUFBSyxDQUFDSixpQkFBaUJGLE1BQU1PLE1BQU0sSUFBS0gsdUJBQXVCO1FBQ2pGSSxVQUFVO1FBQ1ZELFFBQVEsQUFBQyxDQUFDTCxpQkFBaUJGLE1BQU1PLE1BQU0sSUFBSztJQUM5QztJQUVBLElBQ0VGLE9BQU9FLE1BQU0sSUFDWlAsQ0FBQUEsTUFBTVMsU0FBUyxJQUNkTixpQkFDQ1IsaUJBQWlCSyxVQUNoQkEsTUFBTVUsSUFBSSxLQUFLLFdBQ2ZWLE1BQU1VLElBQUksS0FBSyxTQUNmVixNQUFNUSxRQUFRLEtBQUssSUFBSSxHQUMzQjtRQUNBSCxPQUFPTSxNQUFNLEdBQUc7SUFDbEI7SUFFQSxJQUFJWCxNQUFNWSxNQUFNLEVBQUU7UUFDaEJQLE9BQU9PLE1BQU0sR0FBRztJQUNsQjtJQUVBLE9BQU9QO0FBQ1Q7QUFFQSxNQUFNUSxpQkFBaUIsQ0FDckJDLFFBQ0FULFFB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
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "buildAndOrConditions", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return buildAndOrConditions;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _parseParams = require("./parseParams");
|
|
12
|
-
async function buildAndOrConditions({ collectionSlug, fields, globalSlug, locale, payload, where }) {
|
|
1
|
+
import { parseParams } from './parseParams';
|
|
2
|
+
export async function buildAndOrConditions({ collectionSlug, fields, globalSlug, locale, payload, where }) {
|
|
13
3
|
const completedConditions = [];
|
|
14
4
|
// Loop over all AND / OR operations and add them to the AND / OR query param
|
|
15
5
|
// Operations should come through as an array
|
|
@@ -18,7 +8,7 @@ async function buildAndOrConditions({ collectionSlug, fields, globalSlug, locale
|
|
|
18
8
|
// If the operation is properly formatted as an object
|
|
19
9
|
if (typeof condition === 'object') {
|
|
20
10
|
// eslint-disable-next-line no-await-in-loop
|
|
21
|
-
const result = await
|
|
11
|
+
const result = await parseParams({
|
|
22
12
|
collectionSlug,
|
|
23
13
|
fields,
|
|
24
14
|
globalSlug,
|
|
@@ -34,4 +24,4 @@ async function buildAndOrConditions({ collectionSlug, fields, globalSlug, locale
|
|
|
34
24
|
return completedConditions;
|
|
35
25
|
}
|
|
36
26
|
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2J1aWxkQW5kT3JDb25kaXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBXaGVyZSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHBhcnNlUGFyYW1zIH0gZnJvbSAnLi9wYXJzZVBhcmFtcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgY29sbGVjdGlvblNsdWcsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsU2x1ZyxcbiAgbG9jYWxlLFxuICBwYXlsb2FkLFxuICB3aGVyZSxcbn06IHtcbiAgY29sbGVjdGlvblNsdWc/OiBzdHJpbmdcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGdsb2JhbFNsdWc/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBheWxvYWQ6IFBheWxvYWRcbiAgd2hlcmU6IFdoZXJlW11cbn0pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2J1aWxkQW5kT3JDb25kaXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBXaGVyZSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHBhcnNlUGFyYW1zIH0gZnJvbSAnLi9wYXJzZVBhcmFtcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQW5kT3JDb25kaXRpb25zKHtcbiAgY29sbGVjdGlvblNsdWcsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsU2x1ZyxcbiAgbG9jYWxlLFxuICBwYXlsb2FkLFxuICB3aGVyZSxcbn06IHtcbiAgY29sbGVjdGlvblNsdWc/OiBzdHJpbmdcbiAgZmllbGRzOiBGaWVsZFtdXG4gIGdsb2JhbFNsdWc/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHBheWxvYWQ6IFBheWxvYWRcbiAgd2hlcmU6IFdoZXJlW11cbn0pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+W10+IHtcbiAgY29uc3QgY29tcGxldGVkQ29uZGl0aW9ucyA9IFtdXG4gIC8vIExvb3Agb3ZlciBhbGwgQU5EIC8gT1Igb3BlcmF0aW9ucyBhbmQgYWRkIHRoZW0gdG8gdGhlIEFORCAvIE9SIHF1ZXJ5IHBhcmFtXG4gIC8vIE9wZXJhdGlvbnMgc2hvdWxkIGNvbWUgdGhyb3VnaCBhcyBhbiBhcnJheVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgZm9yIChjb25zdCBjb25kaXRpb24gb2Ygd2hlcmUpIHtcbiAgICAvLyBJZiB0aGUgb3BlcmF0aW9uIGlzIHByb3Blcmx5IGZvcm1hdHRlZCBhcyBhbiBvYmplY3RcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJzZVBhcmFtcyh7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGdsb2JhbFNsdWcsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgd2hlcmU6IGNvbmRpdGlvbixcbiAgICAgIH0pXG4gICAgICBpZiAoT2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbXBsZXRlZENvbmRpdGlvbnMucHVzaChyZXN1bHQpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjb21wbGV0ZWRDb25kaXRpb25zXG59XG4iXSwibmFtZXMiOlsicGFyc2VQYXJhbXMiLCJidWlsZEFuZE9yQ29uZGl0aW9ucyIsImNvbGxlY3Rpb25TbHVnIiwiZmllbGRzIiwiZ2xvYmFsU2x1ZyIsImxvY2FsZSIsInBheWxvYWQiLCJ3aGVyZSIsImNvbXBsZXRlZENvbmRpdGlvbnMiLCJjb25kaXRpb24iLCJyZXN1bHQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBR0EsU0FBU0EsV0FBVyxRQUFRLGdCQUFlO0FBRTNDLE9BQU8sZUFBZUMscUJBQXFCLEVBQ3pDQyxjQUFjLEVBQ2RDLE1BQU0sRUFDTkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLE9BQU8sRUFDUEMsS0FBSyxFQVFOO0lBQ0MsTUFBTUMsc0JBQXNCLEVBQUU7SUFDOUIsNkVBQTZFO0lBQzdFLDZDQUE2QztJQUM3QyxnREFBZ0Q7SUFDaEQsS0FBSyxNQUFNQyxhQUFhRixNQUFPO1FBQzdCLHNEQUFzRDtRQUN0RCxJQUFJLE9BQU9FLGNBQWMsVUFBVTtZQUNqQyw0Q0FBNEM7WUFDNUMsTUFBTUMsU0FBUyxNQUFNVixZQUFZO2dCQUMvQkU7Z0JBQ0FDO2dCQUNBQztnQkFDQUM7Z0JBQ0FDO2dCQUNBQyxPQUFPRTtZQUNUO1lBQ0EsSUFBSUUsT0FBT0MsSUFBSSxDQUFDRixRQUFRRyxNQUFNLEdBQUcsR0FBRztnQkFDbENMLG9CQUFvQk0sSUFBSSxDQUFDSjtZQUMzQjtRQUNGO0lBQ0Y7SUFDQSxPQUFPRjtBQUNUIn0=
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _errors = require("payload/errors");
|
|
12
|
-
const _parseParams = require("./parseParams");
|
|
1
|
+
import { QueryError } from 'payload/errors';
|
|
2
|
+
import { parseParams } from './parseParams';
|
|
13
3
|
// This plugin asynchronously builds a list of Mongoose query constraints
|
|
14
4
|
// which can then be used in subsequent Mongoose queries.
|
|
15
5
|
const getBuildQueryPlugin = ({ collectionSlug, versionsFields } = {})=>{
|
|
@@ -28,7 +18,7 @@ const getBuildQueryPlugin = ({ collectionSlug, versionsFields } = {})=>{
|
|
|
28
18
|
}
|
|
29
19
|
}
|
|
30
20
|
const errors = [];
|
|
31
|
-
const result = await
|
|
21
|
+
const result = await parseParams({
|
|
32
22
|
collectionSlug,
|
|
33
23
|
fields,
|
|
34
24
|
globalSlug,
|
|
@@ -37,13 +27,13 @@ const getBuildQueryPlugin = ({ collectionSlug, versionsFields } = {})=>{
|
|
|
37
27
|
where
|
|
38
28
|
});
|
|
39
29
|
if (errors.length > 0) {
|
|
40
|
-
throw new
|
|
30
|
+
throw new QueryError(errors);
|
|
41
31
|
}
|
|
42
32
|
return result;
|
|
43
33
|
}
|
|
44
34
|
modifiedSchema.statics.buildQuery = buildQuery;
|
|
45
35
|
};
|
|
46
36
|
};
|
|
47
|
-
|
|
37
|
+
export default getBuildQueryPlugin;
|
|
48
38
|
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2J1aWxkUXVlcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXlsb2FkIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFdoZXJlIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuXG5pbXBvcnQgeyBwYXJzZVBhcmFtcyB9IGZyb20gJy4vcGFyc2VQYXJhbXMnXG5cbnR5cGUgR2V0QnVpbGRRdWVyeVBsdWdpbkFyZ3MgPSB7XG4gIGNvbGxlY3Rpb25TbHVnPzogc3RyaW5nXG4gIHZlcnNpb25zRmllbGRzPzogRmllbGRbXVxufVxuXG5leHBvcnQgdHlwZSBCdWlsZFF1ZXJ5QXJncyA9IHtcbiAgZ2xvYmFsU2x1Zz86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgcGF5bG9hZDogUGF5bG9hZFxuICB3aGVyZTogV2hlcmVcbn1cblxuLy8gVGhpcyBwbHVnaW4gYXN5bmNocm9ub3VzbHkgYnVpbGRzIGEgbGlzdCBvZiBNb25nb29zZSBxdWVyeSBjb25zdHJhaW50c1xuLy8gd2hpY2ggY2FuIHRoZW4gYmUgdXNlZCBpbiBzdWJzZXF1ZW50IE1vbmdvb3NlIHF1ZXJpZXMuXG5jb25zdCBnZXRCdWlsZFF1ZXJ5UGx1Z2luID0gKHsgY29sbGVjdGlvblNsdWcsIHZlcnNpb25zRmllbGRzIH06IEdldEJ1aWxkUXVlcnlQbHVnaW5BcmdzID0ge30pID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJ1aWxkUXVlcnlQbHVnaW4oc2NoZW1hKSB7XG4gICAgY29uc3QgbW9kaWZpZWRTY2hlbWEgPSBzY2hlbWFcbiAgICBhc3luYyBmdW5jdGlvbiBidWlsZFF1ZXJ5KHtcbiAgICAgIGdsb2JhbFNsdWcsXG4gICAgICBsb2NhbGUsXG4gICAgICBwYXlsb2FkLFxuICAgICAgd2hlcmUsXG4gICAgfTogQnVpbGRRdWVyeUFyZ3MpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgICBsZXQgZmllbGRzID0gdmVyc2lvbnNGaWVsZHNcbiAgICAgIGlmICghZmllbGRzKSB7XG4gICAgICAgIGlmIChnbG9iYWxTbHVnKSB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gcGF5bG9hZC5nbG9iYWxzLmNvbmZpZy5maW5kKCh7IHNsdWcgfSkgPT4gc2x1ZyA9PT0gZ2xvYmFsU2x1ZylcbiAgICAgICAgICBmaWVsZHMgPSBnbG9iYWxDb25maWcuZmllbGRzXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbGxlY3Rpb25TbHVnKSB7XG4gICAgICAgICAgY29uc3QgY29sbGVjdGlvbkNvbmZpZyA9IHBheWxvYWQuY29sbGVjdGlvbnNbY29sbGVjdGlvblNsdWddLmNvbmZpZ1xuICAgICAgICAgIGZpZWxkcyA9IGNvbGxlY3Rpb25Db25maWcuZmllbGRzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGVycm9ycyA9IFtdXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJzZVBhcmFtcyh7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGdsb2JhbFNsdWcsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgd2hlcmUsXG4gICAgICB9KVxuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2J1aWxkUXVlcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXlsb2FkIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB0eXBlIHsgRmllbGQsIFdoZXJlIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgUXVlcnlFcnJvciB9IGZyb20gJ3BheWxvYWQvZXJyb3JzJ1xuXG5pbXBvcnQgeyBwYXJzZVBhcmFtcyB9IGZyb20gJy4vcGFyc2VQYXJhbXMnXG5cbnR5cGUgR2V0QnVpbGRRdWVyeVBsdWdpbkFyZ3MgPSB7XG4gIGNvbGxlY3Rpb25TbHVnPzogc3RyaW5nXG4gIHZlcnNpb25zRmllbGRzPzogRmllbGRbXVxufVxuXG5leHBvcnQgdHlwZSBCdWlsZFF1ZXJ5QXJncyA9IHtcbiAgZ2xvYmFsU2x1Zz86IHN0cmluZ1xuICBsb2NhbGU/OiBzdHJpbmdcbiAgcGF5bG9hZDogUGF5bG9hZFxuICB3aGVyZTogV2hlcmVcbn1cblxuLy8gVGhpcyBwbHVnaW4gYXN5bmNocm9ub3VzbHkgYnVpbGRzIGEgbGlzdCBvZiBNb25nb29zZSBxdWVyeSBjb25zdHJhaW50c1xuLy8gd2hpY2ggY2FuIHRoZW4gYmUgdXNlZCBpbiBzdWJzZXF1ZW50IE1vbmdvb3NlIHF1ZXJpZXMuXG5jb25zdCBnZXRCdWlsZFF1ZXJ5UGx1Z2luID0gKHsgY29sbGVjdGlvblNsdWcsIHZlcnNpb25zRmllbGRzIH06IEdldEJ1aWxkUXVlcnlQbHVnaW5BcmdzID0ge30pID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGJ1aWxkUXVlcnlQbHVnaW4oc2NoZW1hKSB7XG4gICAgY29uc3QgbW9kaWZpZWRTY2hlbWEgPSBzY2hlbWFcbiAgICBhc3luYyBmdW5jdGlvbiBidWlsZFF1ZXJ5KHtcbiAgICAgIGdsb2JhbFNsdWcsXG4gICAgICBsb2NhbGUsXG4gICAgICBwYXlsb2FkLFxuICAgICAgd2hlcmUsXG4gICAgfTogQnVpbGRRdWVyeUFyZ3MpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgICBsZXQgZmllbGRzID0gdmVyc2lvbnNGaWVsZHNcbiAgICAgIGlmICghZmllbGRzKSB7XG4gICAgICAgIGlmIChnbG9iYWxTbHVnKSB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gcGF5bG9hZC5nbG9iYWxzLmNvbmZpZy5maW5kKCh7IHNsdWcgfSkgPT4gc2x1ZyA9PT0gZ2xvYmFsU2x1ZylcbiAgICAgICAgICBmaWVsZHMgPSBnbG9iYWxDb25maWcuZmllbGRzXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbGxlY3Rpb25TbHVnKSB7XG4gICAgICAgICAgY29uc3QgY29sbGVjdGlvbkNvbmZpZyA9IHBheWxvYWQuY29sbGVjdGlvbnNbY29sbGVjdGlvblNsdWddLmNvbmZpZ1xuICAgICAgICAgIGZpZWxkcyA9IGNvbGxlY3Rpb25Db25maWcuZmllbGRzXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IGVycm9ycyA9IFtdXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYXJzZVBhcmFtcyh7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnLFxuICAgICAgICBmaWVsZHMsXG4gICAgICAgIGdsb2JhbFNsdWcsXG4gICAgICAgIGxvY2FsZSxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgd2hlcmUsXG4gICAgICB9KVxuXG4gICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoZXJyb3JzKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIG1vZGlmaWVkU2NoZW1hLnN0YXRpY3MuYnVpbGRRdWVyeSA9IGJ1aWxkUXVlcnlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRCdWlsZFF1ZXJ5UGx1Z2luXG4iXSwibmFtZXMiOlsiUXVlcnlFcnJvciIsInBhcnNlUGFyYW1zIiwiZ2V0QnVpbGRRdWVyeVBsdWdpbiIsImNvbGxlY3Rpb25TbHVnIiwidmVyc2lvbnNGaWVsZHMiLCJidWlsZFF1ZXJ5UGx1Z2luIiwic2NoZW1hIiwibW9kaWZpZWRTY2hlbWEiLCJidWlsZFF1ZXJ5IiwiZ2xvYmFsU2x1ZyIsImxvY2FsZSIsInBheWxvYWQiLCJ3aGVyZSIsImZpZWxkcyIsImdsb2JhbENvbmZpZyIsImdsb2JhbHMiLCJjb25maWciLCJmaW5kIiwic2x1ZyIsImNvbGxlY3Rpb25Db25maWciLCJjb2xsZWN0aW9ucyIsImVycm9ycyIsInJlc3VsdCIsImxlbmd0aCIsInN0YXRpY3MiXSwibWFwcGluZ3MiOiJBQUdBLFNBQVNBLFVBQVUsUUFBUSxpQkFBZ0I7QUFFM0MsU0FBU0MsV0FBVyxRQUFRLGdCQUFlO0FBYzNDLHlFQUF5RTtBQUN6RSx5REFBeUQ7QUFDekQsTUFBTUMsc0JBQXNCLENBQUMsRUFBRUMsY0FBYyxFQUFFQyxjQUFjLEVBQTJCLEdBQUcsQ0FBQyxDQUFDO0lBQzNGLE9BQU8sU0FBU0MsaUJBQWlCQyxNQUFNO1FBQ3JDLE1BQU1DLGlCQUFpQkQ7UUFDdkIsZUFBZUUsV0FBVyxFQUN4QkMsVUFBVSxFQUNWQyxNQUFNLEVBQ05DLE9BQU8sRUFDUEMsS0FBSyxFQUNVO1lBQ2YsSUFBSUMsU0FBU1Q7WUFDYixJQUFJLENBQUNTLFFBQVE7Z0JBQ1gsSUFBSUosWUFBWTtvQkFDZCxNQUFNSyxlQUFlSCxRQUFRSSxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsRUFBRUMsSUFBSSxFQUFFLEdBQUtBLFNBQVNUO29CQUN4RUksU0FBU0MsYUFBYUQsTUFBTTtnQkFDOUI7Z0JBQ0EsSUFBSVYsZ0JBQWdCO29CQUNsQixNQUFNZ0IsbUJBQW1CUixRQUFRUyxXQUFXLENBQUNqQixlQUFlLENBQUNhLE1BQU07b0JBQ25FSCxTQUFTTSxpQkFBaUJOLE1BQU07Z0JBQ2xDO1lBQ0Y7WUFDQSxNQUFNUSxTQUFTLEVBQUU7WUFDakIsTUFBTUMsU0FBUyxNQUFNckIsWUFBWTtnQkFDL0JFO2dCQUNBVTtnQkFDQUo7Z0JBQ0FDO2dCQUNBQztnQkFDQUM7WUFDRjtZQUVBLElBQUlTLE9BQU9FLE1BQU0sR0FBRyxHQUFHO2dCQUNyQixNQUFNLElBQUl2QixXQUFXcUI7WUFDdkI7WUFFQSxPQUFPQztRQUNUO1FBQ0FmLGVBQWVpQixPQUFPLENBQUNoQixVQUFVLEdBQUdBO0lBQ3RDO0FBQ0Y7QUFFQSxlQUFlTixvQkFBbUIifQ==
|
|
@@ -1,36 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return buildSearchParam;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _bsonobjectid = /*#__PURE__*/ _interop_require_default(require("bson-objectid"));
|
|
12
|
-
const _mongoose = /*#__PURE__*/ _interop_require_default(require("mongoose"));
|
|
13
|
-
const _database = require("payload/database");
|
|
14
|
-
const _types = require("payload/types");
|
|
15
|
-
const _operatorMap = require("./operatorMap");
|
|
16
|
-
const _sanitizeQueryValue = require("./sanitizeQueryValue");
|
|
17
|
-
function _interop_require_default(obj) {
|
|
18
|
-
return obj && obj.__esModule ? obj : {
|
|
19
|
-
default: obj
|
|
20
|
-
};
|
|
21
|
-
}
|
|
1
|
+
import ObjectId from 'bson-objectid';
|
|
2
|
+
import mongoose from 'mongoose';
|
|
3
|
+
import { getLocalizedPaths } from 'payload/database';
|
|
4
|
+
import { fieldAffectsData } from 'payload/types';
|
|
5
|
+
import { validOperators } from 'payload/types';
|
|
6
|
+
import { operatorMap } from './operatorMap';
|
|
7
|
+
import { sanitizeQueryValue } from './sanitizeQueryValue';
|
|
22
8
|
const subQueryOptions = {
|
|
23
9
|
lean: true,
|
|
24
10
|
limit: 50
|
|
25
11
|
};
|
|
26
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Convert the Payload key / value / operator into a MongoDB query
|
|
14
|
+
*/ export async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPath, locale, operator, payload, val }) {
|
|
27
15
|
// Replace GraphQL nested field double underscore formatting
|
|
28
16
|
let sanitizedPath = incomingPath.replace(/__/g, '.');
|
|
29
17
|
if (sanitizedPath === 'id') sanitizedPath = '_id';
|
|
30
18
|
let paths = [];
|
|
31
19
|
let hasCustomID = false;
|
|
32
20
|
if (sanitizedPath === '_id') {
|
|
33
|
-
const customIDfield = payload.collections[collectionSlug]?.config.fields.find((field)=>
|
|
21
|
+
const customIDfield = payload.collections[collectionSlug]?.config.fields.find((field)=>fieldAffectsData(field) && field.name === 'id');
|
|
34
22
|
let idFieldType = 'text';
|
|
35
23
|
if (customIDfield) {
|
|
36
24
|
if (customIDfield?.type === 'text' || customIDfield?.type === 'number') {
|
|
@@ -48,7 +36,7 @@ async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPa
|
|
|
48
36
|
path: '_id'
|
|
49
37
|
});
|
|
50
38
|
} else {
|
|
51
|
-
paths = await
|
|
39
|
+
paths = await getLocalizedPaths({
|
|
52
40
|
collectionSlug,
|
|
53
41
|
fields,
|
|
54
42
|
globalSlug,
|
|
@@ -59,7 +47,7 @@ async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPa
|
|
|
59
47
|
}
|
|
60
48
|
const [{ field, path }] = paths;
|
|
61
49
|
if (path) {
|
|
62
|
-
const { operator: formattedOperator, rawQuery, val: formattedValue } =
|
|
50
|
+
const { operator: formattedOperator, rawQuery, val: formattedValue } = sanitizeQueryValue({
|
|
63
51
|
field,
|
|
64
52
|
hasCustomID,
|
|
65
53
|
operator,
|
|
@@ -98,7 +86,7 @@ async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPa
|
|
|
98
86
|
result.forEach((doc)=>{
|
|
99
87
|
const stringID = doc._id.toString();
|
|
100
88
|
$in.push(stringID);
|
|
101
|
-
if (
|
|
89
|
+
if (mongoose.Types.ObjectId.isValid(stringID)) {
|
|
102
90
|
$in.push(doc._id);
|
|
103
91
|
}
|
|
104
92
|
});
|
|
@@ -142,8 +130,8 @@ async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPa
|
|
|
142
130
|
}, Promise.resolve(initialRelationshipQuery));
|
|
143
131
|
return relationshipQuery;
|
|
144
132
|
}
|
|
145
|
-
if (formattedOperator &&
|
|
146
|
-
const operatorKey =
|
|
133
|
+
if (formattedOperator && validOperators.includes(formattedOperator)) {
|
|
134
|
+
const operatorKey = operatorMap[formattedOperator];
|
|
147
135
|
if (field.type === 'relationship' || field.type === 'upload') {
|
|
148
136
|
let hasNumberIDRelation;
|
|
149
137
|
const result = {
|
|
@@ -158,10 +146,10 @@ async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPa
|
|
|
158
146
|
}
|
|
159
147
|
};
|
|
160
148
|
if (typeof formattedValue === 'string') {
|
|
161
|
-
if (
|
|
149
|
+
if (mongoose.Types.ObjectId.isValid(formattedValue)) {
|
|
162
150
|
result.value.$or.push({
|
|
163
151
|
[path]: {
|
|
164
|
-
[operatorKey]: new
|
|
152
|
+
[operatorKey]: new ObjectId(formattedValue)
|
|
165
153
|
}
|
|
166
154
|
});
|
|
167
155
|
} else {
|
|
@@ -169,7 +157,7 @@ async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPa
|
|
|
169
157
|
field.relationTo
|
|
170
158
|
]).forEach((relationTo)=>{
|
|
171
159
|
const isRelatedToCustomNumberID = payload.collections[relationTo]?.config?.fields.find((relatedField)=>{
|
|
172
|
-
return
|
|
160
|
+
return fieldAffectsData(relatedField) && relatedField.name === 'id' && relatedField.type === 'number';
|
|
173
161
|
});
|
|
174
162
|
if (isRelatedToCustomNumberID) {
|
|
175
163
|
if (isRelatedToCustomNumberID.type === 'number') hasNumberIDRelation = true;
|
|
@@ -219,4 +207,4 @@ async function buildSearchParam({ collectionSlug, fields, globalSlug, incomingPa
|
|
|
219
207
|
return undefined;
|
|
220
208
|
}
|
|
221
209
|
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2J1aWxkU2VhcmNoUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IFBhdGhUb1F1ZXJ5IH0gZnJvbSAncGF5bG9hZC9kYXRhYmFzZSdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcGVyYXRvciB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCBPYmplY3RJZCBmcm9tICdic29uLW9iamVjdGlkJ1xuaW1wb3J0IG1vbmdvb3NlIGZyb20gJ21vbmdvb3NlJ1xuaW1wb3J0IHsgZ2V0TG9jYWxpemVkUGF0aHMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgeyB2YWxpZE9wZXJhdG9ycyB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB0eXBlIHsgTW9uZ29vc2VBZGFwdGVyIH0gZnJvbSAnLi4nXG5cbmltcG9ydCB7IG9wZXJhdG9yTWFwIH0gZnJvbSAnLi9vcGVyYXRvck1hcCdcbmltcG9ydCB7IHNhbml0aXplUXVlcnlWYWx1ZSB9IGZyb20gJy4vc2FuaXRpemVRdWVyeVZhbHVlJ1xuXG50eXBlIFNlYXJjaFBhcmFtID0ge1xuICBwYXRoPzogc3RyaW5nXG4gIHJhd1F1ZXJ5PzogdW5rbm93blxuICB2YWx1ZT86IHVua25vd25cbn1cblxuY29uc3Qgc3ViUXVlcnlPcHRpb25zID0ge1xuICBsZWFuOiB0cnVlLFxuICBsaW1pdDogNTAsXG59XG5cbi8qKlxuICogQ29udmVydCB0aGUgUGF5bG9hZCBrZXkgLyB2YWx1ZSAvIG9wZXJhdG9yIGludG8gYSBNb25nb0RCIHF1ZXJ5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFNlYXJjaFBhcmFtKHtcbiAgY29sbGVjdGlvblNsdWcsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsU2x1ZyxcbiAgaW5jb21pbmdQYXRoLFxuICBsb2NhbGUsXG4gIG9wZXJhdG9yLFxuICBwYXlsb2FkLFxuICB2YWwsXG59OiB7XG4gIGNvbGxlY3Rpb25TbHVnPzogc3RyaW5nXG4gIGZpZWxkczogRmllbGRbXVxuICBnbG9iYWxTbHVnPzogc3RyaW5nXG4gIGluY29taW5nUGF0aDogc3RyaW5nXG4gIGxvY2FsZT86IHN0cmluZ1xuICBvcGVyYXRvcjogc3RyaW5nXG4gIHBheWxvYWQ6IFBheWxvYWRcbiAgdmFsOiB1bmtub3duXG59KTogUHJvbWlzZTxTZWFyY2hQYXJhbT4ge1xuICAvLyBSZXBsYWNlIEdyYXBoUUwgbmVzdGVkIGZpZWxkIGRvdWJsZSB1bmRlcnNjb3JlIGZvcm1hdHRpbmdcbiAgbGV0IHNhbml0aXplZFBhdGggPSBpbmNvbWluZ1BhdGgucmVwbGFjZSgvX18vZywgJy4nKVxuICBpZiAoc2FuaXRpemVkUGF0aCA9PT0gJ2lkJykgc2FuaXRpemVkUGF0aCA9ICdfaWQnXG5cbiAgbGV0IHBhdGhzOiBQYXRoVG9RdWVyeVtdID0gW11cblxuICBsZXQgaGFzQ3VzdG9tSUQgPSBmYWxzZVxuXG4gIGlmIChzYW5pdGl6ZWRQYXRoID09PSAnX2lkJykge1xuICAgIGNvbnN0IGN1c3RvbUlEZmllbGQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25TbHVnXT8uY29uZmlnLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgIClcblxuICAgIGxldCBpZEZpZWxkVHlwZTogJ251bWJlcicgfCAndGV4dCcgPSAndGV4dCdcblxuICAgIGlmIChjdXN0b21JRGZpZWxkKSB7XG4gICAgICBpZiAoY3VzdG9tSURmaWVsZD8udHlwZSA9PT0gJ3RleHQnIHx8IGN1c3RvbUlEZmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlkRmllbGRUeXBlID0gY3VzdG9tSURmaWVsZC50eXBlXG4gICAgICB9XG5cbiAgICAgIGhhc0N1c3RvbUlEID0gdHJ1ZVxuICAgIH1cblxuICAgIHBhdGhzLnB1c2goe1xuICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICBjb21wbGV0ZTogdHJ1ZSxcbiAgICAgIGZpZWxkOiB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHR5cGU6IGlkRmllbGRUeXBlLFxuICAgICAgfSBhcyBGaWVsZCxcbiAgICAgIHBhdGg6ICdfaWQnLFxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgcGF0aHMgPSBhd2FpdCBnZXRMb2NhbGl6ZWRQYXRocyh7XG4gICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgIGZpZWxkcyxcbiAgICAgIGdsb2JhbFNsdWcsXG4gICAgICBpbmNvbWluZ1BhdGg6IHNhbml0aXplZFBhdGgsXG4gICAgICBsb2NhbGUsXG4gICAgICBwYXlsb2FkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBbeyBmaWVsZCwgcGF0aCB9XSA9IHBhdGhzXG5cbiAgaWYgKHBhdGgpIHtcbiAgICBjb25zdCB7XG4gICAgICBvcGVyYXRvcjogZm9ybWF0dGVkT3BlcmF0b3IsXG4gICAgICByYXdRdWVyeSxcbiAgICAgIHZhbDogZm9ybWF0dGVkVmFsdWUsXG4gICAgfSA9IHNhbml0aXplUXVlcnlWYWx1ZSh7XG4gICAgICBmaWVsZCxcbiAgICAgIGhhc0N1c3RvbUlELFxuICAgICAgb3BlcmF0b3IsXG4gICAgICBwYXRoLFxuICAgICAgdmFsLFxuICAgIH0pXG5cbiAgICBpZiAocmF3UXVlcnkpIHJldHVybiB7IHZhbHVlOiByYXdRdWVyeSB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29sbGVjdGlvbnMgdG8gc2VhcmNoIHRocm91Z2gsXG4gICAgLy8gUmVjdXJzaXZlbHkgYnVpbGQgdXAgYSBsaXN0IG9mIHF1ZXJ5IGNvbnN0cmFpbnRzXG4gICAgaWYgKHBhdGhzLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIFJlbW92ZSB0b3AgY29sbGVjdGlvbiBhbmQgcmV2ZXJzZSBhcnJheVxuICAgICAgLy8gdG8gd29yayBiYWNrd2FyZHMgZnJvbSB0b3BcbiAgICAgIGNvbnN0IHBhdGhzVG9RdWVyeSA9IHBhdGhzLnNsaWNlKDEpLnJldmVyc2UoKVxuXG4gICAgICBjb25zdCBpbml0aWFsUmVsYXRpb25zaGlwUXVlcnkgPSB7XG4gICAgICAgIHZhbHVlOiB7fSxcbiAgICAgIH0gYXMgU2VhcmNoUGFyYW1cblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwUXVlcnkgPSBhd2FpdCBwYXRoc1RvUXVlcnkucmVkdWNlKFxuICAgICAgICBhc3luYyAocHJpb3JRdWVyeSwgeyBjb2xsZWN0aW9uU2x1Zzogc2x1ZywgcGF0aDogc3ViUGF0aCB9LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJpb3JRdWVyeVJlc3VsdCA9IGF3YWl0IHByaW9yUXVlcnlcblxuICAgICAgICAgIGNvbnN0IFN1Yk1vZGVsID0gKHBheWxvYWQuZGIgYXMgTW9uZ29vc2VBZGFwdGVyKS5jb2xsZWN0aW9uc1tzbHVnXVxuXG4gICAgICAgICAgLy8gT24gdGhlIFwiZGVlcGVzdFwiIGNvbGxlY3Rpb24sXG4gICAgICAgICAgLy8gU2VhcmNoIG9uIHRoZSB2YWx1ZSBwYXNzZWQgdGhyb3VnaCB0aGUgcXVlcnlcbiAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3Qgc3ViUXVlcnkgPSBhd2FpdCBTdWJNb2RlbC5idWlsZFF1ZXJ5KHtcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgICAgIFtzdWJQYXRoXToge1xuICAgICAgICAgICAgICAgICAgW2Zvcm1hdHRlZE9wZXJhdG9yXTogdmFsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBTdWJNb2RlbC5maW5kKHN1YlF1ZXJ5LCBzdWJRdWVyeU9wdGlvbnMpXG5cbiAgICAgICAgICAgIGNvbnN0ICRpbjogdW5rbm93bltdID0gW11cblxuICAgICAgICAgICAgcmVzdWx0LmZvckVhY2goKGRvYykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdHJpbmdJRCA9IGRvYy5faWQudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAkaW4ucHVzaChzdHJpbmdJRClcblxuICAgICAgICAgICAgICBpZiAobW9uZ29vc2UuVHlwZXMuT2JqZWN0SWQuaXNWYWxpZChzdHJpbmdJRCkpIHtcbiAgICAgICAgICAgICAgICAkaW4ucHVzaChkb2MuX2lkKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBpZiAocGF0aHNUb1F1ZXJ5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHsgJGluIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmV4dFN1YlBhdGggPSBwYXRoc1RvUXVlcnlbaSArIDFdLnBhdGhcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgW25leHRTdWJQYXRoXTogeyAkaW4gfSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN1YlF1ZXJ5ID0gcHJpb3JRdWVyeVJlc3VsdC52YWx1ZVxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFN1Yk1vZGVsLmZpbmQoc3ViUXVlcnksIHN1YlF1ZXJ5T3B0aW9ucylcblxuICAgICAgICAgIGNvbnN0ICRpbiA9IHJlc3VsdC5tYXAoKGRvYykgPT4gZG9jLl9pZC50b1N0cmluZygpKVxuXG4gICAgICAgICAgLy8gSWYgaXQgaXMgdGhlIGxhc3QgcmVjdXJzaW9uXG4gICAgICAgICAgLy8gdGhlbiBwYXNzIHRocm91Z2ggdGhlIHNlYXJjaCBwYXJhbVxuICAgICAgICAgIGlmIChpICsgMSA9PT0gcGF0aHNUb1F1ZXJ5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgdmFsdWU6IHsgJGluIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIF9pZDogeyAkaW4gfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBQcm9taXNlLnJlc29sdmUoaW5pdGlhbFJlbGF0aW9uc2hpcFF1ZXJ5KSxcbiAgICAgIClcblxuICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcFF1ZXJ5XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdHRlZE9wZXJhdG9yICYmIHZhbGlkT3BlcmF0b3JzLmluY2x1ZGVzKGZvcm1hdHRlZE9wZXJhdG9yIGFzIE9wZXJhdG9yKSkge1xuICAgICAgY29uc3Qgb3BlcmF0b3JLZXkgPSBvcGVyYXRvck1hcFtmb3JtYXR0ZWRPcGVyYXRvcl1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICAgIGxldCBoYXNOdW1iZXJJRFJlbGF0aW9uXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAkb3I6IFt7IFtwYXRoXTogeyBbb3BlcmF0b3JLZXldOiBmb3JtYXR0ZWRWYWx1ZSB9IH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGZvcm1hdHRlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmIChtb25nb29zZS5UeXBlcy5PYmplY3RJZC5pc1ZhbGlkKGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICAgICAgcmVzdWx0LnZhbHVlLiRvci5wdXNoKHsgW3BhdGhdOiB7IFtvcGVyYXRvcktleV06IG5ldyBPYmplY3RJZChmb3JtYXR0ZWRWYWx1ZSkgfSB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICA7KEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykgPyBmaWVsZC5yZWxhdGlvblRvIDogW2ZpZWxkLnJlbGF0aW9uVG9dKS5mb3JFYWNoKFxuICAgICAgICAgICAgICAocmVsYXRpb25UbykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmVsYXRlZFRvQ3VzdG9tTnVtYmVySUQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ub1xuICAgICAgICAgICAgICAgIF0/LmNvbmZpZz8uZmllbGRzLmZpbmQoKHJlbGF0ZWRGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShyZWxhdGVkRmllbGQpICYmXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZC5uYW1lID09PSAnaWQnICYmXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZC50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9DdXN0b21OdW1iZXJJRCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvQ3VzdG9tTnVtYmVySUQudHlwZSA9PT0gJ251bWJlcicpIGhhc051bWJlcklEUmVsYXRpb24gPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAoaGFzTnVtYmVySURSZWxhdGlvbilcbiAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlLiRvci5wdXNoKHsgW3BhdGhdOiB7IFtvcGVyYXRvcktleV06IHBhcnNlRmxvYXQoZm9ybWF0dGVkVmFsdWUpIH0gfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0LnZhbHVlLiRvci5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtYXR0ZWRPcGVyYXRvciA9PT0gJ2xpa2UnICYmIHR5cGVvZiBmb3JtYXR0ZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3Qgd29yZHMgPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnICcpXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAkYW5kOiB3b3Jkcy5tYXAoKHdvcmQpID0+ICh7XG4gICAgICAgICAgICAgIFtwYXRoXToge1xuICAgICAgICAgICAgICAgICRvcHRpb25zOiAnaScsXG4gICAgICAgICAgICAgICAgJHJlZ2V4OiB3b3JkLnJlcGxhY2UoL1tcXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgLy8gU29tZSBvcGVyYXRvcnMgbGlrZSAnbmVhcicgbmVlZCB0byBkZWZpbmUgYSBmdWxsIHF1ZXJ5XG4gICAgICAvLyBzbyBpZiB0aGVyZSBpcyBubyBvcGVyYXRvciBrZXksIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgICAgaWYgKCFvcGVyYXRvcktleSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHZhbHVlOiB7IFtvcGVyYXRvcktleV06IGZvcm1hdHRlZFZhbHVlIH0sXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJidWlsZFNlYXJjaFBhcmFtIiwic3ViUXVlcnlPcHRpb25zIiwibGVhbiIsImxpbWl0IiwiY29sbGVjdGlvblNsdWciLCJmaWVsZHMiLCJnbG9iYWxTbHVnIiwiaW5jb21pbmdQYXRoIiwibG9jYWxlIiwib3BlcmF0b3IiLCJwYXlsb2FkIiwidmFsIiwic2FuaXRpemVkUGF0aCIsInJlcGxhY2UiLCJwYXRocyIsImhhc0N1c3RvbUlEIiwiY3VzdG9tSURmaWVsZCIsImNvbGxlY3Rpb25zIiwiY29uZmlnIiwiZmluZCIsImZpZWxkIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJpZEZpZWxkVHlwZSIsInR5cGUiLCJwdXNoIiwiY29tcGxldGUiLCJwYXRoIiwiZ2V0TG9jYWxpemVkUGF0aHMiLCJmb3JtYXR0ZWRPcGVyYXRvciIsInJhd1F1ZXJ5IiwiZm9ybWF0dGVkVmFsdWUiLCJzYW5pdGl6ZVF1ZXJ5VmFsdWUiLCJ2YWx1ZSIsImxlbmd0aCIsInBhdGhzVG9RdWVyeSIsInNsaWNlIiwicmV2ZXJzZSIsImluaXRpYWxSZWxhdGlvbnNoaXBRdWVyeSIsInJlbGF0aW9uc2hpcFF1ZXJ5IiwicmVkdWNlIiwicHJpb3JRdWVyeSIsInNsdWciLCJzdWJQYXRoIiwiaSIsInByaW9yUXVlcnlSZXN1bHQiLCJTdWJNb2RlbCIsImRiIiwic3ViUXVlcnkiLCJidWlsZFF1ZXJ5Iiwid2hlcmUiLCJyZXN1bHQiLCIkaW4iLCJmb3JFYWNoIiwiZG9jIiwic3RyaW5nSUQiLCJfaWQiLCJ0b1N0cmluZyIsIm1vbmdvb3NlIiwiVHlwZXMiLCJPYmplY3RJZCIsImlzVmFsaWQiLCJuZXh0U3ViUGF0aCIsIm1hcCIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWRPcGVyYXRvcnMiLCJpbmNsdWRlcyIsIm9wZXJhdG9yS2V5Iiwib3BlcmF0b3JNYXAiLCJoYXNOdW1iZXJJRFJlbGF0aW9uIiwiJG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsImlzUmVsYXRlZFRvQ3VzdG9tTnVtYmVySUQiLCJyZWxhdGVkRmllbGQiLCJwYXJzZUZsb2F0Iiwid29yZHMiLCJzcGxpdCIsIiRhbmQiLCJ3b3JkIiwiJG9wdGlvbnMiLCIkcmVnZXgiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBOEJzQkE7OztlQUFBQTs7O3FFQXpCRDtpRUFDQTswQkFDYTt1QkFDRDs2QkFLTDtvQ0FDTzs7Ozs7O0FBUW5DLE1BQU1DLGtCQUFrQjtJQUN0QkMsTUFBTTtJQUNOQyxPQUFPO0FBQ1Q7QUFLTyxlQUFlSCxpQkFBaUIsRUFDckNJLGNBQWMsRUFDZEMsTUFBTSxFQUNOQyxVQUFVLEVBQ1ZDLFlBQVksRUFDWkMsTUFBTSxFQUNOQyxRQUFRLEVBQ1JDLE9BQU8sRUFDUEMsR0FBRyxFQVVKO0lBQ0MsNERBQTREO0lBQzVELElBQUlDLGdCQUFnQkwsYUFBYU0sT0FBTyxDQUFDLE9BQU87SUFDaEQsSUFBSUQsa0JBQWtCLE1BQU1BLGdCQUFnQjtJQUU1QyxJQUFJRSxRQUF1QixFQUFFO0lBRTdCLElBQUlDLGNBQWM7SUFFbEIsSUFBSUgsa0JBQWtCLE9BQU87UUFDM0IsTUFBTUksZ0JBQWdCTixRQUFRTyxXQUFXLENBQUNiLGVBQWUsRUFBRWMsT0FBT2IsT0FBT2MsS0FDdkUsQ0FBQ0MsUUFBVUMsSUFBQUEsdUJBQWdCLEVBQUNELFVBQVVBLE1BQU1FLElBQUksS0FBSztRQUd2RCxJQUFJQyxjQUFpQztRQUVyQyxJQUFJUCxlQUFlO1lBQ2pCLElBQUlBLGVBQWVRLFNBQVMsVUFBVVIsZUFBZVEsU0FBUyxVQUFVO2dCQUN0RUQsY0FBY1AsY0FBY1EsSUFBSTtZQUNsQztZQUVB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
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdWVyaWVzL2J1aWxkU2VhcmNoUGFyYW1zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZCB9IGZyb20gJ3BheWxvYWQnXG5pbXBvcnQgdHlwZSB7IFBhdGhUb1F1ZXJ5IH0gZnJvbSAncGF5bG9hZC9kYXRhYmFzZSdcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBPcGVyYXRvciB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCBPYmplY3RJZCBmcm9tICdic29uLW9iamVjdGlkJ1xuaW1wb3J0IG1vbmdvb3NlIGZyb20gJ21vbmdvb3NlJ1xuaW1wb3J0IHsgZ2V0TG9jYWxpemVkUGF0aHMgfSBmcm9tICdwYXlsb2FkL2RhdGFiYXNlJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5pbXBvcnQgeyB2YWxpZE9wZXJhdG9ycyB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB0eXBlIHsgTW9uZ29vc2VBZGFwdGVyIH0gZnJvbSAnLi4nXG5cbmltcG9ydCB7IG9wZXJhdG9yTWFwIH0gZnJvbSAnLi9vcGVyYXRvck1hcCdcbmltcG9ydCB7IHNhbml0aXplUXVlcnlWYWx1ZSB9IGZyb20gJy4vc2FuaXRpemVRdWVyeVZhbHVlJ1xuXG50eXBlIFNlYXJjaFBhcmFtID0ge1xuICBwYXRoPzogc3RyaW5nXG4gIHJhd1F1ZXJ5PzogdW5rbm93blxuICB2YWx1ZT86IHVua25vd25cbn1cblxuY29uc3Qgc3ViUXVlcnlPcHRpb25zID0ge1xuICBsZWFuOiB0cnVlLFxuICBsaW1pdDogNTAsXG59XG5cbi8qKlxuICogQ29udmVydCB0aGUgUGF5bG9hZCBrZXkgLyB2YWx1ZSAvIG9wZXJhdG9yIGludG8gYSBNb25nb0RCIHF1ZXJ5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFNlYXJjaFBhcmFtKHtcbiAgY29sbGVjdGlvblNsdWcsXG4gIGZpZWxkcyxcbiAgZ2xvYmFsU2x1ZyxcbiAgaW5jb21pbmdQYXRoLFxuICBsb2NhbGUsXG4gIG9wZXJhdG9yLFxuICBwYXlsb2FkLFxuICB2YWwsXG59OiB7XG4gIGNvbGxlY3Rpb25TbHVnPzogc3RyaW5nXG4gIGZpZWxkczogRmllbGRbXVxuICBnbG9iYWxTbHVnPzogc3RyaW5nXG4gIGluY29taW5nUGF0aDogc3RyaW5nXG4gIGxvY2FsZT86IHN0cmluZ1xuICBvcGVyYXRvcjogc3RyaW5nXG4gIHBheWxvYWQ6IFBheWxvYWRcbiAgdmFsOiB1bmtub3duXG59KTogUHJvbWlzZTxTZWFyY2hQYXJhbT4ge1xuICAvLyBSZXBsYWNlIEdyYXBoUUwgbmVzdGVkIGZpZWxkIGRvdWJsZSB1bmRlcnNjb3JlIGZvcm1hdHRpbmdcbiAgbGV0IHNhbml0aXplZFBhdGggPSBpbmNvbWluZ1BhdGgucmVwbGFjZSgvX18vZywgJy4nKVxuICBpZiAoc2FuaXRpemVkUGF0aCA9PT0gJ2lkJykgc2FuaXRpemVkUGF0aCA9ICdfaWQnXG5cbiAgbGV0IHBhdGhzOiBQYXRoVG9RdWVyeVtdID0gW11cblxuICBsZXQgaGFzQ3VzdG9tSUQgPSBmYWxzZVxuXG4gIGlmIChzYW5pdGl6ZWRQYXRoID09PSAnX2lkJykge1xuICAgIGNvbnN0IGN1c3RvbUlEZmllbGQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW2NvbGxlY3Rpb25TbHVnXT8uY29uZmlnLmZpZWxkcy5maW5kKFxuICAgICAgKGZpZWxkKSA9PiBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJiBmaWVsZC5uYW1lID09PSAnaWQnLFxuICAgIClcblxuICAgIGxldCBpZEZpZWxkVHlwZTogJ251bWJlcicgfCAndGV4dCcgPSAndGV4dCdcblxuICAgIGlmIChjdXN0b21JRGZpZWxkKSB7XG4gICAgICBpZiAoY3VzdG9tSURmaWVsZD8udHlwZSA9PT0gJ3RleHQnIHx8IGN1c3RvbUlEZmllbGQ/LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlkRmllbGRUeXBlID0gY3VzdG9tSURmaWVsZC50eXBlXG4gICAgICB9XG5cbiAgICAgIGhhc0N1c3RvbUlEID0gdHJ1ZVxuICAgIH1cblxuICAgIHBhdGhzLnB1c2goe1xuICAgICAgY29sbGVjdGlvblNsdWcsXG4gICAgICBjb21wbGV0ZTogdHJ1ZSxcbiAgICAgIGZpZWxkOiB7XG4gICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgIHR5cGU6IGlkRmllbGRUeXBlLFxuICAgICAgfSBhcyBGaWVsZCxcbiAgICAgIHBhdGg6ICdfaWQnLFxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgcGF0aHMgPSBhd2FpdCBnZXRMb2NhbGl6ZWRQYXRocyh7XG4gICAgICBjb2xsZWN0aW9uU2x1ZyxcbiAgICAgIGZpZWxkcyxcbiAgICAgIGdsb2JhbFNsdWcsXG4gICAgICBpbmNvbWluZ1BhdGg6IHNhbml0aXplZFBhdGgsXG4gICAgICBsb2NhbGUsXG4gICAgICBwYXlsb2FkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBbeyBmaWVsZCwgcGF0aCB9XSA9IHBhdGhzXG5cbiAgaWYgKHBhdGgpIHtcbiAgICBjb25zdCB7XG4gICAgICBvcGVyYXRvcjogZm9ybWF0dGVkT3BlcmF0b3IsXG4gICAgICByYXdRdWVyeSxcbiAgICAgIHZhbDogZm9ybWF0dGVkVmFsdWUsXG4gICAgfSA9IHNhbml0aXplUXVlcnlWYWx1ZSh7XG4gICAgICBmaWVsZCxcbiAgICAgIGhhc0N1c3RvbUlELFxuICAgICAgb3BlcmF0b3IsXG4gICAgICBwYXRoLFxuICAgICAgdmFsLFxuICAgIH0pXG5cbiAgICBpZiAocmF3UXVlcnkpIHJldHVybiB7IHZhbHVlOiByYXdRdWVyeSB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29sbGVjdGlvbnMgdG8gc2VhcmNoIHRocm91Z2gsXG4gICAgLy8gUmVjdXJzaXZlbHkgYnVpbGQgdXAgYSBsaXN0IG9mIHF1ZXJ5IGNvbnN0cmFpbnRzXG4gICAgaWYgKHBhdGhzLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIFJlbW92ZSB0b3AgY29sbGVjdGlvbiBhbmQgcmV2ZXJzZSBhcnJheVxuICAgICAgLy8gdG8gd29yayBiYWNrd2FyZHMgZnJvbSB0b3BcbiAgICAgIGNvbnN0IHBhdGhzVG9RdWVyeSA9IHBhdGhzLnNsaWNlKDEpLnJldmVyc2UoKVxuXG4gICAgICBjb25zdCBpbml0aWFsUmVsYXRpb25zaGlwUXVlcnkgPSB7XG4gICAgICAgIHZhbHVlOiB7fSxcbiAgICAgIH0gYXMgU2VhcmNoUGFyYW1cblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwUXVlcnkgPSBhd2FpdCBwYXRoc1RvUXVlcnkucmVkdWNlKFxuICAgICAgICBhc3luYyAocHJpb3JRdWVyeSwgeyBjb2xsZWN0aW9uU2x1Zzogc2x1ZywgcGF0aDogc3ViUGF0aCB9LCBpKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJpb3JRdWVyeVJlc3VsdCA9IGF3YWl0IHByaW9yUXVlcnlcblxuICAgICAgICAgIGNvbnN0IFN1Yk1vZGVsID0gKHBheWxvYWQuZGIgYXMgTW9uZ29vc2VBZGFwdGVyKS5jb2xsZWN0aW9uc1tzbHVnXVxuXG4gICAgICAgICAgLy8gT24gdGhlIFwiZGVlcGVzdFwiIGNvbGxlY3Rpb24sXG4gICAgICAgICAgLy8gU2VhcmNoIG9uIHRoZSB2YWx1ZSBwYXNzZWQgdGhyb3VnaCB0aGUgcXVlcnlcbiAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3Qgc3ViUXVlcnkgPSBhd2FpdCBTdWJNb2RlbC5idWlsZFF1ZXJ5KHtcbiAgICAgICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgICB3aGVyZToge1xuICAgICAgICAgICAgICAgIFtzdWJQYXRoXToge1xuICAgICAgICAgICAgICAgICAgW2Zvcm1hdHRlZE9wZXJhdG9yXTogdmFsLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBTdWJNb2RlbC5maW5kKHN1YlF1ZXJ5LCBzdWJRdWVyeU9wdGlvbnMpXG5cbiAgICAgICAgICAgIGNvbnN0ICRpbjogdW5rbm93bltdID0gW11cblxuICAgICAgICAgICAgcmVzdWx0LmZvckVhY2goKGRvYykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdHJpbmdJRCA9IGRvYy5faWQudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAkaW4ucHVzaChzdHJpbmdJRClcblxuICAgICAgICAgICAgICBpZiAobW9uZ29vc2UuVHlwZXMuT2JqZWN0SWQuaXNWYWxpZChzdHJpbmdJRCkpIHtcbiAgICAgICAgICAgICAgICAkaW4ucHVzaChkb2MuX2lkKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBpZiAocGF0aHNUb1F1ZXJ5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHsgJGluIH0sXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbmV4dFN1YlBhdGggPSBwYXRoc1RvUXVlcnlbaSArIDFdLnBhdGhcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdmFsdWU6IHsgW25leHRTdWJQYXRoXTogeyAkaW4gfSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHN1YlF1ZXJ5ID0gcHJpb3JRdWVyeVJlc3VsdC52YWx1ZVxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFN1Yk1vZGVsLmZpbmQoc3ViUXVlcnksIHN1YlF1ZXJ5T3B0aW9ucylcblxuICAgICAgICAgIGNvbnN0ICRpbiA9IHJlc3VsdC5tYXAoKGRvYykgPT4gZG9jLl9pZC50b1N0cmluZygpKVxuXG4gICAgICAgICAgLy8gSWYgaXQgaXMgdGhlIGxhc3QgcmVjdXJzaW9uXG4gICAgICAgICAgLy8gdGhlbiBwYXNzIHRocm91Z2ggdGhlIHNlYXJjaCBwYXJhbVxuICAgICAgICAgIGlmIChpICsgMSA9PT0gcGF0aHNUb1F1ZXJ5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgdmFsdWU6IHsgJGluIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIF9pZDogeyAkaW4gfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBQcm9taXNlLnJlc29sdmUoaW5pdGlhbFJlbGF0aW9uc2hpcFF1ZXJ5KSxcbiAgICAgIClcblxuICAgICAgcmV0dXJuIHJlbGF0aW9uc2hpcFF1ZXJ5XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdHRlZE9wZXJhdG9yICYmIHZhbGlkT3BlcmF0b3JzLmluY2x1ZGVzKGZvcm1hdHRlZE9wZXJhdG9yIGFzIE9wZXJhdG9yKSkge1xuICAgICAgY29uc3Qgb3BlcmF0b3JLZXkgPSBvcGVyYXRvck1hcFtmb3JtYXR0ZWRPcGVyYXRvcl1cblxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdyZWxhdGlvbnNoaXAnIHx8IGZpZWxkLnR5cGUgPT09ICd1cGxvYWQnKSB7XG4gICAgICAgIGxldCBoYXNOdW1iZXJJRFJlbGF0aW9uXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAkb3I6IFt7IFtwYXRoXTogeyBbb3BlcmF0b3JLZXldOiBmb3JtYXR0ZWRWYWx1ZSB9IH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGZvcm1hdHRlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmIChtb25nb29zZS5UeXBlcy5PYmplY3RJZC5pc1ZhbGlkKGZvcm1hdHRlZFZhbHVlKSkge1xuICAgICAgICAgICAgcmVzdWx0LnZhbHVlLiRvci5wdXNoKHsgW3BhdGhdOiB7IFtvcGVyYXRvcktleV06IG5ldyBPYmplY3RJZChmb3JtYXR0ZWRWYWx1ZSkgfSB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICA7KEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykgPyBmaWVsZC5yZWxhdGlvblRvIDogW2ZpZWxkLnJlbGF0aW9uVG9dKS5mb3JFYWNoKFxuICAgICAgICAgICAgICAocmVsYXRpb25UbykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUmVsYXRlZFRvQ3VzdG9tTnVtYmVySUQgPSBwYXlsb2FkLmNvbGxlY3Rpb25zW1xuICAgICAgICAgICAgICAgICAgcmVsYXRpb25Ub1xuICAgICAgICAgICAgICAgIF0/LmNvbmZpZz8uZmllbGRzLmZpbmQoKHJlbGF0ZWRGaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgZmllbGRBZmZlY3RzRGF0YShyZWxhdGVkRmllbGQpICYmXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZC5uYW1lID09PSAnaWQnICYmXG4gICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRGaWVsZC50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNSZWxhdGVkVG9DdXN0b21OdW1iZXJJRCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGlzUmVsYXRlZFRvQ3VzdG9tTnVtYmVySUQudHlwZSA9PT0gJ251bWJlcicpIGhhc051bWJlcklEUmVsYXRpb24gPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAoaGFzTnVtYmVySURSZWxhdGlvbilcbiAgICAgICAgICAgICAgcmVzdWx0LnZhbHVlLiRvci5wdXNoKHsgW3BhdGhdOiB7IFtvcGVyYXRvcktleV06IHBhcnNlRmxvYXQoZm9ybWF0dGVkVmFsdWUpIH0gfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0LnZhbHVlLiRvci5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtYXR0ZWRPcGVyYXRvciA9PT0gJ2xpa2UnICYmIHR5cGVvZiBmb3JtYXR0ZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3Qgd29yZHMgPSBmb3JtYXR0ZWRWYWx1ZS5zcGxpdCgnICcpXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAkYW5kOiB3b3Jkcy5tYXAoKHdvcmQpID0+ICh7XG4gICAgICAgICAgICAgIFtwYXRoXToge1xuICAgICAgICAgICAgICAgICRvcHRpb25zOiAnaScsXG4gICAgICAgICAgICAgICAgJHJlZ2V4OiB3b3JkLnJlcGxhY2UoL1tcXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH1cblxuICAgICAgLy8gU29tZSBvcGVyYXRvcnMgbGlrZSAnbmVhcicgbmVlZCB0byBkZWZpbmUgYSBmdWxsIHF1ZXJ5XG4gICAgICAvLyBzbyBpZiB0aGVyZSBpcyBubyBvcGVyYXRvciBrZXksIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZVxuICAgICAgaWYgKCFvcGVyYXRvcktleSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgdmFsdWU6IGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHZhbHVlOiB7IFtvcGVyYXRvcktleV06IGZvcm1hdHRlZFZhbHVlIH0sXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cbiJdLCJuYW1lcyI6WyJPYmplY3RJZCIsIm1vbmdvb3NlIiwiZ2V0TG9jYWxpemVkUGF0aHMiLCJmaWVsZEFmZmVjdHNEYXRhIiwidmFsaWRPcGVyYXRvcnMiLCJvcGVyYXRvck1hcCIsInNhbml0aXplUXVlcnlWYWx1ZSIsInN1YlF1ZXJ5T3B0aW9ucyIsImxlYW4iLCJsaW1pdCIsImJ1aWxkU2VhcmNoUGFyYW0iLCJjb2xsZWN0aW9uU2x1ZyIsImZpZWxkcyIsImdsb2JhbFNsdWciLCJpbmNvbWluZ1BhdGgiLCJsb2NhbGUiLCJvcGVyYXRvciIsInBheWxvYWQiLCJ2YWwiLCJzYW5pdGl6ZWRQYXRoIiwicmVwbGFjZSIsInBhdGhzIiwiaGFzQ3VzdG9tSUQiLCJjdXN0b21JRGZpZWxkIiwiY29sbGVjdGlvbnMiLCJjb25maWciLCJmaW5kIiwiZmllbGQiLCJuYW1lIiwiaWRGaWVsZFR5cGUiLCJ0eXBlIiwicHVzaCIsImNvbXBsZXRlIiwicGF0aCIsImZvcm1hdHRlZE9wZXJhdG9yIiwicmF3UXVlcnkiLCJmb3JtYXR0ZWRWYWx1ZSIsInZhbHVlIiwibGVuZ3RoIiwicGF0aHNUb1F1ZXJ5Iiwic2xpY2UiLCJyZXZlcnNlIiwiaW5pdGlhbFJlbGF0aW9uc2hpcFF1ZXJ5IiwicmVsYXRpb25zaGlwUXVlcnkiLCJyZWR1Y2UiLCJwcmlvclF1ZXJ5Iiwic2x1ZyIsInN1YlBhdGgiLCJpIiwicHJpb3JRdWVyeVJlc3VsdCIsIlN1Yk1vZGVsIiwiZGIiLCJzdWJRdWVyeSIsImJ1aWxkUXVlcnkiLCJ3aGVyZSIsInJlc3VsdCIsIiRpbiIsImZvckVhY2giLCJkb2MiLCJzdHJpbmdJRCIsIl9pZCIsInRvU3RyaW5nIiwiVHlwZXMiLCJpc1ZhbGlkIiwibmV4dFN1YlBhdGgiLCJtYXAiLCJQcm9taXNlIiwicmVzb2x2ZSIsImluY2x1ZGVzIiwib3BlcmF0b3JLZXkiLCJoYXNOdW1iZXJJRFJlbGF0aW9uIiwiJG9yIiwiQXJyYXkiLCJpc0FycmF5IiwicmVsYXRpb25UbyIsImlzUmVsYXRlZFRvQ3VzdG9tTnVtYmVySUQiLCJyZWxhdGVkRmllbGQiLCJwYXJzZUZsb2F0Iiwid29yZHMiLCJzcGxpdCIsIiRhbmQiLCJ3b3JkIiwiJG9wdGlvbnMiLCIkcmVnZXgiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQUtBLE9BQU9BLGNBQWMsZ0JBQWU7QUFDcEMsT0FBT0MsY0FBYyxXQUFVO0FBQy9CLFNBQVNDLGlCQUFpQixRQUFRLG1CQUFrQjtBQUNwRCxTQUFTQyxnQkFBZ0IsUUFBUSxnQkFBZTtBQUNoRCxTQUFTQyxjQUFjLFFBQVEsZ0JBQWU7QUFJOUMsU0FBU0MsV0FBVyxRQUFRLGdCQUFlO0FBQzNDLFNBQVNDLGtCQUFrQixRQUFRLHVCQUFzQjtBQVF6RCxNQUFNQyxrQkFBa0I7SUFDdEJDLE1BQU07SUFDTkMsT0FBTztBQUNUO0FBRUE7O0NBRUMsR0FDRCxPQUFPLGVBQWVDLGlCQUFpQixFQUNyQ0MsY0FBYyxFQUNkQyxNQUFNLEVBQ05DLFVBQVUsRUFDVkMsWUFBWSxFQUNaQyxNQUFNLEVBQ05DLFFBQVEsRUFDUkMsT0FBTyxFQUNQQyxHQUFHLEVBVUo7SUFDQyw0REFBNEQ7SUFDNUQsSUFBSUMsZ0JBQWdCTCxhQUFhTSxPQUFPLENBQUMsT0FBTztJQUNoRCxJQUFJRCxrQkFBa0IsTUFBTUEsZ0JBQWdCO0lBRTVDLElBQUlFLFFBQXVCLEVBQUU7SUFFN0IsSUFBSUMsY0FBYztJQUVsQixJQUFJSCxrQkFBa0IsT0FBTztRQUMzQixNQUFNSSxnQkFBZ0JOLFFBQVFPLFdBQVcsQ0FBQ2IsZUFBZSxFQUFFYyxPQUFPYixPQUFPYyxLQUN2RSxDQUFDQyxRQUFVeEIsaUJBQWlCd0IsVUFB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
|