@hestia-earth/ui-components 0.1.2 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/hestia-earth-ui-components.umd.js +171 -91
- package/bundles/hestia-earth-ui-components.umd.js.map +1 -1
- package/cycles/cycles-activity-logs/cycles-activity-logs.component.d.ts +2 -1
- package/cycles/cycles-emissions/cycles-emissions.component.d.ts +1 -0
- package/cycles/cycles.model.d.ts +8 -0
- package/cycles/cycles.module.d.ts +1 -1
- package/esm2015/common/data-table/data-table.component.js +4 -3
- package/esm2015/common/utils.js +5 -4
- package/esm2015/cycles/cycles-activity/cycles-activity.component.js +2 -2
- package/esm2015/cycles/cycles-activity-logs/cycles-activity-logs.component.js +9 -5
- package/esm2015/cycles/cycles-emissions/cycles-emissions.component.js +8 -2
- package/esm2015/cycles/cycles-emissions-logs/cycles-emissions-logs.component.js +6 -4
- package/esm2015/cycles/cycles-practices/cycles-practices.component.js +2 -2
- package/esm2015/cycles/cycles-practices-logs/cycles-practices-logs.component.js +6 -4
- package/esm2015/cycles/cycles.model.js +10 -1
- package/esm2015/cycles/cycles.module.js +5 -5
- package/esm2015/files/files-form/files-form.component.js +9 -7
- package/esm2015/fontawesome/fontawesome.module.js +3 -3
- package/esm2015/impact-assessments/impact-assessments-products/impact-assessments-products.component.js +2 -2
- package/esm2015/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.js +21 -15
- package/esm2015/node/node-logs-models/node-logs-models.component.js +67 -34
- package/esm2015/node/node.service.js +1 -1
- package/esm2015/sites/sites-maps/sites-maps.component.js +3 -4
- package/esm2015/sites/sites-measurements/sites-measurements.component.js +2 -2
- package/esm2015/sites/sites-measurements-logs/sites-measurements-logs.component.js +1 -1
- package/fesm2015/hestia-earth-ui-components.js +141 -81
- package/fesm2015/hestia-earth-ui-components.js.map +1 -1
- package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +1 -0
- package/node/node-logs-models/node-logs-models.component.d.ts +8 -5
- package/node/node.service.d.ts +1 -0
- package/package.json +4 -4
|
@@ -44,6 +44,13 @@ const formatSuggestion = (_a) => {
|
|
|
44
44
|
return (Object.assign(Object.assign({}, node), ((defaultProperties === null || defaultProperties === void 0 ? void 0 : defaultProperties.length) ? { defaultProperties: defaultProperties.map(formatProperty) } : {})));
|
|
45
45
|
};
|
|
46
46
|
const formatLinkNodesPrefix = 'Link with';
|
|
47
|
+
// patch error when link is not working correctly
|
|
48
|
+
const cleanNewValue = value => typeof value === 'object' && value.id
|
|
49
|
+
? Object.assign(Object.assign({}, value), { id: cleanNewValue(value.id) }) : typeof value === 'string'
|
|
50
|
+
? value.startsWith(formatLinkNodesPrefix)
|
|
51
|
+
? value.split(':')[1].trim()
|
|
52
|
+
: value
|
|
53
|
+
: value;
|
|
47
54
|
const formatLinkNodesSuggestions = (nodeMap, type) => (nodeMap[type] || []).map(id => ({ type, id, name: `${formatLinkNodesPrefix} ${type}: ${id}` }));
|
|
48
55
|
const insertProperty = (properties, key, property) => {
|
|
49
56
|
const existingPropertyIndex = properties.findIndex(v => v.fullKey === key);
|
|
@@ -315,7 +322,6 @@ export class FilesFormComponent {
|
|
|
315
322
|
return this.moveArrayGroupToPosition(array, index, index + 1);
|
|
316
323
|
}
|
|
317
324
|
propertyChanged(value, property) {
|
|
318
|
-
var _a;
|
|
319
325
|
groupChanged(this.properties, property.fullKey, value);
|
|
320
326
|
property.addPropertyEnabled = isAddPropertyEnabled(this.node, property.schemaType, property.schema, property.fullKey);
|
|
321
327
|
if (value === null) {
|
|
@@ -325,11 +331,7 @@ export class FilesFormComponent {
|
|
|
325
331
|
property.value = value;
|
|
326
332
|
property.changed = true;
|
|
327
333
|
}
|
|
328
|
-
const newValue = parseNewValue(property.schema, value);
|
|
329
|
-
// patch error when link is not working correctly
|
|
330
|
-
if ((_a = newValue === null || newValue === void 0 ? void 0 : newValue.id) === null || _a === void 0 ? void 0 : _a.startsWith(formatLinkNodesPrefix)) {
|
|
331
|
-
newValue.id = newValue.id.split(':')[1].trim();
|
|
332
|
-
}
|
|
334
|
+
const newValue = cleanNewValue(parseNewValue(property.schema, value));
|
|
333
335
|
// trigger refresh of node
|
|
334
336
|
const node = copyObject(this.node);
|
|
335
337
|
set(node, property.fullKey, newValue);
|
|
@@ -503,4 +505,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
503
505
|
}], nodeErrorAdded: [{
|
|
504
506
|
type: Output
|
|
505
507
|
}] } });
|
|
506
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZm9ybS9maWxlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtL2ZpbGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHekQsT0FBTyxFQUFzQixVQUFVLEVBQUUsUUFBUSxFQUFrQyxNQUFNLHNCQUFzQixDQUFDO0FBRWhILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxPQUFPLEVBRUwsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQ3hDLHFCQUFxQixFQUNyQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQ2xELG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFDN0QsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFDakgsNkJBQTZCLEVBQUUsc0JBQXNCLEVBQ3JELDhCQUE4QixFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFDdkUsTUFBTSxxQkFB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RSw2QkFBNkI7b0JBQzFDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUMzQzs0SkFHUyxPQUFPO3NCQURkLEtBQUs7Z0JBR0UsTUFBTTtzQkFEYixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBTUMsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQU1DLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsOEJBQThCO3NCQURwQyxLQUFLO2dCQUlFLFVBQVU7c0JBRGpCLE1BQU07Z0JBR0MsaUJBQWlCO3NCQUR4QixNQUFNO2dCQUdDLGNBQWM7c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBwbHVyYWxpemUgZnJvbSAncGx1cmFsaXplJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuY29uc3QgZ2V0ID0gcmVxdWlyZSgnbG9kYXNoLmdldCcpO1xuY29uc3Qgc2V0ID0gcmVxdWlyZSgnbG9kYXNoLnNldCcpO1xuaW1wb3J0IHsgSlNPTiBhcyBIZXN0aWFKc29uLCBTY2hlbWFUeXBlLCBOb2RlVHlwZSwgQmlibGlvZ3JhcGh5LCBTb3VyY2UsIFByb3BlcnR5IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgZGVmaW5pdGlvbnMsIGRlZmluaXRpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgSUVycm9yUHJvcGVydHksIElOb2RlUHJvcGVydHksXG4gIGZvcm1hdFByb3BlcnR5RXJyb3IsIHByb3BlcnR5RXJyb3IsIGhhc0Vycm9yLCBoYXNXYXJuaW5nLFxuICBzdWdnZXN0aW9uVHlwZSwgZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICByZWN1cnNpdmVQcm9wZXJ0aWVzLCB0eXBlVG9OZXdQcm9wZXJ0eSwgcHJvcGVydHlJZCxcbiAgaXNBZGRQcm9wZXJ0eUVuYWJsZWQsIG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzLCBzb3J0UHJvcGVydGllcyxcbiAgZ3JvdXBDaGFuZ2VkLCBwYXJlbnRQcm9wZXJ0eSwgc2libGluZ1Byb3BlcnR5LCB1cGRhdGVQcm9wZXJ0aWVzLCByZWZyZXNoUHJvcGVydHlLZXlzLCBrZXlUb0RhdGFQYXRoLCBmaW5kUHJvcGVydHksXG4gIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkLCBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uLFxuICBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQsIGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlLCBwYXJzZU5ld1ZhbHVlXG59IGZyb20gJy4uL2ZpbGVzLWZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgSVZhbGlkYXRpb25FcnJvciwgZXJyb3JIYXNFcnJvciwgZXJyb3JIYXNXYXJuaW5nLCBmaWx0ZXJFcnJvciwgZm9ybWF0RXJyb3IgfSBmcm9tICcuLi9maWxlcy1lcnJvci5tb2RlbCc7XG5pbXBvcnQgeyBIZVVzZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXJzL3VzZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hdGNoVHlwZSwgbWF0Y2hQaHJhc2VRdWVyeSwgbWF0Y2hQaHJhc2VQcmVmaXhRdWVyeSwgbWF0Y2hCb29sUHJlZml4UXVlcnkgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IHNhZmVKU09OUGFyc2UsIGNvcHlPYmplY3QgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBNSU5fVFlQRUFIRUFEX0xFTkdUSCA9IDI7XG5jb25zdCBwb3B1bGF0ZVRlcm1GaWVsZHMgPSBbXG4gICd0ZXJtVHlwZScsICd1bml0cydcbl07XG5jb25zdCBwb3B1bGF0ZVRlcm1EZWZhdWx0UHJvcGVydGllcyA9IFtcbiAgJ2RlZmF1bHRQcm9wZXJ0aWVzLnRlcm0ubmFtZScsICdkZWZhdWx0UHJvcGVydGllcy50ZXJtLnVuaXRzJywgJ2RlZmF1bHRQcm9wZXJ0aWVzLnZhbHVlJ1xuXTtcblxuY29uc3QgZm9ybWF0UHJvcGVydHkgPSAocHJvcDogUHJvcGVydHkpID0+ICh7XG4gICdAdHlwZSc6IFNjaGVtYVR5cGUuUHJvcGVydHksXG4gIC4uLnByb3AsXG4gIHRlcm06IHtcbiAgICAnQHR5cGUnOiBOb2RlVHlwZS5UZXJtLFxuICAgIC4uLnByb3AudGVybVxuICB9XG59KTtcblxuY29uc3QgZm9ybWF0U3VnZ2VzdGlvbiA9ICh7IGRlZmF1bHRQcm9wZXJ0aWVzLCAuLi5ub2RlIH06IGFueSkgPT4gKHtcbiAgLi4ubm9kZSxcbiAgLi4uKGRlZmF1bHRQcm9wZXJ0aWVzPy5sZW5ndGggPyB7IGRlZmF1bHRQcm9wZXJ0aWVzOiBkZWZhdWx0UHJvcGVydGllcy5tYXAoZm9ybWF0UHJvcGVydHkpIH0gOiB7fSlcbn0pO1xuXG5jb25zdCBmb3JtYXRMaW5rTm9kZXNQcmVmaXggPSAnTGluayB3aXRoJztcblxuY29uc3QgZm9ybWF0TGlua05vZGVzU3VnZ2VzdGlvbnMgPSAobm9kZU1hcDogeyBbdHlwZSBpbiBOb2RlVHlwZV0/OiBzdHJpbmdbXSB9LCB0eXBlOiBOb2RlVHlwZSkgPT5cbiAgKG5vZGVNYXBbdHlwZV0gfHwgW10pLm1hcChpZCA9PiAoeyB0eXBlLCBpZCwgbmFtZTogYCR7Zm9ybWF0TGlua05vZGVzUHJlZml4fSAke3R5cGV9OiAke2lkfWAgfSkpO1xuXG50eXBlIHN1Z2dlc3RGdW5jID0gKHRlcm06IHN0cmluZywgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IE9ic2VydmFibGU8YW55W10+O1xuXG5jb25zdCBpbnNlcnRQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIGtleTogc3RyaW5nLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBleGlzdGluZ1Byb3BlcnR5SW5kZXggPSBwcm9wZXJ0aWVzLmZpbmRJbmRleCh2ID0+IHYuZnVsbEtleSA9PT0ga2V5KTtcbiAgZXhpc3RpbmdQcm9wZXJ0eUluZGV4ID49IDAgPyAocHJvcGVydGllc1tleGlzdGluZ1Byb3BlcnR5SW5kZXhdID0gcHJvcGVydHkpIDogcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTtcbiAgcHJvcGVydGllcy5zb3J0KHNvcnRQcm9wZXJ0aWVzKTtcbiAgcmV0dXJuIHByb3BlcnRpZXM7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1maWxlcy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlcy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcHJpdmF0ZSBzY2hlbWFzPzogZGVmaW5pdGlvbnM7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIG5vZGU/OiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+O1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9kZU1hcDogeyBbdHlwZSBpbiBOb2RlVHlwZV0/OiBzdHJpbmdbXSB9ID0ge307XG4gIC8qKlxuICAgKiBBbGxvdyBlZGl0aW5nIG5vZGVzIChgZmFsc2VgIGZvciByZWFkb25seSkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZWRpdGFibGUgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGVycm9yTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGVlcEVkaXRhYmxlID0gdHJ1ZTtcbiAgLyoqXG4gICAqIENhbiBlZGl0IGVycm9ycy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvcnNFZGl0YWJsZSA9IGZhbHNlO1xuICAvKipcbiAgICogV2hlbiBzZWxlY3RpbmcgdGVybXMsIHdpbGwgc2hvdyBkZWZhdWx0IHByb3BlcnRpZXMgb3Igbm90LlxuICAgKiBTaG91bGQgYmUgYGZhbHNlYCB3aGVuIHVzaW5nIHNjaGVtYSB2YWxpZGF0aW9uLCBhcyBvbmx5IHRoZSBgbmFtZWAgd291bGQgYmUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd1N1Z2dlc3RlZERlZmF1bHRQcm9wZXJ0aWVzID0gdHJ1ZTtcblxuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBub2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55IH0+KCk7XG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIG5vZGVFcm9yclJlc29sdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKVxuICBwcml2YXRlIG5vZGVFcnJvckFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJVmFsaWRhdGlvbkVycm9yPigpO1xuXG4gIHB1YmxpYyBOb2RlVHlwZSA9IE5vZGVUeXBlO1xuICBwdWJsaWMgU2NoZW1hVHlwZSA9IFNjaGVtYVR5cGU7XG4gIHB1YmxpYyBpc09wZW4gPSB0cnVlO1xuICBwdWJsaWMgbWFwVmlzaWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgcGx1cmFsaXplID0gcGx1cmFsaXplO1xuICBwdWJsaWMgZm9ybWF0UHJvcGVydHlFcnJvciA9IGZvcm1hdFByb3BlcnR5RXJyb3I7XG4gIHB1YmxpYyBtYXBEcmF3aW5nUHJvcGVydHk/OiBJTm9kZVByb3BlcnR5O1xuICBwdWJsaWMgYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eT86IElOb2RlUHJvcGVydHk7XG4gIHB1YmxpYyBub2RlUHJvcGVydHk/OiBJTm9kZVByb3BlcnR5O1xuICBwdWJsaWMgcHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdID0gW107XG5cbiAgcHVibGljIGZvcm1hdHRlciA9ICh2YWx1ZTogYW55KSA9PlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyAoJ2JpYmxpb2dyYXBoeScgaW4gdmFsdWUgPyB2YWx1ZS5iaWJsaW9ncmFwaHk/LnRpdGxlIDogdmFsdWUubmFtZSkgOiB2YWx1ZTtcblxuICBwdWJsaWMgc3VnZ2VzdE5ld1Byb3BlcnR5ID0gKGZ1bGxLZXk6IHN0cmluZykgPT4gKHRleHQkOiBPYnNlcnZhYmxlPHN0cmluZz4pID0+XG4gICAgdGV4dCQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAoXG4gICAgICAgIHRlcm0gPT4gb2YodGhpcy5uZXdQcm9wZXJ0aWVzKGZpbmRQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIGZ1bGxLZXkpIHx8IHRoaXMubm9kZVByb3BlcnR5LCB0ZXJtKSlcbiAgICAgIClcbiAgICApO1xuXG4gIHByaXZhdGUgc3VnZ2VzdEV4aXN0aW5nTm9kZSA9ICh0eXBlOiBOb2RlVHlwZSwgdGVybTogc3RyaW5nLCB1bmlxdWVLZXkgPSAnQGlkJykgPT5cbiAgICB0ZXJtLmxlbmd0aCA8IE1JTl9UWVBFQUhFQURfTEVOR1RIID9cbiAgICAgIG9mKFtdKSA6XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc3VnZ2VzdCh0ZXJtLCB0eXBlLCBbXSwge1xuICAgICAgICBib29sOiB7XG4gICAgICAgICAgbXVzdDogW21hdGNoVHlwZSh0eXBlKV0sXG4gICAgICAgICAgc2hvdWxkOiBbXG4gICAgICAgICAgICBtYXRjaFBocmFzZVF1ZXJ5KHRlcm0sIDEwMCwgdW5pcXVlS2V5KSxcbiAgICAgICAgICAgIG1hdGNoUGhyYXNlUHJlZml4UXVlcnkodGVybSwgMjAsIHVuaXF1ZUtleSksXG4gICAgICAgICAgICBtYXRjaEJvb2xQcmVmaXhRdWVyeSh0ZXJtLCAxMCwgdW5pcXVlS2V5KVxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICAgICAgfVxuICAgICAgfSwgNSwgdGhpcy5zdWdnZXN0VGVybUZpZWxkcyk7XG5cbiAgcHJpdmF0ZSBzdWdnZXN0Tm9kZSA9ICh0eXBlOiBOb2RlVHlwZSwgc3VnZ2VzdERlZmF1bHQ/OiBzdWdnZXN0RnVuYykgPT4gKHRlcm06IHN0cmluZywgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+XG4gICAgKHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5pc1VuaXF1ZUtleSA/IChcbiAgICAgIHRoaXMuc3VnZ2VzdEV4aXN0aW5nTm9kZSh0eXBlLCB0ZXJtLCBwcm9wZXJ0eS5zdWdnZXN0aW9ucy5pc1VuaXF1ZUtleSlcbiAgICApIDogKFxuICAgICAgcHJvcGVydHkuc3VnZ2VzdGlvbnM/LmlzTGlua05vZGUgP1xuICAgICAgICBvZihmb3JtYXRMaW5rTm9kZXNTdWdnZXN0aW9ucyh0aGlzLm5vZGVNYXAsIHR5cGUpKSA6IChcbiAgICAgICAgICBzdWdnZXN0RGVmYXVsdCA/IHN1Z2dlc3REZWZhdWx0KHRlcm0sIHByb3BlcnR5KSA6IG9mKFtdKVxuICAgICAgICApXG4gICAgKSkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHJlcy5tYXAoZm9ybWF0U3VnZ2VzdGlvbikpXG4gICAgKTtcblxuICBwcml2YXRlIHN1Z2dlc3Rlcjoge1xuICAgIFt0eXBlIGluIHN1Z2dlc3Rpb25UeXBlXT86IHN1Z2dlc3RGdW5jO1xuICB9ID0ge1xuICAgIGRlZmF1bHQ6ICh0ZXJtLCBwcm9wZXJ0eSkgPT4gb2YoXG4gICAgICAocHJvcGVydHk/LnN1Z2dlc3Rpb25zPy52YWx1ZXMgfHwgW10pXG4gICAgICAgIC5tYXAodiA9PiBgJHt2fWApXG4gICAgICAgIC5maWx0ZXIodiA9PiB2LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKSlcbiAgICAgICAgLm1hcChuYW1lID0+ICh7IG5hbWUgfSkpXG4gICAgKSxcbiAgICBbTm9kZVR5cGUuQWN0b3JdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLkFjdG9yKSxcbiAgICBbTm9kZVR5cGUuQ3ljbGVdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLkN5Y2xlKSxcbiAgICBbTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudF06IHRoaXMuc3VnZ2VzdE5vZGUoTm9kZVR5cGUuSW1wYWN0QXNzZXNzbWVudCksXG4gICAgW05vZGVUeXBlLk9yZ2FuaXNhdGlvbl06IHRoaXMuc3VnZ2VzdE5vZGUoTm9kZVR5cGUuT3JnYW5pc2F0aW9uKSxcbiAgICBbTm9kZVR5cGUuU2l0ZV06IHRoaXMuc3VnZ2VzdE5vZGUoTm9kZVR5cGUuU2l0ZSksXG4gICAgW05vZGVUeXBlLlNvdXJjZV06IHRoaXMuc3VnZ2VzdE5vZGUoTm9kZVR5cGUuU291cmNlLCAodGVybSwgeyBrZXkgfSkgPT5cbiAgICAgIHRlcm0ubGVuZ3RoIDwgTUlOX1RZUEVBSEVBRF9MRU5HVEggP1xuICAgICAgICBvZihbXSkgOlxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc3VnZ2VzdFNvdXJjZSh0ZXJtLCA1LCBbYGJpYmxpb2dyYXBoeS4ke2tleX1gXSwgW2BiaWJsaW9ncmFwaHkuJHtrZXl9YF0pXG4gICAgKSxcbiAgICBbTm9kZVR5cGUuVGVybV06IHRoaXMuc3VnZ2VzdE5vZGUoTm9kZVR5cGUuVGVybSwgKHRlcm0sIHsgc3VnZ2VzdGlvbnMgfSkgPT5cbiAgICAgIHRlcm0ubGVuZ3RoIDwgTUlOX1RZUEVBSEVBRF9MRU5HVEggP1xuICAgICAgICBvZihbXSkgOlxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc3VnZ2VzdCh0ZXJtLCBOb2RlVHlwZS5UZXJtLCBzdWdnZXN0aW9ucz8ucXVlcmllcyB8fCBbXSwgbnVsbCwgNSwgdGhpcy5zdWdnZXN0VGVybUZpZWxkcylcbiAgICApXG4gIH07XG4gIHB1YmxpYyBwcm9wZXJ0eVN1Z2dlc3QgPSAoZnVsbEtleTogc3RyaW5nLCBzdWdnZXN0VHlwZTogc3VnZ2VzdGlvblR5cGUpID0+ICh0ZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+KSA9PlxuICAgIHRleHQkLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoc3VnZ2VzdFR5cGUgPT09IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSA/IDAgOiAzMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIG1lcmdlTWFwKHRlcm0gPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGZpbmRQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIGZ1bGxLZXkpO1xuICAgICAgICByZXR1cm4gcHJvcGVydHk/LmVkaXRhYmxlICYmIHN1Z2dlc3RUeXBlIGluIHRoaXMuc3VnZ2VzdGVyID9cbiAgICAgICAgICBvZih0ZXJtKS5waXBlKFxuICAgICAgICAgICAgdGFwKCgpID0+IHByb3BlcnR5LmxvYWRpbmcgPSB0cnVlKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN1Z2dlc3RlcltzdWdnZXN0VHlwZV0hKHRlcm0sIHByb3BlcnR5KSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gcHJvcGVydHkubG9hZGluZyA9IGZhbHNlKVxuICAgICAgICAgICkgOlxuICAgICAgICAgIG9mKFtdKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IEhlU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJzU2VydmljZTogSGVVc2Vyc1NlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBzY2hlbWFUeXBlID0gdGhpcy5ub2RlIS50eXBlIHx8IHRoaXMubm9kZSFbJ0B0eXBlJ107XG4gICAgY29uc3Qgc2NoZW1hID0gdGhpcy5zY2hlbWFzID8gdGhpcy5zY2hlbWFzW3NjaGVtYVR5cGVdIDoge30gYXMgZGVmaW5pdGlvbjtcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmVycm9ycy5maWx0ZXIoZmlsdGVyRXJyb3IpO1xuICAgIGNvbnN0IGVycm9yID0gcHJvcGVydHlFcnJvcihlcnJvcnMpKCcnKTtcbiAgICB0aGlzLm5vZGVQcm9wZXJ0eSA9IHRoaXMuc2NoZW1hcyA/IHtcbiAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICBzY2hlbWEsXG4gICAgICBzY2hlbWFUeXBlLFxuICAgICAgZWRpdGFibGU6ICEhdGhpcy5ub2RlIS50eXBlLFxuICAgICAgZnVsbEtleTogJycsXG4gICAgICBrZXk6ICcnLFxuICAgICAgdmFsdWU6IHt9LFxuICAgICAgZXJyb3I6IGZvcm1hdEVycm9yKGVycm9yKSxcbiAgICAgIGhhc0Vycm9yOiBlcnJvckhhc0Vycm9yKGVycm9yKSxcbiAgICAgIGhhc1dhcm5pbmc6IGVycm9ySGFzV2FybmluZyhlcnJvciksXG4gICAgICBzdWdnZXN0aW9uczoge30sXG4gICAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQodGhpcy5ub2RlISwgc2NoZW1hVHlwZSwgc2NoZW1hKVxuICAgIH0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVjdXJzZXIgPSByZWN1cnNpdmVQcm9wZXJ0aWVzKHRoaXMuc2NoZW1hcyEsIGVycm9ycywgc2NoZW1hLCB0aGlzLmRlZXBFZGl0YWJsZSk7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gcmVjdXJzZXIodGhpcy5ub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SW5kZXgoaW5kZXg6IG51bWJlciwgX3ZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeVByb3BlcnR5KF9pbmRleDogbnVtYmVyLCB7IGlkLCBmdWxsS2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gW2Z1bGxLZXksIGlkXS5qb2luKCdfJyk7XG4gIH1cblxuICBwdWJsaWMgaGFzQWRkb25zKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIHByb3BlcnR5ICYmIChcbiAgICAgIHRoaXMuZW5hYmxlQWRkRXJyb3IocHJvcGVydHkpIHx8XG4gICAgICAodGhpcy5lZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSkgfHxcbiAgICAgIHRoaXMuYWRkUHJvcGVydHlFbmFibGVkKHByb3BlcnR5KSB8fFxuICAgICAgdGhpcy5pc1JlcXVpcmVkKHByb3BlcnR5KSB8fFxuICAgICAgcHJvcGVydHkuZXh0ZXJuYWxVcmw/LnVybCB8fFxuICAgICAgdGhpcy5tYXBEcmF3aW5nTW9kZXMocHJvcGVydHkpLmxlbmd0aCB8fFxuICAgICAgdGhpcy51bml0Q29udmVydGVyRW5hYmxlZChwcm9wZXJ0eSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzUmVxdWlyZWQoeyB2YWx1ZSwgaXNSZXF1aXJlZCB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGlzUmVxdWlyZWQgJiYgaXNFbXB0eSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldCBzdWdnZXN0VGVybUZpZWxkcygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgLi4ucG9wdWxhdGVUZXJtRmllbGRzLFxuICAgICAgLi4uKHRoaXMuc2hvd1N1Z2dlc3RlZERlZmF1bHRQcm9wZXJ0aWVzID8gcG9wdWxhdGVUZXJtRGVmYXVsdFByb3BlcnRpZXMgOiBbXSlcbiAgICBdO1xuICB9XG5cbiAgLy8gLS0tIEVycm9yc1xuXG4gIHB1YmxpYyBlbmFibGVBZGRFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiB0aGlzLmVycm9yc0VkaXRhYmxlICYmICFwcm9wZXJ0eS5oYXNFcnJvciAmJiAhcHJvcGVydHkuaGFzV2FybmluZztcbiAgfVxuXG4gIHB1YmxpYyBhZGRFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgeyBtZXNzYWdlLCBsZXZlbCB9OiBJRXJyb3JQcm9wZXJ0eSkge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gcHJvcGVydHkuZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGtleXMucG9wKCk7XG4gICAgY29uc3QgZXJyb3I6IElWYWxpZGF0aW9uRXJyb3IgPSBwcm9wZXJ0eS5pc0FkZGVkID8ge1xuICAgICAgbWVzc2FnZSxcbiAgICAgIGxldmVsOiBsZXZlbCB8fCAnZXJyb3InLFxuICAgICAgZGF0YVBhdGg6IGtleVRvRGF0YVBhdGgoa2V5cy5qb2luKCcuJykpLFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIG1pc3NpbmdQcm9wZXJ0eTogcHJvcGVydHkua2V5XG4gICAgICB9XG4gICAgfSA6IHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBsZXZlbDogbGV2ZWwgfHwgJ2Vycm9yJyxcbiAgICAgIGRhdGFQYXRoOiBrZXlUb0RhdGFQYXRoKHByb3BlcnR5LmZ1bGxLZXkpXG4gICAgfTtcbiAgICBwcm9wZXJ0eS5uZXdFcnJvciA9IHsgbGV2ZWw6ICd3YXJuaW5nJyB9O1xuICAgIHByb3BlcnR5LmVycm9yID0gZXJyb3I7XG4gICAgcHJvcGVydHkuaGFzRXJyb3IgPSBlcnJvckhhc0Vycm9yKGVycm9yKTtcbiAgICBwcm9wZXJ0eS5oYXNXYXJuaW5nID0gZXJyb3JIYXNXYXJuaW5nKGVycm9yKTtcbiAgICB0aGlzLm5vZGVFcnJvckFkZGVkLmVtaXQoZXJyb3IpO1xuICB9XG5cbiAgcHVibGljIGVkaXRFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHByb3BlcnR5Lm5ld0Vycm9yID0gcHJvcGVydHkuZXJyb3I7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZUVycm9yKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSBwcm9wZXJ0eS5lcnJvcj8uaW5kZXg7XG4gICAgcHJvcGVydHkuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgcHJvcGVydHkuaGFzRXJyb3IgPSBoYXNFcnJvcihwcm9wZXJ0eS5wcm9wZXJ0aWVzKTtcbiAgICBwcm9wZXJ0eS5oYXNXYXJuaW5nID0gaGFzV2FybmluZyhwcm9wZXJ0eS5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLm5vZGVFcm9yclJlc29sdmVkLmVtaXQoaW5kZXgpO1xuICAgIHJldHVybiBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eS5mdWxsS2V5KTtcbiAgfVxuXG4gIC8vIC0tLVxuXG4gIHB1YmxpYyB0eXBlYWhlYWRGb2N1cyhlOiBFdmVudCkge1xuICAgIGlmIChlLmJ1YmJsZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGlucHV0RXZlbnQgPSBuZXcgRXZlbnQoJ2lucHV0Jyk7XG4gICAgICBlLnRhcmdldD8uZGlzcGF0Y2hFdmVudChpbnB1dEV2ZW50KTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQcm9wZXJ0eUVuYWJsZWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0YWJsZSAmJiAhdGhpcy5lcnJvcnNFZGl0YWJsZSAmJiBwcm9wZXJ0eS5hZGRQcm9wZXJ0eUVuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIG5ld1Byb3BlcnRpZXMocHJvcGVydHk6IElOb2RlUHJvcGVydHksIGZpZWxkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gbm9kZUF2YWlsYWJsZVByb3BlcnRpZXModGhpcy5ub2RlISwgcHJvcGVydHkpO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzKVxuICAgICAgLmZpbHRlcihwcm9wID0+IHByb3AudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWVsZC50b0xvd2VyQ2FzZSgpKSlcbiAgICAgIC5tYXAobmFtZSA9PiAoeyBuYW1lLCBwcm9wOiBwcm9wZXJ0aWVzW25hbWVdIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVByb3BlcnR5RGF0YShwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgZGF0YTogYW55LCBlZGl0YWJsZT86IGJvb2xlYW4sIHJlcGxhY2VQYXJlbnQgPSB0cnVlKSB7XG4gICAgY29uc3QgcGFyZW50ID0gcmVwbGFjZVBhcmVudCA/IHBhcmVudFByb3BlcnR5KHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpIDogcHJvcGVydHk7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHJlY3Vyc2l2ZVByb3BlcnRpZXMoXG4gICAgICB0aGlzLnNjaGVtYXMhLCBbXSwgdGhpcy5zY2hlbWFzIVt0aGlzLm5vZGUhLnR5cGVdLCB0aGlzLmRlZXBFZGl0YWJsZSwgcGFyZW50LmZ1bGxLZXlcbiAgICApKGRhdGEpO1xuICAgIHVwZGF0ZVByb3BlcnRpZXMoeyBwcm9wZXJ0aWVzIH0sIHByb3AgPT4ge1xuICAgICAgcHJvcC5lZGl0YWJsZSA9IHR5cGVvZiBlZGl0YWJsZSA9PT0gJ3VuZGVmaW5lZCcgPyBwcm9wLmVkaXRhYmxlIDogZWRpdGFibGU7XG4gICAgICByZXR1cm4gcHJvcDtcbiAgICB9KTtcbiAgICBwYXJlbnQuZWRpdGFibGUgPSB0eXBlb2YgZWRpdGFibGUgPT09ICd1bmRlZmluZWQnID8gcGFyZW50LmVkaXRhYmxlIDogZWRpdGFibGU7XG4gICAgcGFyZW50LnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzO1xuICAgIHBhcmVudC52YWx1ZSA9IGRhdGE7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlDaGFuZ2VkKGRhdGEsIHBhcmVudCk7XG4gIH1cblxuICBwdWJsaWMgc3VnZ2VzdGlvblNlbGVjdGVkKHsgJ0BpZCc6IF9pZCwgbmFtZSwgdHlwZSwgaWQsIC4uLmRhdGEgfSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gX2lkID9cbiAgICAgIC8vIHN1Z2dlc3Rpb25zIGZyb20gZXhpc3Rpbmcgbm9kZXNcbiAgICAgIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YShwcm9wZXJ0eSwgeyAnQGlkJzogX2lkLCAnQHR5cGUnOiBwcm9wZXJ0eS5zdWdnZXN0aW9ucz8udHlwZSwgbmFtZSwgLi4uZGF0YSB9LCBmYWxzZSkgOlxuICAgICAgKFxuICAgICAgICAvLyBzdWdnZXN0aW9uIGZyb20gbGlua2VkIG5vZGVzXG4gICAgICAgIHR5cGUgJiYgaWQgP1xuICAgICAgICAgIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YShwcm9wZXJ0eSwgeyB0eXBlLCBpZCwgLi4uZGF0YSB9LCB0cnVlKSA6XG4gICAgICAgICAgLy8gc3VnZ2VzdGlvbiBieSBuYW1lID0+IGVudW0gdmFsdWVzXG4gICAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZWQobmFtZSwgcHJvcGVydHkpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZEFycmF5R3JvdXAoYXJyYXk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBwcm9wID0gdGhpcy5zY2hlbWFzIVthcnJheS5zY2hlbWFUeXBlXTtcbiAgICBjb25zdCB2YWx1ZSA9IGdldCh0aGlzLm5vZGUsIGFycmF5LmZ1bGxLZXkpO1xuICAgIGNvbnN0IG5ld1Byb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkoXG4gICAgICB0aGlzLnNjaGVtYXMhLCBwcm9wLCBwcm9wLCB2YWx1ZSwgYCR7YXJyYXkuZnVsbEtleX1bJHthcnJheS5wcm9wZXJ0aWVzLmxlbmd0aH1dYFxuICAgICk7XG4gICAgYXJyYXkucHJvcGVydGllcy5wdXNoKG5ld1Byb3BlcnR5KTtcbiAgICB0aGlzLm5vZGVDaGFuZ2UuZW1pdCh7IGtleTogYXJyYXkuZnVsbEtleSwgdmFsdWUgfSk7XG4gICAgcmV0dXJuIGdyb3VwQ2hhbmdlZCh0aGlzLnByb3BlcnRpZXMsIGFycmF5LmZ1bGxLZXkpO1xuICB9XG5cbiAgcHVibGljIGR1cGxpY2F0ZUFycmF5R3JvdXAoYXJyYXk6IElOb2RlUHJvcGVydHksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSArcHJvcGVydHkua2V5O1xuICAgIGNvbnN0IG5ld1Byb3BlcnR5OiBJTm9kZVByb3BlcnR5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwcm9wZXJ0eSkpO1xuICAgIG5ld1Byb3BlcnR5LmlkID0gcHJvcGVydHlJZCgpO1xuICAgIGNvbnN0IHZhbHVlID0gWy4uLmdldCh0aGlzLm5vZGUsIGFycmF5LmZ1bGxLZXkpXTtcbiAgICB2YWx1ZS5zcGxpY2UoaW5kZXgsIDAsIHNhZmVKU09OUGFyc2UobmV3UHJvcGVydHkudmFsdWUpKTtcbiAgICBhcnJheS5wcm9wZXJ0aWVzLnNwbGljZShpbmRleCwgMCwgbmV3UHJvcGVydHkpO1xuICAgIC8vIG5lZWQgdG8gY2hhbmdlIGtleSBvbiBldmVyeSBwcm9wZXJ0aWVzIHJlY3Vyc2l2ZWx5XG4gICAgcmVmcmVzaFByb3BlcnR5S2V5cyhhcnJheSk7XG4gICAgdGhpcy5ub2RlQ2hhbmdlLmVtaXQoeyBrZXk6IGFycmF5LmZ1bGxLZXksIHZhbHVlIH0pO1xuICAgIHJldHVybiBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBhcnJheS5mdWxsS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBcnJheUdyb3VwKGFycmF5OiBJTm9kZVByb3BlcnR5LCB7IGtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSAra2V5O1xuICAgIGNvbnN0IHZhbHVlID0gWy4uLmdldCh0aGlzLm5vZGUsIGFycmF5LmZ1bGxLZXkpXTtcbiAgICB2YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGFycmF5LnByb3BlcnRpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAvLyBuZWVkIHRvIGNoYW5nZSBrZXkgb24gZXZlcnkgcHJvcGVydGllcyByZWN1cnNpdmVseVxuICAgIHJlZnJlc2hQcm9wZXJ0eUtleXMoYXJyYXkpO1xuICAgIHRoaXMubm9kZUNoYW5nZS5lbWl0KHsga2V5OiBhcnJheS5mdWxsS2V5LCB2YWx1ZSB9KTtcbiAgICAvLyBpZiBubyBtb3JlIHZhbHVlcywgcmVtb3ZlIHBhcmVudCBncm91cCBlbnRpcmVseVxuICAgIHJldHVybiBhcnJheS5wcm9wZXJ0aWVzLmxlbmd0aCA/IG51bGwgOiB0aGlzLnByb3BlcnR5Q2hhbmdlZChudWxsLCBhcnJheSk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVBcnJheUdyb3VwVG9Qb3NpdGlvbihhcnJheTogSU5vZGVQcm9wZXJ0eSwgY3VycmVudEluZGV4OiBudW1iZXIsIG5ld0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IFsuLi5nZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KV07XG4gICAgbW92ZUl0ZW1JbkFycmF5KHZhbHVlLCBjdXJyZW50SW5kZXgsIG5ld0luZGV4KTtcbiAgICBtb3ZlSXRlbUluQXJyYXkoYXJyYXkucHJvcGVydGllcywgY3VycmVudEluZGV4LCBuZXdJbmRleCk7XG4gICAgLy8gbmVlZCB0byBjaGFuZ2Uga2V5IG9uIGV2ZXJ5IHByb3BlcnRpZXMgcmVjdXJzaXZlbHlcbiAgICByZWZyZXNoUHJvcGVydHlLZXlzKGFycmF5KTtcbiAgICB0aGlzLm5vZGVDaGFuZ2UuZW1pdCh7IGtleTogYXJyYXkuZnVsbEtleSwgdmFsdWUgfSk7XG4gICAgcmV0dXJuIGdyb3VwQ2hhbmdlZCh0aGlzLnByb3BlcnRpZXMsIGFycmF5LmZ1bGxLZXkpO1xuICB9XG5cbiAgcHVibGljIG1vdmVBcnJheUdyb3VwVXAoYXJyYXk6IElOb2RlUHJvcGVydHksIHsga2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICtrZXk7XG4gICAgcmV0dXJuIHRoaXMubW92ZUFycmF5R3JvdXBUb1Bvc2l0aW9uKGFycmF5LCBpbmRleCwgaW5kZXggLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlQXJyYXlHcm91cERvd24oYXJyYXk6IElOb2RlUHJvcGVydHksIHsga2V5IH06IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBpbmRleCA9ICtrZXk7XG4gICAgcmV0dXJuIHRoaXMubW92ZUFycmF5R3JvdXBUb1Bvc2l0aW9uKGFycmF5LCBpbmRleCwgaW5kZXggKyAxKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9wZXJ0eUNoYW5nZWQodmFsdWU6IGFueSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eS5mdWxsS2V5LCB2YWx1ZSk7XG4gICAgcHJvcGVydHkuYWRkUHJvcGVydHlFbmFibGVkID0gaXNBZGRQcm9wZXJ0eUVuYWJsZWQoXG4gICAgICB0aGlzLm5vZGUhLCBwcm9wZXJ0eS5zY2hlbWFUeXBlLCBwcm9wZXJ0eS5zY2hlbWEhLCBwcm9wZXJ0eS5mdWxsS2V5XG4gICAgKTtcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcHJvcGVydHkudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHByb3BlcnR5LmNoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1ZhbHVlID0gcGFyc2VOZXdWYWx1ZShwcm9wZXJ0eS5zY2hlbWEhLCB2YWx1ZSk7XG4gICAgLy8gcGF0Y2ggZXJyb3Igd2hlbiBsaW5rIGlzIG5vdCB3b3JraW5nIGNvcnJlY3RseVxuICAgIGlmIChuZXdWYWx1ZT8uaWQ/LnN0YXJ0c1dpdGgoZm9ybWF0TGlua05vZGVzUHJlZml4KSkge1xuICAgICAgbmV3VmFsdWUuaWQgPSBuZXdWYWx1ZS5pZC5zcGxpdCgnOicpWzFdLnRyaW0oKTtcbiAgICB9XG4gICAgLy8gdHJpZ2dlciByZWZyZXNoIG9mIG5vZGVcbiAgICBjb25zdCBub2RlID0gY29weU9iamVjdCh0aGlzLm5vZGUpO1xuICAgIHNldChub2RlLCBwcm9wZXJ0eS5mdWxsS2V5LCBuZXdWYWx1ZSk7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICAvLyB0cmlnZ2VyIGZvciBsaXN0ZW5lcnNcbiAgICB0aGlzLm5vZGVDaGFuZ2UuZW1pdCh7IGtleTogcHJvcGVydHkuZnVsbEtleSwgdmFsdWU6IG5ld1ZhbHVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREZWZhdWx0UHJvcGVydHkocHJvcGVydHk6IElOb2RlUHJvcGVydHksIGtleTogc3RyaW5nLCBkZWY6IGRlZmluaXRpb24pIHtcbiAgICBjb25zdCBub2RlID0gcHJvcGVydHkua2V5ID8gZ2V0KHRoaXMubm9kZSwgcHJvcGVydHkuZnVsbEtleSkgOiB0aGlzLm5vZGU7XG4gICAgY29uc3QgZnVsbEtleSA9IHByb3BlcnR5LmtleSA/IGAke3Byb3BlcnR5LmZ1bGxLZXl9LiR7a2V5fWAgOiBrZXk7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHByb3BlcnR5LmtleSA/IHByb3BlcnR5LnByb3BlcnRpZXMgOiB0aGlzLnByb3BlcnRpZXM7XG4gICAgY29uc3QgbmV3UHJvcGVydHkgPSB0eXBlVG9OZXdQcm9wZXJ0eSh0aGlzLnNjaGVtYXMhLCBkZWYsIHRoaXMuc2NoZW1hcyFbcHJvcGVydHkuc2NoZW1hVHlwZV0sIG5vZGUsIGZ1bGxLZXkpO1xuICAgIGluc2VydFByb3BlcnR5KHByb3BlcnRpZXMsIGZ1bGxLZXksIG5ld1Byb3BlcnR5KTtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUNoYW5nZWQobmV3UHJvcGVydHkudmFsdWUsIG5ld1Byb3BlcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNaXNzaW5nUHJvcGVydHkocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBwYXJlbnRQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0eSA9IHBhcmVudCA9PT0gcHJvcGVydHkgPyB0aGlzLm5vZGVQcm9wZXJ0eSEgOiBwYXJlbnQ7XG4gICAgY29uc3QgbmV3UHJvcGVydGllcyA9IHRoaXMubmV3UHJvcGVydGllcyhuZXdQcm9wZXJ0eSwgcHJvcGVydHkua2V5KTtcbiAgICBuZXdQcm9wZXJ0eS5uZXdQcm9wZXJ0eSA9IG5ld1Byb3BlcnRpZXNbMF07XG4gICAgcmV0dXJuIG5ld1Byb3BlcnR5Lm5ld1Byb3BlcnR5ID8gdGhpcy5hZGRQcm9wZXJ0eShuZXdQcm9wZXJ0eSkgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGFkZFByb3BlcnR5KHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgeyBuYW1lLCBwcm9wIH0gPSBwcm9wZXJ0eS5uZXdQcm9wZXJ0eSE7XG4gICAgcHJvcGVydHkubmV3UHJvcGVydHkgPSB7fTtcbiAgICByZXR1cm4gbmFtZSA9PT0gJ0BpZCcgP1xuICAgICAgdGhpcy5yZXBsYWNlUHJvcGVydHlEYXRhKHByb3BlcnR5LCB7ICdAaWQnOiAnJywgdHlwZTogcHJvcGVydHkuc2NoZW1hVHlwZSB9LCB1bmRlZmluZWQsIGZhbHNlKSA6XG4gICAgICB0aGlzLmFkZERlZmF1bHRQcm9wZXJ0eShwcm9wZXJ0eSwgbmFtZSEsIHByb3AhKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJvcGVydHlDb29yZGluYXRlcyhwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgdmFsdWU6IGdvb2dsZS5tYXBzLkxhdExuZ0xpdGVyYWwpIHtcbiAgICBjb25zdCBsYXRpdHVkZSA9IHNpYmxpbmdQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5LCAnbGF0aXR1ZGUnKTtcbiAgICBjb25zdCBsb25naXR1ZGUgPSBzaWJsaW5nUHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2xvbmdpdHVkZScpO1xuICAgIHJldHVybiBbXG4gICAgICBsYXRpdHVkZSA/IHRoaXMucHJvcGVydHlDaGFuZ2VkKHZhbHVlLmxhdCwgbGF0aXR1ZGUpIDogbnVsbCxcbiAgICAgIGxvbmdpdHVkZSA/IHRoaXMucHJvcGVydHlDaGFuZ2VkKHZhbHVlLmxuZywgbG9uZ2l0dWRlKSA6IG51bGxcbiAgICBdO1xuICB9XG5cbiAgLy8gTWFwXG5cbiAgcHVibGljIGdldCBzaG93TWFwKCkge1xuICAgIHJldHVybiAoIXRoaXMuZWRpdGFibGUgfHwgdGhpcy5lcnJvck1vZGUpICYmIFtTY2hlbWFUeXBlLlNpdGUsIFNjaGVtYVR5cGUuT3JnYW5pc2F0aW9uXS5pbmNsdWRlcyh0aGlzLm5vZGUhLnR5cGUpO1xuICB9XG5cbiAgcHVibGljIG1hcERyYXdpbmdNb2Rlcyh7IGtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIFsnYm91bmRhcnknXS5pbmNsdWRlcyhrZXkpID8gW1xuICAgICAgZ29vZ2xlLm1hcHMuZHJhd2luZy5PdmVybGF5VHlwZS5QT0xZR09OXG4gICAgXSA6IChbXG4gICAgICAnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ1xuICAgIF0uaW5jbHVkZXMoa2V5KSA/IFtcbiAgICAgIGdvb2dsZS5tYXBzLmRyYXdpbmcuT3ZlcmxheVR5cGUuTUFSS0VSXG4gICAgXSA6IFtdKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1hcERyYXdpbmdDbG9zZWQobmV3VmFsdWUpIHtcbiAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMubWFwRHJhd2luZ1Byb3BlcnR5O1xuICAgIHRoaXMubWFwRHJhd2luZ1Byb3BlcnR5ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSddLmluY2x1ZGVzKHByb3BlcnR5IS5rZXkpID9cbiAgICAgIHRoaXMudXBkYXRlUHJvcGVydHlDb29yZGluYXRlcyhwcm9wZXJ0eSEsIG5ld1ZhbHVlKSA6XG4gICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlZChuZXdWYWx1ZSwgcHJvcGVydHkhKTtcbiAgfVxuXG4gIC8vIEJpYmxpb2dyYXBoeSBTZWFyY2hcblxuICBwdWJsaWMgYmlibGlvZ3JhcGhpZXNTZWFyY2hLZXkoeyBrZXksIHNjaGVtYVR5cGUgfTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHZhbGlkU2NoZW1hID0gW1NjaGVtYVR5cGUuQmlibGlvZ3JhcGh5XS5pbmNsdWRlcyhzY2hlbWFUeXBlKTtcbiAgICBjb25zdCB2YWxpZUtleSA9IFsndGl0bGUnLCAnZG9jdW1lbnRET0knLCAnc2NvcHVzJ10uaW5jbHVkZXMoa2V5KTtcbiAgICByZXR1cm4gdmFsaWRTY2hlbWEgJiYgdmFsaWVLZXkgPyBrZXkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCaWJsaW9ncmFwaHkodmFsdWU6IFBhcnRpYWw8QmlibGlvZ3JhcGh5Pikge1xuICAgIGNvbnN0IHBhcmVudCA9IHBhcmVudFByb3BlcnR5KHRoaXMucHJvcGVydGllcywgdGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ISk7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoU291cmNlcyA/IHtcbiAgICAgIC4uLnBhcmVudC52YWx1ZSxcbiAgICAgIGJpYmxpb2dyYXBoeTogdmFsdWVcbiAgICB9IDogdmFsdWU7XG4gICAgdGhpcy5yZXBsYWNlUHJvcGVydHlEYXRhKHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSEsIG5ld1ZhbHVlLCB0cnVlKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTb3VyY2UodmFsdWU6IFBhcnRpYWw8U291cmNlPikge1xuICAgIC8vIGNhbm5vdCByZXBsYWNlIGEgdG9wLWxldmVsIHNvdXJjZVxuICAgIHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hTb3VyY2VzICYmIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YSh0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkhLCB7XG4gICAgICAnQHR5cGUnOiBOb2RlVHlwZS5Tb3VyY2UsXG4gICAgICAuLi52YWx1ZVxuICAgIH0sICEoJ0BpZCcgaW4gdmFsdWUpKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIGdldCBiaWJsaW9ncmFwaGllc1NlYXJjaFNvdXJjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSEuZnVsbEtleS5zcGxpdCgnLicpLmxlbmd0aCA+IDI7XG4gIH1cblxuICBwdWJsaWMgb25CaWJsaW9ncmFwaGllc1NlYXJjaENsb3NlZCh2YWx1ZT86IFBhcnRpYWw8U291cmNlPiB8IFBhcnRpYWw8QmlibGlvZ3JhcGh5Pikge1xuICAgIHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSA9IHZhbHVlID8gKFxuICAgICAgdmFsdWUudHlwZSA9PT0gU2NoZW1hVHlwZS5CaWJsaW9ncmFwaHkgP1xuICAgICAgICB0aGlzLnVwZGF0ZUJpYmxpb2dyYXBoeSh2YWx1ZSkgOlxuICAgICAgICB0aGlzLnVwZGF0ZVNvdXJjZSh2YWx1ZSBhcyBQYXJ0aWFsPFNvdXJjZT4pXG4gICAgKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIEFjdG9yLkBpZFxuXG4gIHB1YmxpYyBhc3luYyBzZXRVc2VyQWN0b3JJZChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHsgYWN0b3JJZCwgbmFtZSB9ID0gYXdhaXQgdGhpcy51c2Vyc1NlcnZpY2UubG9nZ2VkSW5Vc2VyO1xuICAgIHJldHVybiB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHksIHsgJ0BpZCc6IGFjdG9ySWQsICdAdHlwZSc6IE5vZGVUeXBlLkFjdG9yLCBuYW1lIH0sIGZhbHNlKTtcbiAgfVxuXG4gIC8vIEN5Y2xlLmN5Y2xlRHVyYXRpb25cblxuICBwdWJsaWMgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGR1cmF0aW9uID0gY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbih0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUNoYW5nZWQoZHVyYXRpb24sIHByb3BlcnR5KTtcbiAgfVxuXG4gIC8vIEN5Y2xlLnN0YXJ0RGF0ZVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gY2FsY3VsYXRlQ3ljbGVTdGFydERhdGUodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlDaGFuZ2VkKHN0YXJ0RGF0ZSwgcHJvcGVydHkpO1xuICB9XG5cbiAgLy8gVW5pdHMgY29udmVydGVyXG5cbiAgcHVibGljIHVuaXRDb252ZXJ0ZXJFbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGUgJiYgWyd2YWx1ZScsICdtaW4nLCAnbWF4JywgJ3NkJ10uaW5jbHVkZXMocHJvcGVydHkua2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuVW5pdENvbnZlcnRlcihwb3BvdmVyLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHZhbHVlID0gcHJvcGVydHkudmFsdWU7XG4gICAgY29uc3QgdGVybVByb3BlcnR5ID0gc2libGluZ1Byb3BlcnR5KHRoaXMucHJvcGVydGllcywgcHJvcGVydHksICd0ZXJtJyk7XG4gICAgY29uc3QgdGVybSA9IHNhZmVKU09OUGFyc2UodGVybVByb3BlcnR5Py52YWx1ZSk7XG4gICAgY29uc3QgdW5pdHMgPSB0ZXJtPy51bml0cztcbiAgICByZXR1cm4gcG9wb3Zlci5pc09wZW4oKSA/IHBvcG92ZXIuY2xvc2UoKSA6IHBvcG92ZXIub3Blbih7IHZhbHVlLCB0ZXJtLCB1bml0cyB9KTtcbiAgfVxuXG4gIC8vIFJlY29tbWVuZGF0aW9uc1xuXG4gIHB1YmxpYyBvblNlbGVjdFJlY29tbWVuZGF0aW9uKGFycmF5OiBJTm9kZVByb3BlcnR5LCBpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvcCA9IHRoaXMuc2NoZW1hcyFbYXJyYXkuc2NoZW1hVHlwZV07XG4gICAgY29uc3QgdmFsdWUgPSBnZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KTtcblxuICAgIGNvbnN0IG5ld1Byb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkoXG4gICAgICB0aGlzLnNjaGVtYXMhLCBwcm9wLCBwcm9wLCB2YWx1ZSwgYCR7YXJyYXkuZnVsbEtleX1bJHthcnJheS5wcm9wZXJ0aWVzLmxlbmd0aH1dYFxuICAgICk7XG4gICAgbmV3UHJvcGVydHkudmFsdWUudGVybSA9IHsgdHlwZTogTm9kZVR5cGUuVGVybSwgJ0BpZCc6IGlkIH07XG4gICAgdmFsdWVbYXJyYXkucHJvcGVydGllcy5sZW5ndGhdLnRlcm0gPSB7IHR5cGU6IE5vZGVUeXBlLlRlcm0sICdAaWQnOiBpZCB9O1xuXG4gICAgLy8gaW5zZXJ0IFRlcm0gd2l0aCBAaWRcbiAgICBjb25zdCB0ZXJtS2V5ID0gYCR7bmV3UHJvcGVydHkuZnVsbEtleX0udGVybWA7XG4gICAgY29uc3QgdGVybVByb3BlcnR5ID0gbmV3UHJvcGVydHkucHJvcGVydGllcy5maW5kKHAgPT4gcC5rZXkgPT09ICd0ZXJtJykgfHwgdHlwZVRvTmV3UHJvcGVydHkoXG4gICAgICB0aGlzLnNjaGVtYXMhLCBwcm9wLnByb3BlcnRpZXMudGVybSwgcHJvcCwgbmV3UHJvcGVydHkudmFsdWUsIHRlcm1LZXlcbiAgICApO1xuICAgIHRlcm1Qcm9wZXJ0eS52YWx1ZSA9IHsgdHlwZTogTm9kZVR5cGUuVGVybSwgJ0BpZCc6IGlkIH07XG4gICAgdGVybVByb3BlcnR5LnByb3BlcnRpZXMgPSByZWN1cnNpdmVQcm9wZXJ0aWVzKFxuICAgICAgdGhpcy5zY2hlbWFzISwgW10sIHRoaXMuc2NoZW1hcyFbdGhpcy5ub2RlIS50eXBlXSwgdGhpcy5kZWVwRWRpdGFibGUsIHRlcm1LZXlcbiAgICApKHsgdHlwZTogTm9kZVR5cGUuVGVybSwgJ0BpZCc6IGlkIH0pO1xuICAgIGluc2VydFByb3BlcnR5KG5ld1Byb3BlcnR5LnByb3BlcnRpZXMsIHRlcm1LZXksIHRlcm1Qcm9wZXJ0eSk7XG5cbiAgICAvLyB0ZXJtIGNhbm5vdCBiZSBlZGl0ZWQsIG5lZWQgdG8gcmVtb3ZlIGZpcnN0XG4gICAgdXBkYXRlUHJvcGVydGllcyh0ZXJtUHJvcGVydHksIHAgPT4ge1xuICAgICAgcC5lZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHA7XG4gICAgfSk7XG4gICAgdGVybVByb3BlcnR5LmVkaXRhYmxlID0gZmFsc2U7XG5cbiAgICBhcnJheS5wcm9wZXJ0aWVzLnB1c2gobmV3UHJvcGVydHkpO1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Q2hhbmdlZCh2YWx1ZSwgYXJyYXkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC10b2dnbGUgcC00XCIgKGNsaWNrKT1cImlzT3BlbiA9ICFpc09wZW5cIiBwb2ludGVyPlxuICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1kb3duXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhaXNPcGVuXCI+PC9mYS1pY29uPlxuICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1yaWdodFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiaXNPcGVuXCI+PC9mYS1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwibm9kZVByb3BlcnR5XCIgY2xhc3M9XCJpcy1weC0yXCJcbiAgICAgIFtjbGFzcy5oYXMtdGV4dC1kYW5nZXJdPVwibm9kZVByb3BlcnR5Lmhhc0Vycm9yXCJcbiAgICAgIFtjbGFzcy5oYXMtdGV4dC13YXJuaW5nXT1cIm5vZGVQcm9wZXJ0eS5oYXNXYXJuaW5nXCJcbiAgICA+XG4gICAgICA8aGUtbm9kZS1pY29uIFt0eXBlXT1cIm5vZGVQcm9wZXJ0eS5zY2hlbWFUeXBlXCI+PC9oZS1ub2RlLWljb24+XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgJiYgaXNPcGVuICYmIG5vZGVQcm9wZXJ0eVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93TmV3UHJvcGVydHk7IGNvbnRleHQ6IHskaW1wbGljaXQ6IG5vZGVQcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYi0zIG1iLTJcIiAqbmdJZj1cImVycm9yc0VkaXRhYmxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlRXJyb3JGb3JtOyBjb250ZXh0OiB7JGltcGxpY2l0OiBub2RlUHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTRcIiAqbmdJZj1cIm5vZGVQcm9wZXJ0eT8uZXJyb3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5RXJyb3I7IGNvbnRleHQ6IHtwcm9wZXJ0eTogbm9kZVByb3BlcnR5LCBlZGl0OiB0cnVlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tdWx0aWxpbmVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHByb3BlcnRpZXM7IHRyYWNrQnk6IHRyYWNrQnlQcm9wZXJ0eVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd1Byb3BlcnR5OyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT3BlblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5TWFwOyBjb250ZXh0OiB7JGltcGxpY2l0OiBub2RlUHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48aGUtbWFwcy1kcmF3aW5nLWNvbmZpcm0gKm5nSWY9XCIhIW1hcERyYXdpbmdQcm9wZXJ0eVwiXG4gIFt2YWx1ZV09XCJtYXBEcmF3aW5nUHJvcGVydHkudmFsdWVcIiBbbW9kZXNdPVwibWFwRHJhd2luZ01vZGVzKG1hcERyYXdpbmdQcm9wZXJ0eSlcIlxuICAoY2xvc2VkKT1cIm9uTWFwRHJhd2luZ0Nsb3NlZCgkZXZlbnQpXCJcbj48L2hlLW1hcHMtZHJhd2luZy1jb25maXJtPlxuXG48aGUtYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm0gKm5nSWY9XCIhIWJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHlcIlxuICBbc2VhcmNoXT1cImJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkudmFsdWVcIlxuICBbc2VhcmNoQnldPVwiYmlibGlvZ3JhcGhpZXNTZWFyY2hLZXkoYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSlcIlxuICBbc2VhcmNoU291cmNlc109XCJiaWJsaW9ncmFwaGllc1NlYXJjaFNvdXJjZXNcIlxuICAoY2xvc2VkKT1cIm9uQmlibGlvZ3JhcGhpZXNTZWFyY2hDbG9zZWQoJGV2ZW50KVwiXG4+PC9oZS1iaWJsaW9ncmFwaGllcy1zZWFyY2gtY29uZmlybT5cblxuPG5nLXRlbXBsYXRlICNsYWJlbERlc2NyaXB0aW9uIGxldC1wcm9wZXJ0eT5cbiAgPHNwYW5cbiAgICBjbGFzcz1cInRyaWdnZXItcG9wb3ZlclwiXG4gICAgW25nYlBvcG92ZXJdPVwicHJvcGVydHkuc2NoZW1hPy5kZXNjcmlwdGlvblwiIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICB0cmlnZ2Vycz1cImhvdmVyXCIgcGxhY2VtZW50PVwicmlnaHRcIiBjb250YWluZXI9XCJib2R5XCJcbiAgPlxuICAgIDxzcGFuPnt7cHJvcGVydHkua2V5fX08L3NwYW4+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGFiZWxEZWZhdWx0IGxldC1wcm9wZXJ0eT5cbiAgPHNwYW4+e3twcm9wZXJ0eS5rZXl9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd1Byb3BlcnR5IGxldC1wcm9wZXJ0eT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc09wZW4gfHwgcHJvcGVydHkuY2xvc2VkVmlzaWJsZSkgJiYgIXByb3BlcnR5LmlzSGlkZGVuXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy02XCJcbiAgICAgIFtpZF09XCJwcm9wZXJ0eS5mdWxsS2V5ICsgJ18nICsgcHJvcGVydHkuaWRcIlxuICAgICAgW2NsYXNzLmlzLTEyXT1cInByb3BlcnR5LnByb3BlcnRpZXMubGVuZ3RoIHx8ICFwcm9wZXJ0eS5rZXlcIlxuICAgICAgW25nU3dpdGNoXT1cIiEhcHJvcGVydHkucHJvcGVydGllcy5sZW5ndGhcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW11bHRpbGluZSBpcy12YXJpYWJsZSBpcy0xXCIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtMyBweS0xXCIgKm5nSWY9XCJwcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbCBoYXMtdGV4dC1yaWdodC10YWJsZXQgaGFzLXRleHQtZWxsaXBzaXNcIlxuICAgICAgICAgICAgKmJpbmRPbmNlPVwicHJvcGVydHlcIlxuICAgICAgICAgICAgW2Zvcl09XCJwcm9wZXJ0eS5pZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5LnNjaGVtYT8uZGVzY3JpcHRpb24gJiYgZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGUgPyBsYWJlbERlc2NyaXB0aW9uIDogbGFiZWxEZWZhdWx0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtOSBweS0xXCIgW2NsYXNzLmlzLTEyXT1cIiFwcm9wZXJ0eS5rZXlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dEZvcm07IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGVkaXRhYmxlIHx8IGVycm9yc0VkaXRhYmxlKSAmJiAocHJvcGVydHkuaGFzRXJyb3IgfHwgcHJvcGVydHkuaGFzV2FybmluZylcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5RXJyb3I7IGNvbnRleHQ6IHtwcm9wZXJ0eTogcHJvcGVydHksIGVkaXQ6IGZhbHNlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbFwiICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCJcbiAgICAgICAgW2NsYXNzLmlzLWxpbmtdPVwiZXJyb3JNb2RlICYmIHByb3BlcnR5LmNoYW5nZWRcIlxuICAgICAgICBbY2xhc3MuaXMtZGFuZ2VyXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc0Vycm9yXCJcbiAgICAgICAgW2NsYXNzLmlzLXdhcm5pbmddPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgICAgIFtjbGFzcy5pcy1kZWZhdWx0XT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmICFwcm9wZXJ0eS5oYXNFcnJvciAmJiAhcHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcGVuLWdyb3VwIHBhbmVsLWhlYWRpbmcgcHktMFwiXG4gICAgICAgICAgKGNsaWNrKT1cInByb3BlcnR5LmlzT3BlbiA9ICFwcm9wZXJ0eS5pc09wZW5cIiBwb2ludGVyXG4gICAgICAgICAgW2NsYXNzLmlzLW9wZW5dPVwicHJvcGVydHkuaXNPcGVuXCJcbiAgICAgICAgICBbY2xhc3MuaGFzLXRleHQtd2hpdGVdPVwiKGVycm9yTW9kZSAmJiBwcm9wZXJ0eS5jaGFuZ2VkKSB8fCBwcm9wZXJ0eS5oYXNFcnJvciB8fCBwcm9wZXJ0eS5oYXNXYXJuaW5nXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW1vYmlsZSBpcy12Y2VudGVyZWRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0xIG15LTBcIj5cbiAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLWRvd25cIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFwcm9wZXJ0eS5pc09wZW5cIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1yaWdodFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwicHJvcGVydHkuaXNPcGVuXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2x1bW4gcHktMSBteS0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtc2l6ZS02XCI+e3twcm9wZXJ0eS5rZXl9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvcGVydHkuc2NoZW1hVHlwZVwiIGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0xIG15LTBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWdzIG1iLTAgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIG1iLTAgaXMtbGlnaHRcIj5UeXBlPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIG1iLTAgaXMtd2hpdGVcIj5cbiAgICAgICAgICAgICAgICAgIDxoZS1zY2hlbWEtdmVyc2lvbi1saW5rIGxpbmtDbGFzcz1cImlzLXNtYWxsXCIgW25vZGVdPVwieydAdHlwZSc6IHByb3BlcnR5LnNjaGVtYVR5cGV9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7cHJvcGVydHkuc2NoZW1hVHlwZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9oZS1zY2hlbWEtdmVyc2lvbi1saW5rPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGhlLXBvcG92ZXItY29uZmlybSBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgcHktMSBteS0wIHB4LTBcIlxuICAgICAgICAgICAgICAqbmdJZj1cImVkaXRhYmxlICYmICFlcnJvcnNFZGl0YWJsZVwiXG4gICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJSZW1vdmUgZ3JvdXBcIiBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICBbbWVzc2FnZV09XCInPHA+VGhpcyB3aWxsIHJlbW92ZSB0aGUgZ3JvdXAgY29tcGxldGVseS48L3A+JyArIChwcm9wZXJ0eS5pc1JlcXVpcmVkID8gJzxwPjx1Pldhcm5pbmc6IHRoaXMgZmllbGQgaXMgcmVxdWlyZWQuPC91PjwvcD4nIDogJycpICsgJzxwPkRvIHlvdSBjb25maXJtPzwvcD4nXCJcbiAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwicHgtM1wiXG4gICAgICAgICAgICAgIChjb25maXJtZWQpPVwicHJvcGVydHlDaGFuZ2VkKG51bGwsIHByb3BlcnR5KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvaGUtcG9wb3Zlci1jb25maXJtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJsb2NrIGlzLWJsb2NrIHAtMFwiICpuZ0lmPVwicHJvcGVydHkuaXNPcGVuXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcGVydHkuaXNBcnJheVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTMgcHQtNFwiICpuZ0lmPVwicHJvcGVydHkuZXJyb3JcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5RXJyb3I7IGNvbnRleHQ6IHtwcm9wZXJ0eTogcHJvcGVydHksIGVkaXQ6IHRydWV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwIHB5LTEgcHgtMlwiICpuZ0lmPVwiZWRpdGFibGUgJiYgIXByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgVG8gY2hhbmdlIHRoZSB7e3Byb3BlcnR5LmtleX19LCBwbGVhc2UgZGVsZXRlIGl0IGZpcnN0LCB0aGVuIGFkZCB0aGUgZmllbGQgYWdhaW5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5zY2hlbWE/LnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlbHAgcHktMSBweC0yXCIgKm5nU3dpdGNoQ2FzZT1cIidCaWJsaW9ncmFwaHknXCI+XG4gICAgICAgICAgICAgICAgICAgIFNlYXJjaCBieSBUaXRsZSBvciBEb2N1bWVudCBET0kgdG8gYXV0by1wb3B1bGF0ZSB0aGUgZmllbGRzIHVzaW5nIHRoZSBNZW5kZWxleSBjYXRhbG9ndWVcbiAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dOZXdQcm9wZXJ0eTsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTMgbXQtMVwiICpuZ0lmPVwiZXJyb3JzRWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUVycm9yRm9ybTsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1ncm91cCBweS0yIHB4LTMgbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW11bHRpbGluZSBtYi0wXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wMiBvZiBwcm9wZXJ0eS5wcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dQcm9wZXJ0eTsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcDJ9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTIgcHgtMyBtdC0yXCIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTFcIiAqbmdJZj1cImVycm9yc0VkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGVFcnJvckZvcm07IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wMiBvZiBwcm9wZXJ0eS5wcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTAgbXktNFwiICpuZ0lmPVwicHJvcDIua2V5XCJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCJwcm9wMi5mdWxsS2V5ICsgJ18nICsgcHJvcDIuaWRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1hcnJheS1udW1iZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIGlzLWRhcmtcIj57e3Byb3AyLmtleX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZSAmJiAhZXJyb3JzRWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIGlzLWluZm9cIiBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkdXBsaWNhdGVBcnJheUdyb3VwKHByb3BlcnR5LCBwcm9wMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCInRHVwbGljYXRlICcgKyBwbHVyYWxpemUocHJvcGVydHkua2V5LCAxKVwiIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJjbG9uZVwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIGlzLWxpZ2h0XCIgcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInByb3AyLmtleSAhPT0gJzAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnJheUdyb3VwVXAocHJvcGVydHksIHByb3AyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5nYlRvb2x0aXA9XCJNb3ZlIFVwXCIgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxvbmctYXJyb3ctYWx0LXVwXCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWcgaXMtbGlnaHRcIiBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicHJvcDIua2V5ICE9PSBwcm9wZXJ0eS5wcm9wZXJ0aWVzLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZUFycmF5R3JvdXBEb3duKHByb3BlcnR5LCBwcm9wMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiTW92ZSBEb3duXCIgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cImxvbmctYXJyb3ctYWx0LWRvd25cIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGUtcG9wb3Zlci1jb25maXJtIGNsYXNzPVwidGFnIGlzLWRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ2JUb29sdGlwXT1cIidSZW1vdmUgJyArIHBsdXJhbGl6ZShwcm9wZXJ0eS5rZXksIDEpXCIgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1cIlRoaXMgd2lsbCByZW1vdmUgdGhlIGdyb3VwIGNvbXBsZXRlbHkuIERvIHlvdSBjb25maXJtP1wiIHBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlybWVkKT1cInJlbW92ZUFycmF5R3JvdXAocHJvcGVydHksIHByb3AyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9oZS1wb3BvdmVyLWNvbmZpcm0+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93TmV3UHJvcGVydHk7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3AyfVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBtdC0yXCIgKm5nSWY9XCJlcnJvcnNFZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUVycm9yRm9ybTsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcDJ9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTQgbXQtMlwiICpuZ0lmPVwicHJvcDIuZXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb3BlcnR5RXJyb3I7IGNvbnRleHQ6IHtwcm9wZXJ0eTogcHJvcDIsIGVkaXQ6IHRydWV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb3BlcnR5LWdyb3VwIGNhcmQtY29udGVudCBwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lIG15LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wMyBvZiBwcm9wMi5wcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93UHJvcGVydHk7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3AzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgJiYgIWVycm9yc0VkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1kYXJrIGlzLW91dGxpbmVkIGlzLXNtYWxsXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQXJyYXlHcm91cChwcm9wZXJ0eSlcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInBsdXMtY2lyY2xlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+QWRkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0xXCI+e3twcm9wZXJ0eS5rZXkgfCBwbHVyYWxpemU6MX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGhlLW5vZGUtcmVjb21tZW5kYXRpb25zIGJ1dHRvbkNsYXNzPVwiaXMtc21hbGxcIlxuICAgICAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIiBbbm9kZUZpZWxkXT1cInByb3BlcnR5LmtleVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdFJlY29tbWVuZGF0aW9uKT1cIm9uU2VsZWN0UmVjb21tZW5kYXRpb24ocHJvcGVydHksICRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2hlLW5vZGUtcmVjb21tZW5kYXRpb25zPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRGb3JtIGxldC1wcm9wZXJ0eT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5LmtleVwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BlcnR5LnN1Z2dlc3Rpb25zPy50eXBlXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRTZWxlY3Q7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dElucHV0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRJbnB1dCBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0wXCIgW2NsYXNzLmhhcy1hZGRvbnNdPVwiaGFzQWRkb25zKHByb3BlcnR5KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCJcbiAgICAgIFtjbGFzcy5oYXMtaWNvbnMtcmlnaHRdPVwicHJvcGVydHkubG9hZGluZ1wiXG4gICAgPlxuICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQgaXMtc21hbGwgc2VhcmNoLWlucHV0XCJcbiAgICAgICAgW2NsYXNzLmlzLWRhcmtdPVwicHJvcGVydHkua2V5ID09PSAndHlwZSdcIlxuICAgICAgICBbY2xhc3MuaXMtbGlua109XCJlcnJvck1vZGUgJiYgcHJvcGVydHkuY2hhbmdlZFwiXG4gICAgICAgIFtjbGFzcy5pcy1kYW5nZXJdPVwiKCFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc0Vycm9yKSB8fCBpc1JlcXVpcmVkKHByb3BlcnR5KVwiXG4gICAgICAgIFtjbGFzcy5pcy13YXJuaW5nXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc1dhcm5pbmdcIlxuXG4gICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkudmFsdWVcIiAjcHJvcGVydHlNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICBbdHlwZV09XCJwcm9wZXJ0eS5zY2hlbWE/LnR5cGUgPT09ICdudW1iZXInID8gJ251bWJlcicgOiAnc3RyaW5nJ1wiXG4gICAgICAgIFtpZF09XCJwcm9wZXJ0eS5pZFwiXG4gICAgICAgIG5hbWU9XCJyYW5kb21uYW1lXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cIiFlZGl0YWJsZSB8fCAhcHJvcGVydHkuZWRpdGFibGUgfHwgcHJvcGVydHkuc2NoZW1hPy5pbnRlcm5hbFwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wZXJ0eS5wbGFjZWhvbGRlclwiXG4gICAgICAgIFthcHBUYWdzSW5wdXRdPVwie2VuYWJsZWQ6IGVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlICYmIHByb3BlcnR5LnNjaGVtYT8udHlwZSA9PT0gJ2FycmF5JywgaXRlbXM6IHByb3BlcnR5LnNjaGVtYT8uaXRlbXMsIGRlbGltaXRlcjogJzsnLCBhbGxvd0R1cGxpY2F0ZXM6IHRydWUsIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eS5wbGFjZWhvbGRlcn1cIlxuICAgICAgICAoY2hhbmdlKT1cInByb3BlcnR5Q2hhbmdlZCgkZXZlbnQudGFyZ2V0LnZhbHVlLCBwcm9wZXJ0eSlcIlxuXG4gICAgICAgIFtwYXR0ZXJuXT1cInByb3BlcnR5LnNjaGVtYT8ucGF0dGVyblwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJwcm9wZXJ0eS5mdWxsS2V5LmVuZHNXaXRoKCdpZCcpICYmIHByb3BlcnR5LmZ1bGxLZXkgIT09ICdpZCdcIlxuICAgICAgICBbbWluXT1cInByb3BlcnR5LnNjaGVtYT8ubWluaW11bVwiXG4gICAgICAgIFttYXhdPVwicHJvcGVydHkuc2NoZW1hPy5tYXhpbXVtXCJcblxuICAgICAgICBbbmdiVHlwZWFoZWFkXT1cInByb3BlcnR5U3VnZ2VzdChwcm9wZXJ0eS5mdWxsS2V5LCBwcm9wZXJ0eS5zdWdnZXN0aW9ucz8udHlwZSlcIlxuICAgICAgICBbcmVzdWx0VGVtcGxhdGVdPVwic3VnZ2VzdGlvblwiXG4gICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJmb3JtYXR0ZXJcIlxuICAgICAgICBbZm9jdXNGaXJzdF09XCJ0cnVlXCJcbiAgICAgICAgKGZvY3VzKT1cImVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlICYmIHR5cGVhaGVhZEZvY3VzKCRldmVudClcIlxuICAgICAgICAoc2VsZWN0SXRlbSk9XCJzdWdnZXN0aW9uU2VsZWN0ZWQoJGV2ZW50Lml0ZW0sIHByb3BlcnR5KVwiXG4gICAgICA+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbiBpcy1zbWFsbCBpcy1yaWdodCBoYXMtdGV4dC1ncmV5LWRhcmtcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFwcm9wZXJ0eS5sb2FkaW5nXCI+XG4gICAgICAgIDxmYS1pY29uIGljb249XCJzcGlubmVyXCIgW3B1bHNlXT1cInRydWVcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0QWRkb25zOyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxwIGNsYXNzPVwiaGVscCBpcy1kYW5nZXItbGlnaHRcIlxuICAgICpuZ0lmPVwiIXByb3BlcnR5Lmhhc0Vycm9yICYmIHByb3BlcnR5TW9kZWwuaW52YWxpZFwiXG4gID5cbiAgICA8c3BhbiAqYmluZE9uY2U9XCJwcm9wZXJ0eU1vZGVsLmVycm9yc1wiIFtpbm5lckhUTUxdPVwiZm9ybWF0UHJvcGVydHlFcnJvcihwcm9wZXJ0eU1vZGVsLmVycm9ycywgcHJvcGVydHkpXCI+PC9zcGFuPlxuICA8L3A+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0U2VsZWN0IGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTBcIiBbY2xhc3MuaGFzLWFkZG9uc109XCJoYXNBZGRvbnMocHJvcGVydHkpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoXCJcbiAgICAgICAgW2NsYXNzLmlzLWxpbmtdPVwiZXJyb3JNb2RlICYmIHByb3BlcnR5LmNoYW5nZWRcIlxuICAgICAgICBbY2xhc3MuaXMtZGFuZ2VyXT1cIighcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNFcnJvcikgfHwgaXNSZXF1aXJlZChwcm9wZXJ0eSlcIlxuICAgICAgICBbY2xhc3MuaXMtd2FybmluZ109XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNXYXJuaW5nXCJcbiAgICAgID5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIFsobmdNb2RlbCldPVwicHJvcGVydHkudmFsdWVcIiAjcHJvcGVydHlNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgIFtpZF09XCJwcm9wZXJ0eS5pZFwiXG4gICAgICAgICAgbmFtZT1cInJhbmRvbW5hbWVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGFibGUgfHwgIXByb3BlcnR5LmVkaXRhYmxlIHx8IHByb3BlcnR5LnNjaGVtYT8uaW50ZXJuYWxcIlxuICAgICAgICAgIChjaGFuZ2UpPVwicHJvcGVydHlDaGFuZ2VkKCRldmVudC50YXJnZXQudmFsdWUsIHByb3BlcnR5KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0PC9vcHRpb24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqYmluZE9uY2U9XCJwcm9wZXJ0eS5zdWdnZXN0aW9uc1wiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgcHJvcGVydHkuc3VnZ2VzdGlvbnMudmFsdWVzOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBbdmFsdWVdPVwidmFsdWVcIj57e3ZhbHVlfX08L29wdGlvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRBZGRvbnM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVtb3ZlRmllbGRBZGRvbiBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCIhZXJyb3JzRWRpdGFibGUgJiYgIXByb3BlcnR5LmlzUmVxdWlyZWRcIj5cbiAgICA8YSBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHRpdGxlPVwiUmVtb3ZlIGZpZWxkXCJcbiAgICAgIFtjbGFzcy5pcy1vdXRsaW5lZF09XCIhcHJvcGVydHkuY2hhbmdlZCAmJiAocHJvcGVydHkuaGFzRXJyb3IgfHwgcHJvcGVydHkuaGFzV2FybmluZylcIlxuICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNFcnJvclwiXG4gICAgICBbY2xhc3MuaXMtd2FybmluZ109XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNXYXJuaW5nXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHByb3BlcnR5Q2hhbmdlZChudWxsLCBwcm9wZXJ0eSlcIlxuICAgID5cbiAgICAgIDxmYS1pY29uIGljb249XCJ0aW1lc1wiPjwvZmEtaWNvbj5cbiAgICA8L2E+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dEFkZG9ucyBsZXQtcHJvcGVydHk+XG4gIDxoZS1wb3BvdmVyLWNvbmZpcm0gY2xhc3M9XCJjb250cm9sXCJcbiAgICAqbmdJZj1cImVuYWJsZUFkZEVycm9yKHByb3BlcnR5KVwiXG4gICAgcG9zaXRpb249XCJsZWZ0XCJcbiAgICBbY29udGVudF09XCJwb3B1cEVycm9yRm9ybVwiXG4gICAgKGNvbmZpcm1lZCk9XCJhZGRFcnJvcihwcm9wZXJ0eSwgJGV2ZW50KVwiXG4gID5cbiAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiPlxuICAgICAgPGZhLWljb24gaWNvbj1cImNvbW1lbnRzXCI+PC9mYS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9oZS1wb3BvdmVyLWNvbmZpcm0+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcGVydHkuc2NoZW1hVHlwZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiU2NoZW1hVHlwZS5BY3RvclwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWN0b3JBZGRvbnM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTY2hlbWFUeXBlLkN5Y2xlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjeWNsZUFkZG9uczsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpiaW5kT25jZT1cInByb3BlcnR5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwibWFwRHJhd2luZ01vZGVzKHByb3BlcnR5KS5sZW5ndGhcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHRpdGxlPVwiUGljayBvbiBNYXBcIlxuICAgICAgICAgIChjbGljayk9XCJtYXBEcmF3aW5nUHJvcGVydHkgPSBwcm9wZXJ0eVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwibWFwLW1hcmtlZC1hbHRcIj48L2ZhLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiYmlibGlvZ3JhcGhpZXNTZWFyY2hLZXkocHJvcGVydHkpXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIkFkdmFuY2VkIFNlYXJjaFwiXG4gICAgICAgICAgKGNsaWNrKT1cImJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkgPSBwcm9wZXJ0eVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwic2VhcmNoXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlbW92ZUZpZWxkQWRkb247IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImFkZFByb3BlcnR5RW5hYmxlZChwcm9wZXJ0eSlcIj5cbiAgICA8YSBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1kYW5nZXJcIiB0aXRsZT1cIkFkZCBmaWVsZFwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBhZGRNaXNzaW5nUHJvcGVydHkocHJvcGVydHkpXCJcbiAgICA+XG4gICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1jaXJjbGVcIj48L2ZhLWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5BZGQ8L3NwYW4+XG4gICAgPC9hPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImlzUmVxdWlyZWQocHJvcGVydHkpXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLWRhbmdlclwiIFtmb3JdPVwicHJvcGVydHkuaWRcIlxuICAgICAgbmdiVG9vbHRpcD1cIlRoaXMgZmllbGQgaXMgcmVxdWlyZWRcIiBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID5cbiAgICAgIDxmYS1pY29uIGljb249XCJleGNsYW1hdGlvbi10cmlhbmdsZVwiPjwvZmEtaWNvbj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BlcnR5LmV4dGVybmFsVXJsPy51cmxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPGEgY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIlxuICAgICAgICBbaHJlZl09XCJwcm9wZXJ0eS5leHRlcm5hbFVybC51cmwgKyAocHJvcGVydHkuZXh0ZXJuYWxVcmwudXJsUGFyYW1WYWx1ZSA/IHByb3BlcnR5LnZhbHVlIDogJycpXCJcbiAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgW3RpdGxlXT1cInByb3BlcnR5LmV4dGVybmFsVXJsLnRpdGxlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieydpcy1kYXJrIGlzLW91dGxpbmVkJzogcHJvcGVydHkua2V5ID09PSAndHlwZSd9XCJcbiAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwicHJvcGVydHkuZXh0ZXJuYWxVcmwudXJsUGFyYW1WYWx1ZSAmJiAhcHJvcGVydHkudmFsdWUgPyB0cnVlIDogbnVsbFwiXG4gICAgICA+XG4gICAgICAgIDxmYS1pY29uIFtpY29uXT1cInByb3BlcnR5LmV4dGVybmFsVXJsLmljb24gfHwgJ2V4dGVybmFsLWxpbmstYWx0J1wiPjwvZmEtaWNvbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1bml0Q29udmVydGVyRW5hYmxlZChwcm9wZXJ0eSlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHRpdGxlPVwiT3BlbiBjYWxjdWxhdG9yXCJcbiAgICAgICAgW25nYlBvcG92ZXJdPVwiY29udmVydFVuaXRzXCIgYXV0b0Nsb3NlPVwib3V0c2lkZVwiXG4gICAgICAgIHRyaWdnZXJzPVwibWFudWFsXCIgI3A9XCJuZ2JQb3BvdmVyXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuVW5pdENvbnZlcnRlcihwLCBwcm9wZXJ0eSlcIlxuICAgICAgPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiPjwvZmEtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYWN0b3JBZGRvbnMgbGV0LXByb3BlcnR5PlxuICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwicHJvcGVydHkua2V5ID09PSAnQGlkJ1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIkFkZCBteXNlbGYgYXMgQWN0b3JcIlxuICAgICAgKGNsaWNrKT1cInNldFVzZXJBY3RvcklkKHByb3BlcnR5KVwiXG4gICAgPlxuICAgICAgPGZhLWljb24gW2ljb25dPVwiWydmYXInLCAnaWQtYmFkZ2UnXVwiPjwvZmEtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2N5Y2xlQWRkb25zIGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cInByb3BlcnR5LmtleSA9PT0gJ2N5Y2xlRHVyYXRpb24nXCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHRpdGxlPVwiQ2FsY3VsYXRlIHZhbHVlIGZyb20gc3RhcnREYXRlIGFuZCBlbmREYXRlXCJcbiAgICAgIChjbGljayk9XCJjYWxjdWxhdGVDeWNsZUR1cmF0aW9uKHByb3BlcnR5KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkKHByb3BlcnR5KVwiXG4gICAgPlxuICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIj48L2ZhLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwicHJvcGVydHkua2V5ID09PSAnc3RhcnREYXRlJ1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIkNhbGN1bGF0ZSB2YWx1ZSBmcm9tIGVuZERhdGUgYW5kIGN5Y2xlRHVyYXRpb25cIlxuICAgICAgKGNsaWNrKT1cImNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlKHByb3BlcnR5KVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlRW5hYmxlZChwcm9wZXJ0eSlcIlxuICAgID5cbiAgICAgIDxmYS1pY29uIGljb249XCJjYWxjdWxhdG9yXCI+PC9mYS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd05ld1Byb3BlcnR5IGxldC1wcm9wZXJ0eT5cbiAgPGhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCIgKm5nSWY9XCJlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSAmJiAocHJvcGVydHkuYWRkUHJvcGVydHlFbmFibGVkIHx8IGRlZXBFZGl0YWJsZSk7IGVsc2UgcGFkZGVyXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJweS0zIHB4LTQgaXMtZmxleC1ncm93LTFcIiAoc3VibWl0KT1cImFkZFByb3BlcnR5KHByb3BlcnR5KVwiIG5vdmFsaWRhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaXMtaG9yaXpvbnRhbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtbGFiZWwgaXMtc21hbGxcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJsYWJlbFwiIFtmb3JdPVwicHJvcGVydHkuaWQgKyAnX25ldydcIj5cbiAgICAgICAgICAgIDxzcGFuPkFkZCBuZXcgZmllbGQ8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGlzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5Lm5ld1Byb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbaWRdPVwicHJvcGVydHkuaWQgKyAnX25ldydcIlxuICAgICAgICAgICAgICAgIG5hbWU9XCJyYW5kb21uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhbmQgc2VsZWN0IGZpZWxkIGZyb20gcmVzdWx0c1wiXG5cbiAgICAgICAgICAgICAgICBbbmdiVHlwZWFoZWFkXT1cInN1Z2dlc3ROZXdQcm9wZXJ0eShwcm9wZXJ0eS5mdWxsS2V5KVwiXG4gICAgICAgICAgICAgICAgW3Jlc3VsdFRlbXBsYXRlXT1cInN1Z2dlc3Rpb25cIlxuICAgICAgICAgICAgICAgIFtpbnB1dEZvcm1hdHRlcl09XCJmb3JtYXR0ZXJcIlxuICAgICAgICAgICAgICAgIFtmb2N1c0ZpcnN0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBbZWRpdGFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIChmb2N1cyk9XCJ0eXBlYWhlYWRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwcm9wZXJ0eS5uZXdQcm9wZXJ0eSB8fCAhcHJvcGVydHkubmV3UHJvcGVydHkubmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1c1wiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5BZGQ8L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2hlYWRlcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcHJvcGVydHlFcnJvciBsZXQtcHJvcGVydHk9XCJwcm9wZXJ0eVwiIGxldC1lZGl0PVwiZWRpdFwiPlxuICA8cCBjbGFzcz1cImhlbHBcIlxuICAgIFtjbGFzcy5pcy1kYW5nZXJdPVwicHJvcGVydHkuaGFzRXJyb3JcIlxuICAgIFtjbGFzcy5pcy13YXJuaW5nXT1cInByb3BlcnR5Lmhhc1dhcm5pbmdcIlxuICAgICpuZ0lmPVwicHJvcGVydHkuZXJyb3JcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJpcy1wcmUtd3JhcFwiICpiaW5kT25jZT1cInByb3BlcnR5LmVycm9yXCIgW2lubmVySFRNTF09XCJwcm9wZXJ0eS5lcnJvci5tZXNzYWdlXCI+PC9zcGFuPlxuICAgIDxhIGNsYXNzPVwicGwtMlwiXG4gICAgICAqbmdJZj1cImVkaXQgJiYgZXJyb3JzRWRpdGFibGUgJiYgcHJvcGVydHkuZXJyb3IuaW5kZXggPj0gMFwiXG4gICAgICAoY2xpY2spPVwiZWRpdEVycm9yKHByb3BlcnR5KVwiXG4gICAgPlxuICAgICAgPGZhLWljb24gY2xhc3M9XCJwci0yXCIgaWNvbj1cImVkaXRcIj48L2ZhLWljb24+XG4gICAgICA8c3Bhbj5FZGl0PC9zcGFuPlxuICAgIDwvYT5cbiAgICA8YSBjbGFzcz1cInBsLTJcIlxuICAgICAgKm5nSWY9XCIocHJvcGVydHkuaGFzV2FybmluZyB8fCBlcnJvcnNFZGl0YWJsZSkgJiYgcHJvcGVydHkuZXJyb3IuaW5kZXggPj0gMFwiXG4gICAgICAoY2xpY2spPVwicmVzb2x2ZUVycm9yKHByb3BlcnR5KVwiXG4gICAgPlxuICAgICAgPGZhLWljb24gY2xhc3M9XCJwci0yXCIgaWNvbj1cImNoZWNrXCI+PC9mYS1pY29uPlxuICAgICAgPHNwYW4+UmVzb2x2ZWQ8L3NwYW4+XG4gICAgPC9hPlxuICA8L3A+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Byb3BlcnR5TWFwIGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cInBhbmVsIGlzLWRlZmF1bHRcIiAqbmdJZj1cInNob3dNYXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwib3Blbi1ncm91cCBwYW5lbC1oZWFkaW5nIHB5LTBcIlxuICAgICAgKGNsaWNrKT1cIm1hcFZpc2libGUgPSAhbWFwVmlzaWJsZVwiIHBvaW50ZXJcbiAgICAgIFtjbGFzcy5pcy1vcGVuXT1cIm1hcFZpc2libGVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW1vYmlsZSBpcy12Y2VudGVyZWQgbWItMFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgcHktMSBteS0wXCI+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cImFuZ2xlLWRvd25cIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFtYXBWaXNpYmxlXCI+PC9mYS1pY29uPlxuICAgICAgICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1yaWdodFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwibWFwVmlzaWJsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbiBweS0xIG15LTBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXNpemUtNlwiPlZpZXcgb24gTWFwPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYmxvY2sgaXMtYmxvY2sgcC0wXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhbWFwVmlzaWJsZVwiPlxuICAgICAgPGhlLXNpdGVzLW1hcHMgW3NpdGVzXT1cIltub2RlXVwiIFtzaG93Tm90aWNlXT1cImZhbHNlXCI+PC9oZS1zaXRlcy1tYXBzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbm9kZUVycm9yRm9ybSBsZXQtcHJvcGVydHk+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wZXJ0eS5uZXdFcnJvciAmJiBwcm9wZXJ0eS5lZGl0YWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsXCI+XG4gICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInByb3BlcnR5Lm5ld0Vycm9yLmxldmVsXCI+XG4gICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ1bmRlZmluZWRcIj5TZWxlY3QgTGV2ZWw8L29wdGlvbj5cbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcnJvclwiPkVycm9yPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwid2FybmluZ1wiPldhcm5pbmc8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cInRleHRhcmVhIGlzLXNtYWxsXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5Lm5ld0Vycm9yLm1lc3NhZ2VcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgeW91ciBtZXNzYWdlIGhlcmVcIlxuICAgICAgICAgIHJvd3M9XCIxXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJvcGVydHkubmV3RXJyb3IubGV2ZWwgfHwgIXByb3BlcnR5Lm5ld0Vycm9yLm1lc3NhZ2VcIlxuICAgICAgICAgIChjbGljayk9XCJhZGRFcnJvcihwcm9wZXJ0eSwgcHJvcGVydHkubmV3RXJyb3IpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxmYS1pY29uIGljb249XCJwbHVzLWNpcmNsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInBsLTJcIj5BZGQ8L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwb3B1cEVycm9yRm9ybSBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiZGF0YS5sZXZlbFwiPlxuICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInVuZGVmaW5lZFwiPlNlbGVjdCBMZXZlbDwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcnJvclwiPkVycm9yPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIndhcm5pbmdcIj5XYXJuaW5nPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhLm1lc3NhZ2VcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgbWVzc2FnZSBoZXJlXCJcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N1Z2dlc3Rpb24gbGV0LXI9XCJyZXN1bHRcIiBsZXQtdD1cInRlcm1cIj5cbiAgPG5nYi1oaWdobGlnaHRcbiAgICBbdGl0bGVdPVwici5iaWJsaW9ncmFwaHk/LnRpdGxlIHx8IHIuYmlibGlvZ3JhcGh5Py5kb2N1bWVudERPSSB8fCByLmJpYmxpb2dyYXBoeT8uc2NvcHVzIHx8IHIubmFtZVwiXG4gICAgW3Jlc3VsdF09XCJyLmJpYmxpb2dyYXBoeT8udGl0bGUgfHwgci5iaWJsaW9ncmFwaHk/LmRvY3VtZW50RE9JIHx8IHIuYmlibGlvZ3JhcGh5Py5zY29wdXMgfHwgci5uYW1lXCJcbiAgICBbdGVybV09XCJ0XCJcbiAgPjwvbmdiLWhpZ2hsaWdodD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcGFkZGVyPlxuICA8ZGl2IGNsYXNzPVwicHQtMVwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb252ZXJ0VW5pdHMgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtdGVybT1cInRlcm1cIiBsZXQtdW5pdHM9XCJ1bml0c1wiPlxuICA8aGUtdW5pdC1jb252ZXJ0ZXIgW3ZhbHVlXT1cInZhbHVlXCIgW3Rlcm1dPVwidGVybVwiIFt0b1VuaXRzXT1cInVuaXRzXCI+PC9oZS11bml0LWNvbnZlcnRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
508
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZXMvZmlsZXMtZm9ybS9maWxlcy1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtL2ZpbGVzLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRyxPQUFPLEtBQUssU0FBUyxNQUFNLFdBQVcsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHekQsT0FBTyxFQUFzQixVQUFVLEVBQUUsUUFBUSxFQUFrQyxNQUFNLHNCQUFzQixDQUFDO0FBRWhILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5QyxPQUFPLEVBRUwsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQ3hDLHFCQUFxQixFQUNyQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQ2xELG9CQUFvQixFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFDN0QsWUFBWSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFDakgsNkJBQTZCLEVBQUUsc0JBQXNCLEVBQ3JELDhCQUE4QixFQUFFLHVCQUF1QixFQUFFLGFBQWEsRUFDdkUsTUFBTSxxQkFB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QUFPLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7O2dIQXpoQlUsa0JBQWtCO29HQUFsQixrQkFBa0IsMGFDL0UvQix3dTFCQXdtQkE7NEZEemhCYSxrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSw2QkFBNkI7b0JBQzFDLFNBQVMsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2lCQUMzQzs0SkFHUyxPQUFPO3NCQURkLEtBQUs7Z0JBR0UsTUFBTTtzQkFEYixLQUFLO2dCQUdDLElBQUk7c0JBRFYsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7Z0JBTUMsUUFBUTtzQkFEZCxLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQU1DLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsOEJBQThCO3NCQURwQyxLQUFLO2dCQUlFLFVBQVU7c0JBRGpCLE1BQU07Z0JBR0MsaUJBQWlCO3NCQUR4QixNQUFNO2dCQUdDLGNBQWM7c0JBRHJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtZXJnZU1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgKiBhcyBwbHVyYWxpemUgZnJvbSAncGx1cmFsaXplJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuY29uc3QgZ2V0ID0gcmVxdWlyZSgnbG9kYXNoLmdldCcpO1xuY29uc3Qgc2V0ID0gcmVxdWlyZSgnbG9kYXNoLnNldCcpO1xuaW1wb3J0IHsgSlNPTiBhcyBIZXN0aWFKc29uLCBTY2hlbWFUeXBlLCBOb2RlVHlwZSwgQmlibGlvZ3JhcGh5LCBTb3VyY2UsIFByb3BlcnR5IH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgZGVmaW5pdGlvbnMsIGRlZmluaXRpb24gfSBmcm9tICdAaGVzdGlhLWVhcnRoL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgSUVycm9yUHJvcGVydHksIElOb2RlUHJvcGVydHksXG4gIGZvcm1hdFByb3BlcnR5RXJyb3IsIHByb3BlcnR5RXJyb3IsIGhhc0Vycm9yLCBoYXNXYXJuaW5nLFxuICBzdWdnZXN0aW9uVHlwZSwgZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICByZWN1cnNpdmVQcm9wZXJ0aWVzLCB0eXBlVG9OZXdQcm9wZXJ0eSwgcHJvcGVydHlJZCxcbiAgaXNBZGRQcm9wZXJ0eUVuYWJsZWQsIG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzLCBzb3J0UHJvcGVydGllcyxcbiAgZ3JvdXBDaGFuZ2VkLCBwYXJlbnRQcm9wZXJ0eSwgc2libGluZ1Byb3BlcnR5LCB1cGRhdGVQcm9wZXJ0aWVzLCByZWZyZXNoUHJvcGVydHlLZXlzLCBrZXlUb0RhdGFQYXRoLCBmaW5kUHJvcGVydHksXG4gIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkLCBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uLFxuICBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQsIGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlLCBwYXJzZU5ld1ZhbHVlXG59IGZyb20gJy4uL2ZpbGVzLWZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgSVZhbGlkYXRpb25FcnJvciwgZXJyb3JIYXNFcnJvciwgZXJyb3JIYXNXYXJuaW5nLCBmaWx0ZXJFcnJvciwgZm9ybWF0RXJyb3IgfSBmcm9tICcuLi9maWxlcy1lcnJvci5tb2RlbCc7XG5pbXBvcnQgeyBIZVVzZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3VzZXJzL3VzZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hdGNoVHlwZSwgbWF0Y2hQaHJhc2VRdWVyeSwgbWF0Y2hQaHJhc2VQcmVmaXhRdWVyeSwgbWF0Y2hCb29sUHJlZml4UXVlcnkgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLm1vZGVsJztcbmltcG9ydCB7IHNhZmVKU09OUGFyc2UsIGNvcHlPYmplY3QgfSBmcm9tICcuLi8uLi9jb21tb24vdXRpbHMnO1xuXG5jb25zdCBNSU5fVFlQRUFIRUFEX0xFTkdUSCA9IDI7XG5jb25zdCBwb3B1bGF0ZVRlcm1GaWVsZHMgPSBbXG4gICd0ZXJtVHlwZScsICd1bml0cydcbl07XG5jb25zdCBwb3B1bGF0ZVRlcm1EZWZhdWx0UHJvcGVydGllcyA9IFtcbiAgJ2RlZmF1bHRQcm9wZXJ0aWVzLnRlcm0ubmFtZScsICdkZWZhdWx0UHJvcGVydGllcy50ZXJtLnVuaXRzJywgJ2RlZmF1bHRQcm9wZXJ0aWVzLnZhbHVlJ1xuXTtcblxuY29uc3QgZm9ybWF0UHJvcGVydHkgPSAocHJvcDogUHJvcGVydHkpID0+ICh7XG4gICdAdHlwZSc6IFNjaGVtYVR5cGUuUHJvcGVydHksXG4gIC4uLnByb3AsXG4gIHRlcm06IHtcbiAgICAnQHR5cGUnOiBOb2RlVHlwZS5UZXJtLFxuICAgIC4uLnByb3AudGVybVxuICB9XG59KTtcblxuY29uc3QgZm9ybWF0U3VnZ2VzdGlvbiA9ICh7IGRlZmF1bHRQcm9wZXJ0aWVzLCAuLi5ub2RlIH06IGFueSkgPT4gKHtcbiAgLi4ubm9kZSxcbiAgLi4uKGRlZmF1bHRQcm9wZXJ0aWVzPy5sZW5ndGggPyB7IGRlZmF1bHRQcm9wZXJ0aWVzOiBkZWZhdWx0UHJvcGVydGllcy5tYXAoZm9ybWF0UHJvcGVydHkpIH0gOiB7fSlcbn0pO1xuXG5jb25zdCBmb3JtYXRMaW5rTm9kZXNQcmVmaXggPSAnTGluayB3aXRoJztcblxuLy8gcGF0Y2ggZXJyb3Igd2hlbiBsaW5rIGlzIG5vdCB3b3JraW5nIGNvcnJlY3RseVxuY29uc3QgY2xlYW5OZXdWYWx1ZSA9IHZhbHVlID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuaWRcbiAgICA/IHsgLi4udmFsdWUsIGlkOiBjbGVhbk5ld1ZhbHVlKHZhbHVlLmlkKSB9XG4gICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgPyB2YWx1ZS5zdGFydHNXaXRoKGZvcm1hdExpbmtOb2Rlc1ByZWZpeClcbiAgICA/IHZhbHVlLnNwbGl0KCc6JylbMV0udHJpbSgpXG4gICAgOiB2YWx1ZVxuICAgIDogdmFsdWU7XG5cbmNvbnN0IGZvcm1hdExpbmtOb2Rlc1N1Z2dlc3Rpb25zID0gKG5vZGVNYXA6IHsgW3R5cGUgaW4gTm9kZVR5cGVdPzogc3RyaW5nW10gfSwgdHlwZTogTm9kZVR5cGUpID0+XG4gIChub2RlTWFwW3R5cGVdIHx8IFtdKS5tYXAoaWQgPT4gKHsgdHlwZSwgaWQsIG5hbWU6IGAke2Zvcm1hdExpbmtOb2Rlc1ByZWZpeH0gJHt0eXBlfTogJHtpZH1gIH0pKTtcblxudHlwZSBzdWdnZXN0RnVuYyA9ICh0ZXJtOiBzdHJpbmcsIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcblxuY29uc3QgaW5zZXJ0UHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBrZXk6IHN0cmluZywgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgZXhpc3RpbmdQcm9wZXJ0eUluZGV4ID0gcHJvcGVydGllcy5maW5kSW5kZXgodiA9PiB2LmZ1bGxLZXkgPT09IGtleSk7XG4gIGV4aXN0aW5nUHJvcGVydHlJbmRleCA+PSAwID8gKHByb3BlcnRpZXNbZXhpc3RpbmdQcm9wZXJ0eUluZGV4XSA9IHByb3BlcnR5KSA6IHByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7XG4gIHByb3BlcnRpZXMuc29ydChzb3J0UHJvcGVydGllcyk7XG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaGUtZmlsZXMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlcy1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZXMtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVzRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByaXZhdGUgc2NoZW1hcz86IGRlZmluaXRpb25zO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub2RlPzogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPjtcbiAgQElucHV0KClcbiAgcHVibGljIG5vZGVNYXA6IHsgW3R5cGUgaW4gTm9kZVR5cGVdPzogc3RyaW5nW10gfSA9IHt9O1xuICAvKipcbiAgICogQWxsb3cgZWRpdGluZyBub2RlcyAoYGZhbHNlYCBmb3IgcmVhZG9ubHkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVkaXRhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvck1vZGUgPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcHVibGljIGRlZXBFZGl0YWJsZSA9IHRydWU7XG4gIC8qKlxuICAgKiBDYW4gZWRpdCBlcnJvcnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXJyb3JzRWRpdGFibGUgPSBmYWxzZTtcbiAgLyoqXG4gICAqIFdoZW4gc2VsZWN0aW5nIHRlcm1zLCB3aWxsIHNob3cgZGVmYXVsdCBwcm9wZXJ0aWVzIG9yIG5vdC5cbiAgICogU2hvdWxkIGJlIGBmYWxzZWAgd2hlbiB1c2luZyBzY2hlbWEgdmFsaWRhdGlvbiwgYXMgb25seSB0aGUgYG5hbWVgIHdvdWxkIGJlIGFkZGVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dTdWdnZXN0ZWREZWZhdWx0UHJvcGVydGllcyA9IHRydWU7XG5cbiAgQE91dHB1dCgpXG4gIHByaXZhdGUgbm9kZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBrZXk6IHN0cmluZzsgdmFsdWU6IGFueSB9PigpO1xuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBub2RlRXJvcnJSZXNvbHZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICBAT3V0cHV0KClcbiAgcHJpdmF0ZSBub2RlRXJyb3JBZGRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SVZhbGlkYXRpb25FcnJvcj4oKTtcblxuICBwdWJsaWMgTm9kZVR5cGUgPSBOb2RlVHlwZTtcbiAgcHVibGljIFNjaGVtYVR5cGUgPSBTY2hlbWFUeXBlO1xuICBwdWJsaWMgaXNPcGVuID0gdHJ1ZTtcbiAgcHVibGljIG1hcFZpc2libGUgPSBmYWxzZTtcbiAgcHVibGljIHBsdXJhbGl6ZSA9IHBsdXJhbGl6ZTtcbiAgcHVibGljIGZvcm1hdFByb3BlcnR5RXJyb3IgPSBmb3JtYXRQcm9wZXJ0eUVycm9yO1xuICBwdWJsaWMgbWFwRHJhd2luZ1Byb3BlcnR5PzogSU5vZGVQcm9wZXJ0eTtcbiAgcHVibGljIGJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHk/OiBJTm9kZVByb3BlcnR5O1xuICBwdWJsaWMgbm9kZVByb3BlcnR5PzogSU5vZGVQcm9wZXJ0eTtcbiAgcHVibGljIHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSA9IFtdO1xuXG4gIHB1YmxpYyBmb3JtYXR0ZXIgPSAodmFsdWU6IGFueSkgPT5cbiAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gKCdiaWJsaW9ncmFwaHknIGluIHZhbHVlID8gdmFsdWUuYmlibGlvZ3JhcGh5Py50aXRsZSA6IHZhbHVlLm5hbWUpIDogdmFsdWU7XG5cbiAgcHVibGljIHN1Z2dlc3ROZXdQcm9wZXJ0eSA9IChmdWxsS2V5OiBzdHJpbmcpID0+ICh0ZXh0JDogT2JzZXJ2YWJsZTxzdHJpbmc+KSA9PlxuICAgIHRleHQkLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKFxuICAgICAgICB0ZXJtID0+IG9mKHRoaXMubmV3UHJvcGVydGllcyhmaW5kUHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBmdWxsS2V5KSB8fCB0aGlzLm5vZGVQcm9wZXJ0eSwgdGVybSkpXG4gICAgICApXG4gICAgKTtcblxuICBwcml2YXRlIHN1Z2dlc3RFeGlzdGluZ05vZGUgPSAodHlwZTogTm9kZVR5cGUsIHRlcm06IHN0cmluZywgdW5pcXVlS2V5ID0gJ0BpZCcpID0+XG4gICAgdGVybS5sZW5ndGggPCBNSU5fVFlQRUFIRUFEX0xFTkdUSCA/XG4gICAgICBvZihbXSkgOlxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN1Z2dlc3QodGVybSwgdHlwZSwgW10sIHtcbiAgICAgICAgYm9vbDoge1xuICAgICAgICAgIG11c3Q6IFttYXRjaFR5cGUodHlwZSldLFxuICAgICAgICAgIHNob3VsZDogW1xuICAgICAgICAgICAgbWF0Y2hQaHJhc2VRdWVyeSh0ZXJtLCAxMDAsIHVuaXF1ZUtleSksXG4gICAgICAgICAgICBtYXRjaFBocmFzZVByZWZpeFF1ZXJ5KHRlcm0sIDIwLCB1bmlxdWVLZXkpLFxuICAgICAgICAgICAgbWF0Y2hCb29sUHJlZml4UXVlcnkodGVybSwgMTAsIHVuaXF1ZUtleSlcbiAgICAgICAgICBdLFxuICAgICAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgICAgIH1cbiAgICAgIH0sIDUsIHRoaXMuc3VnZ2VzdFRlcm1GaWVsZHMpO1xuXG4gIHByaXZhdGUgc3VnZ2VzdE5vZGUgPSAodHlwZTogTm9kZVR5cGUsIHN1Z2dlc3REZWZhdWx0Pzogc3VnZ2VzdEZ1bmMpID0+ICh0ZXJtOiBzdHJpbmcsIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PlxuICAgIChwcm9wZXJ0eS5zdWdnZXN0aW9ucz8uaXNVbmlxdWVLZXkgPyAoXG4gICAgICB0aGlzLnN1Z2dlc3RFeGlzdGluZ05vZGUodHlwZSwgdGVybSwgcHJvcGVydHkuc3VnZ2VzdGlvbnMuaXNVbmlxdWVLZXkpXG4gICAgKSA6IChcbiAgICAgIHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5pc0xpbmtOb2RlID9cbiAgICAgICAgb2YoZm9ybWF0TGlua05vZGVzU3VnZ2VzdGlvbnModGhpcy5ub2RlTWFwLCB0eXBlKSkgOiAoXG4gICAgICAgICAgc3VnZ2VzdERlZmF1bHQgPyBzdWdnZXN0RGVmYXVsdCh0ZXJtLCBwcm9wZXJ0eSkgOiBvZihbXSlcbiAgICAgICAgKVxuICAgICkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMubWFwKGZvcm1hdFN1Z2dlc3Rpb24pKVxuICAgICk7XG5cbiAgcHJpdmF0ZSBzdWdnZXN0ZXI6IHtcbiAgICBbdHlwZSBpbiBzdWdnZXN0aW9uVHlwZV0/OiBzdWdnZXN0RnVuYztcbiAgfSA9IHtcbiAgICBkZWZhdWx0OiAodGVybSwgcHJvcGVydHkpID0+IG9mKFxuICAgICAgKHByb3BlcnR5Py5zdWdnZXN0aW9ucz8udmFsdWVzIHx8IFtdKVxuICAgICAgICAubWFwKHYgPT4gYCR7dn1gKVxuICAgICAgICAuZmlsdGVyKHYgPT4gdi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSkpXG4gICAgICAgIC5tYXAobmFtZSA9PiAoeyBuYW1lIH0pKVxuICAgICksXG4gICAgW05vZGVUeXBlLkFjdG9yXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5BY3RvciksXG4gICAgW05vZGVUeXBlLkN5Y2xlXTogdGhpcy5zdWdnZXN0Tm9kZShOb2RlVHlwZS5DeWNsZSksXG4gICAgW05vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnRdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLkltcGFjdEFzc2Vzc21lbnQpLFxuICAgIFtOb2RlVHlwZS5PcmdhbmlzYXRpb25dOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLk9yZ2FuaXNhdGlvbiksXG4gICAgW05vZGVUeXBlLlNpdGVdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLlNpdGUpLFxuICAgIFtOb2RlVHlwZS5Tb3VyY2VdOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLlNvdXJjZSwgKHRlcm0sIHsga2V5IH0pID0+XG4gICAgICB0ZXJtLmxlbmd0aCA8IE1JTl9UWVBFQUhFQURfTEVOR1RIID9cbiAgICAgICAgb2YoW10pIDpcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN1Z2dlc3RTb3VyY2UodGVybSwgNSwgW2BiaWJsaW9ncmFwaHkuJHtrZXl9YF0sIFtgYmlibGlvZ3JhcGh5LiR7a2V5fWBdKVxuICAgICksXG4gICAgW05vZGVUeXBlLlRlcm1dOiB0aGlzLnN1Z2dlc3ROb2RlKE5vZGVUeXBlLlRlcm0sICh0ZXJtLCB7IHN1Z2dlc3Rpb25zIH0pID0+XG4gICAgICB0ZXJtLmxlbmd0aCA8IE1JTl9UWVBFQUhFQURfTEVOR1RIID9cbiAgICAgICAgb2YoW10pIDpcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnN1Z2dlc3QodGVybSwgTm9kZVR5cGUuVGVybSwgc3VnZ2VzdGlvbnM/LnF1ZXJpZXMgfHwgW10sIG51bGwsIDUsIHRoaXMuc3VnZ2VzdFRlcm1GaWVsZHMpXG4gICAgKVxuICB9O1xuICBwdWJsaWMgcHJvcGVydHlTdWdnZXN0ID0gKGZ1bGxLZXk6IHN0cmluZywgc3VnZ2VzdFR5cGU6IHN1Z2dlc3Rpb25UeXBlKSA9PiAodGV4dCQ6IE9ic2VydmFibGU8c3RyaW5nPikgPT5cbiAgICB0ZXh0JC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKHN1Z2dlc3RUeXBlID09PSBkZWZhdWx0U3VnZ2VzdGlvblR5cGUgPyAwIDogMzAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBtZXJnZU1hcCh0ZXJtID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHkgPSBmaW5kUHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBmdWxsS2V5KTtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5Py5lZGl0YWJsZSAmJiBzdWdnZXN0VHlwZSBpbiB0aGlzLnN1Z2dlc3RlciA/XG4gICAgICAgICAgb2YodGVybSkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiBwcm9wZXJ0eS5sb2FkaW5nID0gdHJ1ZSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zdWdnZXN0ZXJbc3VnZ2VzdFR5cGVdISh0ZXJtLCBwcm9wZXJ0eSkpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHByb3BlcnR5LmxvYWRpbmcgPSBmYWxzZSlcbiAgICAgICAgICApIDpcbiAgICAgICAgICBvZihbXSk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBIZVNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2Vyc1NlcnZpY2U6IEhlVXNlcnNTZXJ2aWNlXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3Qgc2NoZW1hVHlwZSA9IHRoaXMubm9kZSEudHlwZSB8fCB0aGlzLm5vZGUhWydAdHlwZSddO1xuICAgIGNvbnN0IHNjaGVtYSA9IHRoaXMuc2NoZW1hcyA/IHRoaXMuc2NoZW1hc1tzY2hlbWFUeXBlXSA6IHt9IGFzIGRlZmluaXRpb247XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5lcnJvcnMuZmlsdGVyKGZpbHRlckVycm9yKTtcbiAgICBjb25zdCBlcnJvciA9IHByb3BlcnR5RXJyb3IoZXJyb3JzKSgnJyk7XG4gICAgdGhpcy5ub2RlUHJvcGVydHkgPSB0aGlzLnNjaGVtYXMgPyB7XG4gICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgc2NoZW1hLFxuICAgICAgc2NoZW1hVHlwZSxcbiAgICAgIGVkaXRhYmxlOiAhIXRoaXMubm9kZSEudHlwZSxcbiAgICAgIGZ1bGxLZXk6ICcnLFxuICAgICAga2V5OiAnJyxcbiAgICAgIHZhbHVlOiB7fSxcbiAgICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgICBoYXNFcnJvcjogZXJyb3JIYXNFcnJvcihlcnJvciksXG4gICAgICBoYXNXYXJuaW5nOiBlcnJvckhhc1dhcm5pbmcoZXJyb3IpLFxuICAgICAgc3VnZ2VzdGlvbnM6IHt9LFxuICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgICAgcHJvcGVydGllczogW10sXG4gICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKHRoaXMubm9kZSEsIHNjaGVtYVR5cGUsIHNjaGVtYSlcbiAgICB9IDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlY3Vyc2VyID0gcmVjdXJzaXZlUHJvcGVydGllcyh0aGlzLnNjaGVtYXMhLCBlcnJvcnMsIHNjaGVtYSwgdGhpcy5kZWVwRWRpdGFibGUpO1xuICAgIHRoaXMucHJvcGVydGllcyA9IHJlY3Vyc2VyKHRoaXMubm9kZSk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUluZGV4KGluZGV4OiBudW1iZXIsIF92YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlQcm9wZXJ0eShfaW5kZXg6IG51bWJlciwgeyBpZCwgZnVsbEtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIFtmdWxsS2V5LCBpZF0uam9pbignXycpO1xuICB9XG5cbiAgcHVibGljIGhhc0FkZG9ucyhwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBwcm9wZXJ0eSAmJiAoXG4gICAgICB0aGlzLmVuYWJsZUFkZEVycm9yKHByb3BlcnR5KSB8fFxuICAgICAgKHRoaXMuZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGUpIHx8XG4gICAgICB0aGlzLmFkZFByb3BlcnR5RW5hYmxlZChwcm9wZXJ0eSkgfHxcbiAgICAgIHRoaXMuaXNSZXF1aXJlZChwcm9wZXJ0eSkgfHxcbiAgICAgIHByb3BlcnR5LmV4dGVybmFsVXJsPy51cmwgfHxcbiAgICAgIHRoaXMubWFwRHJhd2luZ01vZGVzKHByb3BlcnR5KS5sZW5ndGggfHxcbiAgICAgIHRoaXMudW5pdENvbnZlcnRlckVuYWJsZWQocHJvcGVydHkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlcXVpcmVkKHsgdmFsdWUsIGlzUmVxdWlyZWQgfTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBpc1JlcXVpcmVkICYmIGlzRW1wdHkodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc3VnZ2VzdFRlcm1GaWVsZHMoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLnBvcHVsYXRlVGVybUZpZWxkcyxcbiAgICAgIC4uLih0aGlzLnNob3dTdWdnZXN0ZWREZWZhdWx0UHJvcGVydGllcyA/IHBvcHVsYXRlVGVybURlZmF1bHRQcm9wZXJ0aWVzIDogW10pXG4gICAgXTtcbiAgfVxuXG4gIC8vIC0tLSBFcnJvcnNcblxuICBwdWJsaWMgZW5hYmxlQWRkRXJyb3IocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnNFZGl0YWJsZSAmJiAhcHJvcGVydHkuaGFzRXJyb3IgJiYgIXByb3BlcnR5Lmhhc1dhcm5pbmc7XG4gIH1cblxuICBwdWJsaWMgYWRkRXJyb3IocHJvcGVydHk6IElOb2RlUHJvcGVydHksIHsgbWVzc2FnZSwgbGV2ZWwgfTogSUVycm9yUHJvcGVydHkpIHtcbiAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IHByb3BlcnR5LmZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICBrZXlzLnBvcCgpO1xuICAgIGNvbnN0IGVycm9yOiBJVmFsaWRhdGlvbkVycm9yID0gcHJvcGVydHkuaXNBZGRlZCA/IHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBsZXZlbDogbGV2ZWwgfHwgJ2Vycm9yJyxcbiAgICAgIGRhdGFQYXRoOiBrZXlUb0RhdGFQYXRoKGtleXMuam9pbignLicpKSxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBtaXNzaW5nUHJvcGVydHk6IHByb3BlcnR5LmtleVxuICAgICAgfVxuICAgIH0gOiB7XG4gICAgICBtZXNzYWdlLFxuICAgICAgbGV2ZWw6IGxldmVsIHx8ICdlcnJvcicsXG4gICAgICBkYXRhUGF0aDoga2V5VG9EYXRhUGF0aChwcm9wZXJ0eS5mdWxsS2V5KVxuICAgIH07XG4gICAgcHJvcGVydHkubmV3RXJyb3IgPSB7IGxldmVsOiAnd2FybmluZycgfTtcbiAgICBwcm9wZXJ0eS5lcnJvciA9IGVycm9yO1xuICAgIHByb3BlcnR5Lmhhc0Vycm9yID0gZXJyb3JIYXNFcnJvcihlcnJvcik7XG4gICAgcHJvcGVydHkuaGFzV2FybmluZyA9IGVycm9ySGFzV2FybmluZyhlcnJvcik7XG4gICAgdGhpcy5ub2RlRXJyb3JBZGRlZC5lbWl0KGVycm9yKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0RXJyb3IocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBwcm9wZXJ0eS5uZXdFcnJvciA9IHByb3BlcnR5LmVycm9yO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmVFcnJvcihwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGluZGV4ID0gcHJvcGVydHkuZXJyb3I/LmluZGV4O1xuICAgIHByb3BlcnR5LmVycm9yID0gdW5kZWZpbmVkO1xuICAgIHByb3BlcnR5Lmhhc0Vycm9yID0gaGFzRXJyb3IocHJvcGVydHkucHJvcGVydGllcyk7XG4gICAgcHJvcGVydHkuaGFzV2FybmluZyA9IGhhc1dhcm5pbmcocHJvcGVydHkucHJvcGVydGllcyk7XG4gICAgdGhpcy5ub2RlRXJvcnJSZXNvbHZlZC5lbWl0KGluZGV4KTtcbiAgICByZXR1cm4gZ3JvdXBDaGFuZ2VkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkuZnVsbEtleSk7XG4gIH1cblxuICAvLyAtLS1cblxuICBwdWJsaWMgdHlwZWFoZWFkRm9jdXMoZTogRXZlbnQpIHtcbiAgICBpZiAoZS5idWJibGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBpbnB1dEV2ZW50ID0gbmV3IEV2ZW50KCdpbnB1dCcpO1xuICAgICAgZS50YXJnZXQ/LmRpc3BhdGNoRXZlbnQoaW5wdXRFdmVudCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwdWJsaWMgYWRkUHJvcGVydHlFbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGFibGUgJiYgIXRoaXMuZXJyb3JzRWRpdGFibGUgJiYgcHJvcGVydHkuYWRkUHJvcGVydHlFbmFibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXdQcm9wZXJ0aWVzKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCBmaWVsZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IG5vZGVBdmFpbGFibGVQcm9wZXJ0aWVzKHRoaXMubm9kZSEsIHByb3BlcnR5KTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcGVydGllcylcbiAgICAgIC5maWx0ZXIocHJvcCA9PiBwcm9wLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmllbGQudG9Mb3dlckNhc2UoKSkpXG4gICAgICAubWFwKG5hbWUgPT4gKHsgbmFtZSwgcHJvcDogcHJvcGVydGllc1tuYW1lXSB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHk6IElOb2RlUHJvcGVydHksIGRhdGE6IGFueSwgZWRpdGFibGU/OiBib29sZWFuLCByZXBsYWNlUGFyZW50ID0gdHJ1ZSkge1xuICAgIGNvbnN0IHBhcmVudCA9IHJlcGxhY2VQYXJlbnQgPyBwYXJlbnRQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KSA6IHByb3BlcnR5O1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSByZWN1cnNpdmVQcm9wZXJ0aWVzKFxuICAgICAgdGhpcy5zY2hlbWFzISwgW10sIHRoaXMuc2NoZW1hcyFbdGhpcy5ub2RlIS50eXBlXSwgdGhpcy5kZWVwRWRpdGFibGUsIHBhcmVudC5mdWxsS2V5XG4gICAgKShkYXRhKTtcbiAgICB1cGRhdGVQcm9wZXJ0aWVzKHsgcHJvcGVydGllcyB9LCBwcm9wID0+IHtcbiAgICAgIHByb3AuZWRpdGFibGUgPSB0eXBlb2YgZWRpdGFibGUgPT09ICd1bmRlZmluZWQnID8gcHJvcC5lZGl0YWJsZSA6IGVkaXRhYmxlO1xuICAgICAgcmV0dXJuIHByb3A7XG4gICAgfSk7XG4gICAgcGFyZW50LmVkaXRhYmxlID0gdHlwZW9mIGVkaXRhYmxlID09PSAndW5kZWZpbmVkJyA/IHBhcmVudC5lZGl0YWJsZSA6IGVkaXRhYmxlO1xuICAgIHBhcmVudC5wcm9wZXJ0aWVzID0gcHJvcGVydGllcztcbiAgICBwYXJlbnQudmFsdWUgPSBkYXRhO1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Q2hhbmdlZChkYXRhLCBwYXJlbnQpO1xuICB9XG5cbiAgcHVibGljIHN1Z2dlc3Rpb25TZWxlY3RlZCh7ICdAaWQnOiBfaWQsIG5hbWUsIHR5cGUsIGlkLCAuLi5kYXRhIH0sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIF9pZCA/XG4gICAgICAvLyBzdWdnZXN0aW9ucyBmcm9tIGV4aXN0aW5nIG5vZGVzXG4gICAgICB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHksIHsgJ0BpZCc6IF9pZCwgJ0B0eXBlJzogcHJvcGVydHkuc3VnZ2VzdGlvbnM/LnR5cGUsIG5hbWUsIC4uLmRhdGEgfSwgZmFsc2UpIDpcbiAgICAgIChcbiAgICAgICAgLy8gc3VnZ2VzdGlvbiBmcm9tIGxpbmtlZCBub2Rlc1xuICAgICAgICB0eXBlICYmIGlkID9cbiAgICAgICAgICB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEocHJvcGVydHksIHsgdHlwZSwgaWQsIC4uLmRhdGEgfSwgdHJ1ZSkgOlxuICAgICAgICAgIC8vIHN1Z2dlc3Rpb24gYnkgbmFtZSA9PiBlbnVtIHZhbHVlc1xuICAgICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2VkKG5hbWUsIHByb3BlcnR5KVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRBcnJheUdyb3VwKGFycmF5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgcHJvcCA9IHRoaXMuc2NoZW1hcyFbYXJyYXkuc2NoZW1hVHlwZV07XG4gICAgY29uc3QgdmFsdWUgPSBnZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0eSA9IHR5cGVUb05ld1Byb3BlcnR5KFxuICAgICAgdGhpcy5zY2hlbWFzISwgcHJvcCwgcHJvcCwgdmFsdWUsIGAke2FycmF5LmZ1bGxLZXl9WyR7YXJyYXkucHJvcGVydGllcy5sZW5ndGh9XWBcbiAgICApO1xuICAgIGFycmF5LnByb3BlcnRpZXMucHVzaChuZXdQcm9wZXJ0eSk7XG4gICAgdGhpcy5ub2RlQ2hhbmdlLmVtaXQoeyBrZXk6IGFycmF5LmZ1bGxLZXksIHZhbHVlIH0pO1xuICAgIHJldHVybiBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBhcnJheS5mdWxsS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBkdXBsaWNhdGVBcnJheUdyb3VwKGFycmF5OiBJTm9kZVByb3BlcnR5LCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGluZGV4ID0gK3Byb3BlcnR5LmtleTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJvcGVydHkpKTtcbiAgICBuZXdQcm9wZXJ0eS5pZCA9IHByb3BlcnR5SWQoKTtcbiAgICBjb25zdCB2YWx1ZSA9IFsuLi5nZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KV07XG4gICAgdmFsdWUuc3BsaWNlKGluZGV4LCAwLCBzYWZlSlNPTlBhcnNlKG5ld1Byb3BlcnR5LnZhbHVlKSk7XG4gICAgYXJyYXkucHJvcGVydGllcy5zcGxpY2UoaW5kZXgsIDAsIG5ld1Byb3BlcnR5KTtcbiAgICAvLyBuZWVkIHRvIGNoYW5nZSBrZXkgb24gZXZlcnkgcHJvcGVydGllcyByZWN1cnNpdmVseVxuICAgIHJlZnJlc2hQcm9wZXJ0eUtleXMoYXJyYXkpO1xuICAgIHRoaXMubm9kZUNoYW5nZS5lbWl0KHsga2V5OiBhcnJheS5mdWxsS2V5LCB2YWx1ZSB9KTtcbiAgICByZXR1cm4gZ3JvdXBDaGFuZ2VkKHRoaXMucHJvcGVydGllcywgYXJyYXkuZnVsbEtleSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQXJyYXlHcm91cChhcnJheTogSU5vZGVQcm9wZXJ0eSwgeyBrZXkgfTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGluZGV4ID0gK2tleTtcbiAgICBjb25zdCB2YWx1ZSA9IFsuLi5nZXQodGhpcy5ub2RlLCBhcnJheS5mdWxsS2V5KV07XG4gICAgdmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBhcnJheS5wcm9wZXJ0aWVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgLy8gbmVlZCB0byBjaGFuZ2Uga2V5IG9uIGV2ZXJ5IHByb3BlcnRpZXMgcmVjdXJzaXZlbHlcbiAgICByZWZyZXNoUHJvcGVydHlLZXlzKGFycmF5KTtcbiAgICB0aGlzLm5vZGVDaGFuZ2UuZW1pdCh7IGtleTogYXJyYXkuZnVsbEtleSwgdmFsdWUgfSk7XG4gICAgLy8gaWYgbm8gbW9yZSB2YWx1ZXMsIHJlbW92ZSBwYXJlbnQgZ3JvdXAgZW50aXJlbHlcbiAgICByZXR1cm4gYXJyYXkucHJvcGVydGllcy5sZW5ndGggPyBudWxsIDogdGhpcy5wcm9wZXJ0eUNoYW5nZWQobnVsbCwgYXJyYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlQXJyYXlHcm91cFRvUG9zaXRpb24oYXJyYXk6IElOb2RlUHJvcGVydHksIGN1cnJlbnRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdmFsdWUgPSBbLi4uZ2V0KHRoaXMubm9kZSwgYXJyYXkuZnVsbEtleSldO1xuICAgIG1vdmVJdGVtSW5BcnJheSh2YWx1ZSwgY3VycmVudEluZGV4LCBuZXdJbmRleCk7XG4gICAgbW92ZUl0ZW1JbkFycmF5KGFycmF5LnByb3BlcnRpZXMsIGN1cnJlbnRJbmRleCwgbmV3SW5kZXgpO1xuICAgIC8vIG5lZWQgdG8gY2hhbmdlIGtleSBvbiBldmVyeSBwcm9wZXJ0aWVzIHJlY3Vyc2l2ZWx5XG4gICAgcmVmcmVzaFByb3BlcnR5S2V5cyhhcnJheSk7XG4gICAgdGhpcy5ub2RlQ2hhbmdlLmVtaXQoeyBrZXk6IGFycmF5LmZ1bGxLZXksIHZhbHVlIH0pO1xuICAgIHJldHVybiBncm91cENoYW5nZWQodGhpcy5wcm9wZXJ0aWVzLCBhcnJheS5mdWxsS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlQXJyYXlHcm91cFVwKGFycmF5OiBJTm9kZVByb3BlcnR5LCB7IGtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSAra2V5O1xuICAgIHJldHVybiB0aGlzLm1vdmVBcnJheUdyb3VwVG9Qb3NpdGlvbihhcnJheSwgaW5kZXgsIGluZGV4IC0gMSk7XG4gIH1cblxuICBwdWJsaWMgbW92ZUFycmF5R3JvdXBEb3duKGFycmF5OiBJTm9kZVByb3BlcnR5LCB7IGtleSB9OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgaW5kZXggPSAra2V5O1xuICAgIHJldHVybiB0aGlzLm1vdmVBcnJheUdyb3VwVG9Qb3NpdGlvbihhcnJheSwgaW5kZXgsIGluZGV4ICsgMSk7XG4gIH1cblxuICBwdWJsaWMgcHJvcGVydHlDaGFuZ2VkKHZhbHVlOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgZ3JvdXBDaGFuZ2VkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkuZnVsbEtleSwgdmFsdWUpO1xuICAgIHByb3BlcnR5LmFkZFByb3BlcnR5RW5hYmxlZCA9IGlzQWRkUHJvcGVydHlFbmFibGVkKFxuICAgICAgdGhpcy5ub2RlISwgcHJvcGVydHkuc2NoZW1hVHlwZSwgcHJvcGVydHkuc2NoZW1hISwgcHJvcGVydHkuZnVsbEtleVxuICAgICk7XG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHByb3BlcnR5LnZhbHVlID0gdmFsdWU7XG4gICAgICBwcm9wZXJ0eS5jaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNsZWFuTmV3VmFsdWUocGFyc2VOZXdWYWx1ZShwcm9wZXJ0eS5zY2hlbWEhLCB2YWx1ZSkpO1xuICAgIC8vIHRyaWdnZXIgcmVmcmVzaCBvZiBub2RlXG4gICAgY29uc3Qgbm9kZSA9IGNvcHlPYmplY3QodGhpcy5ub2RlKTtcbiAgICBzZXQobm9kZSwgcHJvcGVydHkuZnVsbEtleSwgbmV3VmFsdWUpO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgLy8gdHJpZ2dlciBmb3IgbGlzdGVuZXJzXG4gICAgdGhpcy5ub2RlQ2hhbmdlLmVtaXQoeyBrZXk6IHByb3BlcnR5LmZ1bGxLZXksIHZhbHVlOiBuZXdWYWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVmYXVsdFByb3BlcnR5KHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCBrZXk6IHN0cmluZywgZGVmOiBkZWZpbml0aW9uKSB7XG4gICAgY29uc3Qgbm9kZSA9IHByb3BlcnR5LmtleSA/IGdldCh0aGlzLm5vZGUsIHByb3BlcnR5LmZ1bGxLZXkpIDogdGhpcy5ub2RlO1xuICAgIGNvbnN0IGZ1bGxLZXkgPSBwcm9wZXJ0eS5rZXkgPyBgJHtwcm9wZXJ0eS5mdWxsS2V5fS4ke2tleX1gIDoga2V5O1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBwcm9wZXJ0eS5rZXkgPyBwcm9wZXJ0eS5wcm9wZXJ0aWVzIDogdGhpcy5wcm9wZXJ0aWVzO1xuICAgIGNvbnN0IG5ld1Byb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkodGhpcy5zY2hlbWFzISwgZGVmLCB0aGlzLnNjaGVtYXMhW3Byb3BlcnR5LnNjaGVtYVR5cGVdLCBub2RlLCBmdWxsS2V5KTtcbiAgICBpbnNlcnRQcm9wZXJ0eShwcm9wZXJ0aWVzLCBmdWxsS2V5LCBuZXdQcm9wZXJ0eSk7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlDaGFuZ2VkKG5ld1Byb3BlcnR5LnZhbHVlLCBuZXdQcm9wZXJ0eSk7XG4gIH1cblxuICBwdWJsaWMgYWRkTWlzc2luZ1Byb3BlcnR5KHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgY29uc3QgcGFyZW50ID0gcGFyZW50UHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gICAgY29uc3QgbmV3UHJvcGVydHkgPSBwYXJlbnQgPT09IHByb3BlcnR5ID8gdGhpcy5ub2RlUHJvcGVydHkhIDogcGFyZW50O1xuICAgIGNvbnN0IG5ld1Byb3BlcnRpZXMgPSB0aGlzLm5ld1Byb3BlcnRpZXMobmV3UHJvcGVydHksIHByb3BlcnR5LmtleSk7XG4gICAgbmV3UHJvcGVydHkubmV3UHJvcGVydHkgPSBuZXdQcm9wZXJ0aWVzWzBdO1xuICAgIHJldHVybiBuZXdQcm9wZXJ0eS5uZXdQcm9wZXJ0eSA/IHRoaXMuYWRkUHJvcGVydHkobmV3UHJvcGVydHkpIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQcm9wZXJ0eShwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHsgbmFtZSwgcHJvcCB9ID0gcHJvcGVydHkubmV3UHJvcGVydHkhO1xuICAgIHByb3BlcnR5Lm5ld1Byb3BlcnR5ID0ge307XG4gICAgcmV0dXJuIG5hbWUgPT09ICdAaWQnID9cbiAgICAgIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YShwcm9wZXJ0eSwgeyAnQGlkJzogJycsIHR5cGU6IHByb3BlcnR5LnNjaGVtYVR5cGUgfSwgdW5kZWZpbmVkLCBmYWxzZSkgOlxuICAgICAgdGhpcy5hZGREZWZhdWx0UHJvcGVydHkocHJvcGVydHksIG5hbWUhLCBwcm9wISk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVByb3BlcnR5Q29vcmRpbmF0ZXMocHJvcGVydHk6IElOb2RlUHJvcGVydHksIHZhbHVlOiBnb29nbGUubWFwcy5MYXRMbmdMaXRlcmFsKSB7XG4gICAgY29uc3QgbGF0aXR1ZGUgPSBzaWJsaW5nUHJvcGVydHkodGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2xhdGl0dWRlJyk7XG4gICAgY29uc3QgbG9uZ2l0dWRlID0gc2libGluZ1Byb3BlcnR5KHRoaXMucHJvcGVydGllcywgcHJvcGVydHksICdsb25naXR1ZGUnKTtcbiAgICByZXR1cm4gW1xuICAgICAgbGF0aXR1ZGUgPyB0aGlzLnByb3BlcnR5Q2hhbmdlZCh2YWx1ZS5sYXQsIGxhdGl0dWRlKSA6IG51bGwsXG4gICAgICBsb25naXR1ZGUgPyB0aGlzLnByb3BlcnR5Q2hhbmdlZCh2YWx1ZS5sbmcsIGxvbmdpdHVkZSkgOiBudWxsXG4gICAgXTtcbiAgfVxuXG4gIC8vIE1hcFxuXG4gIHB1YmxpYyBnZXQgc2hvd01hcCgpIHtcbiAgICByZXR1cm4gKCF0aGlzLmVkaXRhYmxlIHx8IHRoaXMuZXJyb3JNb2RlKSAmJiBbU2NoZW1hVHlwZS5TaXRlLCBTY2hlbWFUeXBlLk9yZ2FuaXNhdGlvbl0uaW5jbHVkZXModGhpcy5ub2RlIS50eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBtYXBEcmF3aW5nTW9kZXMoeyBrZXkgfTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBbJ2JvdW5kYXJ5J10uaW5jbHVkZXMoa2V5KSA/IFtcbiAgICAgIGdvb2dsZS5tYXBzLmRyYXdpbmcuT3ZlcmxheVR5cGUuUE9MWUdPTlxuICAgIF0gOiAoW1xuICAgICAgJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZSdcbiAgICBdLmluY2x1ZGVzKGtleSkgPyBbXG4gICAgICBnb29nbGUubWFwcy5kcmF3aW5nLk92ZXJsYXlUeXBlLk1BUktFUlxuICAgIF0gOiBbXSk7XG4gIH1cblxuICBwdWJsaWMgb25NYXBEcmF3aW5nQ2xvc2VkKG5ld1ZhbHVlKSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLm1hcERyYXdpbmdQcm9wZXJ0eTtcbiAgICB0aGlzLm1hcERyYXdpbmdQcm9wZXJ0eSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gWydsYXRpdHVkZScsICdsb25naXR1ZGUnXS5pbmNsdWRlcyhwcm9wZXJ0eSEua2V5KSA/XG4gICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5Q29vcmRpbmF0ZXMocHJvcGVydHkhLCBuZXdWYWx1ZSkgOlxuICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZWQobmV3VmFsdWUsIHByb3BlcnR5ISk7XG4gIH1cblxuICAvLyBCaWJsaW9ncmFwaHkgU2VhcmNoXG5cbiAgcHVibGljIGJpYmxpb2dyYXBoaWVzU2VhcmNoS2V5KHsga2V5LCBzY2hlbWFUeXBlIH06IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCB2YWxpZFNjaGVtYSA9IFtTY2hlbWFUeXBlLkJpYmxpb2dyYXBoeV0uaW5jbHVkZXMoc2NoZW1hVHlwZSk7XG4gICAgY29uc3QgdmFsaWVLZXkgPSBbJ3RpdGxlJywgJ2RvY3VtZW50RE9JJywgJ3Njb3B1cyddLmluY2x1ZGVzKGtleSk7XG4gICAgcmV0dXJuIHZhbGlkU2NoZW1hICYmIHZhbGllS2V5ID8ga2V5IDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQmlibGlvZ3JhcGh5KHZhbHVlOiBQYXJ0aWFsPEJpYmxpb2dyYXBoeT4pIHtcbiAgICBjb25zdCBwYXJlbnQgPSBwYXJlbnRQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHRoaXMuYmlibGlvZ3JhcGhpZXNTZWFyY2hQcm9wZXJ0eSEpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFNvdXJjZXMgPyB7XG4gICAgICAuLi5wYXJlbnQudmFsdWUsXG4gICAgICBiaWJsaW9ncmFwaHk6IHZhbHVlXG4gICAgfSA6IHZhbHVlO1xuICAgIHRoaXMucmVwbGFjZVByb3BlcnR5RGF0YSh0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkhLCBuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU291cmNlKHZhbHVlOiBQYXJ0aWFsPFNvdXJjZT4pIHtcbiAgICAvLyBjYW5ub3QgcmVwbGFjZSBhIHRvcC1sZXZlbCBzb3VyY2VcbiAgICB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoU291cmNlcyAmJiB0aGlzLnJlcGxhY2VQcm9wZXJ0eURhdGEodGhpcy5iaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ISwge1xuICAgICAgJ0B0eXBlJzogTm9kZVR5cGUuU291cmNlLFxuICAgICAgLi4udmFsdWVcbiAgICB9LCAhKCdAaWQnIGluIHZhbHVlKSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYmlibGlvZ3JhcGhpZXNTZWFyY2hTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkhLmZ1bGxLZXkuc3BsaXQoJy4nKS5sZW5ndGggPiAyO1xuICB9XG5cbiAgcHVibGljIG9uQmlibGlvZ3JhcGhpZXNTZWFyY2hDbG9zZWQodmFsdWU/OiBQYXJ0aWFsPFNvdXJjZT4gfCBQYXJ0aWFsPEJpYmxpb2dyYXBoeT4pIHtcbiAgICB0aGlzLmJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkgPSB2YWx1ZSA/IChcbiAgICAgIHZhbHVlLnR5cGUgPT09IFNjaGVtYVR5cGUuQmlibGlvZ3JhcGh5ID9cbiAgICAgICAgdGhpcy51cGRhdGVCaWJsaW9ncmFwaHkodmFsdWUpIDpcbiAgICAgICAgdGhpcy51cGRhdGVTb3VyY2UodmFsdWUgYXMgUGFydGlhbDxTb3VyY2U+KVxuICAgICkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBBY3Rvci5AaWRcblxuICBwdWJsaWMgYXN5bmMgc2V0VXNlckFjdG9ySWQocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCB7IGFjdG9ySWQsIG5hbWUgfSA9IGF3YWl0IHRoaXMudXNlcnNTZXJ2aWNlLmxvZ2dlZEluVXNlcjtcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlUHJvcGVydHlEYXRhKHByb3BlcnR5LCB7ICdAaWQnOiBhY3RvcklkLCAnQHR5cGUnOiBOb2RlVHlwZS5BY3RvciwgbmFtZSB9LCBmYWxzZSk7XG4gIH1cblxuICAvLyBDeWNsZS5jeWNsZUR1cmF0aW9uXG5cbiAgcHVibGljIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb25FbmFibGVkKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpO1xuICB9XG5cbiAgcHVibGljIGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24ocHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24odGhpcy5wcm9wZXJ0aWVzLCBwcm9wZXJ0eSk7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydHlDaGFuZ2VkKGR1cmF0aW9uLCBwcm9wZXJ0eSk7XG4gIH1cblxuICAvLyBDeWNsZS5zdGFydERhdGVcblxuICBwdWJsaWMgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkKHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSB7XG4gICAgcmV0dXJuIGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlRW5hYmxlZCh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZShwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlKHRoaXMucHJvcGVydGllcywgcHJvcGVydHkpO1xuICAgIHJldHVybiB0aGlzLnByb3BlcnR5Q2hhbmdlZChzdGFydERhdGUsIHByb3BlcnR5KTtcbiAgfVxuXG4gIC8vIFVuaXRzIGNvbnZlcnRlclxuXG4gIHB1YmxpYyB1bml0Q29udmVydGVyRW5hYmxlZChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkge1xuICAgIHJldHVybiB0aGlzLmVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlICYmIFsndmFsdWUnLCAnbWluJywgJ21heCcsICdzZCddLmluY2x1ZGVzKHByb3BlcnR5LmtleSk7XG4gIH1cblxuICBwdWJsaWMgb3BlblVuaXRDb252ZXJ0ZXIocG9wb3ZlciwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb3BlcnR5LnZhbHVlO1xuICAgIGNvbnN0IHRlcm1Qcm9wZXJ0eSA9IHNpYmxpbmdQcm9wZXJ0eSh0aGlzLnByb3BlcnRpZXMsIHByb3BlcnR5LCAndGVybScpO1xuICAgIGNvbnN0IHRlcm0gPSBzYWZlSlNPTlBhcnNlKHRlcm1Qcm9wZXJ0eT8udmFsdWUpO1xuICAgIGNvbnN0IHVuaXRzID0gdGVybT8udW5pdHM7XG4gICAgcmV0dXJuIHBvcG92ZXIuaXNPcGVuKCkgPyBwb3BvdmVyLmNsb3NlKCkgOiBwb3BvdmVyLm9wZW4oeyB2YWx1ZSwgdGVybSwgdW5pdHMgfSk7XG4gIH1cblxuICAvLyBSZWNvbW1lbmRhdGlvbnNcblxuICBwdWJsaWMgb25TZWxlY3RSZWNvbW1lbmRhdGlvbihhcnJheTogSU5vZGVQcm9wZXJ0eSwgaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHByb3AgPSB0aGlzLnNjaGVtYXMhW2FycmF5LnNjaGVtYVR5cGVdO1xuICAgIGNvbnN0IHZhbHVlID0gZ2V0KHRoaXMubm9kZSwgYXJyYXkuZnVsbEtleSk7XG5cbiAgICBjb25zdCBuZXdQcm9wZXJ0eSA9IHR5cGVUb05ld1Byb3BlcnR5KFxuICAgICAgdGhpcy5zY2hlbWFzISwgcHJvcCwgcHJvcCwgdmFsdWUsIGAke2FycmF5LmZ1bGxLZXl9WyR7YXJyYXkucHJvcGVydGllcy5sZW5ndGh9XWBcbiAgICApO1xuICAgIG5ld1Byb3BlcnR5LnZhbHVlLnRlcm0gPSB7IHR5cGU6IE5vZGVUeXBlLlRlcm0sICdAaWQnOiBpZCB9O1xuICAgIHZhbHVlW2FycmF5LnByb3BlcnRpZXMubGVuZ3RoXS50ZXJtID0geyB0eXBlOiBOb2RlVHlwZS5UZXJtLCAnQGlkJzogaWQgfTtcblxuICAgIC8vIGluc2VydCBUZXJtIHdpdGggQGlkXG4gICAgY29uc3QgdGVybUtleSA9IGAke25ld1Byb3BlcnR5LmZ1bGxLZXl9LnRlcm1gO1xuICAgIGNvbnN0IHRlcm1Qcm9wZXJ0eSA9IG5ld1Byb3BlcnR5LnByb3BlcnRpZXMuZmluZChwID0+IHAua2V5ID09PSAndGVybScpIHx8IHR5cGVUb05ld1Byb3BlcnR5KFxuICAgICAgdGhpcy5zY2hlbWFzISwgcHJvcC5wcm9wZXJ0aWVzLnRlcm0sIHByb3AsIG5ld1Byb3BlcnR5LnZhbHVlLCB0ZXJtS2V5XG4gICAgKTtcbiAgICB0ZXJtUHJvcGVydHkudmFsdWUgPSB7IHR5cGU6IE5vZGVUeXBlLlRlcm0sICdAaWQnOiBpZCB9O1xuICAgIHRlcm1Qcm9wZXJ0eS5wcm9wZXJ0aWVzID0gcmVjdXJzaXZlUHJvcGVydGllcyhcbiAgICAgIHRoaXMuc2NoZW1hcyEsIFtdLCB0aGlzLnNjaGVtYXMhW3RoaXMubm9kZSEudHlwZV0sIHRoaXMuZGVlcEVkaXRhYmxlLCB0ZXJtS2V5XG4gICAgKSh7IHR5cGU6IE5vZGVUeXBlLlRlcm0sICdAaWQnOiBpZCB9KTtcbiAgICBpbnNlcnRQcm9wZXJ0eShuZXdQcm9wZXJ0eS5wcm9wZXJ0aWVzLCB0ZXJtS2V5LCB0ZXJtUHJvcGVydHkpO1xuXG4gICAgLy8gdGVybSBjYW5ub3QgYmUgZWRpdGVkLCBuZWVkIHRvIHJlbW92ZSBmaXJzdFxuICAgIHVwZGF0ZVByb3BlcnRpZXModGVybVByb3BlcnR5LCBwID0+IHtcbiAgICAgIHAuZWRpdGFibGUgPSBmYWxzZTtcbiAgICAgIHJldHVybiBwO1xuICAgIH0pO1xuICAgIHRlcm1Qcm9wZXJ0eS5lZGl0YWJsZSA9IGZhbHNlO1xuXG4gICAgYXJyYXkucHJvcGVydGllcy5wdXNoKG5ld1Byb3BlcnR5KTtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0eUNoYW5nZWQodmFsdWUsIGFycmF5KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtdG9nZ2xlIHAtNFwiIChjbGljayk9XCJpc09wZW4gPSAhaXNPcGVuXCIgcG9pbnRlcj5cbiAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtZG93blwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIWlzT3BlblwiPjwvZmEtaWNvbj5cbiAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtcmlnaHRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cImlzT3BlblwiPjwvZmEtaWNvbj5cbiAgICA8c3BhbiAqbmdJZj1cIm5vZGVQcm9wZXJ0eVwiIGNsYXNzPVwiaXMtcHgtMlwiXG4gICAgICBbY2xhc3MuaGFzLXRleHQtZGFuZ2VyXT1cIm5vZGVQcm9wZXJ0eS5oYXNFcnJvclwiXG4gICAgICBbY2xhc3MuaGFzLXRleHQtd2FybmluZ109XCJub2RlUHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgPlxuICAgICAgPGhlLW5vZGUtaWNvbiBbdHlwZV09XCJub2RlUHJvcGVydHkuc2NoZW1hVHlwZVwiPjwvaGUtbm9kZS1pY29uPlxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmIGlzT3BlbiAmJiBub2RlUHJvcGVydHlcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd05ld1Byb3BlcnR5OyBjb250ZXh0OiB7JGltcGxpY2l0OiBub2RlUHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPcGVuXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicGItMyBtYi0yXCIgKm5nSWY9XCJlcnJvcnNFZGl0YWJsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9kZUVycm9yRm9ybTsgY29udGV4dDogeyRpbXBsaWNpdDogbm9kZVByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi00XCIgKm5nSWY9XCJub2RlUHJvcGVydHk/LmVycm9yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7cHJvcGVydHk6IG5vZGVQcm9wZXJ0eSwgZWRpdDogdHJ1ZX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbnMgaXMtbXVsdGlsaW5lXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzOyB0cmFja0J5OiB0cmFja0J5UHJvcGVydHlcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNob3dQcm9wZXJ0eTsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wZW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eU1hcDsgY29udGV4dDogeyRpbXBsaWNpdDogbm9kZVByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGhlLW1hcHMtZHJhd2luZy1jb25maXJtICpuZ0lmPVwiISFtYXBEcmF3aW5nUHJvcGVydHlcIlxuICBbdmFsdWVdPVwibWFwRHJhd2luZ1Byb3BlcnR5LnZhbHVlXCIgW21vZGVzXT1cIm1hcERyYXdpbmdNb2RlcyhtYXBEcmF3aW5nUHJvcGVydHkpXCJcbiAgKGNsb3NlZCk9XCJvbk1hcERyYXdpbmdDbG9zZWQoJGV2ZW50KVwiXG4+PC9oZS1tYXBzLWRyYXdpbmctY29uZmlybT5cblxuPGhlLWJpYmxpb2dyYXBoaWVzLXNlYXJjaC1jb25maXJtICpuZ0lmPVwiISFiaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5XCJcbiAgW3NlYXJjaF09XCJiaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5LnZhbHVlXCJcbiAgW3NlYXJjaEJ5XT1cImJpYmxpb2dyYXBoaWVzU2VhcmNoS2V5KGJpYmxpb2dyYXBoaWVzU2VhcmNoUHJvcGVydHkpXCJcbiAgW3NlYXJjaFNvdXJjZXNdPVwiYmlibGlvZ3JhcGhpZXNTZWFyY2hTb3VyY2VzXCJcbiAgKGNsb3NlZCk9XCJvbkJpYmxpb2dyYXBoaWVzU2VhcmNoQ2xvc2VkKCRldmVudClcIlxuPjwvaGUtYmlibGlvZ3JhcGhpZXMtc2VhcmNoLWNvbmZpcm0+XG5cbjxuZy10ZW1wbGF0ZSAjbGFiZWxEZXNjcmlwdGlvbiBsZXQtcHJvcGVydHk+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJ0cmlnZ2VyLXBvcG92ZXJcIlxuICAgIFtuZ2JQb3BvdmVyXT1cInByb3BlcnR5LnNjaGVtYT8uZGVzY3JpcHRpb25cIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgdHJpZ2dlcnM9XCJob3ZlclwiIHBsYWNlbWVudD1cInJpZ2h0XCIgY29udGFpbmVyPVwiYm9keVwiXG4gID5cbiAgICA8c3Bhbj57e3Byb3BlcnR5LmtleX19PC9zcGFuPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xhYmVsRGVmYXVsdCBsZXQtcHJvcGVydHk+XG4gIDxzcGFuPnt7cHJvcGVydHkua2V5fX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dQcm9wZXJ0eSBsZXQtcHJvcGVydHk+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNPcGVuIHx8IHByb3BlcnR5LmNsb3NlZFZpc2libGUpICYmICFwcm9wZXJ0eS5pc0hpZGRlblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtNlwiXG4gICAgICBbaWRdPVwicHJvcGVydHkuZnVsbEtleSArICdfJyArIHByb3BlcnR5LmlkXCJcbiAgICAgIFtjbGFzcy5pcy0xMl09XCJwcm9wZXJ0eS5wcm9wZXJ0aWVzLmxlbmd0aCB8fCAhcHJvcGVydHkua2V5XCJcbiAgICAgIFtuZ1N3aXRjaF09XCIhIXByb3BlcnR5LnByb3BlcnRpZXMubGVuZ3RoXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tdWx0aWxpbmUgaXMtdmFyaWFibGUgaXMtMVwiICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLTMgcHktMVwiICpuZ0lmPVwicHJvcGVydHkua2V5XCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWwgaGFzLXRleHQtcmlnaHQtdGFibGV0IGhhcy10ZXh0LWVsbGlwc2lzXCJcbiAgICAgICAgICAgICpiaW5kT25jZT1cInByb3BlcnR5XCJcbiAgICAgICAgICAgIFtmb3JdPVwicHJvcGVydHkuaWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eS5zY2hlbWE/LmRlc2NyaXB0aW9uICYmIGVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlID8gbGFiZWxEZXNjcmlwdGlvbiA6IGxhYmVsRGVmYXVsdDsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcGVydHl9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLTkgcHktMVwiIFtjbGFzcy5pcy0xMl09XCIhcHJvcGVydHkua2V5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRGb3JtOyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihlZGl0YWJsZSB8fCBlcnJvcnNFZGl0YWJsZSkgJiYgKHByb3BlcnR5Lmhhc0Vycm9yIHx8IHByb3BlcnR5Lmhhc1dhcm5pbmcpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7cHJvcGVydHk6IHByb3BlcnR5LCBlZGl0OiBmYWxzZX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWxcIiAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiXG4gICAgICAgIFtjbGFzcy5pcy1saW5rXT1cImVycm9yTW9kZSAmJiBwcm9wZXJ0eS5jaGFuZ2VkXCJcbiAgICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNFcnJvclwiXG4gICAgICAgIFtjbGFzcy5pcy13YXJuaW5nXT1cIiFwcm9wZXJ0eS5jaGFuZ2VkICYmIHByb3BlcnR5Lmhhc1dhcm5pbmdcIlxuICAgICAgICBbY2xhc3MuaXMtZGVmYXVsdF09XCIhcHJvcGVydHkuY2hhbmdlZCAmJiAhcHJvcGVydHkuaGFzRXJyb3IgJiYgIXByb3BlcnR5Lmhhc1dhcm5pbmdcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3Blbi1ncm91cCBwYW5lbC1oZWFkaW5nIHB5LTBcIlxuICAgICAgICAgIChjbGljayk9XCJwcm9wZXJ0eS5pc09wZW4gPSAhcHJvcGVydHkuaXNPcGVuXCIgcG9pbnRlclxuICAgICAgICAgIFtjbGFzcy5pcy1vcGVuXT1cInByb3BlcnR5LmlzT3BlblwiXG4gICAgICAgICAgW2NsYXNzLmhhcy10ZXh0LXdoaXRlXT1cIihlcnJvck1vZGUgJiYgcHJvcGVydHkuY2hhbmdlZCkgfHwgcHJvcGVydHkuaGFzRXJyb3IgfHwgcHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tb2JpbGUgaXMtdmNlbnRlcmVkXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgcHktMSBteS0wXCI+XG4gICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1kb3duXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhcHJvcGVydHkuaXNPcGVuXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtcmlnaHRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cInByb3BlcnR5LmlzT3BlblwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uIHB5LTEgbXktMFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXNpemUtNlwiPnt7cHJvcGVydHkua2V5fX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByb3BlcnR5LnNjaGVtYVR5cGVcIiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3cgcHktMSBteS0wXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFncyBtYi0wIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZyBtYi0wIGlzLWxpZ2h0XCI+VHlwZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZyBtYi0wIGlzLXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICA8aGUtc2NoZW1hLXZlcnNpb24tbGluayBsaW5rQ2xhc3M9XCJpcy1zbWFsbFwiIFtub2RlXT1cInsnQHR5cGUnOiBwcm9wZXJ0eS5zY2hlbWFUeXBlfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3Byb3BlcnR5LnNjaGVtYVR5cGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvaGUtc2NoZW1hLXZlcnNpb24tbGluaz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxoZS1wb3BvdmVyLWNvbmZpcm0gY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93IHB5LTEgbXktMCBweC0wXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJlZGl0YWJsZSAmJiAhZXJyb3JzRWRpdGFibGVcIlxuICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiUmVtb3ZlIGdyb3VwXCIgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgICAgW21lc3NhZ2VdPVwiJzxwPlRoaXMgd2lsbCByZW1vdmUgdGhlIGdyb3VwIGNvbXBsZXRlbHkuPC9wPicgKyAocHJvcGVydHkuaXNSZXF1aXJlZCA/ICc8cD48dT5XYXJuaW5nOiB0aGlzIGZpZWxkIGlzIHJlcXVpcmVkLjwvdT48L3A+JyA6ICcnKSArICc8cD5EbyB5b3UgY29uZmlybT88L3A+J1wiXG4gICAgICAgICAgICAgIHBvcG92ZXJDbGFzcz1cInB4LTNcIlxuICAgICAgICAgICAgICAoY29uZmlybWVkKT1cInByb3BlcnR5Q2hhbmdlZChudWxsLCBwcm9wZXJ0eSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwidGltZXNcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICA8L2hlLXBvcG92ZXItY29uZmlybT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ibG9jayBpcy1ibG9jayBwLTBcIiAqbmdJZj1cInByb3BlcnR5LmlzT3BlblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BlcnR5LmlzQXJyYXlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB0LTRcIiAqbmdJZj1cInByb3BlcnR5LmVycm9yXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7cHJvcGVydHk6IHByb3BlcnR5LCBlZGl0OiB0cnVlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVscCBweS0xIHB4LTJcIiAqbmdJZj1cImVkaXRhYmxlICYmICFwcm9wZXJ0eS5lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgIFRvIGNoYW5nZSB0aGUge3twcm9wZXJ0eS5rZXl9fSwgcGxlYXNlIGRlbGV0ZSBpdCBmaXJzdCwgdGhlbiBhZGQgdGhlIGZpZWxkIGFnYWluXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicHJvcGVydHkuc2NoZW1hPy50aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWxwIHB5LTEgcHgtMlwiICpuZ1N3aXRjaENhc2U9XCInQmlibGlvZ3JhcGh5J1wiPlxuICAgICAgICAgICAgICAgICAgICBTZWFyY2ggYnkgVGl0bGUgb3IgRG9jdW1lbnQgRE9JIHRvIGF1dG8tcG9wdWxhdGUgdGhlIGZpZWxkcyB1c2luZyB0aGUgTWVuZGVsZXkgY2F0YWxvZ3VlXG4gICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93TmV3UHJvcGVydHk7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIG10LTFcIiAqbmdJZj1cImVycm9yc0VkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGVFcnJvckZvcm07IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHktZ3JvdXAgcHktMiBweC0zIG10LTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tdWx0aWxpbmUgbWItMFwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcDIgb2YgcHJvcGVydHkucHJvcGVydGllczsgdHJhY2tCeTogdHJhY2tCeVByb3BlcnR5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93UHJvcGVydHk7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3AyfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweS0yIHB4LTMgbXQtMlwiICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xXCIgKm5nSWY9XCJlcnJvcnNFZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlRXJyb3JGb3JtOyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcDIgb2YgcHJvcGVydHkucHJvcGVydGllczsgdHJhY2tCeTogdHJhY2tCeVByb3BlcnR5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0wIG15LTRcIiAqbmdJZj1cInByb3AyLmtleVwiXG4gICAgICAgICAgICAgICAgICBbaWRdPVwicHJvcDIuZnVsbEtleSArICdfJyArIHByb3AyLmlkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvcGVydHktYXJyYXktbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzIGhhcy1hZGRvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZyBpcy1kYXJrXCI+e3twcm9wMi5rZXl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGUgJiYgIWVycm9yc0VkaXRhYmxlICYmIHByb3BlcnR5LmVkaXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZyBpcy1pbmZvXCIgcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZHVwbGljYXRlQXJyYXlHcm91cChwcm9wZXJ0eSwgcHJvcDIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nYlRvb2x0aXBdPVwiJ0R1cGxpY2F0ZSAnICsgcGx1cmFsaXplKHByb3BlcnR5LmtleSwgMSlcIiBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiY2xvbmVcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZyBpcy1saWdodFwiIHBvaW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwcm9wMi5rZXkgIT09ICcwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQXJyYXlHcm91cFVwKHByb3BlcnR5LCBwcm9wMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiTW92ZSBVcFwiIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsb25nLWFycm93LWFsdC11cFwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnIGlzLWxpZ2h0XCIgcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInByb3AyLmtleSAhPT0gcHJvcGVydHkucHJvcGVydGllcy5sZW5ndGggLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnJheUdyb3VwRG93bihwcm9wZXJ0eSwgcHJvcDIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIk1vdmUgRG93blwiIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJsb25nLWFycm93LWFsdC1kb3duXCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGhlLXBvcG92ZXItY29uZmlybSBjbGFzcz1cInRhZyBpcy1kZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCInUmVtb3ZlICcgKyBwbHVyYWxpemUocHJvcGVydHkua2V5LCAxKVwiIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9XCJUaGlzIHdpbGwgcmVtb3ZlIHRoZSBncm91cCBjb21wbGV0ZWx5LiBEbyB5b3UgY29uZmlybT9cIiBwb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpcm1lZCk9XCJyZW1vdmVBcnJheUdyb3VwKHByb3BlcnR5LCBwcm9wMilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvaGUtcG9wb3Zlci1jb25maXJtPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd05ld1Byb3BlcnR5OyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wMn1cIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTQgbXQtMlwiICpuZ0lmPVwiZXJyb3JzRWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vZGVFcnJvckZvcm07IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3AyfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC00IG10LTJcIiAqbmdJZj1cInByb3AyLmVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9wZXJ0eUVycm9yOyBjb250ZXh0OiB7cHJvcGVydHk6IHByb3AyLCBlZGl0OiB0cnVlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1ncm91cCBjYXJkLWNvbnRlbnQgcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLW11bHRpbGluZSBteS0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvcDMgb2YgcHJvcDIucHJvcGVydGllczsgdHJhY2tCeTogdHJhY2tCeVByb3BlcnR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd1Byb3BlcnR5OyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wM31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVkaXRhYmxlICYmICFlcnJvcnNFZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtZGFyayBpcy1vdXRsaW5lZCBpcy1zbWFsbFwiIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEFycmF5R3JvdXAocHJvcGVydHkpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxmYS1pY29uIGljb249XCJwbHVzLWNpcmNsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMlwiPkFkZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGwtMVwiPnt7cHJvcGVydHkua2V5IHwgcGx1cmFsaXplOjF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxoZS1ub2RlLXJlY29tbWVuZGF0aW9ucyBidXR0b25DbGFzcz1cImlzLXNtYWxsXCJcbiAgICAgICAgICAgICAgICBbbm9kZV09XCJub2RlXCIgW25vZGVGaWVsZF09XCJwcm9wZXJ0eS5rZXlcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RSZWNvbW1lbmRhdGlvbik9XCJvblNlbGVjdFJlY29tbWVuZGF0aW9uKHByb3BlcnR5LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9oZS1ub2RlLXJlY29tbWVuZGF0aW9ucz5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0Rm9ybSBsZXQtcHJvcGVydHk+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wZXJ0eS5rZXlcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJwcm9wZXJ0eS5zdWdnZXN0aW9ucz8udHlwZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlbGVjdCdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0U2VsZWN0OyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRJbnB1dDsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0SW5wdXQgbGV0LXByb3BlcnR5PlxuICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMFwiIFtjbGFzcy5oYXMtYWRkb25zXT1cImhhc0FkZG9ucyhwcm9wZXJ0eSlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiXG4gICAgICBbY2xhc3MuaGFzLWljb25zLXJpZ2h0XT1cInByb3BlcnR5LmxvYWRpbmdcIlxuICAgID5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImlucHV0IGlzLXNtYWxsIHNlYXJjaC1pbnB1dFwiXG4gICAgICAgIFtjbGFzcy5pcy1kYXJrXT1cInByb3BlcnR5LmtleSA9PT0gJ3R5cGUnXCJcbiAgICAgICAgW2NsYXNzLmlzLWxpbmtdPVwiZXJyb3JNb2RlICYmIHByb3BlcnR5LmNoYW5nZWRcIlxuICAgICAgICBbY2xhc3MuaXMtZGFuZ2VyXT1cIighcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNFcnJvcikgfHwgaXNSZXF1aXJlZChwcm9wZXJ0eSlcIlxuICAgICAgICBbY2xhc3MuaXMtd2FybmluZ109XCIhcHJvcGVydHkuY2hhbmdlZCAmJiBwcm9wZXJ0eS5oYXNXYXJuaW5nXCJcblxuICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LnZhbHVlXCIgI3Byb3BlcnR5TW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgW3R5cGVdPVwicHJvcGVydHkuc2NoZW1hPy50eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3N0cmluZydcIlxuICAgICAgICBbaWRdPVwicHJvcGVydHkuaWRcIlxuICAgICAgICBuYW1lPVwicmFuZG9tbmFtZVwiXG4gICAgICAgIFtyZWFkb25seV09XCIhZWRpdGFibGUgfHwgIXByb3BlcnR5LmVkaXRhYmxlIHx8IHByb3BlcnR5LnNjaGVtYT8uaW50ZXJuYWxcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcGVydHkucGxhY2Vob2xkZXJcIlxuICAgICAgICBbYXBwVGFnc0lucHV0XT1cIntlbmFibGVkOiBlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSAmJiBwcm9wZXJ0eS5zY2hlbWE/LnR5cGUgPT09ICdhcnJheScsIGl0ZW1zOiBwcm9wZXJ0eS5zY2hlbWE/Lml0ZW1zLCBkZWxpbWl0ZXI6ICc7JywgYWxsb3dEdXBsaWNhdGVzOiB0cnVlLCBwbGFjZWhvbGRlcjogcHJvcGVydHkucGxhY2Vob2xkZXJ9XCJcbiAgICAgICAgKGNoYW5nZSk9XCJwcm9wZXJ0eUNoYW5nZWQoJGV2ZW50LnRhcmdldC52YWx1ZSwgcHJvcGVydHkpXCJcblxuICAgICAgICBbcGF0dGVybl09XCJwcm9wZXJ0eS5zY2hlbWE/LnBhdHRlcm5cIlxuICAgICAgICBbcmVxdWlyZWRdPVwicHJvcGVydHkuZnVsbEtleS5lbmRzV2l0aCgnaWQnKSAmJiBwcm9wZXJ0eS5mdWxsS2V5ICE9PSAnaWQnXCJcbiAgICAgICAgW21pbl09XCJwcm9wZXJ0eS5zY2hlbWE/Lm1pbmltdW1cIlxuICAgICAgICBbbWF4XT1cInByb3BlcnR5LnNjaGVtYT8ubWF4aW11bVwiXG5cbiAgICAgICAgW25nYlR5cGVhaGVhZF09XCJwcm9wZXJ0eVN1Z2dlc3QocHJvcGVydHkuZnVsbEtleSwgcHJvcGVydHkuc3VnZ2VzdGlvbnM/LnR5cGUpXCJcbiAgICAgICAgW3Jlc3VsdFRlbXBsYXRlXT1cInN1Z2dlc3Rpb25cIlxuICAgICAgICBbaW5wdXRGb3JtYXR0ZXJdPVwiZm9ybWF0dGVyXCJcbiAgICAgICAgW2ZvY3VzRmlyc3RdPVwidHJ1ZVwiXG4gICAgICAgIChmb2N1cyk9XCJlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZSAmJiB0eXBlYWhlYWRGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdEl0ZW0pPVwic3VnZ2VzdGlvblNlbGVjdGVkKCRldmVudC5pdGVtLCBwcm9wZXJ0eSlcIlxuICAgICAgPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cImljb24gaXMtc21hbGwgaXMtcmlnaHQgaGFzLXRleHQtZ3JleS1kYXJrXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhcHJvcGVydHkubG9hZGluZ1wiPlxuICAgICAgICA8ZmEtaWNvbiBpY29uPVwic3Bpbm5lclwiIFtwdWxzZV09XCJ0cnVlXCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dEFkZG9uczsgY29udGV4dDogeyRpbXBsaWNpdDogcHJvcGVydHl9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8cCBjbGFzcz1cImhlbHAgaXMtZGFuZ2VyLWxpZ2h0XCJcbiAgICAqbmdJZj1cIiFwcm9wZXJ0eS5oYXNFcnJvciAmJiBwcm9wZXJ0eU1vZGVsLmludmFsaWRcIlxuICA+XG4gICAgPHNwYW4gKmJpbmRPbmNlPVwicHJvcGVydHlNb2RlbC5lcnJvcnNcIiBbaW5uZXJIVE1MXT1cImZvcm1hdFByb3BlcnR5RXJyb3IocHJvcGVydHlNb2RlbC5lcnJvcnMsIHByb3BlcnR5KVwiPjwvc3Bhbj5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dFNlbGVjdCBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0wXCIgW2NsYXNzLmhhcy1hZGRvbnNdPVwiaGFzQWRkb25zKHByb3BlcnR5KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aFwiXG4gICAgICAgIFtjbGFzcy5pcy1saW5rXT1cImVycm9yTW9kZSAmJiBwcm9wZXJ0eS5jaGFuZ2VkXCJcbiAgICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCIoIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzRXJyb3IpIHx8IGlzUmVxdWlyZWQocHJvcGVydHkpXCJcbiAgICAgICAgW2NsYXNzLmlzLXdhcm5pbmddPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgICA+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByb3BlcnR5LnZhbHVlXCIgI3Byb3BlcnR5TW9kZWw9XCJuZ01vZGVsXCJcbiAgICAgICAgICBbaWRdPVwicHJvcGVydHkuaWRcIlxuICAgICAgICAgIG5hbWU9XCJyYW5kb21uYW1lXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVkaXRhYmxlIHx8ICFwcm9wZXJ0eS5lZGl0YWJsZSB8fCBwcm9wZXJ0eS5zY2hlbWE/LmludGVybmFsXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInByb3BlcnR5Q2hhbmdlZCgkZXZlbnQudGFyZ2V0LnZhbHVlLCBwcm9wZXJ0eSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdDwvb3B0aW9uPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmJpbmRPbmNlPVwicHJvcGVydHkuc3VnZ2VzdGlvbnNcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIHByb3BlcnR5LnN1Z2dlc3Rpb25zLnZhbHVlczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgW3ZhbHVlXT1cInZhbHVlXCI+e3t2YWx1ZX19PC9vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0QWRkb25zOyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3JlbW92ZUZpZWxkQWRkb24gbGV0LXByb3BlcnR5PlxuICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiICpuZ0lmPVwiIWVycm9yc0VkaXRhYmxlICYmICFwcm9wZXJ0eS5pc1JlcXVpcmVkXCI+XG4gICAgPGEgY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIlJlbW92ZSBmaWVsZFwiXG4gICAgICBbY2xhc3MuaXMtb3V0bGluZWRdPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgKHByb3BlcnR5Lmhhc0Vycm9yIHx8IHByb3BlcnR5Lmhhc1dhcm5pbmcpXCJcbiAgICAgIFtjbGFzcy5pcy1kYW5nZXJdPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzRXJyb3JcIlxuICAgICAgW2NsYXNzLmlzLXdhcm5pbmddPVwiIXByb3BlcnR5LmNoYW5nZWQgJiYgcHJvcGVydHkuaGFzV2FybmluZ1wiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBwcm9wZXJ0eUNoYW5nZWQobnVsbCwgcHJvcGVydHkpXCJcbiAgICA+XG4gICAgICA8ZmEtaWNvbiBpY29uPVwidGltZXNcIj48L2ZhLWljb24+XG4gICAgPC9hPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRBZGRvbnMgbGV0LXByb3BlcnR5PlxuICA8aGUtcG9wb3Zlci1jb25maXJtIGNsYXNzPVwiY29udHJvbFwiXG4gICAgKm5nSWY9XCJlbmFibGVBZGRFcnJvcihwcm9wZXJ0eSlcIlxuICAgIHBvc2l0aW9uPVwibGVmdFwiXG4gICAgW2NvbnRlbnRdPVwicG9wdXBFcnJvckZvcm1cIlxuICAgIChjb25maXJtZWQpPVwiYWRkRXJyb3IocHJvcGVydHksICRldmVudClcIlxuICA+XG4gICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIj5cbiAgICAgIDxmYS1pY29uIGljb249XCJjb21tZW50c1wiPjwvZmEtaWNvbj5cbiAgICA8L3NwYW4+XG4gIDwvaGUtcG9wb3Zlci1jb25maXJtPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZSAmJiBwcm9wZXJ0eS5lZGl0YWJsZVwiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInByb3BlcnR5LnNjaGVtYVR5cGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlNjaGVtYVR5cGUuQWN0b3JcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdG9yQWRkb25zOyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiU2NoZW1hVHlwZS5DeWNsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3ljbGVBZGRvbnM7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHByb3BlcnR5fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqYmluZE9uY2U9XCJwcm9wZXJ0eVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cIm1hcERyYXdpbmdNb2Rlcyhwcm9wZXJ0eSkubGVuZ3RoXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIlBpY2sgb24gTWFwXCJcbiAgICAgICAgICAoY2xpY2spPVwibWFwRHJhd2luZ1Byb3BlcnR5ID0gcHJvcGVydHlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cIm1hcC1tYXJrZWQtYWx0XCI+PC9mYS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cImJpYmxpb2dyYXBoaWVzU2VhcmNoS2V5KHByb3BlcnR5KVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgdGl0bGU9XCJBZHZhbmNlZCBTZWFyY2hcIlxuICAgICAgICAgIChjbGljayk9XCJiaWJsaW9ncmFwaGllc1NlYXJjaFByb3BlcnR5ID0gcHJvcGVydHlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGZhLWljb24gaWNvbj1cInNlYXJjaFwiPjwvZmEtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZW1vdmVGaWVsZEFkZG9uOyBjb250ZXh0OiB7JGltcGxpY2l0OiBwcm9wZXJ0eX1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJhZGRQcm9wZXJ0eUVuYWJsZWQocHJvcGVydHkpXCI+XG4gICAgPGEgY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtZGFuZ2VyXCIgdGl0bGU9XCJBZGQgZmllbGRcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgYWRkTWlzc2luZ1Byb3BlcnR5KHByb3BlcnR5KVwiXG4gICAgPlxuICAgICAgPGZhLWljb24gaWNvbj1cInBsdXMtY2lyY2xlXCI+PC9mYS1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+QWRkPC9zcGFuPlxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJpc1JlcXVpcmVkKHByb3BlcnR5KVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1kYW5nZXJcIiBbZm9yXT1cInByb3BlcnR5LmlkXCJcbiAgICAgIG5nYlRvb2x0aXA9XCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkXCIgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+XG4gICAgICA8ZmEtaWNvbiBpY29uPVwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIj48L2ZhLWljb24+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wZXJ0eS5leHRlcm5hbFVybD8udXJsXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxhIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgW2hyZWZdPVwicHJvcGVydHkuZXh0ZXJuYWxVcmwudXJsICsgKHByb3BlcnR5LmV4dGVybmFsVXJsLnVybFBhcmFtVmFsdWUgPyBwcm9wZXJ0eS52YWx1ZSA6ICcnKVwiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIFt0aXRsZV09XCJwcm9wZXJ0eS5leHRlcm5hbFVybC50aXRsZVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnaXMtZGFyayBpcy1vdXRsaW5lZCc6IHByb3BlcnR5LmtleSA9PT0gJ3R5cGUnfVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cInByb3BlcnR5LmV4dGVybmFsVXJsLnVybFBhcmFtVmFsdWUgJiYgIXByb3BlcnR5LnZhbHVlID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJwcm9wZXJ0eS5leHRlcm5hbFVybC5pY29uIHx8ICdleHRlcm5hbC1saW5rLWFsdCdcIj48L2ZhLWljb24+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidW5pdENvbnZlcnRlckVuYWJsZWQocHJvcGVydHkpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIk9wZW4gY2FsY3VsYXRvclwiXG4gICAgICAgIFtuZ2JQb3BvdmVyXT1cImNvbnZlcnRVbml0c1wiIGF1dG9DbG9zZT1cIm91dHNpZGVcIlxuICAgICAgICB0cmlnZ2Vycz1cIm1hbnVhbFwiICNwPVwibmdiUG9wb3ZlclwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAoY2xpY2spPVwib3BlblVuaXRDb252ZXJ0ZXIocCwgcHJvcGVydHkpXCJcbiAgICAgID5cbiAgICAgICAgPGZhLWljb24gaWNvbj1cImNhbGN1bGF0b3JcIj48L2ZhLWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2FjdG9yQWRkb25zIGxldC1wcm9wZXJ0eT5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cInByb3BlcnR5LmtleSA9PT0gJ0BpZCdcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgdGl0bGU9XCJBZGQgbXlzZWxmIGFzIEFjdG9yXCJcbiAgICAgIChjbGljayk9XCJzZXRVc2VyQWN0b3JJZChwcm9wZXJ0eSlcIlxuICAgID5cbiAgICAgIDxmYS1pY29uIFtpY29uXT1cIlsnZmFyJywgJ2lkLWJhZGdlJ11cIj48L2ZhLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjeWNsZUFkZG9ucyBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJjb250cm9sXCIgKm5nSWY9XCJwcm9wZXJ0eS5rZXkgPT09ICdjeWNsZUR1cmF0aW9uJ1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gaXMtc21hbGxcIiB0aXRsZT1cIkNhbGN1bGF0ZSB2YWx1ZSBmcm9tIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0ZVwiXG4gICAgICAoY2xpY2spPVwiY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbihwcm9wZXJ0eSlcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYWxjdWxhdGVDeWNsZUR1cmF0aW9uRW5hYmxlZChwcm9wZXJ0eSlcIlxuICAgID5cbiAgICAgIDxmYS1pY29uIGljb249XCJjYWxjdWxhdG9yXCI+PC9mYS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIiAqbmdJZj1cInByb3BlcnR5LmtleSA9PT0gJ3N0YXJ0RGF0ZSdcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCIgdGl0bGU9XCJDYWxjdWxhdGUgdmFsdWUgZnJvbSBlbmREYXRlIGFuZCBjeWNsZUR1cmF0aW9uXCJcbiAgICAgIChjbGljayk9XCJjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZShwcm9wZXJ0eSlcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZUVuYWJsZWQocHJvcGVydHkpXCJcbiAgICA+XG4gICAgICA8ZmEtaWNvbiBpY29uPVwiY2FsY3VsYXRvclwiPjwvZmEtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Nob3dOZXdQcm9wZXJ0eSBsZXQtcHJvcGVydHk+XG4gIDxoZWFkZXIgY2xhc3M9XCJjYXJkLWhlYWRlclwiICpuZ0lmPVwiZWRpdGFibGUgJiYgcHJvcGVydHkuZWRpdGFibGUgJiYgKHByb3BlcnR5LmFkZFByb3BlcnR5RW5hYmxlZCB8fCBkZWVwRWRpdGFibGUpOyBlbHNlIHBhZGRlclwiPlxuICAgIDxmb3JtIGNsYXNzPVwicHktMyBweC00IGlzLWZsZXgtZ3Jvdy0xXCIgKHN1Ym1pdCk9XCJhZGRQcm9wZXJ0eShwcm9wZXJ0eSlcIiBub3ZhbGlkYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGlzLWhvcml6b250YWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWxhYmVsIGlzLXNtYWxsXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibGFiZWxcIiBbZm9yXT1cInByb3BlcnR5LmlkICsgJ19uZXcnXCI+XG4gICAgICAgICAgICA8c3Bhbj5BZGQgbmV3IGZpZWxkPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dCBpcy1zbWFsbFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5uZXdQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgW2lkXT1cInByb3BlcnR5LmlkICsgJ19uZXcnXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwicmFuZG9tbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggYW5kIHNlbGVjdCBmaWVsZCBmcm9tIHJlc3VsdHNcIlxuXG4gICAgICAgICAgICAgICAgW25nYlR5cGVhaGVhZF09XCJzdWdnZXN0TmV3UHJvcGVydHkocHJvcGVydHkuZnVsbEtleSlcIlxuICAgICAgICAgICAgICAgIFtyZXN1bHRUZW1wbGF0ZV09XCJzdWdnZXN0aW9uXCJcbiAgICAgICAgICAgICAgICBbaW5wdXRGb3JtYXR0ZXJdPVwiZm9ybWF0dGVyXCJcbiAgICAgICAgICAgICAgICBbZm9jdXNGaXJzdF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2VkaXRhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwidHlwZWFoZWFkRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbFwiIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhcHJvcGVydHkubmV3UHJvcGVydHkgfHwgIXByb3BlcnR5Lm5ld1Byb3BlcnR5Lm5hbWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZhLWljb24gaWNvbj1cInBsdXNcIj48L2ZhLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+QWRkPC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9oZWFkZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Byb3BlcnR5RXJyb3IgbGV0LXByb3BlcnR5PVwicHJvcGVydHlcIiBsZXQtZWRpdD1cImVkaXRcIj5cbiAgPHAgY2xhc3M9XCJoZWxwXCJcbiAgICBbY2xhc3MuaXMtZGFuZ2VyXT1cInByb3BlcnR5Lmhhc0Vycm9yXCJcbiAgICBbY2xhc3MuaXMtd2FybmluZ109XCJwcm9wZXJ0eS5oYXNXYXJuaW5nXCJcbiAgICAqbmdJZj1cInByb3BlcnR5LmVycm9yXCJcbiAgPlxuICAgIDxzcGFuIGNsYXNzPVwiaXMtcHJlLXdyYXBcIiAqYmluZE9uY2U9XCJwcm9wZXJ0eS5lcnJvclwiIFtpbm5lckhUTUxdPVwicHJvcGVydHkuZXJyb3IubWVzc2FnZVwiPjwvc3Bhbj5cbiAgICA8YSBjbGFzcz1cInBsLTJcIlxuICAgICAgKm5nSWY9XCJlZGl0ICYmIGVycm9yc0VkaXRhYmxlICYmIHByb3BlcnR5LmVycm9yLmluZGV4ID49IDBcIlxuICAgICAgKGNsaWNrKT1cImVkaXRFcnJvcihwcm9wZXJ0eSlcIlxuICAgID5cbiAgICAgIDxmYS1pY29uIGNsYXNzPVwicHItMlwiIGljb249XCJlZGl0XCI+PC9mYS1pY29uPlxuICAgICAgPHNwYW4+RWRpdDwvc3Bhbj5cbiAgICA8L2E+XG4gICAgPGEgY2xhc3M9XCJwbC0yXCJcbiAgICAgICpuZ0lmPVwiKHByb3BlcnR5Lmhhc1dhcm5pbmcgfHwgZXJyb3JzRWRpdGFibGUpICYmIHByb3BlcnR5LmVycm9yLmluZGV4ID49IDBcIlxuICAgICAgKGNsaWNrKT1cInJlc29sdmVFcnJvcihwcm9wZXJ0eSlcIlxuICAgID5cbiAgICAgIDxmYS1pY29uIGNsYXNzPVwicHItMlwiIGljb249XCJjaGVja1wiPjwvZmEtaWNvbj5cbiAgICAgIDxzcGFuPlJlc29sdmVkPC9zcGFuPlxuICAgIDwvYT5cbiAgPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcm9wZXJ0eU1hcCBsZXQtcHJvcGVydHk+XG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBpcy1kZWZhdWx0XCIgKm5nSWY9XCJzaG93TWFwXCI+XG4gICAgPGRpdiBjbGFzcz1cIm9wZW4tZ3JvdXAgcGFuZWwtaGVhZGluZyBweS0wXCJcbiAgICAgIChjbGljayk9XCJtYXBWaXNpYmxlID0gIW1hcFZpc2libGVcIiBwb2ludGVyXG4gICAgICBbY2xhc3MuaXMtb3Blbl09XCJtYXBWaXNpYmxlXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1ucyBpcy1tb2JpbGUgaXMtdmNlbnRlcmVkIG1iLTBcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93IHB5LTEgbXktMFwiPlxuICAgICAgICAgIDxmYS1pY29uIGljb249XCJhbmdsZS1kb3duXCIgW2NsYXNzLmlzLWhpZGRlbl09XCIhbWFwVmlzaWJsZVwiPjwvZmEtaWNvbj5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwiYW5nbGUtcmlnaHRcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIm1hcFZpc2libGVcIj48L2ZhLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2x1bW4gcHktMSBteS0wXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1zaXplLTZcIj5WaWV3IG9uIE1hcDwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWJsb2NrIGlzLWJsb2NrIHAtMFwiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIW1hcFZpc2libGVcIj5cbiAgICAgIDxoZS1zaXRlcy1tYXBzIFtzaXRlc109XCJbbm9kZV1cIiBbc2hvd05vdGljZV09XCJmYWxzZVwiPjwvaGUtc2l0ZXMtbWFwcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vZGVFcnJvckZvcm0gbGV0LXByb3BlcnR5PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJvcGVydHkubmV3RXJyb3IgJiYgcHJvcGVydHkuZWRpdGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbFwiPlxuICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5uZXdFcnJvci5sZXZlbFwiPlxuICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidW5kZWZpbmVkXCI+U2VsZWN0IExldmVsPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXJyb3JcIj5FcnJvcjwvb3B0aW9uPlxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIndhcm5pbmdcIj5XYXJuaW5nPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJ0ZXh0YXJlYSBpcy1zbWFsbFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJwcm9wZXJ0eS5uZXdFcnJvci5tZXNzYWdlXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHlvdXIgbWVzc2FnZSBoZXJlXCJcbiAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIXByb3BlcnR5Lm5ld0Vycm9yLmxldmVsIHx8ICFwcm9wZXJ0eS5uZXdFcnJvci5tZXNzYWdlXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkRXJyb3IocHJvcGVydHksIHByb3BlcnR5Lm5ld0Vycm9yKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZmEtaWNvbiBpY29uPVwicGx1cy1jaXJjbGVcIj48L2ZhLWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwbC0yXCI+QWRkPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcG9wdXBFcnJvckZvcm0gbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RcIj5cbiAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImRhdGEubGV2ZWxcIj5cbiAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ1bmRlZmluZWRcIj5TZWxlY3QgTGV2ZWw8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXJyb3JcIj5FcnJvcjwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJ3YXJuaW5nXCI+V2FybmluZzwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwiZGF0YS5tZXNzYWdlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB5b3VyIG1lc3NhZ2UgaGVyZVwiXG4gICAgICA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdWdnZXN0aW9uIGxldC1yPVwicmVzdWx0XCIgbGV0LXQ9XCJ0ZXJtXCI+XG4gIDxuZ2ItaGlnaGxpZ2h0XG4gICAgW3RpdGxlXT1cInIuYmlibGlvZ3JhcGh5Py50aXRsZSB8fCByLmJpYmxpb2dyYXBoeT8uZG9jdW1lbnRET0kgfHwgci5iaWJsaW9ncmFwaHk/LnNjb3B1cyB8fCByLm5hbWVcIlxuICAgIFtyZXN1bHRdPVwici5iaWJsaW9ncmFwaHk/LnRpdGxlIHx8IHIuYmlibGlvZ3JhcGh5Py5kb2N1bWVudERPSSB8fCByLmJpYmxpb2dyYXBoeT8uc2NvcHVzIHx8IHIubmFtZVwiXG4gICAgW3Rlcm1dPVwidFwiXG4gID48L25nYi1oaWdobGlnaHQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BhZGRlcj5cbiAgPGRpdiBjbGFzcz1cInB0LTFcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udmVydFVuaXRzIGxldC12YWx1ZT1cInZhbHVlXCIgbGV0LXRlcm09XCJ0ZXJtXCIgbGV0LXVuaXRzPVwidW5pdHNcIj5cbiAgPGhlLXVuaXQtY29udmVydGVyIFt2YWx1ZV09XCJ2YWx1ZVwiIFt0ZXJtXT1cInRlcm1cIiBbdG9Vbml0c109XCJ1bml0c1wiPjwvaGUtdW5pdC1jb252ZXJ0ZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
4
4
|
import { faClone as farClone, faCircle as farCircle, faIdBadge as farIdBadge } from '@fortawesome/free-regular-svg-icons';
|
|
5
|
-
import { faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt,
|
|
5
|
+
import { faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDotCircle, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt, faPlus, faPlusCircle, faSearch, faSeedling, faSpellCheck, faSpinner, faTimes, faUser } from '@fortawesome/free-solid-svg-icons';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@fortawesome/angular-fontawesome";
|
|
8
8
|
export class HeFontawesomeModule {
|
|
@@ -11,7 +11,7 @@ export class HeFontawesomeModule {
|
|
|
11
11
|
// free-regular
|
|
12
12
|
farClone, farCircle, farIdBadge,
|
|
13
13
|
// free-solid
|
|
14
|
-
faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt,
|
|
14
|
+
faAngleDoubleLeft, faAngleDoubleRight, faAngleDown, faAngleLeft, faAngleRight, faBookOpen, faBuilding, faCalculator, faChartBar, faCheck, faCircle, faClipboard, faClipboardList, faClone, faComments, faDownload, faDotCircle, faDrawPolygon, faEdit, faEllipsisV, faExclamationTriangle, faExternalLinkAlt, faFilter, faList, faLongArrowAltDown, faLongArrowAltUp, faLongArrowAltLeft, faLongArrowAltRight, faMap, faMapMarked, faMapMarkedAlt, faPlus, faPlusCircle, faSearch, faSeedling, faSpellCheck, faSpinner, faTimes, faUser);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
HeFontawesomeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HeFontawesomeModule, deps: [{ token: i1.FaIconLibrary }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
@@ -33,4 +33,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
33
33
|
]
|
|
34
34
|
}]
|
|
35
35
|
}], ctorParameters: function () { return [{ type: i1.FaIconLibrary }]; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udGF3ZXNvbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ZvbnRhd2Vzb21lL2ZvbnRhd2Vzb21lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0sa0NBQWtDLENBQUM7QUFDcEYsT0FBTyxFQUNMLE9BQU8sSUFBSSxRQUFRLEVBQ25CLFFBQVEsSUFBSSxTQUFTLEVBQ3JCLFNBQVMsSUFBSSxVQUFVLEVBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGVBQWUsRUFDZixPQUFPLEVBQ1AsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNiLE1BQU0sRUFDTixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixLQUFLLEVBQ0wsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sWUFBWSxFQUNaLFFBQVEsRUFDUixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxFQUNQLE1BQU0sbUNBQW1DLENBQUM7OztBQVczQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQVksT0FBc0I7UUFDaEMsT0FBTyxDQUFDLFFBQVE7UUFDZCxlQUFlO1FBQ2YsUUFBUSxFQUNSLFNBQVMsRUFDVCxVQUFVO1FBQ1YsYUFBYTtRQUNiLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLGVBQWUsRUFDZixPQUFPLEVBQ1AsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNiLE1BQU0sRUFDTixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixLQUFLLEVBQ0wsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sWUFBWSxFQUNaLFFBQVEsRUFDUixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDOztpSEFoRFUsbUJBQW1CO2tIQUFuQixtQkFBbUIsWUFQNUIsWUFBWTtRQUNaLGlCQUFpQixhQUdqQixpQkFBaUI7a0hBR1IsbUJBQW1CLFlBUnJCO1lBQ1AsWUFBWTtZQUNaLGlCQUFpQjtTQUNsQixFQUVDLGlCQUFpQjs0RkFHUixtQkFBbUI7a0JBVC9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3FCQUNsQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUsIEZhSWNvbkxpYnJhcnkgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQge1xuICBmYUNsb25lIGFzIGZhckNsb25lLFxuICBmYUNpcmNsZSBhcyBmYXJDaXJjbGUsXG4gIGZhSWRCYWRnZSBhcyBmYXJJZEJhZGdlXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXJlZ3VsYXItc3ZnLWljb25zJztcbmltcG9ydCB7XG4gIGZhQW5nbGVEb3VibGVMZWZ0LFxuICBmYUFuZ2xlRG91YmxlUmlnaHQsXG4gIGZhQW5nbGVEb3duLFxuICBmYUFuZ2xlTGVmdCxcbiAgZmFBbmdsZVJpZ2h0LFxuICBmYUJvb2tPcGVuLFxuICBmYUJ1aWxkaW5nLFxuICBmYUNhbGN1bGF0b3IsXG4gIGZhQ2hhcnRCYXIsXG4gIGZhQ2hlY2ssXG4gIGZhQ2lyY2xlLFxuICBmYUNsaXBib2FyZCxcbiAgZmFDbGlwYm9hcmRMaXN0LFxuICBmYUNsb25lLFxuICBmYUNvbW1lbnRzLFxuICBmYURvd25sb2FkLFxuICBmYURvdENpcmNsZSxcbiAgZmFEcmF3UG9seWdvbixcbiAgZmFFZGl0LFxuICBmYUVsbGlwc2lzVixcbiAgZmFFeGNsYW1hdGlvblRyaWFuZ2xlLFxuICBmYUV4dGVybmFsTGlua0FsdCxcbiAgZmFGaWx0ZXIsXG4gIGZhTGlzdCxcbiAgZmFMb25nQXJyb3dBbHREb3duLFxuICBmYUxvbmdBcnJvd0FsdFVwLFxuICBmYUxvbmdBcnJvd0FsdExlZnQsXG4gIGZhTG9uZ0Fycm93QWx0UmlnaHQsXG4gIGZhTWFwLFxuICBmYU1hcE1hcmtlZCxcbiAgZmFNYXBNYXJrZWRBbHQsXG4gIGZhUGx1cyxcbiAgZmFQbHVzQ2lyY2xlLFxuICBmYVNlYXJjaCxcbiAgZmFTZWVkbGluZyxcbiAgZmFTcGVsbENoZWNrLFxuICBmYVNwaW5uZXIsXG4gIGZhVGltZXMsXG4gIGZhVXNlclxufSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvbnRBd2Vzb21lTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGb250QXdlc29tZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEhlRm9udGF3ZXNvbWVNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihsaWJyYXJ5OiBGYUljb25MaWJyYXJ5KSB7XG4gICAgbGlicmFyeS5hZGRJY29ucyhcbiAgICAgIC8vIGZyZWUtcmVndWxhclxuICAgICAgZmFyQ2xvbmUsXG4gICAgICBmYXJDaXJjbGUsXG4gICAgICBmYXJJZEJhZGdlLFxuICAgICAgLy8gZnJlZS1zb2xpZFxuICAgICAgZmFBbmdsZURvdWJsZUxlZnQsXG4gICAgICBmYUFuZ2xlRG91YmxlUmlnaHQsXG4gICAgICBmYUFuZ2xlRG93bixcbiAgICAgIGZhQW5nbGVMZWZ0LFxuICAgICAgZmFBbmdsZVJpZ2h0LFxuICAgICAgZmFCb29rT3BlbixcbiAgICAgIGZhQnVpbGRpbmcsXG4gICAgICBmYUNhbGN1bGF0b3IsXG4gICAgICBmYUNoYXJ0QmFyLFxuICAgICAgZmFDaGVjayxcbiAgICAgIGZhQ2lyY2xlLFxuICAgICAgZmFDbGlwYm9hcmQsXG4gICAgICBmYUNsaXBib2FyZExpc3QsXG4gICAgICBmYUNsb25lLFxuICAgICAgZmFDb21tZW50cyxcbiAgICAgIGZhRG93bmxvYWQsXG4gICAgICBmYURvdENpcmNsZSxcbiAgICAgIGZhRHJhd1BvbHlnb24sXG4gICAgICBmYUVkaXQsXG4gICAgICBmYUVsbGlwc2lzVixcbiAgICAgIGZhRXhjbGFtYXRpb25UcmlhbmdsZSxcbiAgICAgIGZhRXh0ZXJuYWxMaW5rQWx0LFxuICAgICAgZmFGaWx0ZXIsXG4gICAgICBmYUxpc3QsXG4gICAgICBmYUxvbmdBcnJvd0FsdERvd24sXG4gICAgICBmYUxvbmdBcnJvd0FsdFVwLFxuICAgICAgZmFMb25nQXJyb3dBbHRMZWZ0LFxuICAgICAgZmFMb25nQXJyb3dBbHRSaWdodCxcbiAgICAgIGZhTWFwLFxuICAgICAgZmFNYXBNYXJrZWQsXG4gICAgICBmYU1hcE1hcmtlZEFsdCxcbiAgICAgIGZhUGx1cyxcbiAgICAgIGZhUGx1c0NpcmNsZSxcbiAgICAgIGZhU2VhcmNoLFxuICAgICAgZmFTZWVkbGluZyxcbiAgICAgIGZhU3BlbGxDaGVjayxcbiAgICAgIGZhU3Bpbm5lcixcbiAgICAgIGZhVGltZXMsXG4gICAgICBmYVVzZXJcbiAgICApO1xuICB9XG59XG4iXX0=
|