ctt-babylon 0.25.7 → 0.25.8
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/esm2022/lib/components/core/babylon-blog-list/babylon-blog-list.component.mjs +25 -24
- package/esm2022/lib/components/core/babylon-slider-img-static/babylon-slider-img-static.component.mjs +3 -3
- package/esm2022/lib/components/external/core/c2-txt-cta/c2-txt-cta.component.mjs +3 -3
- package/fesm2022/ctt-babylon.mjs +2 -2
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -66,32 +66,33 @@ export class BabylonBlogListComponent {
|
|
|
66
66
|
categoriesMap.set(key, {
|
|
67
67
|
...category,
|
|
68
68
|
title: title,
|
|
69
|
+
// El contador se recalcula con los posts activos.
|
|
70
|
+
posts: 0,
|
|
69
71
|
});
|
|
70
72
|
});
|
|
71
73
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
74
|
+
// Calcular siempre el contador desde los posts activos. Esto evita
|
|
75
|
+
// que totalPosts incluya posts desactivados.
|
|
76
|
+
(this.posts || [])
|
|
77
|
+
.filter((post) => post.active)
|
|
78
|
+
.forEach((post) => {
|
|
79
|
+
const title = this.getPostCategoryTitle(post.category);
|
|
80
|
+
if (!title)
|
|
81
|
+
return;
|
|
82
|
+
const key = title.trim().toLowerCase();
|
|
83
|
+
if (!key)
|
|
84
|
+
return;
|
|
85
|
+
const existing = categoriesMap.get(key);
|
|
86
|
+
if (existing) {
|
|
87
|
+
existing.posts = (existing.posts ?? 0) + 1;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
categoriesMap.set(key, {
|
|
91
|
+
title: title.trim(),
|
|
92
|
+
posts: 1,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
});
|
|
95
96
|
this.categoriesToRender = Array.from(categoriesMap.values());
|
|
96
97
|
}
|
|
97
98
|
getPostCategoryTitle(category) {
|
|
@@ -156,4 +157,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
156
157
|
}], pageSize: [{
|
|
157
158
|
type: Input
|
|
158
159
|
}] } });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1ibG9nLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWJsb2ctbGlzdC9iYWJ5bG9uLWJsb2ctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tYmxvZy1saXN0L2JhYnlsb24tYmxvZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUlSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBSzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBZ0JyRSxNQUFNLE9BQU8sd0JBQXdCO0lBd0JqQyxZQUFvQixLQUFxQjtRQUFyQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQXZCeEIsWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRTtZQUN6RCxRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFJTSxVQUFLLEdBQXVCLEVBQUUs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QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmFieWxvblBhZ2luYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2JhYnlsb24tcGFnaW5hdGlvbi9iYWJ5bG9uLXBhZ2luYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkkgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tYnV0dG9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uSW1hZ2VJIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWltYWdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYWJ5bG9uVGFnc0kgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tdGFncy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvblRleHRzQ29sb3JzSSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi10ZXh0cy1jb2xvcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYXBwZXIvbWFwcGVyLnNlcnZpY2UudG9rZW4nO1xuaW1wb3J0IHsgZm9ybWF0TWVkaXVtRGF0ZUJ5TG9jYWxlLCBub3JtYWxpemVEYXRlTG9jYWxlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZGF0ZS51dGlscyc7XG5pbXBvcnQgeyBCYWJ5bG9uRHluYW1pY0hlYWRpbmdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYmFieWxvbi1keW5hbWljLWhlYWRpbmcvYmFieWxvbi1keW5hbWljLWhlYWRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25TZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zaGFyZWQvYmFieWxvbi1zZWFyY2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1iYWJ5bG9uLWJsb2ctbGlzdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQmFieWxvbkR5bmFtaWNIZWFkaW5nQ29tcG9uZW50LFxuICAgICAgICBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUsXG4gICAgICAgIEJhYnlsb25TZWFyY2hDb21wb25lbnQsXG4gICAgICAgIEJhYnlsb25QYWdpbmF0aW9uRGlyZWN0aXZlLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JhYnlsb24tYmxvZy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1ibG9nLWxpc3QuY29tcG9uZW50LnNjc3MnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uQmxvZ0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4sIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgfSk7XG5cbiAgICBASW5wdXQoKSBwcmV0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBwb3N0czogQmFieWxvbkJsb2dQb3N0SVtdID0gW107XG4gICAgQElucHV0KCkgdGFncz86IEJhYnlsb25UYWdzSTtcbiAgICBASW5wdXQoKSB0ZXh0Q29sb3JzPzogQmFieWxvblRleHRzQ29sb3JzSTtcbiAgICBASW5wdXQoKSBjYXRlZ29yaWVzVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgY2F0ZWdvcmllcz86IEJhYnlsb25CbG9nQ2F0ZWdvcnlJW107XG4gICAgQElucHV0KCkgbGF0ZXN0UG9zdHNUaXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBsYXRlc3RQb3N0cz86IEJhYnlsb25CbG9nUG9zdElbXTtcbiAgICBASW5wdXQoKSBzZWFyY2hQbGFjZUhvbGRlcj86IHN0cmluZztcbiAgICBASW5wdXQoKSBub3Rmb3VuZFRleHQ/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgYW50ZXJpb3I/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2lndWllbnRlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAzO1xuXG4gICAgcHVibGljIGZpbHRlcmVkUG9zdHM6IEJhYnlsb25CbG9nUG9zdElbXSA9IFtdO1xuICAgIHB1YmxpYyBjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgY2F0ZWdvcmllc1RvUmVuZGVyOiBCYWJ5bG9uQmxvZ0NhdGVnb3J5SVtdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2F0ZWdvcnlGaWx0ZXIocGFyYW1zPy5nZXQoJ2NhdGVnb3J5JykgPz8gdW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2F0ZWdvcmllc0Zyb21Qb3N0cygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Bvc3RzJ10gfHwgY2hhbmdlc1snY2F0ZWdvcmllcyddKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhdGVnb3JpZXNGcm9tUG9zdHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldENhdGVnb3J5RmlsdGVyKF9jYXRlZ29yeT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9IF9jYXRlZ29yeT8udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2F0ZWdvcnkgPSBjYXRlZ29yeSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRQb3N0cyA9XG4gICAgICAgICAgICB0aGlzLnBvc3RzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKHBvc3QpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UG9zdENhdGVnb3J5VGl0bGUocG9zdC5jYXRlZ29yeSk/LnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSAmJiBwb3N0LmFjdGl2ZVxuICAgICAgICAgICAgKSA/P1xuICAgICAgICAgICAgdGhpcy5wb3N0cyA/P1xuICAgICAgICAgICAgW107XG5cbiAgICAgICAgaWYgKCFfY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRQb3N0cyA9XG4gICAgICAgICAgICAgICAgdGhpcy5wb3N0cz8uZmlsdGVyKChwb3N0KSA9PiBwb3N0LmFjdGl2ZSkgPz8gdGhpcy5wb3N0cyA/PyBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlYXJjaCgkZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAoJGV2ZW50Py5mbGFnICE9PSAxKSByZXR1cm47XG4gICAgICAgIHRoaXMuc2V0Q2F0ZWdvcnlGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZFBvc3RzID0gJGV2ZW50Lml0ZW1zO1xuICAgIH1cblxuICAgIGZvcm1hdE1lZGl1bURhdGUoZGF0ZT86IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZm9ybWF0TWVkaXVtRGF0ZUJ5TG9jYWxlKGRhdGUsIHRoaXMuY3VycmVudERhdGVMb2NhbGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ2F0ZWdvcmllc0Zyb21Qb3N0cygpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBCYWJ5bG9uQmxvZ0NhdGVnb3J5ST4oKTtcblxuICAgICAgICAvLyBTaSBoYXkgY2F0ZWdvcmllcyBkZSBpbnB1dCwgYWdyZWdhcmxvcyBwcmltZXJvIChkZWR1cGxpY2FuZG8pXG4gICAgICAgIGlmICh0aGlzLmNhdGVnb3JpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBjYXRlZ29yeS50aXRsZT8udG9TdHJpbmcoKT8udHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmICghdGl0bGUpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHRpdGxlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllc01hcC5zZXQoa2V5LCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNpIG5vIGhheSBjYXRlZ29yaWVzLCBjYWxjdWxhciBkZXNkZSBwb3N0c1xuICAgICAgICAgICAgKHRoaXMucG9zdHMgfHwgW10pXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocG9zdCkgPT4gcG9zdC5hY3RpdmUpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goKHBvc3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmdldFBvc3RDYXRlZ29yeVRpdGxlKHBvc3QuY2F0ZWdvcnkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRpdGxlKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gdGl0bGU/LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWtleSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gY2F0ZWdvcmllc01hcC5nZXQoa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5wb3N0cyA9IChleGlzdGluZy5wb3N0cyA/PyAwKSArIDE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzTWFwLnNldChrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGU/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0czogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhdGVnb3JpZXNUb1JlbmRlciA9IEFycmF5LmZyb20oY2F0ZWdvcmllc01hcC52YWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3N0Q2F0ZWdvcnlUaXRsZShcbiAgICAgICAgY2F0ZWdvcnk/OiBzdHJpbmcgfCB7IG5hbWVfaWRlbnRpZmllcj86IHN0cmluZzsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWNhdGVnb3J5KSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBjYXRlZ29yeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBjYXRlZ29yeS5uYW1lX2lkZW50aWZpZXI/LnRvU3RyaW5nKCk/LnRyaW0oKSB8fFxuICAgICAgICAgICAgY2F0ZWdvcnlbJ25hbWUnXT8udG9TdHJpbmcoKT8udHJpbSgpIHx8XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjdXJyZW50RGF0ZUxvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplRGF0ZUxvY2FsZShcbiAgICAgICAgICAgIHRoaXMuc2l0ZVN2Yz8uc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZSA/P1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Um91dGVMb2NhbGUoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Um91dGVMb2NhbGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGUuc25hcHNob3QucGF0aEZyb21Sb290XG4gICAgICAgICAgICAuZmxhdE1hcCgoc25hcHNob3QpID0+IHNuYXBzaG90LnVybClcbiAgICAgICAgICAgIC5tYXAoKHNlZ21lbnQpID0+IHNlZ21lbnQucGF0aClcbiAgICAgICAgICAgIC5maW5kKChwYXRoKSA9PiBwYXRoLmxlbmd0aCA9PT0gMik7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25CbG9nUG9zdEkge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGltZz86IEJhYnlsb25JbWFnZUk7XG4gICAgYnV0dG9ucz86IEJhYnlsb25CdXR0b25JW107XG4gICAgcG9zdFVybD86IEJhYnlsb25CdXR0b25JO1xuICAgIGNhdGVnb3J5Pzogc3RyaW5nIHwgeyBuYW1lX2lkZW50aWZpZXI/OiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICAgIGRhdGU/OiBEYXRlO1xuICAgIGFkZGl0aW9uYWwxPzogc3RyaW5nO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYWJ5bG9uQmxvZ0NhdGVnb3J5SSB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgcG9zdHM/OiBudW1iZXI7XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImJhYnlsb25fX2Jsb2ctbGlzdCBtYXJnaW4tbWFpblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImludHJvX2luZm8gYWxpZ24tLWNlbnRlclwiPlxuICAgICAgICAgICAgQGlmIChwcmV0aXRsZSkge1xuICAgICAgICAgICAgICAgIDxsaWItYmFieWxvbi1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgW3RhZ109XCJ0YWdzPy5wcmV0aXRsZSB8fCAnaDMnXCJcbiAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJwcmV0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy5wcmV0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInByZXRpdGxlXCJcbiAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LnRpdGxlIHx8ICdoMSdcIlxuICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwidGl0bGVcIlxuICAgICAgICAgICAgICAgID48L2xpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBjc19wbHJfMTAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgY3NfZ2FwX3lfbGdfODBcIj5cbiAgICAgICAgICAgIEBpZiAoZmlsdGVyZWRQb3N0cykge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctOFwiXG4gICAgICAgICAgICAgICAgICAgICpsaWJQYWdpbmF0ZT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRQb3N0cztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBwYWdlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYWdlZCA9IHBhZ2VkSXRlbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IGN1cnJlbnRQYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRvdGFsID0gdG90YWxQYWdlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXh0ID0gbmV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmV2ID0gcHJldlxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAocG9zdCBvZiBwYWdlZDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz1cImNzX3Bvc3QgY3Nfc3R5bGVfMSBjc19zaXplXzVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBvc3QucG9zdFVybD8ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJwb3N0LnBvc3RVcmw/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJwb3N0LnBvc3RVcmw/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjc19wb3N0X3RodW1iIGNzLS1yYWRpdXMgb3ZlcmZsb3ctaGlkZGVuIGQtYmxvY2sgY3NfbWJfMzAgcG9zaXRpb24tcmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwb3N0LmltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicG9zdC5pbWcuc3JjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWx0XT1cInBvc3QuaW1nLmFsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjc19ob3Zlcl9pY29uIGNzX2NlbnRlciBwb3NpdGlvbi1hYnNvbHV0ZSBjc193aGl0ZV9jb2xvciBjc196aW5kZXhfMiBjcy0tcmFkaXVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWJ5bG9uLWFycm93X2J0blwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3NfcG9zdF9pbmZvIGludHJvX2luZm8gbm8tYWxpZ25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzX3Bvc3RfbWV0YV80IGNzX21iXzEzIHByZXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBvc3QuY2F0ZWdvcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwb3N0LmNhdGVnb3J5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwb3N0LmRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LmRhdGUgfCBkYXRlOiAnZGQvTU0veXl5eSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocG9zdC50aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiY3NfcG9zdF90aXRsZSB0aXRsZTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdC5wb3N0VXJsPy5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJwb3N0LnBvc3RVcmw/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJwb3N0LnBvc3RVcmw/LmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZS0tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcG9zdC50aXRsZSB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwb3N0LmFkZGl0aW9uYWwxIHx8IHBvc3QuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNzX3N1YnRpdGxlIHRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QuYWRkaXRpb25hbDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcG9zdC5hZGRpdGlvbmFsMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwb3N0LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBvc3QuYnV0dG9ucz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuc19fYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbiBvZiBwb3N0LmJ1dHRvbnM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9kZCA9ICRvZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImJ1dHRvbi51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cImJ1dHRvbi5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuX3ByaW1hcnk6ICFvZGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRuX2NhbGw6IG9kZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBidXR0b24ubGFiZWwgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFieWxvbi1hcnJvdy1yaWdodC1iaWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FydGljbGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICh0b3RhbCA+IDEgJiYgYW50ZXJpb3IgJiYgc2lndWllbnRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwicGFnaW5hdGlvbl9fY29udHJvbHMgYWxpZ24tLWNlbnRlciBtdC0tMjBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuc19fYm94IGFsaWduLS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3ByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXYoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFudGVyaW9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgYW50ZXJpb3IgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LS0xMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcGFnZSB9fSAvIHt7IHRvdGFsIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuX3NlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZSA9PT0gdG90YWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInNpZ3VpZW50ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IHNpZ3VpZW50ZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25hdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICghZmlsdGVyZWRQb3N0cyB8fCBmaWx0ZXJlZFBvc3RzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjc19ub19yZXN1bHRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ109XCInaDMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInRpdGxlLS1zbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibm90Zm91bmRUZXh0IHx8ICdObyByZXN1bHRzIGZvdW5kJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGFzaWRlIGNsYXNzPVwiY29sLWxnLTRcIj5cbiAgICAgICAgICAgICAgICA8bmF2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Nfc2lkZWJhciBjc19yaWdodF9zaWRlYmFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzZWFyY2hQbGFjZUhvbGRlciA/PyAnc2VhcmNoJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tc2VhcmNoXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoUGxhY2VIb2xkZXJdPVwic2VhcmNoUGxhY2VIb2xkZXIgPz8gJ3NlYXJjaC4uLidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2VsZW1lbnRzXT1cInBvc3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1YnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVzdWx0cyk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID48L2xpYi1iYWJ5bG9uLXNlYXJjaD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzX3NpZGViYXJfaXRlbSB3aWRnZXRfY2F0ZWdvcmllc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjYXRlZ29yaWVzVGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8uY2F0ZWdvcmllc1RpdGxlIHx8ICdoNCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NDbGFzcz1cInRpdGxlLS1zbWFsbCBtYi0tMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8uY2F0ZWdvcmllc1RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiY2F0ZWdvcmllc1RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNhdGVnb3JpZXNUb1JlbmRlcj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5IG9mIGNhdGVnb3JpZXNUb1JlbmRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImNhdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q2F0ZWdvcnlGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgY2F0ZWdvcnkudGl0bGUgfX0gKHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS5wb3N0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSk8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudENhdGVnb3J5ID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS50aXRsZT8udG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWNhdGVnb3J5LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFbGltaW5hciBmaWx0cm9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVtb3ZlLWNhdGVnb3J5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENhdGVnb3J5RmlsdGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb24tY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Nfc2lkZWJhcl9pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxhdGVzdFBvc3RzVGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8ubGF0ZXN0UG9zdHNUaXRsZSB8fCAnaDQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJ0aXRsZS0tc21hbGwgbWItLTIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LmxhdGVzdFBvc3RzVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJsYXRlc3RQb3N0c1RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGxhdGVzdFBvc3RzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjc19yZWNlbnRfcG9zdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAocG9zdCBvZiBsYXRlc3RQb3N0czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzX3JlY2VudF9wb3N0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInRpdGxlLS1zbWFsbGVyIG1iLS0xMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LnBvc3RVcmw/LmxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJwb3N0LnBvc3RVcmw/LnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmtUeXBlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LnBvc3RVcmw/LmxpbmtUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgcG9zdC50aXRsZSB9fTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBvc3QuZGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPVwidGV4dC0tc21hbGxcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdE1lZGl1bURhdGUocG9zdC5kYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2VtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1ibG9nLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWJsb2ctbGlzdC9iYWJ5bG9uLWJsb2ctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24tYmxvZy1saXN0L2JhYnlsb24tYmxvZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxHQUlSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBSzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7O0FBZ0JyRSxNQUFNLE9BQU8sd0JBQXdCO0lBd0JqQyxZQUFvQixLQUFxQjtRQUFyQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQXZCeEIsWUFBTyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRTtZQUN6RCxRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFJTSxVQUFLLEdBQXVCLEVBQUUs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c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJhYnlsb25QYWdpbmF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9iYWJ5bG9uLXBhZ2luYXRpb24vYmFieWxvbi1wYWdpbmF0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2xpbmstdHlwZS9saW5rLXR5cGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJhYnlsb25CdXR0b25JIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLWJ1dHRvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkltYWdlSSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYmFieWxvbi1pbWFnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvblRhZ3NJIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9iYWJ5bG9uLXRhZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25UZXh0c0NvbG9yc0kgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2JhYnlsb24tdGV4dHMtY29sb3JzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IGZvcm1hdE1lZGl1bURhdGVCeUxvY2FsZSwgbm9ybWFsaXplRGF0ZUxvY2FsZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RhdGUudXRpbHMnO1xuaW1wb3J0IHsgQmFieWxvbkR5bmFtaWNIZWFkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nL2JhYnlsb24tZHluYW1pYy1oZWFkaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYWJ5bG9uU2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2JhYnlsb24tc2VhcmNoJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItYmFieWxvbi1ibG9nLWxpc3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEJhYnlsb25EeW5hbWljSGVhZGluZ0NvbXBvbmVudCxcbiAgICAgICAgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlLFxuICAgICAgICBCYWJ5bG9uU2VhcmNoQ29tcG9uZW50LFxuICAgICAgICBCYWJ5bG9uUGFnaW5hdGlvbkRpcmVjdGl2ZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWJ5bG9uLWJsb2ctbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2JhYnlsb24tYmxvZy1saXN0LmNvbXBvbmVudC5zY3NzJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvbkJsb2dMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgQElucHV0KCkgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcG9zdHM6IEJhYnlsb25CbG9nUG9zdElbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHRhZ3M/OiBCYWJ5bG9uVGFnc0k7XG4gICAgQElucHV0KCkgdGV4dENvbG9ycz86IEJhYnlsb25UZXh0c0NvbG9yc0k7XG4gICAgQElucHV0KCkgY2F0ZWdvcmllc1RpdGxlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNhdGVnb3JpZXM/OiBCYWJ5bG9uQmxvZ0NhdGVnb3J5SVtdO1xuICAgIEBJbnB1dCgpIGxhdGVzdFBvc3RzVGl0bGU/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbGF0ZXN0UG9zdHM/OiBCYWJ5bG9uQmxvZ1Bvc3RJW107XG4gICAgQElucHV0KCkgc2VhcmNoUGxhY2VIb2xkZXI/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgbm90Zm91bmRUZXh0Pzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFudGVyaW9yPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHNpZ3VpZW50ZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gMztcblxuICAgIHB1YmxpYyBmaWx0ZXJlZFBvc3RzOiBCYWJ5bG9uQmxvZ1Bvc3RJW10gPSBbXTtcbiAgICBwdWJsaWMgY3VycmVudENhdGVnb3J5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgcHVibGljIGNhdGVnb3JpZXNUb1JlbmRlcjogQmFieWxvbkJsb2dDYXRlZ29yeUlbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtTWFwLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldENhdGVnb3J5RmlsdGVyKHBhcmFtcz8uZ2V0KCdjYXRlZ29yeScpID8/IHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhdGVnb3JpZXNGcm9tUG9zdHMoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydwb3N0cyddIHx8IGNoYW5nZXNbJ2NhdGVnb3JpZXMnXSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDYXRlZ29yaWVzRnJvbVBvc3RzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRDYXRlZ29yeUZpbHRlcihfY2F0ZWdvcnk/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBfY2F0ZWdvcnk/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHRoaXMuY3VycmVudENhdGVnb3J5ID0gY2F0ZWdvcnkgPz8gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmZpbHRlcmVkUG9zdHMgPVxuICAgICAgICAgICAgdGhpcy5wb3N0cz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChwb3N0KSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBvc3RDYXRlZ29yeVRpdGxlKHBvc3QuY2F0ZWdvcnkpPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgJiYgcG9zdC5hY3RpdmVcbiAgICAgICAgICAgICkgPz9cbiAgICAgICAgICAgIHRoaXMucG9zdHMgPz9cbiAgICAgICAgICAgIFtdO1xuXG4gICAgICAgIGlmICghX2NhdGVnb3J5KSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkUG9zdHMgPVxuICAgICAgICAgICAgICAgIHRoaXMucG9zdHM/LmZpbHRlcigocG9zdCkgPT4gcG9zdC5hY3RpdmUpID8/IHRoaXMucG9zdHMgPz8gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWFyY2goJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgaWYgKCRldmVudD8uZmxhZyAhPT0gMSkgcmV0dXJuO1xuICAgICAgICB0aGlzLnNldENhdGVnb3J5RmlsdGVyKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRQb3N0cyA9ICRldmVudC5pdGVtcztcbiAgICB9XG5cbiAgICBmb3JtYXRNZWRpdW1EYXRlKGRhdGU/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGZvcm1hdE1lZGl1bURhdGVCeUxvY2FsZShkYXRlLCB0aGlzLmN1cnJlbnREYXRlTG9jYWxlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNhdGVnb3JpZXNGcm9tUG9zdHMoKSB7XG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXNNYXAgPSBuZXcgTWFwPHN0cmluZywgQmFieWxvbkJsb2dDYXRlZ29yeUk+KCk7XG5cbiAgICAgICAgLy8gU2kgaGF5IGNhdGVnb3JpZXMgZGUgaW5wdXQsIGFncmVnYXJsb3MgcHJpbWVybyAoZGVkdXBsaWNhbmRvKVxuICAgICAgICBpZiAodGhpcy5jYXRlZ29yaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gY2F0ZWdvcnkudGl0bGU/LnRvU3RyaW5nKCk/LnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRpdGxlKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSB0aXRsZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNNYXAuc2V0KGtleSwge1xuICAgICAgICAgICAgICAgICAgICAuLi5jYXRlZ29yeSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAvLyBFbCBjb250YWRvciBzZSByZWNhbGN1bGEgY29uIGxvcyBwb3N0cyBhY3Rpdm9zLlxuICAgICAgICAgICAgICAgICAgICBwb3N0czogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsY3VsYXIgc2llbXByZSBlbCBjb250YWRvciBkZXNkZSBsb3MgcG9zdHMgYWN0aXZvcy4gRXN0byBldml0YVxuICAgICAgICAvLyBxdWUgdG90YWxQb3N0cyBpbmNsdXlhIHBvc3RzIGRlc2FjdGl2YWRvcy5cbiAgICAgICAgKHRoaXMucG9zdHMgfHwgW10pXG4gICAgICAgICAgICAuZmlsdGVyKChwb3N0KSA9PiBwb3N0LmFjdGl2ZSlcbiAgICAgICAgICAgIC5mb3JFYWNoKChwb3N0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmdldFBvc3RDYXRlZ29yeVRpdGxlKHBvc3QuY2F0ZWdvcnkpO1xuICAgICAgICAgICAgICAgIGlmICghdGl0bGUpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHRpdGxlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmICgha2V5KSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IGNhdGVnb3JpZXNNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLnBvc3RzID0gKGV4aXN0aW5nLnBvc3RzID8/IDApICsgMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzTWFwLnNldChrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3N0czogMSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzVG9SZW5kZXIgPSBBcnJheS5mcm9tKGNhdGVnb3JpZXNNYXAudmFsdWVzKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zdENhdGVnb3J5VGl0bGUoXG4gICAgICAgIGNhdGVnb3J5Pzogc3RyaW5nIHwgeyBuYW1lX2lkZW50aWZpZXI/OiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9XG4gICAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCFjYXRlZ29yeSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gY2F0ZWdvcnk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgY2F0ZWdvcnkubmFtZV9pZGVudGlmaWVyPy50b1N0cmluZygpPy50cmltKCkgfHxcbiAgICAgICAgICAgIGNhdGVnb3J5WyduYW1lJ10/LnRvU3RyaW5nKCk/LnRyaW0oKSB8fFxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY3VycmVudERhdGVMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZURhdGVMb2NhbGUoXG4gICAgICAgICAgICB0aGlzLnNpdGVTdmM/LnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGUgPz9cbiAgICAgICAgICAgICAgICB0aGlzLmdldFJvdXRlTG9jYWxlKClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvdXRlTG9jYWxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlLnNuYXBzaG90LnBhdGhGcm9tUm9vdFxuICAgICAgICAgICAgLmZsYXRNYXAoKHNuYXBzaG90KSA9PiBzbmFwc2hvdC51cmwpXG4gICAgICAgICAgICAubWFwKChzZWdtZW50KSA9PiBzZWdtZW50LnBhdGgpXG4gICAgICAgICAgICAuZmluZCgocGF0aCkgPT4gcGF0aC5sZW5ndGggPT09IDIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYWJ5bG9uQmxvZ1Bvc3RJIHtcbiAgICBpZD86IG51bWJlcjtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBpbWc/OiBCYWJ5bG9uSW1hZ2VJO1xuICAgIGJ1dHRvbnM/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIHBvc3RVcmw/OiBCYWJ5bG9uQnV0dG9uSTtcbiAgICBjYXRlZ29yeT86IHN0cmluZyB8IHsgbmFtZV9pZGVudGlmaWVyPzogc3RyaW5nOyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgICBkYXRlPzogRGF0ZTtcbiAgICBhZGRpdGlvbmFsMT86IHN0cmluZztcbiAgICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkJsb2dDYXRlZ29yeUkge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHBvc3RzPzogbnVtYmVyO1xufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJiYWJ5bG9uX19ibG9nLWxpc3QgbWFyZ2luLW1haW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnRyb19pbmZvIGFsaWduLS1jZW50ZXJcIj5cbiAgICAgICAgICAgIEBpZiAocHJldGl0bGUpIHtcbiAgICAgICAgICAgICAgICA8bGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nXG4gICAgICAgICAgICAgICAgICAgIFt0YWddPVwidGFncz8ucHJldGl0bGUgfHwgJ2gzJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwicHJldGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwidGV4dENvbG9ycz8ucHJldGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJwcmV0aXRsZVwiXG4gICAgICAgICAgICAgICAgPjwvbGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgIDxsaWItYmFieWxvbi1keW5hbWljLWhlYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgW3RhZ109XCJ0YWdzPy50aXRsZSB8fCAnaDEnXCJcbiAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJ0aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy50aXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1keW5hbWljLWhlYWRpbmc+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgY3NfcGxyXzEwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGNzX2dhcF95X2xnXzgwXCI+XG4gICAgICAgICAgICBAaWYgKGZpbHRlcmVkUG9zdHMpIHtcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLThcIlxuICAgICAgICAgICAgICAgICAgICAqbGliUGFnaW5hdGU9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9zdHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogcGFnZVNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFnZWQgPSBwYWdlZEl0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhZ2UgPSBjdXJyZW50UGFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0b3RhbCA9IHRvdGFsUGFnZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV4dCA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJldiA9IHByZXZcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHBvc3Qgb2YgcGFnZWQ7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9XCJjc19wb3N0IGNzX3N0eWxlXzEgY3Nfc2l6ZV81XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwb3N0LnBvc3RVcmw/LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwicG9zdC5wb3N0VXJsPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwicG9zdC5wb3N0VXJsPy5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3NfcG9zdF90aHVtYiBjcy0tcmFkaXVzIG92ZXJmbG93LWhpZGRlbiBkLWJsb2NrIGNzX21iXzMwIHBvc2l0aW9uLXJlbGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocG9zdC5pbWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cInBvc3QuaW1nLnNyY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJwb3N0LmltZy5hbHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY3NfaG92ZXJfaWNvbiBjc19jZW50ZXIgcG9zaXRpb24tYWJzb2x1dGUgY3Nfd2hpdGVfY29sb3IgY3NfemluZGV4XzIgY3MtLXJhZGl1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFieWxvbi1hcnJvd19idG5cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzX3Bvc3RfaW5mbyBpbnRyb19pbmZvIG5vLWFsaWduXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjc19wb3N0X21ldGFfNCBjc19tYl8xMyBwcmV0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwb3N0LmNhdGVnb3J5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcG9zdC5jYXRlZ29yeSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocG9zdC5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdC5kYXRlIHwgZGF0ZTogJ2RkL01NL3l5eXknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKHBvc3QudGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImNzX3Bvc3RfdGl0bGUgdGl0bGUxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QucG9zdFVybD8ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwicG9zdC5wb3N0VXJsPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwicG9zdC5wb3N0VXJsPy5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGUtLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHBvc3QudGl0bGUgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAocG9zdC5hZGRpdGlvbmFsMSB8fCBwb3N0LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjc19zdWJ0aXRsZSB0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0LmFkZGl0aW9uYWwxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBvc3QuYWRkaXRpb25hbDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcG9zdC5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwb3N0LmJ1dHRvbnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bnNfX2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24gb2YgcG9zdC5idXR0b25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvZGQgPSAkb2RkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJidXR0b24udXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJidXR0b24ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bl9wcmltYXJ5OiAhb2RkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bl9jYWxsOiBvZGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+e3sgYnV0dG9uLmxhYmVsIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhYnlsb24tYXJyb3ctcmlnaHQtYmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAodG90YWwgPiAxICYmIGFudGVyaW9yICYmIHNpZ3VpZW50ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cInBhZ2luYXRpb25fX2NvbnRyb2xzIGFsaWduLS1jZW50ZXIgbXQtLTIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bnNfX2JveCBhbGlnbi0tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdlID09PSAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhbnRlcmlvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPnt7IGFudGVyaW9yIH19PC9iPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0tMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHBhZ2UgfX0gLyB7eyB0b3RhbCB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bl9zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBhZ2UgPT09IHRvdGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzaWd1aWVudGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj57eyBzaWd1aWVudGUgfX08L2I+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uYXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoIWZpbHRlcmVkUG9zdHMgfHwgZmlsdGVyZWRQb3N0cy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Nfbm9fcmVzdWx0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWddPVwiJ2gzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJ0aXRsZS0tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIm5vdGZvdW5kVGV4dCB8fCAnTm8gcmVzdWx0cyBmb3VuZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxhc2lkZSBjbGFzcz1cImNvbC1sZy00XCI+XG4gICAgICAgICAgICAgICAgPG5hdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNzX3NpZGViYXIgY3NfcmlnaHRfc2lkZWJhclwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2VhcmNoUGxhY2VIb2xkZXIgPz8gJ3NlYXJjaCdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLXNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFBsYWNlSG9sZGVyXT1cInNlYXJjaFBsYWNlSG9sZGVyID8/ICdzZWFyY2guLi4nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtlbGVtZW50c109XCJwb3N0c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cIltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJ0aXRsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3VsdHMpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9saWItYmFieWxvbi1zZWFyY2g+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjc19zaWRlYmFyX2l0ZW0gd2lkZ2V0X2NhdGVnb3JpZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2F0ZWdvcmllc1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LmNhdGVnb3JpZXNUaXRsZSB8fCAnaDQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzQ2xhc3M9XCJ0aXRsZS0tc21hbGwgbWItLTIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInRleHRDb2xvcnM/LmNhdGVnb3JpZXNUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cImNhdGVnb3JpZXNUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjYXRlZ29yaWVzVG9SZW5kZXI/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzVG9SZW5kZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjYXQtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENhdGVnb3J5RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGNhdGVnb3J5LnRpdGxlIH19ICh7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkucG9zdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pPC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYXRlZ29yeSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkudGl0bGU/LnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1jYXRlZ29yeS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiRWxpbWluYXIgZmlsdHJvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlbW92ZS1jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDYXRlZ29yeUZpbHRlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWJ5bG9uLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNzX3NpZGViYXJfaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChsYXRlc3RQb3N0c1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1iYWJ5bG9uLWR5bmFtaWMtaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFnXT1cInRhZ3M/LmxhdGVzdFBvc3RzVGl0bGUgfHwgJ2g0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzc0NsYXNzPVwidGl0bGUtLXNtYWxsIG1iLS0yMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJ0ZXh0Q29sb3JzPy5sYXRlc3RQb3N0c1RpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwibGF0ZXN0UG9zdHNUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGliLWJhYnlsb24tZHluYW1pYy1oZWFkaW5nPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChsYXRlc3RQb3N0cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY3NfcmVjZW50X3Bvc3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKHBvc3Qgb2YgbGF0ZXN0UG9zdHM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjc19yZWNlbnRfcG9zdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0aXRsZS0tc21hbGxlciBtYi0tMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdC5wb3N0VXJsPy5sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwicG9zdC5wb3N0VXJsPy51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdC5wb3N0VXJsPy5saW5rVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IHBvc3QudGl0bGUgfX08L2FcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChwb3N0LmRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz1cInRleHQtLXNtYWxsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRNZWRpdW1EYXRlKHBvc3QuZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9lbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgPC9hc2lkZT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=
|