ng-zenduit 1.0.26 → 1.0.28
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/esm2020/lib/filter/filtersConfig.mjs +1 -1
- package/esm2020/lib/filter/zendu-filter.component.mjs +13 -3
- package/fesm2015/ng-zenduit.mjs +12 -2
- package/fesm2015/ng-zenduit.mjs.map +1 -1
- package/fesm2020/ng-zenduit.mjs +12 -2
- package/fesm2020/ng-zenduit.mjs.map +1 -1
- package/lib/filter/filtersConfig.d.ts +6 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyc0NvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9maWx0ZXIvZmlsdGVyc0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFURVBJQ0tFUl9QT1NJVElPTiB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBEYXRlUmFuZ2UgfSBmcm9tIFwiLi9kYXRlUmFuZ2VcIjtcbmltcG9ydCB7IE51bWJlclJhbmdlIH0gZnJvbSBcIi4vbnVtYmVyUmFuZ2VcIlxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlcnNDb25maWcge1xuICAgIGl0ZW1zOiBGaWx0ZXJzQ29uZmlnSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlcnNDb25maWdJdGVtIHtcbiAgICAvKipcbiAgICAgKiBTZWN0aW9uIHRpdGxlXG4gICAgICovXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEtleSBmb3IgcmVzdWx0IHN0b3JlXG4gICAgICovXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEYXRhIHR5cGVcbiAgICAgKi9cbiAgICB0eXBlOiBcIm11bHRpc2VsZWN0XCIgfCBcInNlbGVjdFwiICB8IFwiZGF0ZVJhbmdlXCIgfCBcIm51bWJlclJhbmdlXCIgfCBcInRvZ2dsZVwiIHwgXCJkYXRlXCIgfCBcInJhZGlvXCIgfCBcImRpdmlkZXJcIiB8IFwidGV4dFwiIHwgXCJkdXJhdGlvblwiIHwgXCJkaXN0YW5jZVwiO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aW1lIGZvciBkYXRlIHBpY2tlcnMuIEJ5IGRlZmF1bHQgaXMgdHJ1ZVxuICAgICAqL1xuICAgIHNob3dUaW1lPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERhdGEgc291cmNlIGZvciB0eXBlIE11bHRpc2VsZWN0XG4gICAgICovXG4gICAgZGF0YVNvdXJjZT86IERhdGFTb3VyY2VbXTtcblxuICAgIGZpbHRlcmVkRGF0YVNvdXJjZT86IERhdGFTb3VyY2VbXTtcblxuICAgIC8qKlxuICAgICAqIERhdGUgcmFuZ2UgZm9yIHR5cGUgRGF0ZVJhbmdlXG4gICAgICovXG4gICAgZGF0ZVJhbmdlPzogRGF0ZVJhbmdlO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSByZXN1bHQgZm9yIHR5cGUgRGF0ZVxuICAgICAqL1xuICAgIGRhdGU/OiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIHJhbmdlIGZvciB0eXBlIE51bWJlclJhbmdlXG4gICAgICovXG4gICAgbnVtYmVyUmFuZ2U/OiBOdW1iZXJSYW5nZTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbiBmb3IgUmFkaW9cbiAgICAgKiBTZWxlY3RlZCBhZGRlZCBoZXJlIGZvciByZXNldCBGaWx0ZXIuXG4gICAgICovXG4gICAgcmFkaW9PcHRpb25zPzogQXJyYXk8eyBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHNlbGVjdGVkPzogYm9vbGVhbiwgZGlzYWJsZWQ/OiBib29sZWFuLCBpbWFnZVVybD86IHN0cmluZyB9PjtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIFJhZGlvIGJ1dHRvbiByZXN1bHRcbiAgICAgKi9cbiAgICBzZWxlY3RlZFJhZGlvPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlL0Rpc2FibGVkIHN0YXRlIGZvciB0aGUgdHlwZSBUb2dnbGVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1lbnUgaXMgZXhwYW5kZWRcbiAgICAgKi9cbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJcyBzZWxlY3RlZCBhbGxcbiAgICAgKi9cbiAgICBpc1NlbGVjdGVkQWxsPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERpc2FibGUgbWVudSBjb2xsYXBzZVxuICAgICAqL1xuICAgIGRpc2FibGVDb2xsYXBzZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDb25maWdzXG4gICAgICovXG4gICAgY29uZmlnPzoge1xuICAgICAgICAvLyBEYXRlIHBpY2tlciBwb3NpdGlvblxuICAgICAgICB5UG9zaXRpb24/OiBEQVRFUElDS0VSX1BPU0lUSU9OXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNob3cgcHJlZGVmaW5lZCBkYXRlLXJhbmdlIG9wdGlvbnMuIEJ5IGRlZmF1bHQgaXMgZmFsc2VcbiAgICAgKi9cbiAgICBzaG93RGF0ZVJhbmdlT3B0aW9ucz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGN1c3RvbSBkYXRlLXJhbmdlIG9wdGlvbnMgdG8gcmVwbGFjZSBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKi9cbiAgICBkYXRlUmFuZ2VPcHRpb25zPzogeyBuYW1lOiBzdHJpbmcsIGRhdGVSYW5nZTogRGF0ZVJhbmdlIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlIHtcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLCBcbiAgICBuYW1lOiBzdHJpbmcgfCBudW1iZXIsIFxuICAgIGNoZWNrZWQ/OiBib29sZWFuLCBcbiAgICBpbWFnZVVybD86IHN0cmluZyxcbiAgICBpc09wZW4/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyc0NvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9maWx0ZXIvZmlsdGVyc0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFURVBJQ0tFUl9QT1NJVElPTiB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBEYXRlUmFuZ2UgfSBmcm9tIFwiLi9kYXRlUmFuZ2VcIjtcbmltcG9ydCB7IE51bWJlclJhbmdlIH0gZnJvbSBcIi4vbnVtYmVyUmFuZ2VcIlxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlcnNDb25maWcge1xuICAgIGl0ZW1zOiBGaWx0ZXJzQ29uZmlnSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlcnNDb25maWdJdGVtIHtcbiAgICAvKipcbiAgICAgKiBTZWN0aW9uIHRpdGxlXG4gICAgICovXG4gICAgdGl0bGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEtleSBmb3IgcmVzdWx0IHN0b3JlXG4gICAgICovXG4gICAga2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEYXRhIHR5cGVcbiAgICAgKi9cbiAgICB0eXBlOiBcIm11bHRpc2VsZWN0XCIgfCBcInNlbGVjdFwiICB8IFwiZGF0ZVJhbmdlXCIgfCBcIm51bWJlclJhbmdlXCIgfCBcInRvZ2dsZVwiIHwgXCJkYXRlXCIgfCBcInJhZGlvXCIgfCBcImRpdmlkZXJcIiB8IFwidGV4dFwiIHwgXCJkdXJhdGlvblwiIHwgXCJkaXN0YW5jZVwiO1xuXG4gICAgLyoqXG4gICAgICogU2hvdyB0aW1lIGZvciBkYXRlIHBpY2tlcnMuIEJ5IGRlZmF1bHQgaXMgdHJ1ZVxuICAgICAqL1xuICAgIHNob3dUaW1lPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERhdGEgc291cmNlIGZvciB0eXBlIE11bHRpc2VsZWN0XG4gICAgICovXG4gICAgZGF0YVNvdXJjZT86IERhdGFTb3VyY2VbXTtcblxuICAgIGZpbHRlcmVkRGF0YVNvdXJjZT86IERhdGFTb3VyY2VbXTtcblxuICAgIC8qKlxuICAgICAqIERhdGUgcmFuZ2UgZm9yIHR5cGUgRGF0ZVJhbmdlXG4gICAgICovXG4gICAgZGF0ZVJhbmdlPzogRGF0ZVJhbmdlO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSByZXN1bHQgZm9yIHR5cGUgRGF0ZVxuICAgICAqL1xuICAgIGRhdGU/OiBEYXRlO1xuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIHJhbmdlIGZvciB0eXBlIE51bWJlclJhbmdlXG4gICAgICovXG4gICAgbnVtYmVyUmFuZ2U/OiBOdW1iZXJSYW5nZTtcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbiBmb3IgUmFkaW9cbiAgICAgKiBTZWxlY3RlZCBhZGRlZCBoZXJlIGZvciByZXNldCBGaWx0ZXIuXG4gICAgICovXG4gICAgcmFkaW9PcHRpb25zPzogQXJyYXk8eyBpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHNlbGVjdGVkPzogYm9vbGVhbiwgZGlzYWJsZWQ/OiBib29sZWFuLCBpbWFnZVVybD86IHN0cmluZyB9PjtcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIFJhZGlvIGJ1dHRvbiByZXN1bHRcbiAgICAgKi9cbiAgICBzZWxlY3RlZFJhZGlvPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlL0Rpc2FibGVkIHN0YXRlIGZvciB0aGUgdHlwZSBUb2dnbGVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1lbnUgaXMgZXhwYW5kZWRcbiAgICAgKi9cbiAgICBleHBhbmRlZD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJcyBzZWxlY3RlZCBhbGxcbiAgICAgKi9cbiAgICBpc1NlbGVjdGVkQWxsPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERpc2FibGUgbWVudSBjb2xsYXBzZVxuICAgICAqL1xuICAgIGRpc2FibGVDb2xsYXBzZT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDb25maWdzXG4gICAgICovXG4gICAgY29uZmlnPzoge1xuICAgICAgICAvLyBEYXRlIHBpY2tlciBwb3NpdGlvblxuICAgICAgICB5UG9zaXRpb24/OiBEQVRFUElDS0VSX1BPU0lUSU9OXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFNob3cgcHJlZGVmaW5lZCBkYXRlLXJhbmdlIG9wdGlvbnMuIEJ5IGRlZmF1bHQgaXMgZmFsc2VcbiAgICAgKi9cbiAgICBzaG93RGF0ZVJhbmdlT3B0aW9ucz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGN1c3RvbSBkYXRlLXJhbmdlIG9wdGlvbnMgdG8gcmVwbGFjZSBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKi9cbiAgICBkYXRlUmFuZ2VPcHRpb25zPzogeyBuYW1lOiBzdHJpbmcsIGRhdGVSYW5nZTogRGF0ZVJhbmdlIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhU291cmNlIHtcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLCBcbiAgICBuYW1lOiBzdHJpbmcgfCBudW1iZXIsIFxuICAgIGNoZWNrZWQ/OiBib29sZWFuLCBcbiAgICBpbWFnZVVybD86IHN0cmluZyxcbiAgICBpc09wZW4/OiBib29sZWFuLFxuICAgIGNoaWxkcmVuPzogc3RyaW5nW10sXG4gICAgaW5kZXg/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdWx0aVNlbGVjdEl0ZW0ge1xuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsIFxuICAgIG5hbWU6IHN0cmluZyB8IG51bWJlciwgXG4gICAgaW5kZXg6IG51bWJlclxufSJdfQ==
|
|
@@ -143,7 +143,10 @@ export class ZenduFilterComponent {
|
|
|
143
143
|
return Boolean(typeof el.id === 'number' ? typeof el.id !== undefined : el.id &&
|
|
144
144
|
typeof el.name === 'number' ? typeof el.name !== undefined : el.name);
|
|
145
145
|
});
|
|
146
|
-
|
|
146
|
+
const uniqItems = uniqBy(items, (el) => el.id);
|
|
147
|
+
// add index to each uniqItems
|
|
148
|
+
uniqItems.forEach((el, index) => el.index = index);
|
|
149
|
+
return uniqItems;
|
|
147
150
|
}
|
|
148
151
|
onSelectAll(item) {
|
|
149
152
|
item.dataSource.forEach(d => d.checked = item.isSelectedAll);
|
|
@@ -291,7 +294,10 @@ export class ZenduFilterComponent {
|
|
|
291
294
|
// showing checked items on top of the list
|
|
292
295
|
for (const item of this.config.items) {
|
|
293
296
|
if (item.type === 'multiselect') {
|
|
294
|
-
|
|
297
|
+
// resort first based on index
|
|
298
|
+
item.dataSource.sort((a, b) => a.index - b.index);
|
|
299
|
+
// then sort based on checked items again
|
|
300
|
+
item.dataSource.sort((a, b) => Number(b.checked || 0) - Number(a.checked || 0));
|
|
295
301
|
}
|
|
296
302
|
}
|
|
297
303
|
if (Object.keys(this.filter).length > 0) {
|
|
@@ -306,6 +312,10 @@ export class ZenduFilterComponent {
|
|
|
306
312
|
this.isApplied = true;
|
|
307
313
|
}
|
|
308
314
|
}
|
|
315
|
+
const menuContent = document.querySelector('.action-menu-body');
|
|
316
|
+
if (menuContent) {
|
|
317
|
+
menuContent.scrollTo({ top: 0, behavior: 'auto' });
|
|
318
|
+
}
|
|
309
319
|
}
|
|
310
320
|
getFilterObject() {
|
|
311
321
|
const filter = {};
|
|
@@ -549,4 +559,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
549
559
|
type: HostListener,
|
|
550
560
|
args: ['window:keydown', ['$event']]
|
|
551
561
|
}] } });
|
|
552
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9maWx0ZXIvemVuZHUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9maWx0ZXIvemVuZHUtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEksT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQVEvRCxNQUFNLE9BQU8sb0JBQW9CO0lBc0RoQztRQXBEUyxXQUFNLEdBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBSXRDLGFBQVEsR0FBRyxPQUFPLENBQUM7UUFFbkIsa0JBQWEsR0FBd0IsT0FBTyxDQUFDO1FBRTVDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWpCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUvQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQVV4QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFakIsc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBSTdCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVs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QyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVNLGlCQUFpQjtzQkFBL0QsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQStDN0MsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXVCNUMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVekMsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVekMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFtQnhDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlLCBGaWx0ZXJzQ29uZmlnLCBGaWx0ZXJzQ29uZmlnSXRlbSB9IGZyb20gJy4vZmlsdGVyc0NvbmZpZyc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IFplbmR1U2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWJveC96ZW5kdS1zZWFyY2gtYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBEQVRFUElDS0VSX1BPU0lUSU9OIH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9kYXRlcGlja2VyJztcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gXCIuL2RhdGVSYW5nZVwiO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICd6ZW4tZmlsdGVyJyxcblx0dGVtcGxhdGVVcmw6ICcuL3plbmR1LWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL3plbmR1LWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFplbmR1RmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuXHRASW5wdXQoKSBjb25maWc6IEZpbHRlcnNDb25maWcgPSB7IGl0ZW1zOiBbXSB9O1xuXG5cdEBJbnB1dCgpIGZpbHRlcjogb2JqZWN0O1xuXG5cdEBJbnB1dCgpIHBvc2l0aW9uID0gJ3JpZ2h0JztcblxuXHRASW5wdXQoKSByZXNldEJlaGF2aW9yOiBcInNldF9hbGxcIiB8IFwiY2xlYXJcIiA9ICdjbGVhcic7XG5cblx0QE91dHB1dCgpIGZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8b2JqZWN0PigpO1xuXG5cdEBJbnB1dCgpIGlzVmlzaWJsZSA9IGZhbHNlO1xuXG5cdEBPdXRwdXQoKSBpc1Zpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0QElucHV0KCkgY3VzdG9tVHJpZ2dlciA9IGZhbHNlO1xuXG5cdEBJbnB1dCgpIGltYWdlVXJsOiBzdHJpbmc7XG5cblx0QElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuXHRASW5wdXQoKSBzaG93T3B0aW9uczogYm9vbGVhbjtcblxuXHRASW5wdXQoKSBjdXN0b21PcHRpb25zOiBzdHJpbmc7XG5cblx0cHVibGljIHNlYXJjaFRleHQgPSAnJztcblxuXHRwdWJsaWMgaXNBcHBsaWVkID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBsYXN0QXBwbGllZEZpbHRlcjogYW55ID0ge307XG5cblx0cHJpdmF0ZSByZXNldGVkRmlsdGVyOiBhbnk7XG5cblx0cHVibGljIG1lbnVMZWZ0ID0gXCIwcHhcIjtcblxuXHRwdWJsaWMgbWVudVJpZ2h0ID0gXCIwcHhcIjtcblxuXHRwdWJsaWMgbWVudVRvcCA9IFwiMHB4XCI7XG5cblx0cHVibGljIG1lbnVCb3R0b20gPSBcIjBweFwiO1xuXG5cdHB1YmxpYyBzaG93Tm9GaWx0ZXJSZXN1bHQ6IGJvb2xlYW47XG5cblx0cHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nW10gPSBbXVxuXG5cdHB1YmxpYyBkYXRlcGlja2VyUG9zaXRpb24gPSBEQVRFUElDS0VSX1BPU0lUSU9OO1xuXG5cdHB1YmxpYyBzZWxlY3RlZERhdGVSYW5nZU9wdGlvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuXHRAVmlld0NoaWxkKCdzZWFyY2hCb3gnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoQm94OiBaZW5kdVNlYXJjaEJveENvbXBvbmVudDtcblxuXHRAVmlld0NoaWxkKCdtYWluQ29tcG9uZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIF9jb21wb25lbnRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuXHRjb25zdHJ1Y3RvcigpIHsgfVxuXG5cdHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlcy5jb25maWcgJiYgY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlKSB7XG5cblx0XHRcdC8vIGluaXQgdmFsdWVzXG5cdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb25maWcuaXRlbXMpIHtcblx0XHRcdFx0aWYgKGl0ZW0udHlwZSA9PT0gJ211bHRpc2VsZWN0Jykge1xuXHRcdFx0XHRcdGl0ZW0uZGF0YVNvdXJjZSA9IGl0ZW0uZGF0YVNvdXJjZSA/IHRoaXMuZXh0cmFjdFVuaXF1ZURhdGFTb3VyY2UoaXRlbS5kYXRhU291cmNlKSA6IFtdO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ2RhdGVSYW5nZScgJiYgIWl0ZW0uZGF0ZVJhbmdlKSB7XG5cdFx0XHRcdFx0aXRlbS5kYXRlUmFuZ2UgPSB7IHN0YXJ0OiBudWxsLCBlbmQ6IG51bGwgfTtcblxuXHRcdFx0XHRcdC8vIGluaXQgZGF0ZSByYW5nZSBvcHRpb25zXG5cdFx0XHRcdFx0aWYgKGl0ZW0uc2hvd0RhdGVSYW5nZU9wdGlvbnMgJiYgIWl0ZW0uZGF0ZVJhbmdlT3B0aW9ucz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRpdGVtLmRhdGVSYW5nZU9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHREYXRlUmFuZ2VPcHRpb25zKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ251bWJlclJhbmdlJyAmJiAhaXRlbS5udW1iZXJSYW5nZSkge1xuXHRcdFx0XHRcdGl0ZW0ubnVtYmVyUmFuZ2UgPSB7fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0eXBlb2YgaXRlbS5zaG93VGltZSAhPT0gJ2Jvb2xlYW4nKSB7XG5cdFx0XHRcdFx0aXRlbS5zaG93VGltZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dGhpcy5maWx0ZXJJdGVtcygpO1xuXG5cdFx0XHR0aGlzLnJlc2V0ZWRGaWx0ZXIgPSB0aGlzLmdldEZpbHRlck9iamVjdCgpO1xuXHRcdFx0dGhpcy5maWx0ZXIgPSB0aGlzLmdldEZpbHRlck9iamVjdCgpO1xuXHRcdFx0dGhpcy5sYXN0QXBwbGllZEZpbHRlciA9IFV0aWwuY2xvbmUodGhpcy5maWx0ZXIpO1xuXHRcdH1cblxuXHRcdGlmIChjaGFuZ2VzLmZpbHRlciAmJiBjaGFuZ2VzLmZpbHRlci5jdXJyZW50VmFsdWUpIHtcblx0XHRcdHRoaXMubGFzdEFwcGxpZWRGaWx0ZXIgPSBVdGlsLmNsb25lKGNoYW5nZXMuZmlsdGVyLmN1cnJlbnRWYWx1ZSk7XG5cblx0XHRcdHRoaXMudXBkYXRlQXBwbGllZFN0YXRlKCk7XG5cdFx0fVxuXG5cdFx0aWYgKGNoYW5nZXMuaXNWaXNpYmxlICYmIGNoYW5nZXMuaXNWaXNpYmxlLmN1cnJlbnRWYWx1ZSkge1xuXHRcdFx0dGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcblx0XHRcdHRoaXMuZm9jdXNTZWFyY2hCb3goKTtcblx0XHR9XG5cdH1cblx0XG5cdEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZWRvd24nLCBbJyRldmVudCddKVxuXHRvdXRzaWRlSGFuZGxpbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcblx0XHRpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXHRcdGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyh0YXJnZXQpKSB7XG5cdFx0XHQvLyBlbGVtZW50IG5vdCBpbiB0aGUgRE9NXG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9jb21wb25lbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGhpZGUgdGhlIG1lbnUgZm9yIG91dHNpZGUgY2xpY2tcblx0XHR0aGlzLmhpZGUoKTtcblxuXHRcdC8vIHJlc3RvcmUgdmFsdWVzXG5cdFx0dGhpcy5yZXN0b3JlUHJldmlvdXNBcHBsaWVkKCk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcblx0d2luZG93U2l6ZUhhbmRsaW5nKCkge1xuXHRcdGlmICghdGhpcy5pc1Zpc2libGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnVwZGF0ZVBsYWNlbWVudCgpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnNjcm9sbCcsIFsnJGV2ZW50J10pXG5cdHdpbmRvd1Njcm9sbCgpIHtcblx0XHRpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp3aGVlbCcsIFsnJGV2ZW50J10pXG5cdGhhbmRsZU1vdXNlU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmlzVmlzaWJsZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblx0XHRpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnModGFyZ2V0KSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY29tcG9uZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2J1dHRvbi1zdHJva2VkJykpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmhpZGUoKTtcblx0XHR0aGlzLnJlc3RvcmVQcmV2aW91c0FwcGxpZWQoKTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlkb3duJywgWyckZXZlbnQnXSlcblx0b25XaW5kb3dLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKCF0aGlzLmlzVmlzaWJsZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ1BhZ2VVcCcgfHwgZXZlbnQua2V5ID09PSAnUGFnZURvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0hvbWUnIHx8IGV2ZW50LmtleSA9PT0gJ0VuZCcpIHtcblxuXHRcdFx0Y29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXHRcdFx0aWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHRhcmdldCkpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5fY29tcG9uZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2J1dHRvbi1zdHJva2VkJykpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5oaWRlKCk7XG5cdFx0XHR0aGlzLnJlc3RvcmVQcmV2aW91c0FwcGxpZWQoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZm9jdXNTZWFyY2hCb3goKSB7XG5cdFx0dGhpcy5zZWFyY2hCb3guZG9Gb2N1cygpO1xuXHR9XG5cblx0cHVibGljIGlzTWVudUlzVmlzaWJsZShpdGVtOiBGaWx0ZXJzQ29uZmlnSXRlbSkge1xuXHRcdGlmIChpdGVtLmZpbHRlcmVkRGF0YVNvdXJjZSAmJiB0aGlzLnNlYXJjaFRleHQpIHtcblx0XHRcdGlmICghaXRlbS5maWx0ZXJlZERhdGFTb3VyY2UubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHByaXZhdGUgZXh0cmFjdFVuaXF1ZURhdGFTb3VyY2UoXG5cdFx0YXJyYXk6IHtcblx0XHRcdGlkOiBzdHJpbmcgfCBudW1iZXIsXG5cdFx0XHRuYW1lOiBzdHJpbmcgfCBudW1iZXJcblx0XHR9W11cblx0KToge1xuXHRcdGlkOiBzdHJpbmcgfCBudW1iZXIsXG5cdFx0bmFtZTogc3RyaW5nIHwgbnVtYmVyXG5cdH1bXSB7XG5cdFx0Y29uc3QgaXRlbXMgPSBhcnJheS5maWx0ZXIoZWwgPT4ge1xuXHRcdFx0cmV0dXJuIEJvb2xlYW4oXG5cdFx0XHRcdHR5cGVvZiBlbC5pZCA9PT0gJ251bWJlcicgPyB0eXBlb2YgZWwuaWQgIT09IHVuZGVmaW5lZCA6IGVsLmlkICYmXG5cdFx0XHRcdFx0dHlwZW9mIGVsLm5hbWUgPT09ICdudW1iZXInID8gdHlwZW9mIGVsLm5hbWUgIT09IHVuZGVmaW5lZCA6IGVsLm5hbWVcblx0XHRcdCk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHVuaXFCeShpdGVtcywgKGVsKSA9PiBlbC5pZCk7XG5cdH1cblxuXHRwdWJsaWMgb25TZWxlY3RBbGwoaXRlbTogRmlsdGVyc0NvbmZpZ0l0ZW0pIHtcblx0XHRpdGVtLmRhdGFTb3VyY2UuZm9yRWFjaChkID0+IGQuY2hlY2tlZCA9IGl0ZW0uaXNTZWxlY3RlZEFsbCk7XG5cdH1cblxuXHRwdWJsaWMgaXNJdGVtQWN0aXZlKGl0ZW06IEZpbHRlcnNDb25maWdJdGVtKTogYm9vbGVhbiB7XG5cdFx0aWYgKGl0ZW0udHlwZSA9PT0gJ211bHRpc2VsZWN0Jykge1xuXHRcdFx0Y29uc3QgY2hlY2tlZEl0ZW1zID0gaXRlbS5kYXRhU291cmNlLmZpbHRlcihlbCA9PiBlbC5jaGVja2VkKTtcblx0XHRcdGl0ZW0uaXNTZWxlY3RlZEFsbCA9IGNoZWNrZWRJdGVtcy5sZW5ndGggPT09IGl0ZW0uZGF0YVNvdXJjZS5sZW5ndGhcblx0XHRcdHJldHVybiBjaGVja2VkSXRlbXMubGVuZ3RoID4gMDtcblx0XHR9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ3JhZGlvJykge1xuXHRcdFx0cmV0dXJuIGl0ZW0ucmFkaW9PcHRpb25zLnNvbWUocm8gPT4gcm8uc2VsZWN0ZWQpO1xuXHRcdH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnbnVtYmVyUmFuZ2UnKSB7XG5cdFx0XHRyZXR1cm4gQm9vbGVhbihpdGVtLm51bWJlclJhbmdlLmZyb20gfHwgaXRlbS5udW1iZXJSYW5nZS50byk7XG5cdFx0fSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdkYXRlUmFuZ2UnKSB7XG5cdFx0XHRyZXR1cm4gQm9vbGVhbihpdGVtLmRhdGVSYW5nZS5zdGFydCB8fCBpdGVtLmRhdGVSYW5nZS5lbmQpO1xuXHRcdH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnZGF0ZScpIHtcblx0XHRcdHJldHVybiBCb29sZWFuKGl0ZW0uZGF0ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2VhcmNoVGV4dENoYW5nZWQoKSB7XG5cdFx0dGhpcy5maWx0ZXJJdGVtcygpO1xuXHR9XG5cblx0cHVibGljIGZpbHRlckl0ZW1zKCkge1xuXHRcdGxldCBmaWx0ZXJlZEl0ZW1zQ291bnQgPSAwOyAvLyBJbml0aWFsaXplIHdpdGggMFxuXG5cdFx0Zm9yIChjb25zdCBjb25maWdJdGVtIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRpZiAoY29uZmlnSXRlbS50eXBlID09PSAnbXVsdGlzZWxlY3QnKSB7XG5cdFx0XHRcdGNvbmZpZ0l0ZW0uZmlsdGVyZWREYXRhU291cmNlID0gY29uZmlnSXRlbS5kYXRhU291cmNlLmZpbHRlcihlbCA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgcHJlcGFyZWROYW1lID0gdHlwZW9mIGVsLm5hbWUgPT09ICdudW1iZXInID8gZWwubmFtZS50b1N0cmluZygpIDogZWwubmFtZTtcblx0XHRcdFx0XHRyZXR1cm4gcHJlcGFyZWROYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRmaWx0ZXJlZEl0ZW1zQ291bnQgKz0gY29uZmlnSXRlbS5maWx0ZXJlZERhdGFTb3VyY2UubGVuZ3RoOyAvLyBJbmNyZW1lbnQgdGhlIGNvdW50IGJ5IHRoZSBsZW5ndGggb2YgZmlsdGVyZWREYXRhU291cmNlXG5cdFx0XHR9IGVsc2UgaWYgKGNvbmZpZ0l0ZW0udHlwZSA9PT0gJ2RhdGVSYW5nZScpIHtcblx0XHRcdFx0aWYgKHRoaXMuc2VhcmNoVGV4dCAmJiAhQm9vbGVhbihjb25maWdJdGVtLmRhdGVSYW5nZS5zdGFydCB8fCBjb25maWdJdGVtLmRhdGVSYW5nZS5lbmQpKSB7XG5cdFx0XHRcdFx0Y29uZmlnSXRlbS5maWx0ZXJlZERhdGFTb3VyY2UgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChjb25maWdJdGVtLnR5cGUgPT09ICdudW1iZXJSYW5nZScpIHtcblx0XHRcdFx0aWYgKHRoaXMuc2VhcmNoVGV4dCAmJiAhQm9vbGVhbihjb25maWdJdGVtLm51bWJlclJhbmdlLmZyb20gfHwgY29uZmlnSXRlbS5udW1iZXJSYW5nZS50bykpIHtcblx0XHRcdFx0XHRjb25maWdJdGVtLmZpbHRlcmVkRGF0YVNvdXJjZSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuc2hvd05vRmlsdGVyUmVzdWx0ID0gdGhpcy5zZWFyY2hUZXh0ICYmIGZpbHRlcmVkSXRlbXNDb3VudCA9PT0gMDtcblxuXHR9XG5cblx0cHJpdmF0ZSByZXNldEZpbHRlcnMoKSB7XG5cdFx0bGV0IHNlbGVjdEFsbCA9IHRoaXMucmVzZXRCZWhhdmlvciA9PT0gXCJzZXRfYWxsXCI7XG5cdFx0dGhpcy5zZWxlY3RlZERhdGVSYW5nZU9wdGlvbnMgPSB7fTtcblxuXHRcdGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbmZpZy5pdGVtcykge1xuXHRcdFx0aWYgKGl0ZW0uZGF0YVNvdXJjZSkge1xuXHRcdFx0XHRpdGVtLmlzU2VsZWN0ZWRBbGwgPSBzZWxlY3RBbGw7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBkc0l0ZW0gb2YgaXRlbS5kYXRhU291cmNlKSB7XG5cdFx0XHRcdFx0ZHNJdGVtLmNoZWNrZWQgPSBzZWxlY3RBbGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGl0ZW0uZGF0ZVJhbmdlKSB7XG5cdFx0XHRcdGl0ZW0uZGF0ZVJhbmdlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpdGVtLm51bWJlclJhbmdlKSB7XG5cdFx0XHRcdGl0ZW0ubnVtYmVyUmFuZ2UgPSB7IGZyb206IG51bGwsIHRvOiBudWxsIH07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpdGVtLmRhdGUpIHtcblx0XHRcdFx0aXRlbS5kYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdH1cblx0XHRcdGlmIChpdGVtLnR5cGUgPT09ICd0b2dnbGUnKSB7XG5cdFx0XHRcdGl0ZW0uZW5hYmxlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGl0ZW0udHlwZSA9PT0gJ3JhZGlvJykge1xuXHRcdFx0XHRpdGVtLnJhZGlvT3B0aW9ucy5mb3JFYWNoKGUgPT4ge1xuXHRcdFx0XHRcdGlmIChlLmlkID09PSBpdGVtLnNlbGVjdGVkUmFkaW8pIHtcblx0XHRcdFx0XHRcdGUuc2VsZWN0ZWQgPSB0cnVlXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGUuc2VsZWN0ZWQgPSBmYWxzZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc3RvcmVQcmV2aW91c0FwcGxpZWQoKTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRzd2l0Y2ggKGl0ZW0udHlwZSkge1xuXHRcdFx0XHRjYXNlICdtdWx0aXNlbGVjdCc6XG5cdFx0XHRcdFx0aWYgKGl0ZW0uZGF0YVNvdXJjZSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VsZWN0aW9uID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV07XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgZGF0YUl0ZW0gb2YgaXRlbS5kYXRhU291cmNlKSB7XG5cdFx0XHRcdFx0XHRcdGRhdGFJdGVtLmNoZWNrZWQgPSBzZWxlY3Rpb24gPyBzZWxlY3Rpb24uaW5jbHVkZXMoZGF0YUl0ZW0uaWQpIDogZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdkYXRlUmFuZ2UnOlxuXHRcdFx0XHRcdGl0ZW0uZGF0ZVJhbmdlID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV0gfHwgeyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ251bWJlclJhbmdlJzpcblx0XHRcdFx0XHRpdGVtLm51bWJlclJhbmdlID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV0gfHwge307XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3RvZ2dsZSc6XG5cdFx0XHRcdFx0aXRlbS5kYXRlUmFuZ2UgPSB0aGlzLmxhc3RBcHBsaWVkRmlsdGVyW2l0ZW0ua2V5XTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZGF0ZSc6XG5cdFx0XHRcdFx0aXRlbS5kYXRlID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3JhZGlvJzpcblx0XHRcdFx0XHRpdGVtLnNlbGVjdGVkUmFkaW8gPSB0aGlzLmxhc3RBcHBsaWVkRmlsdGVyW2l0ZW0ua2V5XTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgcmVzZXQoKSB7XG5cdFx0dGhpcy5yZXNldEZpbHRlcnMoKTtcblxuXHRcdHRoaXMuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJPYmplY3QoKTtcblx0XHR0aGlzLnJlc2V0ZWRGaWx0ZXIgPSB0aGlzLmdldEZpbHRlck9iamVjdCgpO1xuXHR9XG5cblx0cHVibGljIGFwcGx5KCkge1xuXHRcdHRoaXMuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJPYmplY3QoKTtcblx0XHRsZXQgaGFzRXJyb3IgPSBmYWxzZTtcblx0XHRmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRjb25zdCBpdGVtRmxhZyA9IHRoaXMub25DaGVja1ZhbGlkaXR5KGl0ZXJhdG9yKTtcblx0XHRcdGlmICghaXRlbUZsYWcpIHtcblx0XHRcdFx0aGFzRXJyb3IgPSB0cnVlXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChoYXNFcnJvcikge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IFtdLCA1MDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UgPSBbXTtcblx0XHR9XG5cdFx0dGhpcy5sYXN0QXBwbGllZEZpbHRlciA9IFV0aWwuY2xvbmUodGhpcy5maWx0ZXIpO1xuXG5cdFx0dGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcik7XG5cblx0XHQvLyB1cGRhdGUgdGhlIGFwcGx5IHN0YXRlXG5cdFx0dGhpcy51cGRhdGVBcHBsaWVkU3RhdGUoKTtcblxuXHRcdHRoaXMuaGlkZSgpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVBcHBsaWVkU3RhdGUoKSB7XG5cdFx0dGhpcy5pc0FwcGxpZWQgPSBmYWxzZTtcblx0XHQvLyBzaG93aW5nIGNoZWNrZWQgaXRlbXMgb24gdG9wIG9mIHRoZSBsaXN0XG5cdFx0Zm9yKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb25maWcuaXRlbXMpIHtcblx0XHRcdGlmIChpdGVtLnR5cGUgPT09ICdtdWx0aXNlbGVjdCcpIHtcblx0XHRcdFx0aXRlbS5maWx0ZXJlZERhdGFTb3VyY2Uuc29ydCgoYTogRGF0YVNvdXJjZSwgYjogRGF0YVNvdXJjZSkgPT4gTnVtYmVyKGIuY2hlY2tlZCB8fCAwKSAtIE51bWJlcihhLmNoZWNrZWQgfHwgMCkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChPYmplY3Qua2V5cyh0aGlzLmZpbHRlcikubGVuZ3RoID4gMCkge1xuXHRcdFx0aWYgKHRoaXMucmVzZXRlZEZpbHRlcikge1xuXHRcdFx0XHQvLyBGaWx0ZXIgd2FzIHJlc2V0LCBzbyBjb21wYXJlIHRoZSByZXNldCBmaWx0ZXIgb2JqZWN0IHdpdGggdGhlIGN1cnJlbnQgZmlsdGVyXG5cdFx0XHRcdC8vIFdoZW4gdXNlciBjbGljayBvbiBSZXNldCBhbmQgVGhlbiBBcHBseSwgZmlsdGVyIG11c3QgdW5oaWdobGlnaHRlZFxuXHRcdFx0XHRpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5yZXNldGVkRmlsdGVyKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXIpKSB7XG5cdFx0XHRcdFx0dGhpcy5pc0FwcGxpZWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmlzQXBwbGllZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRGaWx0ZXJPYmplY3QoKSB7XG5cdFx0Y29uc3QgZmlsdGVyID0ge307XG5cblx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb25maWcuaXRlbXMpIHtcblx0XHRcdHN3aXRjaCAoaXRlbS50eXBlKSB7XG5cdFx0XHRcdGNhc2UgJ211bHRpc2VsZWN0Jzpcblx0XHRcdFx0XHRpZiAoaXRlbS5kYXRhU291cmNlICYmIGl0ZW0uZGF0YVNvdXJjZS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGNoZWNrZWRJZHMgPSBpdGVtLmRhdGFTb3VyY2Vcblx0XHRcdFx0XHRcdFx0LmZpbHRlcihpID0+IGkuY2hlY2tlZClcblx0XHRcdFx0XHRcdFx0Lm1hcChpID0+IGkuaWQpO1xuXG5cdFx0XHRcdFx0XHRpZiAoY2hlY2tlZElkcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0ZmlsdGVyW2l0ZW0ua2V5XSA9IGNoZWNrZWRJZHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdkYXRlUmFuZ2UnOlxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGl0ZW0uZGF0ZVJhbmdlICYmXG5cdFx0XHRcdFx0XHRpdGVtLmRhdGVSYW5nZS5zdGFydCAmJlxuXHRcdFx0XHRcdFx0aXRlbS5kYXRlUmFuZ2UuZW5kXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXJbaXRlbS5rZXldID0gaXRlbS5kYXRlUmFuZ2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdudW1iZXJSYW5nZSc6XG5cdFx0XHRcdFx0aWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5udW1iZXJSYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0/Lm51bWJlclJhbmdlPy5mcm9tID09PSAnbnVtYmVyJyAmJlxuXHRcdFx0XHRcdFx0dHlwZW9mIGl0ZW0/Lm51bWJlclJhbmdlPy50byA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJbaXRlbS5rZXldID0gaXRlbS5udW1iZXJSYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICd0b2dnbGUnOlxuXHRcdFx0XHRcdGZpbHRlcltpdGVtLmtleV0gPSBpdGVtLmVuYWJsZWQgfHwgZmFsc2U7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2RhdGUnOlxuXHRcdFx0XHRcdGlmIChpdGVtLmRhdGUpIHtcblx0XHRcdFx0XHRcdGZpbHRlcltpdGVtLmtleV0gPSBpdGVtLmRhdGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdyYWRpbyc6XG5cdFx0XHRcdFx0ZmlsdGVyW2l0ZW0ua2V5XSA9IGl0ZW0ucmFkaW9PcHRpb25zLmZpbmQocm8gPT4gcm8uc2VsZWN0ZWQpPy5pZDtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gZmlsdGVyO1xuXHR9XG5cblx0cHVibGljIGhpZGUoKSB7XG5cdFx0dGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcblx0XHR0aGlzLnNlYXJjaFRleHQgPSAnJztcblx0XHR0aGlzLmZpbHRlckl0ZW1zKCk7XG5cblx0XHR0aGlzLmlzVmlzaWJsZUNoYW5nZS5lbWl0KGZhbHNlKTtcblx0fVxuXG5cdHB1YmxpYyByYWRpb0NoYW5nZWQodmFsdWU6IHN0cmluZywgaXRlbTogRmlsdGVyc0NvbmZpZ0l0ZW0pOiB2b2lkIHtcblx0XHRpdGVtLnJhZGlvT3B0aW9ucy5mb3JFYWNoKG9wdCA9PiBvcHQuc2VsZWN0ZWQgPSBvcHQuaWQgPT09IHZhbHVlKTtcblx0fVxuXG5cdHB1YmxpYyBjaGVja0NoYW5nZWQoaXRlbTogRGF0YVNvdXJjZSwgY29uZmlnSXRlbTogRmlsdGVyc0NvbmZpZ0l0ZW0pOiB2b2lkIHtcblx0XHRpZiAoIWl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25maWdJdGVtLmRhdGFTb3VyY2UuZm9yRWFjaCgoZGF0YSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW0uaWQgPT0gZGF0YS5pZCkge1xuXHRcdFx0XHRyZXR1cm5cblx0XHRcdH1cblx0XHRcdGlmIChpdGVtLmNoaWxkcmVuLmluY2x1ZGVzKDxzdHJpbmc+ZGF0YS5pZCkpIHtcblx0XHRcdFx0ZGF0YS5jaGVja2VkID0gaXRlbS5jaGVja2VkO1xuXHRcdFx0XHRpZiAoZGF0YS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGVja0NoYW5nZWQoZGF0YSwgY29uZmlnSXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyB0b2dnbGUoKSB7XG5cdFx0dGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGU7XG5cdFx0dGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcblx0XHR0aGlzLmZvY3VzU2VhcmNoQm94KClcblx0fVxuXG5cdHB1YmxpYyBvbkNoZWNrVmFsaWRpdHkoaXRlbTogRmlsdGVyc0NvbmZpZ0l0ZW0pIHtcblx0XHRpZiAoaXRlbS50eXBlID09PSAnbnVtYmVyUmFuZ2UnKSB7XG5cdFx0XHRpZiAodHlwZW9mIGl0ZW0ubnVtYmVyUmFuZ2UuZnJvbSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGl0ZW0ubnVtYmVyUmFuZ2UudG8gPT09ICdudW1iZXInICYmIGl0ZW0ubnVtYmVyUmFuZ2UuZnJvbSA+IGl0ZW0ubnVtYmVyUmFuZ2UudG8pIHtcblx0XHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UucHVzaChgSW52YWxpZCBOdW1iZXIgcmFuZ2U6IFRoZSBNaW4gbnVtYmVyIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gdGhlIE1heCBudW1iZXIuYCk7IFxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChpdGVtLnR5cGUgPT09ICdkYXRlUmFuZ2UnKSB7XG5cdFx0XHRpZiAoaXRlbS5kYXRlUmFuZ2Uuc3RhcnQgJiYgaXRlbS5kYXRlUmFuZ2UuZW5kICYmIG5ldyBEYXRlKGl0ZW0uZGF0ZVJhbmdlLnN0YXJ0KSA+IG5ldyBEYXRlKGl0ZW0uZGF0ZVJhbmdlLmVuZCkpIHtcblx0XHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UucHVzaChgSW52YWxpZCBEYXRlIHJhbmdlOiBUaGUgU3RhcnQgZGF0ZSBjYW5ub3QgYmUgYWZ0ZXIgdGhlIEVuZCBkYXRlLmApOyBcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZVxuXHR9XG5cblx0cHVibGljIHVwZGF0ZVBsYWNlbWVudCgpIHtcblx0XHRjb25zdCBjb250YWluZXIgPSB0aGlzLl9jb21wb25lbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0Y29uc3QgcmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRjb25zdCBsZWZ0ID0gcmVjdC5sZWZ0O1xuXHRcdGNvbnN0IHJpZ2h0ID0gcmVjdC5yaWdodDtcblx0XHRjb25zdCB0b3AgPSByZWN0LnRvcDtcblx0XHRjb25zdCBib3R0b20gPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSB0b3A7XG5cblx0XHQvL1VwZGF0ZSBsZWZ0LXJpZ2h0IHBvc2l0aW9uIFxuXHRcdGlmICh0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKFwiYXV0b1wiKSkge1xuXHRcdFx0Y29uc3QgaG9yaXpvbnRhbFBvc2l0aW9uID0gdGhpcy5nZXRIb3Jpem9udGFsUG9zaXRpb24oKTtcblx0XHRcdHRoaXMubWVudVJpZ2h0ID0gaG9yaXpvbnRhbFBvc2l0aW9uID09PSBcImxlZnRcIiA/IGAke3dpbmRvdy5pbm5lcldpZHRoIC0gcmlnaHR9cHhgIDogXCJ1bnNldFwiO1xuXHRcdFx0dGhpcy5tZW51TGVmdCA9IGhvcml6b250YWxQb3NpdGlvbiA9PT0gXCJyaWdodFwiID8gYCR7bGVmdH1weGAgOiBcInVuc2V0XCI7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKFwibGVmdFwiKSkge1xuXHRcdFx0dGhpcy5tZW51UmlnaHQgPSBgJHt3aW5kb3cuaW5uZXJXaWR0aCAtIHJpZ2h0fXB4YDtcblx0XHRcdHRoaXMubWVudUxlZnQgPSBcInVuc2V0XCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWVudUxlZnQgPSBgJHtsZWZ0fXB4YDtcblx0XHRcdHRoaXMubWVudVJpZ2h0ID0gXCJ1bnNldFwiO1xuXHRcdH1cblxuXHRcdC8vVXBkYXRlIHRvcC1ib3R0b20gcG9zaXRpb24gXG5cdFx0aWYgKHRoaXMucG9zaXRpb24uaW5jbHVkZXMoXCJhdXRvXCIpKSB7XG5cdFx0XHRjb25zdCB2ZXJ0aWNhbFBvc2l0aW9uID0gdGhpcy5nZXRWZXJ0aWNhbFBvc2l0aW9uKCk7XG5cdFx0XHR0aGlzLm1lbnVUb3AgPSB2ZXJ0aWNhbFBvc2l0aW9uID09PSBcImJvdHRvbVwiID8gYCR7dG9wICsgNDJ9cHhgIDogXCJ1bnNldFwiO1xuXHRcdFx0dGhpcy5tZW51Qm90dG9tID0gdmVydGljYWxQb3NpdGlvbiA9PT0gXCJ0b3BcIiA/IGAke2JvdHRvbX1weGAgOiBcInVuc2V0XCI7XG5cdFx0fSBlbHNlIGlmICh0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKFwidG9wXCIpKSB7XG5cdFx0XHR0aGlzLm1lbnVUb3AgPSBcInVuc2V0XCI7XG5cdFx0XHR0aGlzLm1lbnVCb3R0b20gPSBgJHtib3R0b20gKyAxMH1weGA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWVudVRvcCA9IGAke3RvcCArIDU1fXB4YDtcblx0XHRcdHRoaXMubWVudUJvdHRvbSA9IFwidW5zZXRcIjtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldFZlcnRpY2FsUG9zaXRpb24oKTogXCJib3R0b21cIiB8IFwidG9wXCIge1xuXHRcdGNvbnN0IHRvcCA9IHRoaXMuX2NvbXBvbmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG5cdFx0cmV0dXJuIHRvcCA+IHdpbmRvdy5pbm5lckhlaWdodCAvIDIgPyBcInRvcFwiIDogXCJib3R0b21cIjtcblx0fVxuXG5cdHByaXZhdGUgZ2V0SG9yaXpvbnRhbFBvc2l0aW9uKCk6IFwicmlnaHRcIiB8IFwibGVmdFwiIHtcblx0XHRjb25zdCBsZWZ0ID0gdGhpcy5fY29tcG9uZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XG5cdFx0cmV0dXJuIGxlZnQgPiB3aW5kb3cuaW5uZXJXaWR0aCAvIDIgPyBcImxlZnRcIiA6IFwicmlnaHRcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXREZWZhdWx0RGF0ZVJhbmdlT3B0aW9ucygpOiB7IG5hbWU6IHN0cmluZywgZGF0ZVJhbmdlOiBEYXRlUmFuZ2UgfVtdIHtcblx0XHRyZXR1cm4gW1xuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiAnVG9kYXknLFxuXHRcdFx0XHRkYXRlUmFuZ2U6IHtcblx0XHRcdFx0XHRzdGFydDogbW9tZW50KCkuc3RhcnRPZihcImRheVwiKS50b0RhdGUoKSxcblx0XHRcdFx0XHRlbmQ6IG1vbWVudCgpLmVuZE9mKFwiZGF5XCIpLnRvRGF0ZSgpXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6ICdZZXN0ZXJkYXknLFxuXHRcdFx0XHRkYXRlUmFuZ2U6IHtcblx0XHRcdFx0XHRzdGFydDogbW9tZW50KCkuc3VidHJhY3QoMSwgJ2RheXMnKS5zdGFydE9mKFwiZGF5XCIpLnRvRGF0ZSgpLFxuXHRcdFx0XHRcdGVuZDogbW9tZW50KCkuc3VidHJhY3QoMSwgJ2RheXMnKS5lbmRPZihcImRheVwiKS50b0RhdGUoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiAnVGhpcyBXZWVrJyxcblx0XHRcdFx0ZGF0ZVJhbmdlOiB7XG5cdFx0XHRcdFx0c3RhcnQ6IG1vbWVudCgpLnN0YXJ0T2YoJ3dlZWsnKS50b0RhdGUoKSxcblx0XHRcdFx0XHRlbmQ6IG1vbWVudCgpLmVuZE9mKFwid2Vla1wiKS50b0RhdGUoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiAnTGFzdCBXZWVrJyxcblx0XHRcdFx0ZGF0ZVJhbmdlOiB7XG5cdFx0XHRcdFx0c3RhcnQ6IG1vbWVudCgpLnN1YnRyYWN0KDcsICdkYXlzJykuc3RhcnRPZignd2VlaycpLnRvRGF0ZSgpLFxuXHRcdFx0XHRcdGVuZDogbW9tZW50KCkuc3VidHJhY3QoNywgJ2RheXMnKS5lbmRPZignd2VlaycpLnRvRGF0ZSgpXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6ICdUaGlzIE1vbnRoJyxcblx0XHRcdFx0ZGF0ZVJhbmdlOiB7XG5cdFx0XHRcdFx0c3RhcnQ6IG1vbWVudCgpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCksXG5cdFx0XHRcdFx0ZW5kOiBtb21lbnQoKS5lbmRPZihcIm1vbnRoXCIpLnRvRGF0ZSgpXG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdG5hbWU6ICdMYXN0IE1vbnRoJyxcblx0XHRcdFx0ZGF0ZVJhbmdlOiB7XG5cdFx0XHRcdFx0c3RhcnQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJykudG9EYXRlKCksXG5cdFx0XHRcdFx0ZW5kOiBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5lbmRPZignbW9udGgnKS50b0RhdGUoKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XVxuXHR9XG5cblx0cHVibGljIGhhbmRsZURhdGVSYW5nZU9wdGlvbkNsaWNrKGl0ZW0sIG9wdGlvbikge1xuXHRcdGl0ZW0uZGF0ZVJhbmdlID0gb3B0aW9uLmRhdGVSYW5nZTtcblx0XHR0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlT3B0aW9uc1tpdGVtLmtleV0gPSBvcHRpb24ubmFtZTtcblx0fVxuXG5cdHB1YmxpYyBoYW5kbGVDdXN0b21EYXRlUmFuZ2VDbGljayhpdGVtKSB7XG5cdFx0dGhpcy5zZWxlY3RlZERhdGVSYW5nZU9wdGlvbnNbaXRlbS5rZXldID0gXCJDdXN0b21cIjtcblx0fVxuXG5cdHB1YmxpYyBoYW5kbGVFbmREYXRlQ2hhbmdlKGl0ZW0pIHtcblx0XHRpZiAoIWl0ZW0uc2hvd1RpbWUpIHtcblx0XHRcdGl0ZW0uZGF0ZVJhbmdlLmVuZCA9IG1vbWVudChpdGVtLmRhdGVSYW5nZS5lbmQpLmVuZE9mKCdkYXknKS50b0RhdGUoKTtcblx0XHR9XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmaWx0ZXJzLWNvbXBvbmVudFwiXG4gICAgICNtYWluQ29tcG9uZW50XG4gICAgIGNsaWNrLW91dD1cImlzVmlzaWJsZSAmJiBoaWRlKClcIj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tVHJpZ2dlclwiPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc3Ryb2tlZCBmaWx0ZXIge3tpc0FwcGxpZWQgPyAnYXBwbGllZCcgOiAnJ319XCI+XG4gICAgICAgICAgICA8emVuLWljb24gW3NyY109XCJpbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpbWFnZVVybFwiPjwvemVuLWljb24+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZpbHRlci1pY29uIG1hdGVyaWFsLWljb25zXCJcbiAgICAgICAgICAgICAgICpuZ0lmPVwiIWltYWdlVXJsXCI+ZmlsdGVyX2xpc3Q8L2k+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxhYmVsXCI+e3sgbGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRlbnQgKm5nSWY9XCJjdXN0b21UcmlnZ2VyXCI+PC9uZy1jb250ZW50PlxuXG4gICAgPGRpdiBbaGlkZGVuXT1cIiFpc1Zpc2libGVcIlxuICAgICAgICAgY2xhc3M9XCJhY3Rpb24tbWVudSBtZW51LWNvbnRlbnRcIlxuICAgICAgICAgW2NsYXNzLmN1c3RvbVRyaWdnZXJdPVwiY3VzdG9tVHJpZ2dlclwiXG4gICAgICAgICBbbmdTdHlsZV09XCJ7ICdsZWZ0JzogbWVudUxlZnQsICdyaWdodCc6IG1lbnVSaWdodCwgJ3RvcCc6IG1lbnVUb3AsICdib3R0b20nOiBtZW51Qm90dG9tICB9XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbWVudS1oZWFkZXJcIj5cbiAgICAgICAgICAgIDx6ZW4tc2VhcmNoLWJveCBbKHRleHQpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWFyY2hCb3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGV4dENoYW5nZSk9XCJzZWFyY2hUZXh0Q2hhbmdlZCgpXCI+PC96ZW4tc2VhcmNoLWJveD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1tZW51LWJvZHkgaXRlbXMtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yTWVzc2FnZS5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZXJyb3JNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1tc2dcIj57e2l0ZW0gfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29uZmlnLml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTWVudUlzVmlzaWJsZShpdGVtKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGl2aWRlciBiZXR3ZWVuIHR3byBmaWx0ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdkaXZpZGVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmaWx0ZXItZGl2aWRlclwiPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCb29sZWFuIHRvZ2dsZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ3RvZ2dsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW0gdG9nZ2xlLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2l0ZW0udGl0bGUgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHplbi10b2dnbGUtc2xpZGUgWyhlbmFibGVkKV09XCJpdGVtLmVuYWJsZWRcIj48L3plbi10b2dnbGUtc2xpZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24taXRlbSBleHBhbmRlci1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0udHlwZSAhPSAndG9nZ2xlJyAmJiBpdGVtLnR5cGUgIT0gJ2RpdmlkZXInICYmICFpdGVtLmRpc2FibGVDb2xsYXBzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW0uZXhwYW5kZWQgPSAhaXRlbS5leHBhbmRlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0l0ZW1BY3RpdmUoaXRlbSksICdleHBhbmRlZCc6IGl0ZW0uZXhwYW5kZWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zIGV4cGFuZC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXRlbS5leHBhbmRlZH1cIj5leHBhbmRfbW9yZTwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS50aXRsZSB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmV4cGFuZGVkIHx8IGl0ZW0uZGlzYWJsZUNvbGxhcHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJpdGVtLnR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE11bHRpc2VsZWN0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aXNlbGVjdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1pdGVtLWNoZWNrYm94IGRzLWl0ZW0gc2VsZWN0LWFsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCAqbmdJZj1cIml0ZW0uZGF0YVNvdXJjZS5sZW5ndGggPT09IGl0ZW0uZmlsdGVyZWREYXRhU291cmNlLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoY2hlY2tlZCldPVwiaXRlbS5pc1NlbGVjdGVkQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJdGVtQWN0aXZlKGl0ZW0pICYmICFpdGVtLmlzU2VsZWN0ZWRBbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NlbGVjdCBBbGwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwib25TZWxlY3RBbGwoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvemVuLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkc0l0ZW0gb2YgaXRlbS5maWx0ZXJlZERhdGFTb3VyY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW0tY2hlY2tib3ggZHMtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1jaGVja2JveCBbKGNoZWNrZWQpXT1cImRzSXRlbS5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ltYWdlVXJsXT1cImRzSXRlbS5pbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cImNoZWNrQ2hhbmdlZChkc0l0ZW0sIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImRzSXRlbS5uYW1lXCI+PC96ZW4tY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRlIHJhbmdlIHBpY2tlciAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZGF0ZVJhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICBPcHRpb25zIGRhdGUgcmFuZ2UgdmlldyAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmRhdGVSYW5nZU9wdGlvbnM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGl0ZW0uZGF0ZVJhbmdlT3B0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1yYWRpbyBkcy1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2VsZWN0ZWREYXRlUmFuZ2VPcHRpb25zW2l0ZW0ua2V5XSA9PT0gb3B0aW9uLm5hbWV9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tcmFkaW8gW3ZhbHVlXT1cIm9wdGlvbi5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwib3B0aW9uLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWREYXRlUmFuZ2VPcHRpb25zW2l0ZW0ua2V5XSA9PT0gb3B0aW9uLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWRpb0NoYW5nZSk9XCJoYW5kbGVEYXRlUmFuZ2VPcHRpb25DbGljayhpdGVtLCBvcHRpb24pXCI+PC96ZW4tcmFkaW8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1yYWRpbyBkcy1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBzZWxlY3RlZERhdGVSYW5nZU9wdGlvbnNbaXRlbS5rZXldID09PSAnQ3VzdG9tJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLXJhZGlvIFt2YWx1ZV09XCInQ3VzdG9tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0N1c3RvbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkRGF0ZVJhbmdlT3B0aW9uc1tpdGVtLmtleV0gPT09ICdDdXN0b20nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWRpb0NoYW5nZSk9XCJoYW5kbGVDdXN0b21EYXRlUmFuZ2VDbGljayhpdGVtKVwiPjwvemVuLXJhZGlvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWREYXRlUmFuZ2VPcHRpb25zW2l0ZW0ua2V5XSA9PT0gJ0N1c3RvbSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHMtaXRlbSBmaWx0ZXItcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYmxcIj57eydGcm9tJyB8IHRyYW5zbGF0ZX19OjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWRhdGVwaWNrZXIgY2xhc3M9XCJ3aWR0aC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZGF0ZSldPVwiaXRlbS5kYXRlUmFuZ2Uuc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cIml0ZW0uc2hvd1RpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3lQb3NpdGlvbl09XCJpdGVtLmNvbmZpZz8ueVBvc2l0aW9uID8/IGRhdGVwaWNrZXJQb3NpdGlvbi5BVVRPXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRDb250YWluZXJdPVwibWFpbkNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3plbi1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcy1pdGVtIGZpbHRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxibFwiPnt7J1RvJyB8IHRyYW5zbGF0ZX19OjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWRhdGVwaWNrZXIgY2xhc3M9XCJ3aWR0aC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZGF0ZSldPVwiaXRlbS5kYXRlUmFuZ2UuZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJpdGVtLnNob3dUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt5UG9zaXRpb25dPVwiaXRlbS5jb25maWc/LnlQb3NpdGlvbiA/PyBkYXRlcGlja2VyUG9zaXRpb24uQVVUT1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJoYW5kbGVFbmREYXRlQ2hhbmdlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRDb250YWluZXJdPVwibWFpbkNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3plbi1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gIERlZmF1bHQgZGF0ZSByYW5nZSB2aWV3ICAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmRhdGVSYW5nZU9wdGlvbnM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRzLWl0ZW0gZmlsdGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYmxcIj57eydGcm9tJyB8IHRyYW5zbGF0ZX19OjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tZGF0ZXBpY2tlciBjbGFzcz1cIndpZHRoLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGRhdGUpXT1cIml0ZW0uZGF0ZVJhbmdlLnN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cIml0ZW0uc2hvd1RpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeVBvc2l0aW9uXT1cIml0ZW0uY29uZmlnPy55UG9zaXRpb24gPz8gZGF0ZXBpY2tlclBvc2l0aW9uLkFVVE9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50Q29udGFpbmVyXT1cIm1haW5Db21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3plbi1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHMtaXRlbSBmaWx0ZXItcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxibFwiPnt7J1RvJyB8IHRyYW5zbGF0ZX19OjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tZGF0ZXBpY2tlciBjbGFzcz1cIndpZHRoLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGRhdGUpXT1cIml0ZW0uZGF0ZVJhbmdlLmVuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJpdGVtLnNob3dUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3lQb3NpdGlvbl09XCJpdGVtLmNvbmZpZz8ueVBvc2l0aW9uID8/IGRhdGVwaWNrZXJQb3NpdGlvbi5BVVRPXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUNoYW5nZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRDb250YWluZXJdPVwibWFpbkNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvemVuLWRhdGVwaWNrZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIERhdGUgcGlja2VyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHMtaXRlbSBmaWx0ZXItcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGJsXCI+e3snRGF0ZScgfCB0cmFuc2xhdGV9fTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tZGF0ZXBpY2tlciBjbGFzcz1cIndpZHRoLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoZGF0ZSldPVwiaXRlbS5kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiaXRlbS5zaG93VGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudENvbnRhaW5lcl09XCJtYWluQ29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3plbi1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTnVtYmVyIHJhbmdlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXJSYW5nZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItcm93IG51bWJlci1yYW5nZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYmxcIj57eydNaW4nIHwgdHJhbnNsYXRlfX06PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtYXRlcmlhbC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLm51bWJlclJhbmdlLmZyb21cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYmxcIj57eydNYXgnIHwgdHJhbnNsYXRlfX06PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtYXRlcmlhbC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLm51bWJlclJhbmdlLnRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJhZGlvIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidyYWRpbydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGl0ZW0ucmFkaW9PcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pdGVtLXJhZGlvIGRzLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogb3B0aW9uLnNlbGVjdGVkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1yYWRpbyBbdmFsdWVdPVwib3B0aW9uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW1hZ2VVcmxdPVwib3B0aW9uLmltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIm9wdGlvbi5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyYWRpb0NoYW5nZSk9XCJyYWRpb0NoYW5nZWQoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIj48L3plbi1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93Tm9GaWx0ZXJSZXN1bHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuby1pdGVtXCI+e3snTm8gUmVzdWx0cyBGb3VuZCcgfCB0cmFuc2xhdGV9fS4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUtZm9vdGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJyZXNldCgpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidXR0b24tc3Ryb2tlZCBmdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAge3snUmVzZXQnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYXBwbHkoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLWZsYXQgZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgIHt7J0FwcGx5JyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
562
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVuZHUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9maWx0ZXIvemVuZHUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXplbmR1aXQvc3JjL2xpYi9maWx0ZXIvemVuZHUtZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEksT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDO0FBQ25DLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUVuQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQVEvRCxNQUFNLE9BQU8sb0JBQW9CO0lBc0RoQztRQXBEUyxXQUFNLEdBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBSXRDLGFBQVEsR0FBRyxPQUFPLENBQUM7UUFFbkIsa0JBQWEsR0FBd0IsT0FBTyxDQUFDO1FBRTVDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUzQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWpCLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUvQyxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQVV4QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFakIsc0JBQWlCLEdBQVEsRUFBRSxDQUFDO1FBSTdCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVs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IEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFTb3VyY2UsIEZpbHRlcnNDb25maWcsIEZpbHRlcnNDb25maWdJdGVtLCBNdWx0aVNlbGVjdEl0ZW0gfSBmcm9tICcuL2ZpbHRlcnNDb25maWcnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdsb2Rhc2gudW5pcWJ5JztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBaZW5kdVNlYXJjaEJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1ib3gvemVuZHUtc2VhcmNoLWJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgREFURVBJQ0tFUl9QT1NJVElPTiB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBEYXRlUmFuZ2UgfSBmcm9tIFwiLi9kYXRlUmFuZ2VcIjtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnemVuLWZpbHRlcicsXG5cdHRlbXBsYXRlVXJsOiAnLi96ZW5kdS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi96ZW5kdS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBaZW5kdUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cblx0QElucHV0KCkgY29uZmlnOiBGaWx0ZXJzQ29uZmlnID0geyBpdGVtczogW10gfTtcblxuXHRASW5wdXQoKSBmaWx0ZXI6IG9iamVjdDtcblxuXHRASW5wdXQoKSBwb3NpdGlvbiA9ICdyaWdodCc7XG5cblx0QElucHV0KCkgcmVzZXRCZWhhdmlvcjogXCJzZXRfYWxsXCIgfCBcImNsZWFyXCIgPSAnY2xlYXInO1xuXG5cdEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuXHRASW5wdXQoKSBpc1Zpc2libGUgPSBmYWxzZTtcblxuXHRAT3V0cHV0KCkgaXNWaXNpYmxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG5cdEBJbnB1dCgpIGN1c3RvbVRyaWdnZXIgPSBmYWxzZTtcblxuXHRASW5wdXQoKSBpbWFnZVVybDogc3RyaW5nO1xuXG5cdEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cblx0QElucHV0KCkgc2hvd09wdGlvbnM6IGJvb2xlYW47XG5cblx0QElucHV0KCkgY3VzdG9tT3B0aW9uczogc3RyaW5nO1xuXG5cdHB1YmxpYyBzZWFyY2hUZXh0ID0gJyc7XG5cblx0cHVibGljIGlzQXBwbGllZCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgbGFzdEFwcGxpZWRGaWx0ZXI6IGFueSA9IHt9O1xuXG5cdHByaXZhdGUgcmVzZXRlZEZpbHRlcjogYW55O1xuXG5cdHB1YmxpYyBtZW51TGVmdCA9IFwiMHB4XCI7XG5cblx0cHVibGljIG1lbnVSaWdodCA9IFwiMHB4XCI7XG5cblx0cHVibGljIG1lbnVUb3AgPSBcIjBweFwiO1xuXG5cdHB1YmxpYyBtZW51Qm90dG9tID0gXCIwcHhcIjtcblxuXHRwdWJsaWMgc2hvd05vRmlsdGVyUmVzdWx0OiBib29sZWFuO1xuXG5cdHB1YmxpYyBlcnJvck1lc3NhZ2U6IHN0cmluZ1tdID0gW11cblxuXHRwdWJsaWMgZGF0ZXBpY2tlclBvc2l0aW9uID0gREFURVBJQ0tFUl9QT1NJVElPTjtcblxuXHRwdWJsaWMgc2VsZWN0ZWREYXRlUmFuZ2VPcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cblx0QFZpZXdDaGlsZCgnc2VhcmNoQm94JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaEJveDogWmVuZHVTZWFyY2hCb3hDb21wb25lbnQ7XG5cblx0QFZpZXdDaGlsZCgnbWFpbkNvbXBvbmVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBfY29tcG9uZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cblx0Y29uc3RydWN0b3IoKSB7IH1cblxuXHRwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG5cdFx0aWYgKGNoYW5nZXMuY29uZmlnICYmIGNoYW5nZXMuY29uZmlnLmN1cnJlbnRWYWx1ZSkge1xuXG5cdFx0XHQvLyBpbml0IHZhbHVlc1xuXHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRcdGlmIChpdGVtLnR5cGUgPT09ICdtdWx0aXNlbGVjdCcpIHtcblx0XHRcdFx0XHRpdGVtLmRhdGFTb3VyY2UgPSBpdGVtLmRhdGFTb3VyY2UgPyB0aGlzLmV4dHJhY3RVbmlxdWVEYXRhU291cmNlKGl0ZW0uZGF0YVNvdXJjZSkgOiBbXTtcblx0XHRcdFx0fSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdkYXRlUmFuZ2UnICYmICFpdGVtLmRhdGVSYW5nZSkge1xuXHRcdFx0XHRcdGl0ZW0uZGF0ZVJhbmdlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG5cblx0XHRcdFx0XHQvLyBpbml0IGRhdGUgcmFuZ2Ugb3B0aW9uc1xuXHRcdFx0XHRcdGlmIChpdGVtLnNob3dEYXRlUmFuZ2VPcHRpb25zICYmICFpdGVtLmRhdGVSYW5nZU9wdGlvbnM/Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0aXRlbS5kYXRlUmFuZ2VPcHRpb25zID0gdGhpcy5nZXREZWZhdWx0RGF0ZVJhbmdlT3B0aW9ucygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdudW1iZXJSYW5nZScgJiYgIWl0ZW0ubnVtYmVyUmFuZ2UpIHtcblx0XHRcdFx0XHRpdGVtLm51bWJlclJhbmdlID0ge307XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodHlwZW9mIGl0ZW0uc2hvd1RpbWUgIT09ICdib29sZWFuJykge1xuXHRcdFx0XHRcdGl0ZW0uc2hvd1RpbWUgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZmlsdGVySXRlbXMoKTtcblxuXHRcdFx0dGhpcy5yZXNldGVkRmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJPYmplY3QoKTtcblx0XHRcdHRoaXMuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJPYmplY3QoKTtcblx0XHRcdHRoaXMubGFzdEFwcGxpZWRGaWx0ZXIgPSBVdGlsLmNsb25lKHRoaXMuZmlsdGVyKTtcblx0XHR9XG5cblx0XHRpZiAoY2hhbmdlcy5maWx0ZXIgJiYgY2hhbmdlcy5maWx0ZXIuY3VycmVudFZhbHVlKSB7XG5cdFx0XHR0aGlzLmxhc3RBcHBsaWVkRmlsdGVyID0gVXRpbC5jbG9uZShjaGFuZ2VzLmZpbHRlci5jdXJyZW50VmFsdWUpO1xuXG5cdFx0XHR0aGlzLnVwZGF0ZUFwcGxpZWRTdGF0ZSgpO1xuXHRcdH1cblxuXHRcdGlmIChjaGFuZ2VzLmlzVmlzaWJsZSAmJiBjaGFuZ2VzLmlzVmlzaWJsZS5jdXJyZW50VmFsdWUpIHtcblx0XHRcdHRoaXMudXBkYXRlUGxhY2VtZW50KCk7XG5cdFx0XHR0aGlzLmZvY3VzU2VhcmNoQm94KCk7XG5cdFx0fVxuXHR9XG5cdFxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcblx0b3V0c2lkZUhhbmRsaW5nKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG5cdFx0aWYgKCF0aGlzLmlzVmlzaWJsZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblx0XHRpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnModGFyZ2V0KSkge1xuXHRcdFx0Ly8gZWxlbWVudCBub3QgaW4gdGhlIERPTVxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fY29tcG9uZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKHRhcmdldCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBoaWRlIHRoZSBtZW51IGZvciBvdXRzaWRlIGNsaWNrXG5cdFx0dGhpcy5oaWRlKCk7XG5cblx0XHQvLyByZXN0b3JlIHZhbHVlc1xuXHRcdHRoaXMucmVzdG9yZVByZXZpb3VzQXBwbGllZCgpO1xuXHR9XG5cblx0QEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG5cdHdpbmRvd1NpemVIYW5kbGluZygpIHtcblx0XHRpZiAoIXRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy51cGRhdGVQbGFjZW1lbnQoKTtcblx0fVxuXG5cdEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnLCBbJyRldmVudCddKVxuXHR3aW5kb3dTY3JvbGwoKSB7XG5cdFx0aWYgKCF0aGlzLmlzVmlzaWJsZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMudXBkYXRlUGxhY2VtZW50KCk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6d2hlZWwnLCBbJyRldmVudCddKVxuXHRoYW5kbGVNb3VzZVNjcm9sbChldmVudDogV2hlZWxFdmVudCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5pc1Zpc2libGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0aWYgKCFkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHRhcmdldCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHRoaXMuX2NvbXBvbmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpICYmICF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdidXR0b24tc3Ryb2tlZCcpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5oaWRlKCk7XG5cdFx0dGhpcy5yZXN0b3JlUHJldmlvdXNBcHBsaWVkKCk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsIFsnJGV2ZW50J10pXG5cdG9uV2luZG93S2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmICghdGhpcy5pc1Zpc2libGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJyB8fCBldmVudC5rZXkgPT09ICdQYWdlVXAnIHx8IGV2ZW50LmtleSA9PT0gJ1BhZ2VEb3duJyB8fCBldmVudC5rZXkgPT09ICdIb21lJyB8fCBldmVudC5rZXkgPT09ICdFbmQnKSB7XG5cblx0XHRcdGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblx0XHRcdGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyh0YXJnZXQpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMuX2NvbXBvbmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpICYmICF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdidXR0b24tc3Ryb2tlZCcpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMuaGlkZSgpO1xuXHRcdFx0dGhpcy5yZXN0b3JlUHJldmlvdXNBcHBsaWVkKCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGZvY3VzU2VhcmNoQm94KCkge1xuXHRcdHRoaXMuc2VhcmNoQm94LmRvRm9jdXMoKTtcblx0fVxuXG5cdHB1YmxpYyBpc01lbnVJc1Zpc2libGUoaXRlbTogRmlsdGVyc0NvbmZpZ0l0ZW0pIHtcblx0XHRpZiAoaXRlbS5maWx0ZXJlZERhdGFTb3VyY2UgJiYgdGhpcy5zZWFyY2hUZXh0KSB7XG5cdFx0XHRpZiAoIWl0ZW0uZmlsdGVyZWREYXRhU291cmNlLmxlbmd0aCkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRwcml2YXRlIGV4dHJhY3RVbmlxdWVEYXRhU291cmNlKFxuXHRcdGFycmF5OiB7XG5cdFx0XHRpZDogc3RyaW5nIHwgbnVtYmVyLFxuXHRcdFx0bmFtZTogc3RyaW5nIHwgbnVtYmVyXG5cdFx0fVtdXG5cdCk6IE11bHRpU2VsZWN0SXRlbVtdIHtcblx0XHRjb25zdCBpdGVtcyA9IGFycmF5LmZpbHRlcihlbCA9PiB7XG5cdFx0XHRyZXR1cm4gQm9vbGVhbihcblx0XHRcdFx0dHlwZW9mIGVsLmlkID09PSAnbnVtYmVyJyA/IHR5cGVvZiBlbC5pZCAhPT0gdW5kZWZpbmVkIDogZWwuaWQgJiZcblx0XHRcdFx0XHR0eXBlb2YgZWwubmFtZSA9PT0gJ251bWJlcicgPyB0eXBlb2YgZWwubmFtZSAhPT0gdW5kZWZpbmVkIDogZWwubmFtZVxuXHRcdFx0KTtcblx0XHR9KTtcblx0XHRjb25zdCB1bmlxSXRlbXMgPSB1bmlxQnkoaXRlbXMsIChlbCkgPT4gZWwuaWQpO1xuXHRcdC8vIGFkZCBpbmRleCB0byBlYWNoIHVuaXFJdGVtc1xuXHRcdHVuaXFJdGVtcy5mb3JFYWNoKChlbDogTXVsdGlTZWxlY3RJdGVtLCBpbmRleDogbnVtYmVyKSA9PiBlbC5pbmRleCA9IGluZGV4KTtcblx0XHRyZXR1cm4gdW5pcUl0ZW1zXG5cdH1cblxuXHRwdWJsaWMgb25TZWxlY3RBbGwoaXRlbTogRmlsdGVyc0NvbmZpZ0l0ZW0pIHtcblx0XHRpdGVtLmRhdGFTb3VyY2UuZm9yRWFjaChkID0+IGQuY2hlY2tlZCA9IGl0ZW0uaXNTZWxlY3RlZEFsbCk7XG5cdH1cblxuXHRwdWJsaWMgaXNJdGVtQWN0aXZlKGl0ZW06IEZpbHRlcnNDb25maWdJdGVtKTogYm9vbGVhbiB7XG5cdFx0aWYgKGl0ZW0udHlwZSA9PT0gJ211bHRpc2VsZWN0Jykge1xuXHRcdFx0Y29uc3QgY2hlY2tlZEl0ZW1zID0gaXRlbS5kYXRhU291cmNlLmZpbHRlcihlbCA9PiBlbC5jaGVja2VkKTtcblx0XHRcdGl0ZW0uaXNTZWxlY3RlZEFsbCA9IGNoZWNrZWRJdGVtcy5sZW5ndGggPT09IGl0ZW0uZGF0YVNvdXJjZS5sZW5ndGhcblx0XHRcdHJldHVybiBjaGVja2VkSXRlbXMubGVuZ3RoID4gMDtcblx0XHR9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ3JhZGlvJykge1xuXHRcdFx0cmV0dXJuIGl0ZW0ucmFkaW9PcHRpb25zLnNvbWUocm8gPT4gcm8uc2VsZWN0ZWQpO1xuXHRcdH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnbnVtYmVyUmFuZ2UnKSB7XG5cdFx0XHRyZXR1cm4gQm9vbGVhbihpdGVtLm51bWJlclJhbmdlLmZyb20gfHwgaXRlbS5udW1iZXJSYW5nZS50byk7XG5cdFx0fSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdkYXRlUmFuZ2UnKSB7XG5cdFx0XHRyZXR1cm4gQm9vbGVhbihpdGVtLmRhdGVSYW5nZS5zdGFydCB8fCBpdGVtLmRhdGVSYW5nZS5lbmQpO1xuXHRcdH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnZGF0ZScpIHtcblx0XHRcdHJldHVybiBCb29sZWFuKGl0ZW0uZGF0ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgc2VhcmNoVGV4dENoYW5nZWQoKSB7XG5cdFx0dGhpcy5maWx0ZXJJdGVtcygpO1xuXHR9XG5cblx0cHVibGljIGZpbHRlckl0ZW1zKCkge1xuXHRcdGxldCBmaWx0ZXJlZEl0ZW1zQ291bnQgPSAwOyAvLyBJbml0aWFsaXplIHdpdGggMFxuXG5cdFx0Zm9yIChjb25zdCBjb25maWdJdGVtIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRpZiAoY29uZmlnSXRlbS50eXBlID09PSAnbXVsdGlzZWxlY3QnKSB7XG5cdFx0XHRcdGNvbmZpZ0l0ZW0uZmlsdGVyZWREYXRhU291cmNlID0gY29uZmlnSXRlbS5kYXRhU291cmNlLmZpbHRlcihlbCA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgcHJlcGFyZWROYW1lID0gdHlwZW9mIGVsLm5hbWUgPT09ICdudW1iZXInID8gZWwubmFtZS50b1N0cmluZygpIDogZWwubmFtZTtcblx0XHRcdFx0XHRyZXR1cm4gcHJlcGFyZWROYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCkpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRmaWx0ZXJlZEl0ZW1zQ291bnQgKz0gY29uZmlnSXRlbS5maWx0ZXJlZERhdGFTb3VyY2UubGVuZ3RoOyAvLyBJbmNyZW1lbnQgdGhlIGNvdW50IGJ5IHRoZSBsZW5ndGggb2YgZmlsdGVyZWREYXRhU291cmNlXG5cdFx0XHR9IGVsc2UgaWYgKGNvbmZpZ0l0ZW0udHlwZSA9PT0gJ2RhdGVSYW5nZScpIHtcblx0XHRcdFx0aWYgKHRoaXMuc2VhcmNoVGV4dCAmJiAhQm9vbGVhbihjb25maWdJdGVtLmRhdGVSYW5nZS5zdGFydCB8fCBjb25maWdJdGVtLmRhdGVSYW5nZS5lbmQpKSB7XG5cdFx0XHRcdFx0Y29uZmlnSXRlbS5maWx0ZXJlZERhdGFTb3VyY2UgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChjb25maWdJdGVtLnR5cGUgPT09ICdudW1iZXJSYW5nZScpIHtcblx0XHRcdFx0aWYgKHRoaXMuc2VhcmNoVGV4dCAmJiAhQm9vbGVhbihjb25maWdJdGVtLm51bWJlclJhbmdlLmZyb20gfHwgY29uZmlnSXRlbS5udW1iZXJSYW5nZS50bykpIHtcblx0XHRcdFx0XHRjb25maWdJdGVtLmZpbHRlcmVkRGF0YVNvdXJjZSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuc2hvd05vRmlsdGVyUmVzdWx0ID0gdGhpcy5zZWFyY2hUZXh0ICYmIGZpbHRlcmVkSXRlbXNDb3VudCA9PT0gMDtcblxuXHR9XG5cblx0cHJpdmF0ZSByZXNldEZpbHRlcnMoKSB7XG5cdFx0bGV0IHNlbGVjdEFsbCA9IHRoaXMucmVzZXRCZWhhdmlvciA9PT0gXCJzZXRfYWxsXCI7XG5cdFx0dGhpcy5zZWxlY3RlZERhdGVSYW5nZU9wdGlvbnMgPSB7fTtcblxuXHRcdGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLmNvbmZpZy5pdGVtcykge1xuXHRcdFx0aWYgKGl0ZW0uZGF0YVNvdXJjZSkge1xuXHRcdFx0XHRpdGVtLmlzU2VsZWN0ZWRBbGwgPSBzZWxlY3RBbGw7XG5cblx0XHRcdFx0Zm9yIChjb25zdCBkc0l0ZW0gb2YgaXRlbS5kYXRhU291cmNlKSB7XG5cdFx0XHRcdFx0ZHNJdGVtLmNoZWNrZWQgPSBzZWxlY3RBbGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKGl0ZW0uZGF0ZVJhbmdlKSB7XG5cdFx0XHRcdGl0ZW0uZGF0ZVJhbmdlID0geyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpdGVtLm51bWJlclJhbmdlKSB7XG5cdFx0XHRcdGl0ZW0ubnVtYmVyUmFuZ2UgPSB7IGZyb206IG51bGwsIHRvOiBudWxsIH07XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpdGVtLmRhdGUpIHtcblx0XHRcdFx0aXRlbS5kYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdH1cblx0XHRcdGlmIChpdGVtLnR5cGUgPT09ICd0b2dnbGUnKSB7XG5cdFx0XHRcdGl0ZW0uZW5hYmxlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGl0ZW0udHlwZSA9PT0gJ3JhZGlvJykge1xuXHRcdFx0XHRpdGVtLnJhZGlvT3B0aW9ucy5mb3JFYWNoKGUgPT4ge1xuXHRcdFx0XHRcdGlmIChlLmlkID09PSBpdGVtLnNlbGVjdGVkUmFkaW8pIHtcblx0XHRcdFx0XHRcdGUuc2VsZWN0ZWQgPSB0cnVlXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGUuc2VsZWN0ZWQgPSBmYWxzZVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHJlc3RvcmVQcmV2aW91c0FwcGxpZWQoKTogdm9pZCB7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRzd2l0Y2ggKGl0ZW0udHlwZSkge1xuXHRcdFx0XHRjYXNlICdtdWx0aXNlbGVjdCc6XG5cdFx0XHRcdFx0aWYgKGl0ZW0uZGF0YVNvdXJjZSkge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2VsZWN0aW9uID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV07XG5cblx0XHRcdFx0XHRcdGZvciAoY29uc3QgZGF0YUl0ZW0gb2YgaXRlbS5kYXRhU291cmNlKSB7XG5cdFx0XHRcdFx0XHRcdGRhdGFJdGVtLmNoZWNrZWQgPSBzZWxlY3Rpb24gPyBzZWxlY3Rpb24uaW5jbHVkZXMoZGF0YUl0ZW0uaWQpIDogZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdkYXRlUmFuZ2UnOlxuXHRcdFx0XHRcdGl0ZW0uZGF0ZVJhbmdlID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV0gfHwgeyBzdGFydDogbnVsbCwgZW5kOiBudWxsIH07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ251bWJlclJhbmdlJzpcblx0XHRcdFx0XHRpdGVtLm51bWJlclJhbmdlID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV0gfHwge307XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3RvZ2dsZSc6XG5cdFx0XHRcdFx0aXRlbS5kYXRlUmFuZ2UgPSB0aGlzLmxhc3RBcHBsaWVkRmlsdGVyW2l0ZW0ua2V5XTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZGF0ZSc6XG5cdFx0XHRcdFx0aXRlbS5kYXRlID0gdGhpcy5sYXN0QXBwbGllZEZpbHRlcltpdGVtLmtleV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3JhZGlvJzpcblx0XHRcdFx0XHRpdGVtLnNlbGVjdGVkUmFkaW8gPSB0aGlzLmxhc3RBcHBsaWVkRmlsdGVyW2l0ZW0ua2V5XTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgcmVzZXQoKSB7XG5cdFx0dGhpcy5yZXNldEZpbHRlcnMoKTtcblxuXHRcdHRoaXMuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJPYmplY3QoKTtcblx0XHR0aGlzLnJlc2V0ZWRGaWx0ZXIgPSB0aGlzLmdldEZpbHRlck9iamVjdCgpO1xuXHR9XG5cblx0cHVibGljIGFwcGx5KCkge1xuXHRcdHRoaXMuZmlsdGVyID0gdGhpcy5nZXRGaWx0ZXJPYmplY3QoKTtcblx0XHRsZXQgaGFzRXJyb3IgPSBmYWxzZTtcblx0XHRmb3IgKGNvbnN0IGl0ZXJhdG9yIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRjb25zdCBpdGVtRmxhZyA9IHRoaXMub25DaGVja1ZhbGlkaXR5KGl0ZXJhdG9yKTtcblx0XHRcdGlmICghaXRlbUZsYWcpIHtcblx0XHRcdFx0aGFzRXJyb3IgPSB0cnVlXG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChoYXNFcnJvcikge1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLmVycm9yTWVzc2FnZSA9IFtdLCA1MDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UgPSBbXTtcblx0XHR9XG5cdFx0dGhpcy5sYXN0QXBwbGllZEZpbHRlciA9IFV0aWwuY2xvbmUodGhpcy5maWx0ZXIpO1xuXG5cdFx0dGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlcik7XG5cblx0XHQvLyB1cGRhdGUgdGhlIGFwcGx5IHN0YXRlXG5cdFx0dGhpcy51cGRhdGVBcHBsaWVkU3RhdGUoKTtcblxuXHRcdHRoaXMuaGlkZSgpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVBcHBsaWVkU3RhdGUoKSB7XG5cdFx0dGhpcy5pc0FwcGxpZWQgPSBmYWxzZTtcblx0XHQvLyBzaG93aW5nIGNoZWNrZWQgaXRlbXMgb24gdG9wIG9mIHRoZSBsaXN0XG5cdFx0Zm9yKGNvbnN0IGl0ZW0gb2YgdGhpcy5jb25maWcuaXRlbXMpIHtcblx0XHRcdGlmIChpdGVtLnR5cGUgPT09ICdtdWx0aXNlbGVjdCcpIHtcblx0XHRcdFx0Ly8gcmVzb3J0IGZpcnN0IGJhc2VkIG9uIGluZGV4XG5cdFx0XHRcdGl0ZW0uZGF0YVNvdXJjZS5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG5cblx0XHRcdFx0Ly8gdGhlbiBzb3J0IGJhc2VkIG9uIGNoZWNrZWQgaXRlbXMgYWdhaW5cblx0XHRcdFx0aXRlbS5kYXRhU291cmNlLnNvcnQoKGE6IERhdGFTb3VyY2UsIGI6IERhdGFTb3VyY2UpID0+IE51bWJlcihiLmNoZWNrZWQgfHwgMCkgLSBOdW1iZXIoYS5jaGVja2VkIHx8IDApKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmxlbmd0aCA+IDApIHtcblx0XHRcdGlmICh0aGlzLnJlc2V0ZWRGaWx0ZXIpIHtcblx0XHRcdFx0Ly8gRmlsdGVyIHdhcyByZXNldCwgc28gY29tcGFyZSB0aGUgcmVzZXQgZmlsdGVyIG9iamVjdCB3aXRoIHRoZSBjdXJyZW50IGZpbHRlclxuXHRcdFx0XHQvLyBXaGVuIHVzZXIgY2xpY2sgb24gUmVzZXQgYW5kIFRoZW4gQXBwbHksIGZpbHRlciBtdXN0IHVuaGlnaGxpZ2h0ZWRcblx0XHRcdFx0aWYgKEpTT04uc3RyaW5naWZ5KHRoaXMucmVzZXRlZEZpbHRlcikgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMuZmlsdGVyKSkge1xuXHRcdFx0XHRcdHRoaXMuaXNBcHBsaWVkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5pc0FwcGxpZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IG1lbnVDb250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFjdGlvbi1tZW51LWJvZHknKTtcblx0XHRpZiAobWVudUNvbnRlbnQpIHtcblx0XHRcdG1lbnVDb250ZW50LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ2F1dG8nIH0pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgZ2V0RmlsdGVyT2JqZWN0KCkge1xuXHRcdGNvbnN0IGZpbHRlciA9IHt9O1xuXG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMuY29uZmlnLml0ZW1zKSB7XG5cdFx0XHRzd2l0Y2ggKGl0ZW0udHlwZSkge1xuXHRcdFx0XHRjYXNlICdtdWx0aXNlbGVjdCc6XG5cdFx0XHRcdFx0aWYgKGl0ZW0uZGF0YVNvdXJjZSAmJiBpdGVtLmRhdGFTb3VyY2UubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjaGVja2VkSWRzID0gaXRlbS5kYXRhU291cmNlXG5cdFx0XHRcdFx0XHRcdC5maWx0ZXIoaSA9PiBpLmNoZWNrZWQpXG5cdFx0XHRcdFx0XHRcdC5tYXAoaSA9PiBpLmlkKTtcblxuXHRcdFx0XHRcdFx0aWYgKGNoZWNrZWRJZHMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdGZpbHRlcltpdGVtLmtleV0gPSBjaGVja2VkSWRzO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZGF0ZVJhbmdlJzpcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRpdGVtLmRhdGVSYW5nZSAmJlxuXHRcdFx0XHRcdFx0aXRlbS5kYXRlUmFuZ2Uuc3RhcnQgJiZcblx0XHRcdFx0XHRcdGl0ZW0uZGF0ZVJhbmdlLmVuZFxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0ZmlsdGVyW2l0ZW0ua2V5XSA9IGl0ZW0uZGF0ZVJhbmdlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnbnVtYmVyUmFuZ2UnOlxuXHRcdFx0XHRcdGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubnVtYmVyUmFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpdGVtPy5udW1iZXJSYW5nZT8uZnJvbSA9PT0gJ251bWJlcicgJiZcblx0XHRcdFx0XHRcdHR5cGVvZiBpdGVtPy5udW1iZXJSYW5nZT8udG8gPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyW2l0ZW0ua2V5XSA9IGl0ZW0ubnVtYmVyUmFuZ2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAndG9nZ2xlJzpcblx0XHRcdFx0XHRmaWx0ZXJbaXRlbS5rZXldID0gaXRlbS5lbmFibGVkIHx8IGZhbHNlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdkYXRlJzpcblx0XHRcdFx0XHRpZiAoaXRlbS5kYXRlKSB7XG5cdFx0XHRcdFx0XHRmaWx0ZXJbaXRlbS5rZXldID0gaXRlbS5kYXRlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAncmFkaW8nOlxuXHRcdFx0XHRcdGZpbHRlcltpdGVtLmtleV0gPSBpdGVtLnJhZGlvT3B0aW9ucy5maW5kKHJvID0+IHJvLnNlbGVjdGVkKT8uaWQ7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZpbHRlcjtcblx0fVxuXG5cdHB1YmxpYyBoaWRlKCkge1xuXHRcdHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG5cdFx0dGhpcy5zZWFyY2hUZXh0ID0gJyc7XG5cdFx0dGhpcy5maWx0ZXJJdGVtcygpO1xuXG5cdFx0dGhpcy5pc1Zpc2libGVDaGFuZ2UuZW1pdChmYWxzZSk7XG5cdH1cblxuXHRwdWJsaWMgcmFkaW9DaGFuZ2VkKHZhbHVlOiBzdHJpbmcsIGl0ZW06IEZpbHRlcnNDb25maWdJdGVtKTogdm9pZCB7XG5cdFx0aXRlbS5yYWRpb09wdGlvbnMuZm9yRWFjaChvcHQgPT4gb3B0LnNlbGVjdGVkID0gb3B0LmlkID09PSB2YWx1ZSk7XG5cdH1cblxuXHRwdWJsaWMgY2hlY2tDaGFuZ2VkKGl0ZW06IERhdGFTb3VyY2UsIGNvbmZpZ0l0ZW06IEZpbHRlcnNDb25maWdJdGVtKTogdm9pZCB7XG5cdFx0aWYgKCFpdGVtLmNoaWxkcmVuPy5sZW5ndGgpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uZmlnSXRlbS5kYXRhU291cmNlLmZvckVhY2goKGRhdGEpID0+IHtcblx0XHRcdGlmIChpdGVtLmlkID09IGRhdGEuaWQpIHtcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9XG5cdFx0XHRpZiAoaXRlbS5jaGlsZHJlbi5pbmNsdWRlcyg8c3RyaW5nPmRhdGEuaWQpKSB7XG5cdFx0XHRcdGRhdGEuY2hlY2tlZCA9IGl0ZW0uY2hlY2tlZDtcblx0XHRcdFx0aWYgKGRhdGEuY2hpbGRyZW4/Lmxlbmd0aCkge1xuXHRcdFx0XHRcdHRoaXMuY2hlY2tDaGFuZ2VkKGRhdGEsIGNvbmZpZ0l0ZW0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgdG9nZ2xlKCkge1xuXHRcdHRoaXMuaXNWaXNpYmxlID0gIXRoaXMuaXNWaXNpYmxlO1xuXHRcdHRoaXMudXBkYXRlUGxhY2VtZW50KCk7XG5cdFx0dGhpcy5mb2N1c1NlYXJjaEJveCgpXG5cdH1cblxuXHRwdWJsaWMgb25DaGVja1ZhbGlkaXR5KGl0ZW06IEZpbHRlcnNDb25maWdJdGVtKSB7XG5cdFx0aWYgKGl0ZW0udHlwZSA9PT0gJ251bWJlclJhbmdlJykge1xuXHRcdFx0aWYgKHR5cGVvZiBpdGVtLm51bWJlclJhbmdlLmZyb20gPT09ICdudW1iZXInICYmIHR5cGVvZiBpdGVtLm51bWJlclJhbmdlLnRvID09PSAnbnVtYmVyJyAmJiBpdGVtLm51bWJlclJhbmdlLmZyb20gPiBpdGVtLm51bWJlclJhbmdlLnRvKSB7XG5cdFx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlLnB1c2goYEludmFsaWQgTnVtYmVyIHJhbmdlOiBUaGUgTWluIG51bWJlciBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBNYXggbnVtYmVyLmApOyBcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoaXRlbS50eXBlID09PSAnZGF0ZVJhbmdlJykge1xuXHRcdFx0aWYgKGl0ZW0uZGF0ZVJhbmdlLnN0YXJ0ICYmIGl0ZW0uZGF0ZVJhbmdlLmVuZCAmJiBuZXcgRGF0ZShpdGVtLmRhdGVSYW5nZS5zdGFydCkgPiBuZXcgRGF0ZShpdGVtLmRhdGVSYW5nZS5lbmQpKSB7XG5cdFx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlLnB1c2goYEludmFsaWQgRGF0ZSByYW5nZTogVGhlIFN0YXJ0IGRhdGUgY2Fubm90IGJlIGFmdGVyIHRoZSBFbmQgZGF0ZS5gKTsgXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWVcblx0fVxuXG5cdHB1YmxpYyB1cGRhdGVQbGFjZW1lbnQoKSB7XG5cdFx0Y29uc3QgY29udGFpbmVyID0gdGhpcy5fY29tcG9uZW50RWxlbWVudC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXHRcdGNvbnN0IHJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0Y29uc3QgbGVmdCA9IHJlY3QubGVmdDtcblx0XHRjb25zdCByaWdodCA9IHJlY3QucmlnaHQ7XG5cdFx0Y29uc3QgdG9wID0gcmVjdC50b3A7XG5cdFx0Y29uc3QgYm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0IC0gdG9wO1xuXG5cdFx0Ly9VcGRhdGUgbGVmdC1yaWdodCBwb3NpdGlvbiBcblx0XHRpZiAodGhpcy5wb3NpdGlvbi5pbmNsdWRlcyhcImF1dG9cIikpIHtcblx0XHRcdGNvbnN0IGhvcml6b250YWxQb3NpdGlvbiA9IHRoaXMuZ2V0SG9yaXpvbnRhbFBvc2l0aW9uKCk7XG5cdFx0XHR0aGlzLm1lbnVSaWdodCA9IGhvcml6b250YWxQb3NpdGlvbiA9PT0gXCJsZWZ0XCIgPyBgJHt3aW5kb3cuaW5uZXJXaWR0aCAtIHJpZ2h0fXB4YCA6IFwidW5zZXRcIjtcblx0XHRcdHRoaXMubWVudUxlZnQgPSBob3Jpem9udGFsUG9zaXRpb24gPT09IFwicmlnaHRcIiA/IGAke2xlZnR9cHhgIDogXCJ1bnNldFwiO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbi5pbmNsdWRlcyhcImxlZnRcIikpIHtcblx0XHRcdHRoaXMubWVudVJpZ2h0ID0gYCR7d2luZG93LmlubmVyV2lkdGggLSByaWdodH1weGA7XG5cdFx0XHR0aGlzLm1lbnVMZWZ0ID0gXCJ1bnNldFwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1lbnVMZWZ0ID0gYCR7bGVmdH1weGA7XG5cdFx0XHR0aGlzLm1lbnVSaWdodCA9IFwidW5zZXRcIjtcblx0XHR9XG5cblx0XHQvL1VwZGF0ZSB0b3AtYm90dG9tIHBvc2l0aW9uIFxuXHRcdGlmICh0aGlzLnBvc2l0aW9uLmluY2x1ZGVzKFwiYXV0b1wiKSkge1xuXHRcdFx0Y29uc3QgdmVydGljYWxQb3NpdGlvbiA9IHRoaXMuZ2V0VmVydGljYWxQb3NpdGlvbigpO1xuXHRcdFx0dGhpcy5tZW51VG9wID0gdmVydGljYWxQb3NpdGlvbiA9PT0gXCJib3R0b21cIiA/IGAke3RvcCArIDQyfXB4YCA6IFwidW5zZXRcIjtcblx0XHRcdHRoaXMubWVudUJvdHRvbSA9IHZlcnRpY2FsUG9zaXRpb24gPT09IFwidG9wXCIgPyBgJHtib3R0b219cHhgIDogXCJ1bnNldFwiO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbi5pbmNsdWRlcyhcInRvcFwiKSkge1xuXHRcdFx0dGhpcy5tZW51VG9wID0gXCJ1bnNldFwiO1xuXHRcdFx0dGhpcy5tZW51Qm90dG9tID0gYCR7Ym90dG9tICsgMTB9cHhgO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1lbnVUb3AgPSBgJHt0b3AgKyA1NX1weGA7XG5cdFx0XHR0aGlzLm1lbnVCb3R0b20gPSBcInVuc2V0XCI7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZXRWZXJ0aWNhbFBvc2l0aW9uKCk6IFwiYm90dG9tXCIgfCBcInRvcFwiIHtcblx0XHRjb25zdCB0b3AgPSB0aGlzLl9jb21wb25lbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuXHRcdHJldHVybiB0b3AgPiB3aW5kb3cuaW5uZXJIZWlnaHQgLyAyID8gXCJ0b3BcIiA6IFwiYm90dG9tXCI7XG5cdH1cblxuXHRwcml2YXRlIGdldEhvcml6b250YWxQb3NpdGlvbigpOiBcInJpZ2h0XCIgfCBcImxlZnRcIiB7XG5cdFx0Y29uc3QgbGVmdCA9IHRoaXMuX2NvbXBvbmVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuXHRcdHJldHVybiBsZWZ0ID4gd2luZG93LmlubmVyV2lkdGggLyAyID8gXCJsZWZ0XCIgOiBcInJpZ2h0XCI7XG5cdH1cblxuXHRwdWJsaWMgZ2V0RGVmYXVsdERhdGVSYW5nZU9wdGlvbnMoKTogeyBuYW1lOiBzdHJpbmcsIGRhdGVSYW5nZTogRGF0ZVJhbmdlIH1bXSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogJ1RvZGF5Jyxcblx0XHRcdFx0ZGF0ZVJhbmdlOiB7XG5cdFx0XHRcdFx0c3RhcnQ6IG1vbWVudCgpLnN0YXJ0T2YoXCJkYXlcIikudG9EYXRlKCksXG5cdFx0XHRcdFx0ZW5kOiBtb21lbnQoKS5lbmRPZihcImRheVwiKS50b0RhdGUoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiAnWWVzdGVyZGF5Jyxcblx0XHRcdFx0ZGF0ZVJhbmdlOiB7XG5cdFx0XHRcdFx0c3RhcnQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJykuc3RhcnRPZihcImRheVwiKS50b0RhdGUoKSxcblx0XHRcdFx0XHRlbmQ6IG1vbWVudCgpLnN1YnRyYWN0KDEsICdkYXlzJykuZW5kT2YoXCJkYXlcIikudG9EYXRlKClcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogJ1RoaXMgV2VlaycsXG5cdFx0XHRcdGRhdGVSYW5nZToge1xuXHRcdFx0XHRcdHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCd3ZWVrJykudG9EYXRlKCksXG5cdFx0XHRcdFx0ZW5kOiBtb21lbnQoKS5lbmRPZihcIndlZWtcIikudG9EYXRlKClcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZTogJ0xhc3QgV2VlaycsXG5cdFx0XHRcdGRhdGVSYW5nZToge1xuXHRcdFx0XHRcdHN0YXJ0OiBtb21lbnQoKS5zdWJ0cmFjdCg3LCAnZGF5cycpLnN0YXJ0T2YoJ3dlZWsnKS50b0RhdGUoKSxcblx0XHRcdFx0XHRlbmQ6IG1vbWVudCgpLnN1YnRyYWN0KDcsICdkYXlzJykuZW5kT2YoJ3dlZWsnKS50b0RhdGUoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiAnVGhpcyBNb250aCcsXG5cdFx0XHRcdGRhdGVSYW5nZToge1xuXHRcdFx0XHRcdHN0YXJ0OiBtb21lbnQoKS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpLFxuXHRcdFx0XHRcdGVuZDogbW9tZW50KCkuZW5kT2YoXCJtb250aFwiKS50b0RhdGUoKVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lOiAnTGFzdCBNb250aCcsXG5cdFx0XHRcdGRhdGVSYW5nZToge1xuXHRcdFx0XHRcdHN0YXJ0OiBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpLFxuXHRcdFx0XHRcdGVuZDogbW9tZW50KCkuc3VidHJhY3QoMSwgJ21vbnRoJykuZW5kT2YoJ21vbnRoJykudG9EYXRlKClcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdF1cblx0fVxuXG5cdHB1YmxpYyBoYW5kbGVEYXRlUmFuZ2VPcHRpb25DbGljayhpdGVtLCBvcHRpb24pIHtcblx0XHRpdGVtLmRhdGVSYW5nZSA9IG9wdGlvbi5kYXRlUmFuZ2U7XG5cdFx0dGhpcy5zZWxlY3RlZERhdGVSYW5nZU9wdGlvbnNbaXRlbS5rZXldID0gb3B0aW9uLm5hbWU7XG5cdH1cblxuXHRwdWJsaWMgaGFuZGxlQ3VzdG9tRGF0ZVJhbmdlQ2xpY2soaXRlbSkge1xuXHRcdHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VPcHRpb25zW2l0ZW0ua2V5XSA9IFwiQ3VzdG9tXCI7XG5cdH1cblxuXHRwdWJsaWMgaGFuZGxlRW5kRGF0ZUNoYW5nZShpdGVtKSB7XG5cdFx0aWYgKCFpdGVtLnNob3dUaW1lKSB7XG5cdFx0XHRpdGVtLmRhdGVSYW5nZS5lbmQgPSBtb21lbnQoaXRlbS5kYXRlUmFuZ2UuZW5kKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG5cdFx0fVxuXHR9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVycy1jb21wb25lbnRcIlxuICAgICAjbWFpbkNvbXBvbmVudFxuICAgICBjbGljay1vdXQ9XCJpc1Zpc2libGUgJiYgaGlkZSgpXCI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbVRyaWdnZXJcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXN0cm9rZWQgZmlsdGVyIHt7aXNBcHBsaWVkID8gJ2FwcGxpZWQnIDogJyd9fVwiPlxuICAgICAgICAgICAgPHplbi1pY29uIFtzcmNdPVwiaW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaW1hZ2VVcmxcIj48L3plbi1pY29uPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmaWx0ZXItaWNvbiBtYXRlcmlhbC1pY29uc1wiXG4gICAgICAgICAgICAgICAqbmdJZj1cIiFpbWFnZVVybFwiPmZpbHRlcl9saXN0PC9pPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiY3VzdG9tVHJpZ2dlclwiPjwvbmctY29udGVudD5cblxuICAgIDxkaXYgW2hpZGRlbl09XCIhaXNWaXNpYmxlXCJcbiAgICAgICAgIGNsYXNzPVwiYWN0aW9uLW1lbnUgbWVudS1jb250ZW50XCJcbiAgICAgICAgIFtjbGFzcy5jdXN0b21UcmlnZ2VyXT1cImN1c3RvbVRyaWdnZXJcIlxuICAgICAgICAgW25nU3R5bGVdPVwieyAnbGVmdCc6IG1lbnVMZWZ0LCAncmlnaHQnOiBtZW51UmlnaHQsICd0b3AnOiBtZW51VG9wLCAnYm90dG9tJzogbWVudUJvdHRvbSAgfVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLW1lbnUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8emVuLXNlYXJjaC1ib3ggWyh0ZXh0KV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2VhcmNoQm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRleHRDaGFuZ2UpPVwic2VhcmNoVGV4dENoYW5nZWQoKVwiPjwvemVuLXNlYXJjaC1ib3g+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbWVudS1ib2R5IGl0ZW1zLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvck1lc3NhZ2UubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVycm9yTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItbXNnXCI+e3tpdGVtIHwgdHJhbnNsYXRlIH19PC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbmZpZy5pdGVtc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc01lbnVJc1Zpc2libGUoaXRlbSlcIj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIERpdmlkZXIgYmV0d2VlbiB0d28gZmlsdGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS50eXBlID09PSAnZGl2aWRlcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZmlsdGVyLWRpdmlkZXJcIj48L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQm9vbGVhbiB0b2dnbGUgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICd0b2dnbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pdGVtIHRvZ2dsZS1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtLnRpdGxlIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tdG9nZ2xlLXNsaWRlIFsoZW5hYmxlZCldPVwiaXRlbS5lbmFibGVkXCI+PC96ZW4tdG9nZ2xlLXNsaWRlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWl0ZW0gZXhwYW5kZXItaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgIT0gJ3RvZ2dsZScgJiYgaXRlbS50eXBlICE9ICdkaXZpZGVyJyAmJiAhaXRlbS5kaXNhYmxlQ29sbGFwc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNJdGVtQWN0aXZlKGl0ZW0pLCAnZXhwYW5kZWQnOiBpdGVtLmV4cGFuZGVkfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBleHBhbmQtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGl0ZW0uZXhwYW5kZWR9XCI+ZXhwYW5kX21vcmU8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0udGl0bGUgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5leHBhbmRlZCB8fCBpdGVtLmRpc2FibGVDb2xsYXBzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTd2l0Y2hdPVwiaXRlbS50eXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInbXVsdGlzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24taXRlbS1jaGVja2JveCBkcy1pdGVtIHNlbGVjdC1hbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tY2hlY2tib3ggKm5nSWY9XCJpdGVtLmRhdGFTb3VyY2UubGVuZ3RoID09PSBpdGVtLmZpbHRlcmVkRGF0YVNvdXJjZS5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGNoZWNrZWQpXT1cIml0ZW0uaXNTZWxlY3RlZEFsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzSXRlbUFjdGl2ZShpdGVtKSAmJiAhaXRlbS5pc1NlbGVjdGVkQWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTZWxlY3QgQWxsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uU2VsZWN0QWxsKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3plbi1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZHNJdGVtIG9mIGl0ZW0uZmlsdGVyZWREYXRhU291cmNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pdGVtLWNoZWNrYm94IGRzLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tY2hlY2tib3ggWyhjaGVja2VkKV09XCJkc0l0ZW0uY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbWFnZVVybF09XCJkc0l0ZW0uaW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJjaGVja0NoYW5nZWQoZHNJdGVtLCBpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJkc0l0ZW0ubmFtZVwiPjwvemVuLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRGF0ZSByYW5nZSBwaWNrZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGVSYW5nZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgT3B0aW9ucyBkYXRlIHJhbmdlIHZpZXcgIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5kYXRlUmFuZ2VPcHRpb25zPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBpdGVtLmRhdGVSYW5nZU9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW0tcmFkaW8gZHMtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHNlbGVjdGVkRGF0ZVJhbmdlT3B0aW9uc1tpdGVtLmtleV0gPT09IG9wdGlvbi5uYW1lfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLXJhZGlvIFt2YWx1ZV09XCJvcHRpb24ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkRGF0ZVJhbmdlT3B0aW9uc1tpdGVtLmtleV0gPT09IG9wdGlvbi5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFkaW9DaGFuZ2UpPVwiaGFuZGxlRGF0ZVJhbmdlT3B0aW9uQ2xpY2soaXRlbSwgb3B0aW9uKVwiPjwvemVuLXJhZGlvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWl0ZW0tcmFkaW8gZHMtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2VsZWN0ZWREYXRlUmFuZ2VPcHRpb25zW2l0ZW0ua2V5XSA9PT0gJ0N1c3RvbSd9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1yYWRpbyBbdmFsdWVdPVwiJ0N1c3RvbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDdXN0b20nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RlZERhdGVSYW5nZU9wdGlvbnNbaXRlbS5rZXldID09PSAnQ3VzdG9tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFkaW9DaGFuZ2UpPVwiaGFuZGxlQ3VzdG9tRGF0ZVJhbmdlQ2xpY2soaXRlbSlcIj48L3plbi1yYWRpbz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkRGF0ZVJhbmdlT3B0aW9uc1tpdGVtLmtleV0gPT09ICdDdXN0b20nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRzLWl0ZW0gZmlsdGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGJsXCI+e3snRnJvbScgfCB0cmFuc2xhdGV9fTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1kYXRlcGlja2VyIGNsYXNzPVwid2lkdGgtZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGRhdGUpXT1cIml0ZW0uZGF0ZVJhbmdlLnN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJpdGVtLnNob3dUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt5UG9zaXRpb25dPVwiaXRlbS5jb25maWc/LnlQb3NpdGlvbiA/PyBkYXRlcGlja2VyUG9zaXRpb24uQVVUT1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50Q29udGFpbmVyXT1cIm1haW5Db21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC96ZW4tZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHMtaXRlbSBmaWx0ZXItcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYmxcIj57eydUbycgfCB0cmFuc2xhdGV9fTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHplbi1kYXRlcGlja2VyIGNsYXNzPVwid2lkdGgtZnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGRhdGUpXT1cIml0ZW0uZGF0ZVJhbmdlLmVuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiaXRlbS5zaG93VGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbeVBvc2l0aW9uXT1cIml0ZW0uY29uZmlnPy55UG9zaXRpb24gPz8gZGF0ZXBpY2tlclBvc2l0aW9uLkFVVE9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUNoYW5nZShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50Q29udGFpbmVyXT1cIm1haW5Db21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC96ZW4tZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICBEZWZhdWx0IGRhdGUgcmFuZ2UgdmlldyAgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5kYXRlUmFuZ2VPcHRpb25zPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcy1pdGVtIGZpbHRlci1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGJsXCI+e3snRnJvbScgfCB0cmFuc2xhdGV9fTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWRhdGVwaWNrZXIgY2xhc3M9XCJ3aWR0aC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhkYXRlKV09XCJpdGVtLmRhdGVSYW5nZS5zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJpdGVtLnNob3dUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3lQb3NpdGlvbl09XCJpdGVtLmNvbmZpZz8ueVBvc2l0aW9uID8/IGRhdGVwaWNrZXJQb3NpdGlvbi5BVVRPXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudENvbnRhaW5lcl09XCJtYWluQ29tcG9uZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC96ZW4tZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRzLWl0ZW0gZmlsdGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYmxcIj57eydUbycgfCB0cmFuc2xhdGV9fTo8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWRhdGVwaWNrZXIgY2xhc3M9XCJ3aWR0aC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhkYXRlKV09XCJpdGVtLmRhdGVSYW5nZS5lbmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiaXRlbS5zaG93VGltZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt5UG9zaXRpb25dPVwiaXRlbS5jb25maWc/LnlQb3NpdGlvbiA/PyBkYXRlcGlja2VyUG9zaXRpb24uQVVUT1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImhhbmRsZUVuZERhdGVDaGFuZ2UoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50Q29udGFpbmVyXT1cIm1haW5Db21wb25lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3plbi1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRlIHBpY2tlciAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRzLWl0ZW0gZmlsdGVyLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxibFwiPnt7J0RhdGUnIHwgdHJhbnNsYXRlfX06PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8emVuLWRhdGVwaWNrZXIgY2xhc3M9XCJ3aWR0aC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGRhdGUpXT1cIml0ZW0uZGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cIml0ZW0uc2hvd1RpbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJlbnRDb250YWluZXJdPVwibWFpbkNvbXBvbmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC96ZW4tZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIE51bWJlciByYW5nZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyUmFuZ2UnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLXJvdyBudW1iZXItcmFuZ2Utcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGJsXCI+e3snTWluJyB8IHRyYW5zbGF0ZX19OjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibWF0ZXJpYWwtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5udW1iZXJSYW5nZS5mcm9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGJsXCI+e3snTWF4JyB8IHRyYW5zbGF0ZX19OjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibWF0ZXJpYWwtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5udW1iZXJSYW5nZS50b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSYWRpbyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBpdGVtLnJhZGlvT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taXRlbS1yYWRpbyBkcy1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IG9wdGlvbi5zZWxlY3RlZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx6ZW4tcmFkaW8gW3ZhbHVlXT1cIm9wdGlvbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ltYWdlVXJsXT1cIm9wdGlvbi5pbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJvcHRpb24uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmFkaW9DaGFuZ2UpPVwicmFkaW9DaGFuZ2VkKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib3B0aW9uLmRpc2FibGVkXCI+PC96ZW4tcmFkaW8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2hvd05vRmlsdGVyUmVzdWx0XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibm8taXRlbVwiPnt7J05vIFJlc3VsdHMgRm91bmQnIHwgdHJhbnNsYXRlfX0uLjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1tZW51LWZvb3RlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXN0cm9rZWQgZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgIHt7J1Jlc2V0JyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImFwcGx5KClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ1dHRvbi1mbGF0IGZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICB7eydBcHBseScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
package/fesm2015/ng-zenduit.mjs
CHANGED
|
@@ -1293,7 +1293,10 @@ class ZenduFilterComponent {
|
|
|
1293
1293
|
return Boolean(typeof el.id === 'number' ? typeof el.id !== undefined : el.id &&
|
|
1294
1294
|
typeof el.name === 'number' ? typeof el.name !== undefined : el.name);
|
|
1295
1295
|
});
|
|
1296
|
-
|
|
1296
|
+
const uniqItems = uniqBy(items, (el) => el.id);
|
|
1297
|
+
// add index to each uniqItems
|
|
1298
|
+
uniqItems.forEach((el, index) => el.index = index);
|
|
1299
|
+
return uniqItems;
|
|
1297
1300
|
}
|
|
1298
1301
|
onSelectAll(item) {
|
|
1299
1302
|
item.dataSource.forEach(d => d.checked = item.isSelectedAll);
|
|
@@ -1441,7 +1444,10 @@ class ZenduFilterComponent {
|
|
|
1441
1444
|
// showing checked items on top of the list
|
|
1442
1445
|
for (const item of this.config.items) {
|
|
1443
1446
|
if (item.type === 'multiselect') {
|
|
1444
|
-
|
|
1447
|
+
// resort first based on index
|
|
1448
|
+
item.dataSource.sort((a, b) => a.index - b.index);
|
|
1449
|
+
// then sort based on checked items again
|
|
1450
|
+
item.dataSource.sort((a, b) => Number(b.checked || 0) - Number(a.checked || 0));
|
|
1445
1451
|
}
|
|
1446
1452
|
}
|
|
1447
1453
|
if (Object.keys(this.filter).length > 0) {
|
|
@@ -1456,6 +1462,10 @@ class ZenduFilterComponent {
|
|
|
1456
1462
|
this.isApplied = true;
|
|
1457
1463
|
}
|
|
1458
1464
|
}
|
|
1465
|
+
const menuContent = document.querySelector('.action-menu-body');
|
|
1466
|
+
if (menuContent) {
|
|
1467
|
+
menuContent.scrollTo({ top: 0, behavior: 'auto' });
|
|
1468
|
+
}
|
|
1459
1469
|
}
|
|
1460
1470
|
getFilterObject() {
|
|
1461
1471
|
var _a, _b, _c;
|