ctt-babylon 0.5.2 → 0.5.3
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.
|
@@ -378,13 +378,10 @@ export class MapperService {
|
|
|
378
378
|
}
|
|
379
379
|
//---- LAYOUT COMPONENTS ----//
|
|
380
380
|
mapTopSlider(props) {
|
|
381
|
-
let items = props?.multimedia?.imagenes.filter((img) => img.tags?.some((tag) => tag.name === 'TopSlider' || tag === 'TopSlider')
|
|
382
|
-
? img
|
|
383
|
-
: undefined);
|
|
384
381
|
return {
|
|
385
382
|
buttons: Utils.mapButtons(props?.buttons),
|
|
386
383
|
links: Utils.mapButtons(props?.links),
|
|
387
|
-
items:
|
|
384
|
+
items: props?.multimedia?.imagenes?.map((item) => ({
|
|
388
385
|
title: item?.title,
|
|
389
386
|
subtitle: item?.pretitle,
|
|
390
387
|
img: this.getImageResponsive(item, false),
|
|
@@ -2403,4 +2400,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
2403
2400
|
providedIn: 'root',
|
|
2404
2401
|
}]
|
|
2405
2402
|
}] });
|
|
2406
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWFsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBTTFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7UUFJTSxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBMnJHNUM7SUF2c0dHLElBQUksc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcs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QUMsQ0FBQyxFQUN6QyxLQUFLLENBQ1I7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUMzQixLQUFLLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzFDLEtBQUssQ0FDUjtZQUNELE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3QyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztTQUNMLENBQUM7SUFDOUIsQ0FBQzsrR0Exc0dRLGFBQWE7bUhBQWIsYUFBYSxjQUZWLE1BQU07OzRGQUVULGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBjb21wdXRlZCxcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBQTEFURk9STV9JRCxcbiAgICBTaWduYWwsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEJhYnlsb240MDRJLFxuICAgIEJhYnlsb25BY3Rpb25CYW5uZXJJLFxuICAgIEJhYnlsb25BZGRyZXNzSXRlbSxcbiAgICBCYWJ5bG9uQWR2YW50YWdlc0ksXG4gICAgQmFieWxvbkJhbm5lckdhbGxlcnlJLFxuICAgIEJhYnlsb25CYW5uZXJJbmZvSSxcbiAgICBCYWJ5bG9uQmxvZ0RldGFpbHNJLFxuICAgIEJhYnlsb25CbG9nTGlzdEksXG4gICAgQmFieWxvbkJyZWFkY3J1bWJJLFxuICAgIEJhYnlsb25Db21pbmdTb29uSSxcbiAgICBCYWJ5bG9uQ29udGFjdEFkZHJlc3NJLFxuICAgIEJhYnlsb25Db250YWN0Rm9ybUksXG4gICAgQmFieWxvbkNvbnRhY3RIb3dJLFxuICAgIEJhYnlsb25Db250YWN0TWFwYUksXG4gICAgQmFieWxvbkNvbnRhY3RNYXBJdGVtLFxuICAgIEJhYnlsb25FbmdpbmVJLFxuICAgIEJhYnlsb25FbmdpbmVNb2RhbEksXG4gICAgQmFieWxvbkVxdWlwbWVudEl0ZW0sXG4gICAgQmFieWxvbkV4dGVybmFsU2NyaXB0SSxcbiAgICBCYWJ5bG9uRmFxSSxcbiAgICBCYWJ5bG9uRmFxSXRlbSxcbiAgICBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJLFxuICAgIEJhYnlsb25GZWF0dXJlc1NsaWRlckl0ZW0sXG4gICAgQmFieWxvbkZvb3RlckNvbnRhY3RJLFxuICAgIEJhYnlsb25Gb290ZXJMaW5rc0ksXG4gICAgQmFieWxvbkZvb3RlckxvZ29zSSxcbiAgICBCYWJ5bG9uRm9vdGVyU29jaWFsSSxcbiAgICBCYWJ5bG9uR2FsbGVyeUZpbHRlcixcbiAgICBCYWJ5bG9uR2FsbGVyeUksXG4gICAgQmFieWxvbkdhbGxlcnlJdGVtLFxuICAgIEJhYnlsb25IZWFkZXJCb29rU2hvd0ksXG4gICAgQmFieWxvbkhlYWRlckNsZWFySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudUNlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySSxcbiAgICBCYWJ5bG9uSGVhZGVyTWVudVNob3dJLFxuICAgIEJhYnlsb25IZWFkSW50cm9JLFxuICAgIEJhYnlsb25Ib3RlbHNMaXN0SSxcbiAgICBCYWJ5bG9uSG90ZWxzU2xpZGVySSxcbiAgICBCYWJ5bG9uSW5mbzJDb2xJbWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0JpZ0ksXG4gICAgQmFieWxvbkluZm8yaW1nSSxcbiAgICBCYWJ5bG9uSW5mbzRpbWdJLFxuICAgIEJhYnlsb25JbmZvQmlnSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJLFxuICAgIEJhYnlsb25JbmZvR3JpZEl0ZW1JLFxuICAgIEJhYnlsb25JbmZvSW1nSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ1NsaWRlckksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ludHJvSSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySSxcbiAgICBCYWJ5bG9uSW5mb1ppZ3phZ1YySXRlbSxcbiAgICBCYWJ5bG9uSXRlbXNHcmlkSSxcbiAgICBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEksXG4gICAgQmFieWxvbkxlZ2FsSSxcbiAgICBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0ksXG4gICAgQmFieWxvbk5ld3NsZXR0ZXJJLFxuICAgIEJhYnlsb25PZmZlckRldGFpbEksXG4gICAgQmFieWxvbk9mZmVySSxcbiAgICBCYWJ5bG9uT2ZmZXJQb3B1cEksXG4gICAgQmFieWxvbk9mZmVyUG9wdXBWMkksXG4gICAgQmFieWxvbk9mZmVyU2xpZGVySSxcbiAgICBCYWJ5bG9uT2ZmZXJzTGlzdEksXG4gICAgQmFieWxvbk9mZmVyc0xpc3RJdGVtLFxuICAgIEJhYnlsb25QcmVzc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tRGV0YWlsSSxcbiAgICBCYWJ5bG9uUm9vbUluZm9JLFxuICAgIEJhYnlsb25Sb29tc0NvbHNJLFxuICAgIEJhYnlsb25Sb29tc0dyaWRJLFxuICAgIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnQsXG4gICAgQmFieWxvblJvb21zTGlzdEksXG4gICAgQmFieWxvblJvb21zTGlzdEl0ZW0sXG4gICAgQmFieWxvblJvb21zU2xpZGVySSxcbiAgICBCYWJ5bG9uU2VydmljZXNTbGlkZXJJLFxuICAgIEJhYnlsb25TbGlkZXIyQ29sSXRlbUksXG4gICAgQmFieWxvblNsaWRlcjJpdGVtc0ksXG4gICAgQmFieWxvblNsaWRlcjNJdGVtc0ksXG4gICAgQmFieWxvblNsaWRlcjRjb2xMYWJlbHMsXG4gICAgQmFieWxvblNsaWRlckl0ZW0sXG4gICAgQmFieWxvblN0YXRpY0Zvb3RlckksXG4gICAgQmFieWxvblN1Ym1lbnVJLFxuICAgIEJhYnlsb25UaGFua3NJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJJdGVtLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJUaHVtYnNJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJWMkksXG4gICAgQmFieWxvblRvcFNsaWRlclZpZGVvSSxcbiAgICBCYWJ5bG9uV2VibWFwSSxcbiAgICBEcm9wZG93bk9wdGlvbixcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlJztcbmltcG9ydCB7IEJhYnlsb25HbG9iYWxNb2RhbEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1nbG9iYWwtbW9kYWwnO1xuaW1wb3J0IHsgQmFieWxvbkl0ZW1HcmlkSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWxpc3QtZ3JpZC9iYWJ5bG9uLWxpc3QtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFieWxvbkxpc3RHcmlkSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLWxpc3QtZ3JpZC9iYWJ5bG9uLWxpc3QtZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbk1vZGFsUG9wdXBJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tbW9kYWwtcG9wdXAnO1xuaW1wb3J0IHsgQmFieWxvblN0YXRpY0Zvb3RlclYySSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLXN0YXRpYy1mb290ZXItdjIvYmFieWxvbi1zdGF0aWMtZm9vdGVyLXYyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSb29tU2VydmljZVR5cGUgfSBmcm9tICcuLi8uLi9FbnVtL3NlcnZpY2VzLmVudW0nO1xuaW1wb3J0IHsgVmlld3NUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS92aWV3cy5lbnVtJztcbmltcG9ydCB7XG4gICAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkRyb3Bkb3duSSxcbiAgICBCYWJ5bG9uSW1hZ2VJLFxuICAgIEJhYnlsb25JbnB1dEksXG4gICAgQmFieWxvbk1lbnVCdXR0b25JLFxuICAgIEJhYnlsb25NZW51SW5mb0ksXG4gICAgQmFieWxvblRleHRJbmZvSSxcbiAgICBCb2R5Q29tcG9uZW50LFxuICAgIENPTVBPTkVOVFNfRVhUUkEsXG4gICAgQ29uc3VsdFR5cGVJLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgU2NyZWVuU2l6ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2NyZWVuLXNpemVyJztcbmltcG9ydCB7IFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuL21hcHBlci5zZXJ2aWNlLnRva2VuJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWFwcGVyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzaXRlU3ZjID0gaW5qZWN0KFNJVEVfQ09ORklHX1NFUlZJQ0VfVE9LRU4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuU2l6ZXIgPSBpbmplY3QoU2NyZWVuU2l6ZXJTZXJ2aWNlKTtcblxuICAgIGdldCBpc01pbkZ1bGxUYWJsZXRJbnN0YW50KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zY3JlZW5TaXplci5taW5GdWxsVGFibGV0SW5zdGFudCgpO1xuICAgIH1cblxuICAgIGhlYWRlckJ1dHRvbnMgPSBzaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHNpdGVJZDogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gdGhpcy5zaXRlU3ZjLndlYkNvbmZpZ0luc3RhbnQ/LnNpdGVJRFxuICAgICk7XG5cbiAgICBmbG9hdGluZ0J1dHRvbnM/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICAgIGdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgaW1hZ2U6IEltYWdlUmVzcG9uc2UgfCB1bmRlZmluZWQsXG4gICAgICAgIGlzRmlndXJlID0gdHJ1ZVxuICAgICk6IHN0cmluZyB8IEJhYnlsb25JbWFnZUkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNjcmVlblNpemVyLm1vYmlsZSgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMzc1XT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc1NtYWxsVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bNTQwXT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5pc01lZGl1bVRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzc2OF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNGdWxsVGFibGV0SW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTAyNF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNTbWFsbERlc2t0b3BJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMjgwXT8ud2VicDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5TaXplci5taW5NZWRpdW1EZXNrdG9wKCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnBhdGg/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEzNjZdPy53ZWJwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEltYWdlXG4gICAgICAgICAgICA/IGlzRmlndXJlXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLnNpdGVTdmMuY2RuSW1hZ2VzSW5zdGFudH0ke3NlbGVjdGVkSW1hZ2V9YFxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIHNyYzogYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWAsXG4gICAgICAgICAgICAgICAgICAgICAgYWx0OiBpbWFnZT8uYWx0LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlczogSW1hZ2VSZXNwb25zZVtdIHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0ZpZ3VyZSA9IHRydWVcbiAgICApOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpbWFnZXM/Lm1hcCgoaW1nKSA9PiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGlzRmlndXJlKSEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgbWF4TGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG1pbkxlbmd0aCA9IDBcbiAgICApOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uczogRHJvcGRvd25PcHRpb25bXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gbWluTGVuZ3RoOyBpIDw9IG1heExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goeyBjb2RlOiBpLCBuYW1lOiBpIDwgMTAgPyBgMCR7aX1gIDogYCR7aX1gIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIG1hcEJvZHlFeHRyYShcbiAgICAgICAgYm9keTogYW55W10gfCB1bmRlZmluZWRcbiAgICApOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBib2R5TWFwcGVkOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+W10gfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgYm9keT8ubWFwKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRNYXBwZWQ6IEJvZHlDb21wb25lbnQ8Q09NUE9ORU5UU19FWFRSQT4gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogY29tcG9uZW50Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge30sXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN1Ym1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25TdWJtZW51STtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID0gJ21lbnUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBib2R5TWFwcGVkO1xuICAgIH1cblxuICAgIG1hcFN1Ym1lbnUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdWJtZW51SSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gcHJvcHM/Lml0ZW1zPy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uc2VsZWN0ZWQpO1xuICAgICAgICBjb25zdCBzdWJtZW51ID0ge1xuICAgICAgICAgICAgLy8gaG90ZWw6IHByb3BzPy5ob3RlbCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uaXRlbXNcbiAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaW5rPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBzZWxlY3RlZDoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZD8ubmFtZSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICB9IGFzIEJhYnlsb25TdWJtZW51STtcblxuICAgICAgICByZXR1cm4gc3VibWVudTtcbiAgICB9XG5cbiAgICBtYXBDb21wb25lbnRzPFQ+KFxuICAgICAgICBib2R5OiBhbnlbXSxcbiAgICAgICAgYWRkb25zPzogQ29tcG9uZW50c0FkZG9uc1xuICAgICk6IEJvZHlDb21wb25lbnQ8VD5bXSB7XG4gICAgICAgIGlmICghYm9keSB8fCAhYm9keS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXSBhcyBCb2R5Q29tcG9uZW50PFQ+W107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxUPltdID0gYm9keVxuICAgICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGNvbXBvbmVudCkgPT4gY29tcG9uZW50ICE9PSBudWxsICYmIGNvbXBvbmVudCAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICApXG4gICAgICAgICAgICA/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PFQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgICAgICBhbGlhczogY29tcG9uZW50LmFsaWFzLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I6IGNvbXBvbmVudC50ZXh0Y29sb3IsXG4gICAgICAgICAgICAgICAgfSBhcyBCb2R5Q29tcG9uZW50PFQ+O1xuXG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICAvL0l0IGlzIG5lY2Vzc2FyeSwgb3RoZXJ3aXNlIGl0IGdpdmVzIGFuIGVycm9yIGFuZCBkb2VzIG5vdCBzaG93IGNvbXBvbmVudHNcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2R1bGU0MDQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcDQwNChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIC0tLS0vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydmlkZW8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclZpZGVvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnYycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICd0b3BzbGlkZXJ2MnJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm9pbWdyaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQudGV4dGNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3NsaWRlcnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nc2xpZGVybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ltZ1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmZvaW1nc2xpZGVycmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ludHJvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW50cm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yaW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yaW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmltZ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29saW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yY29saW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmNvbGltZ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8yY29saW1nbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJjb2xpbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm8yY29saW1nbGVmdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvM2ltZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRleHRjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFppZ3phZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mb3ppZ3phZ3JpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9ncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJjb2xsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29scmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdzbGlkZXIyY29scmlnaHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyM2NvbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyQ29sbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjRjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpdGVtc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEl0ZW1zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNHcmlkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVyR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dyaWRnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHcmlkR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcm5ld3NsZXR0ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBCYW5uZXJOZXdzbGV0dGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndGhhbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUaGFua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rmb3JtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0Rm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29udGFjdE9mZmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG9ucz8uY29uc3VsdFR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3Rob3cnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbnRhY3RIb3coXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3dlYm1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwV2VibWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0bWFwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0TWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsZWdhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGVnYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zY29scyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNDb2xzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tZGV0YWlscyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbURldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydGh1bWJzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJUaHVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZlYXR1cmVzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGZWF0dXJlc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmFubmVyaW5mbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmFubmVySW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbXNsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBSb29tc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbWluZ3Nvb24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcENvbWluZ1Nvb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyZGV0YWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckRldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFxJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGYXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXRpY2Zvb3Rlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3RhdGljRm9vdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnYWxsZXJ5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBHYWxsZXJ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICduYXYnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE1lbnUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/Lm1lbnVTb2NpYWxNZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2VzbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExhbmd1YWdlTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyM0l0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3RlbHNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhvdGVsc1NsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxzbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSG90ZWxzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzRpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm80SW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzZXJ2aWNlc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2VydmljZXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRhY3RhZGRyZXNzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWR2YW50YWdlcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWR2YW50YWdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0JpZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3YybGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFndjJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb1ppZ1phZ1YyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJjb250YWN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJDb250YWN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ2JpZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mbzJJbWdCaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxpbmtzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMaW5rcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVybG9nb3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlckxvZ29zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcnNsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcnNvY2lhbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEZvb3RlclNvY2lhbHMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjJpdGVtcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU2xpZGVyMml0ZW1zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXJ2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3RhdGljRm9vdGVydjIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpc3RncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMaXN0R3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmV3c2xldHRlcm1vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBOZXdzbGV0dGVyTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hlYWRpbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSGVhZEludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdicmVhZGNydW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQnJlYWRjcnVtYnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcnYyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lclYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2xvYmFsbW9kYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dsb2JhbG1vZGFsMic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2xvYmFsTW9kYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3BhbG9waWEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEV4dGVybmFsU2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYmxvZ2RldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQmxvZ0RldGFpbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlckJhbm5lcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21vZGFsbXVsdGlwbGVtb3RvcnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbHBvcHVwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNb2RhbFBvcHVwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdwcmVzc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFByZXNzTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYWN0aW9uYmFubmVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBBY3Rpb25CYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcHBlZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXA0MDQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb240MDRJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb240MDRJO1xuICAgIH1cblxuICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICBtYXBUb3BTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ub3BTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGl0ZW1zID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLmZpbHRlcigoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgaW1nLnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgKHRhZykgPT4gdGFnLm5hbWUgPT09ICdUb3BTbGlkZXInIHx8IHRhZyA9PT0gJ1RvcFNsaWRlcidcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA/IGltZ1xuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyksXG4gICAgICAgICAgICBpdGVtczogaXRlbXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaXRlbXNNb2JpbGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uVG9wU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGxvZ29UaXRsZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ290aXRsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdmlkZW9EYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udGV4dHM/LnZpZGVvLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXJWaWRlbyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Ub3BTbGlkZXJWaWRlb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmlkZW9EYXRhOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udmlkZW8/LnNyYyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzbWFsbFZpZGVvRGF0YTogcHJvcHM/LnZpZGVvPy5tb2JpbGVcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnZpZGVvPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzcmM6IHByb3BzPy52aWRlbz8ubW9iaWxlLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlby9tcDQnLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGFiZWxJbmZvczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vtb2JpbGU/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclYyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25Ub3BTbGlkZXJWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVyNGNvbExhYmVsc1xuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVjJJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIHRleHRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkluZm9JbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IHByb3BzPy5idXR0b25zXG4gICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+IGxpbms/LmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIG5kdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubmR0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/Lm5kdGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/Lm5kdGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBsZXNzQnRuOiBwcm9wcz8udGV4dHM/LnNlZUxlc3MsXG4gICAgICAgICAgICBtb3JlQnRuOiBwcm9wcz8udGV4dHM/LnNlZU1vcmUsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8udGl0bGUgfHwgaXRlbT8udGV4dFxuICAgICAgICAgICAgKT8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW0uaWNvbiA/IGBpY29uLSR7aXRlbS5pY29ufWAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBhZHZUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGV4dFxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICB0ZXh0Q29sb3I6IHRleHRDb2xvcixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICAgICAgbmR0aXRsZTogcHJvcHM/LnRleHRzPy5uZHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgYWR2VGl0bGU6IHByb3BzPy50ZXh0cz8udGV4dD8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0ltZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0ltZ1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mb0ltZ1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICAvLyBUT0RPOiBhZGQgdG9wQkcsIGJvdHRvbUJHXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uYm90dG9tQ29sb3IsXG4gICAgICAgICAgICBsZXNzQnRuOiBwcm9wcz8udGV4dHM/LnNlZUxlc3MsXG4gICAgICAgICAgICBtb3JlQnRuOiBwcm9wcz8udGV4dHM/LnNlZU1vcmUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG5kdGl0bGU6IGl0ZW0/Lm5kX3RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbmZvSW1nU2xpZGVySXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEluZm9JbnRybyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9JbnRyb0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcEJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8udG9wYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJvdHRvbUJHOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYm90dG9tYmc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRvcENvbG9yOiBwcm9wcz8udGV4dHM/LnRvcENvbG9yLFxuICAgICAgICAgICAgYm90dG9tQ29sb3I6IHByb3BzPy50ZXh0cz8uQm90dG9tQ29sb3IsXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28yPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1dHRvbk1vZGFsOiBwcm9wcz8udGV4dHM/LnBvcHVwbW9kYWwsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwSGVhZGVyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBtZW51OiBhbnlcbiAgICApOlxuICAgICAgICB8IEJhYnlsb25IZWFkZXJCb29rU2hvd0lcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVMb2dvQ2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0kge1xuICAgICAgICBjb25zdCBsaW5rID0gbWVudS5saW5rcz8ubG9nb0xpbms/LmZsYXQoKT8uWzBdO1xuICAgICAgICBjb25zdCBoZWFkZXJCdXR0b25zID0gcHJvcHM7XG5cbiAgICAgICAgdGhpcy5mbG9hdGluZ0J1dHRvbnMgPSBoZWFkZXJCdXR0b25zXG4gICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LnRyYW5zZmVySWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8udHJhbnNmZXIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aGVhZGVyQnV0dG9ucy50ZXh0cz8uY2hlY2tpbkljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmNoZWNraW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxhbmc6IHRoaXMuc2l0ZVN2Yy5zZWxlY3RlZExhbmd1YWdlSW5zdGFudD8ubG9jYXRlPy50b1VwcGVyQ2FzZSgpLFxuICAgICAgICAgICAgYnRuQm9vazogeyBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LmJvb2tOb3cgfSxcbiAgICAgICAgICAgIHNob3A6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5zaG9wXG4gICAgICAgICAgICAgICAgPyBgaWNvbi0ke2hlYWRlckJ1dHRvbnM/LnRleHRzPy5zaG9wfWBcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGhlYWRlckJ1dHRvbnM/LmxpbmtzKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbms/LmxhYmVsLFxuICAgICAgICAgICAgICAgIHVybDogbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBsaW5rPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZW51OiBtZW51Py5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobWVudTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbWVudT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbWVudT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IG1lbnU/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG1lbnU/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWVudT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBtZW51Py5jaGlsZHJlbj8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY2hpbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGNoaWxkPy5saW5rVmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogY2hpbGQ/LmxpbmtUeXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2hpbGQ/LnRyYW5zbGF0aW9ucz8uWzBdPy5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjaGlsZD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25NZW51QnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1lbnVJbmZvOiB0aGlzLm1hcE1lbnUobWVudSwgdW5kZWZpbmVkKSxcbiAgICAgICAgfSBhc1xuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJDbGVhcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlcklcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlck1lbnVTaG93STtcbiAgICB9XG5cbiAgICAvL1RPRE86IFdhaXQgZm9yIGJhY2sgaW5mb1xuICAgIG1hcE1lbnUoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHNvY2lhbE1lZGlhOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uTWVudUluZm9JIHtcbiAgICAgICAgY29uc3QgbGlua3MgPSBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgcHJvcHM/Lm5hdj8ubWFwKChsaW5rOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ubGluayxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluay50cmFuc2xhdGlvbnM/LlswXT8ubmFtZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IGxpbmtzPy5zbGljZSgwLCA2KSxcbiAgICAgICAgICAgIGJvdHRvbUxpbmtzOiBsaW5rcz8uc2xpY2UoNiksXG4gICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogcHJvcHM/LmFkZHJlc3M/LlswXT8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jaXR5LFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgY3A6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmNwLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmxpbmssXG4gICAgICAgICAgICAgICAgbGlua3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRhY3Q6IHtcbiAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSksXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7aXRlbS5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBpbWdCYWNrZ3JvdW5kOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGlua0xvZ286IHtcbiAgICAgICAgICAgICAgICB1cmw6IHByb3BzPy5saW5rcz8ubG9nb0xpbms/LlswXT8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtUeXBlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgYWRkcmVzc1RpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBjb250YWN0VGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25NZW51SW5mb0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICAgICAgaXRlbTE6IHByb3BzPy50ZXh0cz8uaXRlbTEsXG4gICAgICAgICAgICAgICAgaXRlbTFUZXh0OiBwcm9wcz8udGV4dHM/Lml0ZW0xVGV4dCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlc3NtYWxsOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXNzbWFsbCxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvMmNvbGltZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJDb2xJbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc21hbGxpbWFnZTogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uc21hbGxpbWFnZSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJDb2xJbWdJO1xuICAgIH1cblxuICAgIG1hcFppZ3phZyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uSW5mbzJpbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgbGV0IHRleHRzLCB0YWdzO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRleHRzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluID8/IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4gPz8gcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRzdWJ0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGU/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50c3VidGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGljb25zOiBwcm9wcz8uVmVudGFqYXM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8udGl0bGUgfHwgaXRlbT8udGV4dFxuICAgICAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy5jb250YWluID8/IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRhZ3MgPSB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnR0aXRsZTogcHJvcHM/LnRleHRzPy5jb250ZW50dGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50c3VidGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRkZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgICAgIGljb25UaXRsZTogcHJvcHM/LnRleHRzPy5pY29udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucy5maWx0ZXIoKGJ0bjogYW55KSA9PiAhIWJ0bj8ubGlua1ZhbHVlKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRleHRzLFxuICAgICAgICAgICAgaW1hZ2VzLFxuICAgICAgICAgICAgdGFncyxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcEdyaWRHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBpc0luRW51bSA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXG4gICAgICAgICAgICBlbnVtT2JqOiBULFxuICAgICAgICAgICAgdmFsdWU6IGFueVxuICAgICAgICApOiB2YWx1ZSBpcyBUW2tleW9mIFRdID0+IE9iamVjdC52YWx1ZXMoZW51bU9iaikuaW5jbHVkZXModmFsdWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdmlldzogaXNJbkVudW0oVmlld3NUeXBlLCBwcm9wcz8ubXVsdGltZWRpYT8udmlldylcbiAgICAgICAgICAgICAgICA/IHByb3BzLm11bHRpbWVkaWE/LnZpZXdcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9HcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0dyaWRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBpdGVtLmxpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubGlua3MuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PiBsaW5rPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkluZm9HcmlkSXRlbUlcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9HcmlkSTtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJHYWxsZXJ5KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkJhbm5lckdhbGxlcnlJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJhbm5lckdhbGxlcnlJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lck5ld3NsZXR0ZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgaG92ZXI6IHByb3BzPy50ZXh0cz8uaG92ZXIsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5wbGFjZWhvbGRlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlckNvbGwyKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25Ub3BTbGlkZXJWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIHJpZ2h0U2lkZTogcmlnaHRTaWRlLFxuICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVyMkNvbEl0ZW1JXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclYySSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFNsaWRlckNvbGwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ub3BTbGlkZXJWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgaW1hZ2VzOiAoc3RyaW5nIHwgQmFieWxvbkltYWdlSSlbXSB8IHVuZGVmaW5lZCA9IFtdO1xuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzKSB7XG4gICAgICAgICAgICBpbWFnZXMgPSBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5saW5rcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuLmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlcz8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIHNyYzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGltYWdlUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIGFsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5hbHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkltYWdlSTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgICAgICAgPyAoe1xuICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBpbWFnZXMsXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB0b3BCRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnRvcGJnPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBib3R0b21CRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJvdHRvbWJnPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LkJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclYySSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEl0ZW1zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkl0ZW1zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1hZ2VSZXNwb25zZSA9IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1hZ2VSZXNwb25zZS5zcmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JdGVtc0dyaWRJKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbWFwUm9vbShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaXRlbS5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW1hZ2VJXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdJO1xuICAgIH1cblxuICAgIG1hcFJvb21zR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zR3JpZEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcm9vbXMgPSBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8ubGlua1R5cGU/LmluY2x1ZGVzKCdpbnRlcm5hbCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogaXRlbS5tdWx0aW1lZGlhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGltZzogSW1hZ2VSZXNwb25zZSkgPT4gaW1nLmNvdmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1nLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGltZy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWcpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLm5hbWUgPT09ICdSb29tc0dyaWQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnOiBpbWcudGFncz8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZzogYW55KSA9PiB0YWc/LmZpbHRlcmFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXM6IHByb3BzPy5idXR0b25zID8gcm9vbXMuc2xpY2UoMCwgNSkgOiByb29tcyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0dyaWRJO1xuICAgIH1cblxuICAgIG1hcFJvb21zU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uc2xpY2UoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT4gaW1nPy5jb3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50czogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBPZmZlclNsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZGltYWdlbmVzPy5bMF0gfHxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgb2ZmZXJzOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uRnJvbTogaXRlbT8uYXBwbGljYXRpb25Gcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25UbzogaXRlbT8uYXBwbGljYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiBpdGVtPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtPy5kaXNjb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uczogaXRlbS50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udGV4dHM/LnJlc2VydmF0aW9uVXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uVGV4dEluZm9JLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtPy51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlRnJvbTogaXRlbT8udmlzaWJsZUZyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlVG86IGl0ZW0/LnZpc2libGVUbyxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVySVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJTbGlkZXJJO1xuICAgIH1cbiAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgRU5ELS0tLS8vXG5cbiAgICBtYXBUaGFua3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25UaGFua3NJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMudGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzLnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25UaGFua3NJO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RGb3JtKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIG5kUHJvcHNDb25zdWx0OiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQ29udGFjdEZvcm1JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICB0ZXh0YXJlYToge1xuICAgICAgICAgICAgICAgIGlkOiAnbWVuc2FqZScsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlLFxuICAgICAgICAgICAgICAgIG5hbWU6IFV0aWxzLm5vcm1hbGl6ZVRleHQocHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2UpLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICBjb25kaXRpb25zMjogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zMixcbiAgICAgICAgICAgIGRyb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25UaXRsZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBuZFByb3BzQ29uc3VsdD8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAocHJvcDogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdWx0VHlwZUlkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wLmNvbnN1bHRfdHlwZV9pZCA/PyBwcm9wLmNvbnN1bHRUeXBlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBEcm9wZG93bk9wdGlvblxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uZHJvcGRvd25QbGFjZWhvbGRlcixcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhvdGVsRHJvcDpcbiAgICAgICAgICAgICAgICBwcm9wcz8uaG90ZWxzPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5ob3RlbERyb3BUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBwcm9wLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICBpbnB1dHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnbm9tYnJlJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXROYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXROYW1lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ3N1cm5hbWUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXNQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZW1haWwnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0RW1haWxQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yRW1haWwsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLmVtYWlsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiAncGhvbmUnLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0UGhvbmVQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGVsJyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSBhcyBCYWJ5bG9uSW5wdXRJW10sXG4gICAgICAgICAgICBpbmZvOiB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogbmRQcm9wcz8ubGlua3M/LmFkZHJlc3M/LlswXT8uWzBdPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBuZFByb3BzPy50ZXh0cz8uZW1haWxJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbmRQcm9wcz8udGV4dHM/LmVtYWlsVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKG5kUHJvcHM/LmxpbmtzPy5lbWFpbD8uWzBdKT8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bikgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5idG4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LnBob25lSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5kUHJvcHM/LnRleHRzPy5waG9uZVRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhuZFByb3BzPy5saW5rcz8ucGhvbmU/LlswXSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnRuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBwaG9uZToke2J0bj8udXJsfWxgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RGb3JtSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0QWRkcmVzcyhcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25Db250YWN0QWRkcmVzc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBhZGRyZXNzU291cmNlID0gcHJvcHM/LmhvdGVsQWRkcmVzcyA/PyBwcm9wcz8uYWRkcmVzcz8uWzBdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8uYWRkcmVzc0ljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NTb3VyY2U/LmNwLCBhZGRyZXNzU291cmNlPy5jaXR5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignICcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWRkcmVzc1NvdXJjZT8ucHJvdmluY2UsIGFkZHJlc3NTb3VyY2U/LmNvdW50cnldXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKChwYXJ0LCBpZHgsIGFycikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDApIHJldHVybiBwYXJ0ICsgJzxicj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDEgJiYgYXJyWzJdKSByZXR1cm4gcGFydCArICcsICc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMSkgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA9PT0gMikgcmV0dXJuIHBhcnQgKyAnPGJyPic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJycpLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzc1NvdXJjZT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBwcm9wcz8udGV4dHM/LmVtYWlsSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmVtYWlsVGl0bGU/LmNvbnRhaW4gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYG1haWx0bzoke2FkZHJlc3NTb3VyY2U/LmVtYWlsfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGFkZHJlc3NTb3VyY2U/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGV4dDogYWRkcmVzc1NvdXJjZT8uZW1haWwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdIGFzICh7IHNtYWxsVGV4dD86IHN0cmluZyB9ICYgQmFieWxvbkJ1dHRvbkkpW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwaG9uZToge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnJlc2VydmF0aW9uc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZT8uY29udGFpbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgdGVsOiR7YWRkcmVzc1NvdXJjZT8ucGhvbmV9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUZXh0OiBhZGRyZXNzU291cmNlPy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0gYXMgKHsgc21hbGxUZXh0Pzogc3RyaW5nIH0gJiBCYWJ5bG9uQnV0dG9uSSlbXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0TWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQ29udGFjdE1hcGFJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbnRlbnRVcmw6IHByb3BzPy50ZXh0cz8ucGhvbmVJY29uLFxuICAgICAgICAgICAgbWFwSW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbWFwSW1hZ2VNb2JpbGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc21vYmlsZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0TWFwYUk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEhvdyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RIb3dJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LlZlbnRhamFzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Db250YWN0TWFwSXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdEhvd0k7XG4gICAgfVxuXG4gICAgbWFwV2VibWFwKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uV2VibWFwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKFxuICAgICAgICAgICAgICAgIHByb3BzPy5wYWdlcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdpbnRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICkgYXMgQmFieWxvbkJ1dHRvbklbXVxuICAgICAgICAgICAgKS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGxpbmspID0+XG4gICAgICAgICAgICAgICAgICAgIGxpbmsudXJsPy5zcGxpdCgnLycpWzFdID09PVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwTGVnYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25MZWdhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb250YWluLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25MZWdhbEk7XG4gICAgfVxuXG4gICAgbWFwQnJlYWRjcnVtYnMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CcmVhZGNydW1iSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsaW5rczogKHByb3BzPy5pdGVtcyBhcyBhbnlbXSlcbiAgICAgICAgICAgICAgICA/LnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0/LmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5jaGFyQXQoaXRlbT8udXJsPy5sZW5ndGggLSAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gaXRlbT8udXJsPy5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXRlbT8udXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CcmVhZGNydW1iSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0NvbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0NvbHNJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzPy5maWx0ZXJzPy5tYXAoKGZpbHRlcjogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBmaWx0ZXI/LnZhbHVlcz8ubWFwKChvcHRpb246IHN0cmluZykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogb3B0aW9uLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBvcHRpb24sXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgICBzbWFsbHRpdGxlOiBmaWx0ZXIuc21hbGx0aXRsZSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJJZDogZmlsdGVyLmZpbHRlcklkLFxuICAgICAgICAgICAgfSkpIGFzIEJhYnlsb25Ecm9wZG93bklbXSxcbiAgICAgICAgICAgIHN0RmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmRGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZHJvb21GaWx0ZXJJZDogaXRlbT8udGV4dHM/LmJlZHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyaXN0aWNzRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtLmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhPy5maW5kKChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWcudGFncz8uc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PiB0YWcubmFtZSA9PT0gJ1Jvb21zQ29scydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgPz8gaXRlbS5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEl0ZW1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnNvcnQoKGE6IEJhYnlsb25Sb29tc0xpc3RJdGVtLCBiOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNDb2xzSTtcbiAgICB9XG5cbiAgICBtYXBGZWF0dXJlc1NsaWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25GZWF0dXJlc1NsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5WZW50YWphcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25GZWF0dXJlc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVySW5mbyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJhbm5lckluZm9JIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnByZXRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHZpZGVvOiBwcm9wcz8udGV4dHM/LlsnVmlkZW8tbGluayddLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zXG4gICAgICAgICAgICApPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJhbm5lckluZm9JO1xuICAgIH1cblxuICAgIG1hcFJvb21EZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tRGV0YWlsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghcHJvcHM/LnJvb20pIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB0ZXh0cywgbXVsdGltZWRpYSwgYnV0dG9ucyB9ID0gcHJvcHM/LnJvb207XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsNCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHRleHRzPy5hZGRpdGlvbmFsNCAhPT0gJydcbiAgICAgICAgICAgICAgICAgICAgPyB0ZXh0cz8uYWRkaXRpb25hbDRcbiAgICAgICAgICAgICAgICAgICAgOiB0ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBwcmV0aXRsZTogdGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgZXF1aXBtZW50VGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhidXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzLnJvb20/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5FcXVpcG1lbnQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSBhcyBCYWJ5bG9uRXF1aXBtZW50SXRlbVtdLFxuICAgICAgICAgICAgc2hvd0xlc3M6IHByb3BzPy50ZXh0cz8uc2hvd0xlc3MsXG4gICAgICAgICAgICBzaG93TW9yZTogcHJvcHM/LnRleHRzPy5zaG93TW9yZSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbURldGFpbEk7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVGh1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGZyb206IHByb3BzPy50ZXh0cz8uZnJvbSxcbiAgICAgICAgICAgIHByaWNlOiBwcm9wcz8udGV4dHM/LnByaWNlLFxuICAgICAgICAgICAgY3VycmVuY3k6IHByb3BzPy50ZXh0cz8uY3VycmVuY3ksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHMuYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0xpc3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0RmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbmRGaWx0ZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyaXN0aWNzRmlsdGVySWQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtPy5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZVRleHQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcG1lbnQ6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzc31gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RFcXVpcG1lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWE/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBpdGVtPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBpdGVtPy5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RJdGVtXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zQ29sc0k7XG4gICAgfVxuXG4gICAgbWFwQ29taW5nU29vbihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbWluZ1Nvb25JIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxvZ286IHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5tYXAoXG4gICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgKVswXSxcbiAgICAgICAgICAgIHRleHRzOiBwcm9wcz8udGV4dHMsXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbWluZ1Nvb25JO1xuICAgIH1cblxuICAgIG1hcE9mZmVyRGV0YWlsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJEZXRhaWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIG5kVGl0bGU6IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBsYWJlbERpc2NvdW50OiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgbGFiZWxGcm9tOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgY3VycmVuY3k6IHByb3BzPy5vZmZlcj8uWzBdPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIHByaWNlOiBwcm9wcz8ub2ZmZXI/LlswXT8ucHJpY2UsXG4gICAgICAgICAgICBkaXNjb3VudDogcHJvcHM/Lm9mZmVyPy5bMF0/LmRpc2NvdW50LFxuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5vZmZlcj8uWzBdPy5tdWx0aW1lZGlhPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ub2ZmZXI/LlswXT8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJEZXRhaWxJO1xuICAgIH1cblxuICAgIG1hcE9mZmVyc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlcnNMaXN0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5vZmZlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0/LmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtPy5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlQnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWVPZmZlckJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRnJvbTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxEaXNjb3VudDogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9tZTogaXRlbT8uc2l0ZXM/LlswXT8uaG9tZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwOiBpdGVtPy5zaXRlcz8uWzBdPy5wb3B1cCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbk9mZmVyc0xpc3RJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXJJbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25PZmZlcnNMaXN0STtcbiAgICB9XG5cbiAgICBtYXBGYXEocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25GYXFJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubG9jYXRpb25Ib3dcbiAgICAgICAgICAgICAgICA/IHByb3BzPy5sb2NhdGlvbkhvdz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkZhcUl0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHByb3BzPy5pdGVtcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChmYXE6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBmYXEudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZmFxLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25GYXFJdGVtXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiBwcm9wcz8ubG9jYXRpb25NYXBcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5sb2NhdGlvbk1hcD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkZhcUk7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIG5kVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlLFxuICAgICAgICAgICAgcmRUaXRsZTogcHJvcHM/LnRleHRzPy5saW5rc1RpdGxlLFxuICAgICAgICAgICAgdGhUaXRsZTpcbiAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGUgPz8gcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyVGl0bGUsXG4gICAgICAgICAgICBmaWZ0aFRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZGl0aW9uYWxGb290ZXJUaXRsZSxcbiAgICAgICAgICAgIGZyYW1lVXJsOiAhIXByb3BzPy50ZXh0cz8uZnJhbWVVcmxcbiAgICAgICAgICAgICAgICA/IHByb3BzLnRleHRzLmZyYW1lVXJsXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb250YWN0SW5mbzogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSksXG4gICAgICAgICAgICBjb250YWN0TGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0TGlua3M/LlswXSksXG4gICAgICAgICAgICBmb290ZXJMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmZvb3RlckxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczogQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzcylcbiAgICAgICAgICAgICAgICA/IHByb3BzLmFkZHJlc3MubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3MubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3MuY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzLnByb3ZpbmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeTogYWRkcmVzcy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3MuY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3MubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgIGFkZHJlc3NIb3RlbHM6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3NIb3RlbHMpXG4gICAgICAgICAgICAgICAgPyBwcm9wcy5hZGRyZXNzSG90ZWxzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogYWRkcmVzcy5waG9uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiBhZGRyZXNzLmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9hZGRyZXNzOiBhZGRyZXNzLmZ1bGxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBwcm9wcz8uc29jaWFsTWVkaWE/Lm1hcChcbiAgICAgICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtsaW5rLm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluay51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29weXJpZ2h0OiBwcm9wcz8udGV4dHM/LmNvcHlyaWdodCxcbiAgICAgICAgICAgIG5hdjogcHJvcHM/Lm5hdj8ubWFwKFxuICAgICAgICAgICAgICAgIChuYXY6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBuYXYubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICAvLyBpbnB1dDogcHJvcHM/LnRleHRzPy5uZXdzbGV0dGVyRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbnB1dDoge1xuICAgICAgICAgICAgICAgIG5hbWU6ICduZXdzbGV0dGVyJyxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8ubmV3c0Vycm9yRW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVnYWxBZHZpc2U6IHByb3BzPy50ZXh0cz8uc3Vic2NyaWJlcixcbiAgICAgICAgICAgIGFkZGl0aW9uYWxMaW5rczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubGlua3M/LmFkZGl0aW9uYWxGb290ZXJMaW5rcz8uWzBdXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25TdGF0aWNGb290ZXJJO1xuICAgIH1cblxuICAgIG1hcEdhbGxlcnkocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25HYWxsZXJ5SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tc0J0bjoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBwcm9wcz8udGV4dHM/LmZpbHRlclJvb21zLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnNCdG46IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5maWx0ZXJDYXRlZ29yaWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHByb3BzLmZpbHRlcnM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsOiBpdGVtLmFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb206IGl0ZW0ucm9vbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zOiBpdGVtLnJvb21zLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlczogcHJvcHM/LmZpbHRlcnNcbiAgICAgICAgICAgICAgICA/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjOiB7IG11bHRpbWVkaWE6IGFueVtdOyBmaWx0ZXJJbmRleDogbnVtYmVyIH1bXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogYW55LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXg6IG51bWJlclxuICAgICAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXIubXVsdGltZWRpYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpbWVkaWFXaXRoRmlsdGVyID0gZmlsdGVyLm11bHRpbWVkaWEubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbWVkaWE6IG11bHRpbWVkaWFXaXRoRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVySW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5mbGF0TWFwKCh7IG11bHRpbWVkaWEgfTogYW55KSA9PiBtdWx0aW1lZGlhKVxuICAgICAgICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpbWc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltZy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZywgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogaW1nPy5maWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uR2FsbGVyeUl0ZW1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25HYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBMYW5ndWFnZU1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHByb3BzLmxhbmd1YWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChsbmc6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgbG5nLmlkID09PSB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmlkXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25MYW5ndWFnZU1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBFbmdpbmUocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25FbmdpbmVJIHwgQmFieWxvbkVuZ2luZU1vZGFsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvbmx5QWR1bHRzOiBwcm9wcz8ub25seUFkdWx0cyxcbiAgICAgICAgICAgIGRlZmF1bHRCdXR0b246IHByb3BzPy5kZWZhdWx0SW50ZXJuYWxCdXR0b24sXG4gICAgICAgICAgICBidXR0b246IHsgbGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJtaXQsIHVybDogcHJvcHM/LnVybCB9LFxuICAgICAgICAgICAgZGF0ZXBpY2tlckRhdGE6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5tb3RvckRhdGVUaXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBndWVzdHNJbnB1dDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yR3Vlc3RzSW5wdXRIb2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvbW9JbnB1dDoge1xuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yUHJvbW9Ib2xkZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ3Vlc3RzOiB7XG4gICAgICAgICAgICAgICAgYnRuOiB7IGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQXBwbHkgfSxcbiAgICAgICAgICAgICAgICBhZHVsdHNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvckFkdWx0c1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMocHJvcHM/Lm1heEFkdWx0cywgMSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBraWRzRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRzU21hbGxMYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhDaGlsZHJlbiksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBiYWJpZXNEcm9wZG93bjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEJhYmllcyA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JCYWJpZXNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JCYWJpZXNTbWFsbFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhCYWJpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGFnZXNEcm9wZG93bjoge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QWdlQ2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QWdlQmFiaWVzICsgMVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWdlc0xhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yQWdlc1RpdGxlLFxuICAgICAgICAgICAgICAgIGtpZHNMYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvcktpZExhYmVsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yVGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclN1YnRpdGxlLFxuICAgICAgICAgICAgdXJsOiBwcm9wcz8udXJsLFxuICAgICAgICAgICAgaG90ZWw6IHByb3BzPy5ob3RlbHM/LlswXSxcbiAgICAgICAgICAgIGNvZGlnbzogcHJvcHM/LmNvZGlnbyA/IHByb3BzPy5jb2RpZ28gOiAnZGVtb19jMnRfY2xpZW50ZXMnLCAvL3RvIGNoYW5nZSwgZG9udCBjb21lIGZyb20gYmFja1xuICAgICAgICAgICAgZ2xWYWx1ZTogcHJvcHM/LmdsVmFsdWUsXG4gICAgICAgICAgICBob3RlbHNJbnB1dDogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duTmFtZSxcbiAgICAgICAgICAgIGhvdGVsc1BsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/Lm1vdG9yRHJvcERvd25Ib2xkZXIsXG4gICAgICAgICAgICBob3RlbHM6IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8uaG90ZWxzPy5tYXAoKGhvdGVsOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGhvdGVsPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0aWNrZXI6IGhvdGVsPy50aWNrZXIsXG4gICAgICAgICAgICAgICAgICAgIHVybDogaG90ZWw/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGhvdGVsPy5pZCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25FbmdpbmVNb2RhbEkgfCBCYWJ5bG9uRW5naW5lSTtcbiAgICB9XG4gICAgbWFwU2xpZGVyM0l0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2xpZGVyM0l0ZW1zSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2xpZGVyM0l0ZW1zSTtcbiAgICB9XG5cbiAgICBtYXBIb3RlbHNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbHNTbGlkZXJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBob3RlbHM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0udGV4dHMuYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBpdGVtLm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkhvdGVsc0xpc3RJIHtcbiAgICAgICAgLy8gVE9ETzogUmV2aXNhciBtYXBwZW8gZGUgaW3DoWdlbmVzXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaG90ZWxzOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0TW9yZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmVGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmU3VidGl0bGU6IHByb3BzPy50ZXh0cz8uZm9vdGVyUHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNMaXN0Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbT8uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bkxlc3M6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ0bk1vcmU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkhvdGVsc0xpc3RJO1xuICAgIH1cblxuICAgIG1hcEluZm80SW1nKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mbzRpbWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2UxOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1sxXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzJdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2U0OiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbM10sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm80aW1nSTtcbiAgICB9XG5cbiAgICBtYXBTZXJ2aWNlc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblNlcnZpY2VzU2xpZGVySSB7XG4gICAgICAgIGNvbnN0IGFkdmVudCA9IHByb3BzPy5zZXJ2aWNlc1NlcnZpY2UgPz8gcHJvcHM/LlZlbnRhamFzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogYWR2ZW50Py5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lID8/IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5jbGFzcyA/PyBpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU2VydmljZXNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEFkdmFudGFnZXMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BZHZhbnRhZ2VzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VlTW9yZTogcHJvcHM/LnRleHRzPy5hZHZhbnRhZ2Vzc2VlbW9yZSxcbiAgICAgICAgICAgIHNlZUxlc3M6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZWxlc3MsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFkdmFudGFnZXNpbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25BZHZhbnRhZ2VzSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvQmlnKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0JpZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmJ1dHRvbnNcbiAgICAgICAgICAgICk/LlswXSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWdTbWFsbDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMV0gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb1ppZ1phZ1YyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb1ppZ3phZ1YySSB7XG4gICAgICAgIGNvbnN0IFtpbWFnZV0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlIHx8IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyB8fCBbXTtcbiAgICAgICAgY29uc3QgW2ltYWdlMl0gPVxuICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlMiB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGwgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpbWFnZT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1hZ2U/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1hZ2U/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpbWFnZT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2UyPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltYWdlMiwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaW1hZ2UyPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlMj8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGltYWdlMj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzOiBwcm9wcz8uVmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkl0ZW1bXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mb1ppZ3phZ1YySTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJDb250YWN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyQ29udGFjdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBleHRyYVR4dDogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsVGV4dDEsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICBhbHQ6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWR2YW50YWdlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGxvY2FsaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5sb2NhbGl0eSxcbiAgICAgICAgICAgICAgICBjaXR5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jaXR5LFxuICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5jcCxcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIGxhdDogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubGF0LFxuICAgICAgICAgICAgICAgIGxvbjogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9uLFxuICAgICAgICAgICAgICAgIHBob25lOiBwcm9wcz8uaG90ZWxBZGRyZXNzPy5waG9uZSxcbiAgICAgICAgICAgICAgICBlbWFpbDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uZW1haWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJDb250YWN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvMkltZ0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm8yaW1nQmlnSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kUHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTI6IHByb3BzPy50ZXh0cz8ubmRUaXRsZSxcbiAgICAgICAgICAgIHRleHQyOiBwcm9wcz8udGV4dHM/Lm5kRGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBidXR0b24yOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzFdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5hbHQgPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlPy5bMF0uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZ1NtYWxsOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8ubmRpbWFnZW5lcz8uWzBdPy5hbHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0JpZ0k7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyTG9nb3MocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJMb2dvc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGV4dHM6IHByb3BzPy50ZXh0cyxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgbG9nb3M6IHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvcz8ubWFwKChsb2dvOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShsb2dvLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhsb2dvPy5saW5rcz8uWzBdKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyTG9nb3NJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckxpbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyTGlua3NJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICB5ZWFyOiBwcm9wcz8udGV4dHM/LnllYXIsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyTGlua3NJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlclNvY2lhbHMocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Gb290ZXJTb2NpYWxJIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRMaW5rcyA9IChwcm9wcz8uc29jaWFsTWVkaWEgfHwgW10pLmZpbHRlcihcbiAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgbGluayAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIGxpbmsgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgIGxpbmsudXJsICE9PSAnJyAmJlxuICAgICAgICAgICAgICAgIGxpbmsuaWNvbiAhPT0gJydcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgbGlua3M6IGZpbHRlcmVkTGlua3MubWFwKChsaW5rOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtsaW5rLm5hbWU/LnRvTG93ZXJDYXNlKCl9YCxcbiAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rLm5hbWUsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkZvb3RlclNvY2lhbEk7XG4gICAgfVxuXG4gICAgbWFwU2xpZGVyMml0ZW1zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU2xpZGVyMml0ZW1zSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0/Lm11bHRpbWVkaWE/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBsaW5rOlxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblNsaWRlcjJpdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwU3RhdGljRm9vdGVydjIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TdGF0aWNGb290ZXJWMkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBuZFRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgIHJkVGl0bGU6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZSxcbiAgICAgICAgICAgIHRoVGl0bGU6IHByb3BzPy50ZXh0cz8ubG9jYXRpb25UaXRsZSxcbiAgICAgICAgICAgIGZyYW1lVXJsOiBwcm9wcz8udGV4dHM/LmZyYW1lVXJsLFxuICAgICAgICAgICAgaW1nVXJsOiBwcm9wcz8ubXVsdGltZWRpYT8uZm9vdGVyaW1nPy5bMF0/LmxpbmtzPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgIGNvbnRhY3RJbmZvOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdD8uWzBdKSxcbiAgICAgICAgICAgIGNvbnRhY3RMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGZvb3RlckxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uZm9vdGVyTGlua3M/LlswXSksXG4gICAgICAgICAgICBhZGRyZXNzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzKVxuICAgICAgICAgICAgICAgID8gcHJvcHMuYWRkcmVzcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFkZHJlc3M/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzPy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcz8uY2l0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpbmNlOiBhZGRyZXNzPy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3M/LmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcz8uY3AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uc29jaWFsTWVkaWE/LlswXT8udXJsLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5pbnN0YWdyYW1UaXRsZSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25CdXR0b25JLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Py5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBuYXY/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5mb290ZXJpbWc/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJO1xuICAgIH1cblxuICAgIG1hcExpc3RHcmlkKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGlzdEdyaWRJIHtcbiAgICAgICAgY29uc3QgeyBpbWFnZW5lcyB9ID0gcHJvcHM/Lm11bHRpbWVkaWEgfHwgW107XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogW10sIC8vVE9ETzogcHRlIGJhY2ssXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JdGVtR3JpZElcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkxpc3RHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBOZXdzbGV0dGVyTW9kYWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25OZXdzbGV0dGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb25kaXRpb25zOiBwcm9wcz8udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbWFpbCcsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW5wdXRJLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2ViYWNrZ3JvdW5kPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk5ld3NsZXR0ZXJJO1xuICAgIH1cblxuICAgIG1hcEdsb2JhbE1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2xvYmFsTW9kYWxJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpZnJhbWU6IHByb3BzPy50ZXh0cz8uaWZyYW1lLFxuICAgICAgICAgICAgLy8gaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgIH0gYXMgQmFieWxvbkdsb2JhbE1vZGFsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlckJhbm5lclYyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cFYySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcy5vZmZlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gcHJvcHMub2ZmZXJzPy5bMF07XG4gICAgICAgICAgICBvZmZlckRhdGEgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMob2ZmZXI/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAob2ZmZXI/Lm11bHRpbWVkaWE/LmZpbmQoKGltZzogYW55KSA9PiBpbWcuY292ZXIpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8uWzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAob2ZmZXI/Lm11bHRpbWVkaWE/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmRlZmF1bHRpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBvZmZlcj8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgcHJpY2U6IG9mZmVyPy5wcmljZSxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeTogb2ZmZXI/LmN1cnJlbmN5LFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJQb3B1cFYySTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2ZmZXJEYXRhID8/IG9mZmVyRGF0YTtcbiAgICB9XG5cbiAgICBtYXBIZWFkSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25IZWFkSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0ZXh0OlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRleHQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50ZXh0XG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50ZXh0Py5jb250YWluLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkhlYWRJbnRyb0k7XG4gICAgfVxuXG4gICAgbWFwRXh0ZXJuYWxTY3JpcHQoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uRXh0ZXJuYWxTY3JpcHRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjcmlwdDogcHJvcHM/LnRleHRzPy5Db250YWluZXIsXG4gICAgICAgICAgICBtc2dfbG9hZGluZzogcHJvcHM/LnRleHRzPy5sb2FkaW5nID8/ICdDYXJnYW5kby4uLicsXG4gICAgICAgIH0gYXMgQmFieWxvbkV4dGVybmFsU2NyaXB0STtcbiAgICB9XG5cbiAgICBtYXBCbG9nTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBwb3N0cyA9IHByb3BzPy5ibG9nPy5wb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHBvc3Q/Lm11bHRpbWVkaWE/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgcG9zdHMgPSBwb3N0cy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiBiLmRhdGUgLSBhLmRhdGU7IC8vIGFtYm9zIGNvbiBmZWNoYVxuICAgICAgICAgICAgaWYgKGEuZGF0ZSAmJiAhYi5kYXRlKSByZXR1cm4gLTE7IC8vIGEgdGllbmUgZmVjaGEsIGIgbm9cbiAgICAgICAgICAgIGlmICghYS5kYXRlICYmIGIuZGF0ZSkgcmV0dXJuIDE7IC8vIGIgdGllbmUgZmVjaGEsIGEgbm9cbiAgICAgICAgICAgIHJldHVybiAwOyAvLyBuaW5ndW5vIHRpZW5lIGZlY2hhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE9idGVuZXIgbG9zIDQgcG9zdHMgbcOhcyByZWNpZW50ZXNcbiAgICAgICAgY29uc3QgbGF0ZXN0UG9zdHMgPSBwb3N0cz8uc2xpY2UoMCwgNCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIG5vdGZvdW5kVGV4dDogcHJvcHM/LnRleHRzPy5zZWFyY2hOb3RGb3VuZCxcbiAgICAgICAgICAgIHBvc3RzOiBwb3N0cyxcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHByb3BzPy5wb3N0Q2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBsYXRlc3RQb3N0czogbGF0ZXN0UG9zdHMsXG4gICAgICAgICAgICBhbnRlcmlvcjogcHJvcHM/LnRleHRzPy5hbnRlcmlvcixcbiAgICAgICAgICAgIHNpZ3VpZW50ZTogcHJvcHM/LnRleHRzPy5zaWd1aWVudGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQmxvZ0RldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkJsb2dEZXRhaWxzSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQb3N0SWQgPSBwcm9wcz8ucG9zdD8uaWQ7XG4gICAgICAgIGNvbnN0IHBvc3RzID0gcHJvcHM/LnJlbGF0ZWRQb3N0cz8ubWFwKChwb3N0OiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogcG9zdD8uaWQsXG4gICAgICAgICAgICB0aXRsZTogcG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwb3N0Py50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgcG9zdFVybDogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgZGF0ZTogcG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHBvc3QuZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gKHBvc3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAocDogYW55KSA9PiBwPy5pZCAhPT0gY3VycmVudFBvc3RJZFxuICAgICAgICApO1xuXG4gICAgICAgIGxldCByZWxhdGVkUG9zdHNDb25zdCA9XG4gICAgICAgICAgICBjYW5kaWRhdGVzXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocDogYW55KSA9PiBwPy5kYXRlKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gKGIuZGF0ZSBhcyBhbnkpIC0gKGEuZGF0ZSBhcyBhbnkpKVxuICAgICAgICAgICAgICAgIC5zbGljZSgwLCA0KSB8fCBbXTtcbiAgICAgICAgaWYgKHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aCA8IDQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpdGhvdXREYXRlID0gY2FuZGlkYXRlcy5maWx0ZXIoKHA6IGFueSkgPT4gIXA/LmRhdGUpO1xuICAgICAgICAgICAgcmVsYXRlZFBvc3RzQ29uc3QgPSByZWxhdGVkUG9zdHNDb25zdC5jb25jYXQoXG4gICAgICAgICAgICAgICAgd2l0aG91dERhdGUuc2xpY2UoMCwgNCAtIHJlbGF0ZWRQb3N0c0NvbnN0Lmxlbmd0aClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnBvc3Q/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ucG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWRkaXRpb25hbDE6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMjogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgYWRkaXRpb25hbDQ6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICBkYXRlOiBwcm9wcz8ucG9zdD8uZGF0ZSA/IG5ldyBEYXRlKHByb3BzPy5wb3N0Py5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwcm9wcz8ucG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy50YWcsXG4gICAgICAgICAgICAgICAgbGF0ZXN0UG9zdHNUaXRsZTogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTogcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWFyY2hQbGFjZUhvbGRlcjogcHJvcHM/LnRleHRzPy5zZWFyY2hQbGFjZUhvbGRlcixcbiAgICAgICAgICAgIGNhdGVnb3JpZXNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jYXRlZ29yaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29udGFpbixcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHByb3BzPy5wb3N0Q2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjYXRlZ29yeT8uaWQsXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNhdGVnb3J5Py5uYW1lLFxuICAgICAgICAgICAgICAgIHBvc3RzOiBjYXRlZ29yeT8udG90YWxQb3N0cyxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgcmVsYXRlZFBvc3RzOiByZWxhdGVkUG9zdHNDb25zdCxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHNoYXJlOiBwcm9wcz8udGV4dHM/LnNoYXJlLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ucG9zdD8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQmxvZ0RldGFpbHNJO1xuICAgIH1cblxuICAgIG1hcE1vZGFsTXVsdGlwbGVNb3RvcnMoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Nb2RhbE11bHRpcGxlTW90b3JzSTtcbiAgICB9XG4gICAgbWFwT2ZmZXJCYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBvZmZlckRhdGE7XG4gICAgICAgIGlmIChwcm9wcy5vZmZlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IG9mZmVyID0gcHJvcHMub2ZmZXJzPy5bMF07XG4gICAgICAgICAgICBvZmZlckRhdGEgPSB7XG4gICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG9mZmVyPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBvZmZlcj8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb2ZmZXI/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwyOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMzogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMob2ZmZXI/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAob2ZmZXI/Lm11bHRpbWVkaWE/LmZpbmQoKGltZzogYW55KSA9PiBpbWcuY292ZXIpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZlcj8ubXVsdGltZWRpYT8uWzBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiAob2ZmZXI/Lm11bHRpbWVkaWE/LlswXSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmRlZmF1bHRpbWFnZW5lcz8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJQb3B1cEk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mZmVyRGF0YSA/PyBvZmZlckRhdGE7XG4gICAgfVxuXG4gICAgbWFwTW9kYWxQb3B1cChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk1vZGFsUG9wdXBJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEhvbGRlcixcbiAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChvcHRpb246IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogb3B0aW9uPy50aXRsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogb3B0aW9uPy50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9uPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUob3B0aW9uLCBmYWxzZSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/Lm1vZGFsaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTW9kYWxQb3B1cEk7XG4gICAgfVxuXG4gICAgbWFwUHJlc3NMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUHJlc3NMaXN0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUHJlc3NMaXN0STtcbiAgICB9XG5cbiAgICBtYXBBY3Rpb25CYW5uZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25BY3Rpb25CYW5uZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uYWN0aW9uYmFubmVyaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlMjogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFjdGlvbmJhbm5lcmltYWdlMj8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGFibGU6IHByb3BzPy50ZXh0cz8udGFibGUsXG4gICAgICAgICAgICBzYWxhMTogcHJvcHM/LnRleHRzPy5zYWxhMSxcbiAgICAgICAgICAgIHNhbGEyOiBwcm9wcz8udGV4dHM/LnNhbGEyLFxuICAgICAgICB9IGFzIEJhYnlsb25BY3Rpb25CYW5uZXJJO1xuICAgIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlIHtcbiAgICBwYXRoOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICB0aHVtYm5haWxzOiB7XG4gICAgICAgIDM3NTogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDU0MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDc2ODogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDgwMDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEwMjQ6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMjgwOiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTM2NjogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgfTtcbiAgICBjb3ZlcjogbnVtYmVyO1xuICAgIHRhZ3M/OiBhbnlbXTtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBwcmV0aXRsZT86IHN0cmluZztcbiAgICBzdWJ0aXRsZT86IHN0cmluZztcbiAgICBuZFRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGxpbmtzPzogYW55W107XG4gICAgYnV0dG9ucz86IGFueVtdO1xuICAgIGFsdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbWFnZVJlc3BvbnNlUGF0aCB7XG4gICAgb3JpZ2luYWw6IHN0cmluZztcbiAgICB3ZWJwOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50c0FkZG9ucyB7XG4gICAgY29udGFjdE9mZmljZT86IGFueTtcbiAgICBtZW51U29jaWFsTWVkaWE/OiB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfVtdO1xuICAgIGNvbnN1bHRUeXBlPzogQ29uc3VsdFR5cGVJO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlck9wdGlvbiB7XG4gICAgaWQ/OiBudW1iZXI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IEZpbHRlck9wdGlvbjtcbn1cbiJdfQ==
|
|
2403
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvc2VydmljZXMvbWFwcGVyL21hcHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBRVgsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdHNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWFsRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBS25FLE1BQU0sT0FBTyxhQUFhO0lBSDFCO1FBSXFCLFlBQU8sR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM1QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBTTFELGtCQUFhLEdBQUcsTUFBTSxDQUFxQyxTQUFTLENBQUMsQ0FBQztRQUV0RSxXQUFNLEdBQW1CLFFBQVEsQ0FDN0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQzlDLENBQUM7UUFJTSxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBb3JHNUM7SUFoc0dHLElBQUksc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFdBQVcs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RSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQzFCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7U0FDTCxDQUFDO0lBQzlCLENBQUM7K0dBbnNHUSxhQUFhO21IQUFiLGFBQWEsY0FGVixNQUFNOzs0RkFFVCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgU2lnbmFsLFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uNDA0SSxcbiAgICBCYWJ5bG9uQWN0aW9uQmFubmVySSxcbiAgICBCYWJ5bG9uQWRkcmVzc0l0ZW0sXG4gICAgQmFieWxvbkFkdmFudGFnZXNJLFxuICAgIEJhYnlsb25CYW5uZXJHYWxsZXJ5SSxcbiAgICBCYWJ5bG9uQmFubmVySW5mb0ksXG4gICAgQmFieWxvbkJsb2dEZXRhaWxzSSxcbiAgICBCYWJ5bG9uQmxvZ0xpc3RJLFxuICAgIEJhYnlsb25CcmVhZGNydW1iSSxcbiAgICBCYWJ5bG9uQ29taW5nU29vbkksXG4gICAgQmFieWxvbkNvbnRhY3RBZGRyZXNzSSxcbiAgICBCYWJ5bG9uQ29udGFjdEZvcm1JLFxuICAgIEJhYnlsb25Db250YWN0SG93SSxcbiAgICBCYWJ5bG9uQ29udGFjdE1hcGFJLFxuICAgIEJhYnlsb25Db250YWN0TWFwSXRlbSxcbiAgICBCYWJ5bG9uRW5naW5lSSxcbiAgICBCYWJ5bG9uRW5naW5lTW9kYWxJLFxuICAgIEJhYnlsb25FcXVpcG1lbnRJdGVtLFxuICAgIEJhYnlsb25FeHRlcm5hbFNjcmlwdEksXG4gICAgQmFieWxvbkZhcUksXG4gICAgQmFieWxvbkZhcUl0ZW0sXG4gICAgQmFieWxvbkZlYXR1cmVzU2xpZGVySSxcbiAgICBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJdGVtLFxuICAgIEJhYnlsb25Gb290ZXJDb250YWN0SSxcbiAgICBCYWJ5bG9uRm9vdGVyTGlua3NJLFxuICAgIEJhYnlsb25Gb290ZXJMb2dvc0ksXG4gICAgQmFieWxvbkZvb3RlclNvY2lhbEksXG4gICAgQmFieWxvbkdhbGxlcnlGaWx0ZXIsXG4gICAgQmFieWxvbkdhbGxlcnlJLFxuICAgIEJhYnlsb25HYWxsZXJ5SXRlbSxcbiAgICBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJLFxuICAgIEJhYnlsb25IZWFkZXJDbGVhckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVDZW50ZXJJLFxuICAgIEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlckksXG4gICAgQmFieWxvbkhlYWRlck1lbnVTaG93SSxcbiAgICBCYWJ5bG9uSGVhZEludHJvSSxcbiAgICBCYWJ5bG9uSG90ZWxzTGlzdEksXG4gICAgQmFieWxvbkhvdGVsc1NsaWRlckksXG4gICAgQmFieWxvbkluZm8yQ29sSW1nSSxcbiAgICBCYWJ5bG9uSW5mbzJpbWdCaWdJLFxuICAgIEJhYnlsb25JbmZvMmltZ0ksXG4gICAgQmFieWxvbkluZm80aW1nSSxcbiAgICBCYWJ5bG9uSW5mb0JpZ0ksXG4gICAgQmFieWxvbkluZm9HcmlkSSxcbiAgICBCYWJ5bG9uSW5mb0dyaWRJdGVtSSxcbiAgICBCYWJ5bG9uSW5mb0ltZ0ksXG4gICAgQmFieWxvbkluZm9JbWdTbGlkZXJJLFxuICAgIEJhYnlsb25JbmZvSW1nU2xpZGVySXRlbUksXG4gICAgQmFieWxvbkluZm9JbnRyb0ksXG4gICAgQmFieWxvbkluZm9aaWd6YWdWMkksXG4gICAgQmFieWxvbkluZm9aaWd6YWdWMkl0ZW0sXG4gICAgQmFieWxvbkl0ZW1zR3JpZEksXG4gICAgQmFieWxvbkxhbmd1YWdlTW9kYWxJLFxuICAgIEJhYnlsb25MZWdhbEksXG4gICAgQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJLFxuICAgIEJhYnlsb25OZXdzbGV0dGVySSxcbiAgICBCYWJ5bG9uT2ZmZXJEZXRhaWxJLFxuICAgIEJhYnlsb25PZmZlckksXG4gICAgQmFieWxvbk9mZmVyUG9wdXBJLFxuICAgIEJhYnlsb25PZmZlclBvcHVwVjJJLFxuICAgIEJhYnlsb25PZmZlclNsaWRlckksXG4gICAgQmFieWxvbk9mZmVyc0xpc3RJLFxuICAgIEJhYnlsb25PZmZlcnNMaXN0SXRlbSxcbiAgICBCYWJ5bG9uUHJlc3NMaXN0SSxcbiAgICBCYWJ5bG9uUm9vbURldGFpbEksXG4gICAgQmFieWxvblJvb21JbmZvSSxcbiAgICBCYWJ5bG9uUm9vbXNDb2xzSSxcbiAgICBCYWJ5bG9uUm9vbXNHcmlkSSxcbiAgICBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50LFxuICAgIEJhYnlsb25Sb29tc0xpc3RJLFxuICAgIEJhYnlsb25Sb29tc0xpc3RJdGVtLFxuICAgIEJhYnlsb25Sb29tc1NsaWRlckksXG4gICAgQmFieWxvblNlcnZpY2VzU2xpZGVySSxcbiAgICBCYWJ5bG9uU2xpZGVyMkNvbEl0ZW1JLFxuICAgIEJhYnlsb25TbGlkZXIyaXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXIzSXRlbXNJLFxuICAgIEJhYnlsb25TbGlkZXI0Y29sTGFiZWxzLFxuICAgIEJhYnlsb25TbGlkZXJJdGVtLFxuICAgIEJhYnlsb25TdGF0aWNGb290ZXJJLFxuICAgIEJhYnlsb25TdWJtZW51SSxcbiAgICBCYWJ5bG9uVGhhbmtzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVySXRlbSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVGh1bWJzSSxcbiAgICBCYWJ5bG9uVG9wU2xpZGVyVjJJLFxuICAgIEJhYnlsb25Ub3BTbGlkZXJWaWRlb0ksXG4gICAgQmFieWxvbldlYm1hcEksXG4gICAgRHJvcGRvd25PcHRpb24sXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBCYWJ5bG9uR2xvYmFsTW9kYWxJIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9jb3JlL2JhYnlsb24tZ2xvYmFsLW1vZGFsJztcbmltcG9ydCB7IEJhYnlsb25JdGVtR3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25MaXN0R3JpZEkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1saXN0LWdyaWQvYmFieWxvbi1saXN0LWdyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25Nb2RhbFBvcHVwSSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvY29yZS9iYWJ5bG9uLW1vZGFsLXBvcHVwJztcbmltcG9ydCB7IEJhYnlsb25TdGF0aWNGb290ZXJWMkkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1zdGF0aWMtZm9vdGVyLXYyL2JhYnlsb24tc3RhdGljLWZvb3Rlci12Mi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUm9vbVNlcnZpY2VUeXBlIH0gZnJvbSAnLi4vLi4vRW51bS9zZXJ2aWNlcy5lbnVtJztcbmltcG9ydCB7IFZpZXdzVHlwZSB9IGZyb20gJy4uLy4uL0VudW0vdmlld3MuZW51bSc7XG5pbXBvcnQge1xuICAgIEJhYnlsb25CdXR0b25JLFxuICAgIEJhYnlsb25Ecm9wZG93bkksXG4gICAgQmFieWxvbkltYWdlSSxcbiAgICBCYWJ5bG9uSW5wdXRJLFxuICAgIEJhYnlsb25NZW51QnV0dG9uSSxcbiAgICBCYWJ5bG9uTWVudUluZm9JLFxuICAgIEJhYnlsb25UZXh0SW5mb0ksXG4gICAgQm9keUNvbXBvbmVudCxcbiAgICBDT01QT05FTlRTX0VYVFJBLFxuICAgIENvbnN1bHRUeXBlSSxcbn0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IFNjcmVlblNpemVyU2VydmljZSB9IGZyb20gJy4uL3NjcmVlbi1zaXplcic7XG5pbXBvcnQgeyBTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi9tYXBwZXIuc2VydmljZS50b2tlbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1hcHBlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZVN2YyA9IGluamVjdChTSVRFX0NPTkZJR19TRVJWSUNFX1RPS0VOKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcmVlblNpemVyID0gaW5qZWN0KFNjcmVlblNpemVyU2VydmljZSk7XG5cbiAgICBnZXQgaXNNaW5GdWxsVGFibGV0SW5zdGFudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NyZWVuU2l6ZXIubWluRnVsbFRhYmxldEluc3RhbnQoKTtcbiAgICB9XG5cbiAgICBoZWFkZXJCdXR0b25zID0gc2lnbmFsPFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgICBzaXRlSWQ6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoXG4gICAgICAgICgpID0+IHRoaXMuc2l0ZVN2Yy53ZWJDb25maWdJbnN0YW50Py5zaXRlSURcbiAgICApO1xuXG4gICAgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkJ1dHRvbklbXTtcblxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgICBnZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgIGltYWdlOiBJbWFnZVJlc3BvbnNlIHwgdW5kZWZpbmVkLFxuICAgICAgICBpc0ZpZ3VyZSA9IHRydWVcbiAgICApOiBzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkSW1hZ2U7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zY3JlZW5TaXplci5tb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzM3NV0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNTbWFsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzU0MF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIuaXNNZWRpdW1UYWJsZXRJbnN0YW50KCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/Lls3NjhdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzRnVsbFRhYmxldEluc3RhbnQoKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW1hZ2UgPSBpbWFnZT8udGh1bWJuYWlscz8uWzEwMjRdPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNjcmVlblNpemVyLmlzU21hbGxEZXNrdG9wSW5zdGFudCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy50aHVtYm5haWxzPy5bMTI4MF0/LndlYnA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuU2l6ZXIubWluTWVkaXVtRGVza3RvcCgpKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbWFnZSA9IGltYWdlPy5wYXRoPy53ZWJwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEltYWdlID0gaW1hZ2U/LnRodW1ibmFpbHM/LlsxMzY2XT8ud2VicDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbWFnZVxuICAgICAgICAgICAgPyBpc0ZpZ3VyZVxuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5zaXRlU3ZjLmNkbkltYWdlc0luc3RhbnR9JHtzZWxlY3RlZEltYWdlfWBcbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzcmM6IGAke3RoaXMuc2l0ZVN2Yy5jZG5JbWFnZXNJbnN0YW50fSR7c2VsZWN0ZWRJbWFnZX1gLFxuICAgICAgICAgICAgICAgICAgICAgIGFsdDogaW1hZ2U/LmFsdCxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICBpbWFnZXM6IEltYWdlUmVzcG9uc2VbXSB8IHVuZGVmaW5lZCxcbiAgICAgICAgaXNGaWd1cmUgPSB0cnVlXG4gICAgKTogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gaW1hZ2VzPy5tYXAoKGltZykgPT4gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1nLCBpc0ZpZ3VyZSkhKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlQWdlc09wdGlvbnMoXG4gICAgICAgIG1heExlbmd0aDogbnVtYmVyLFxuICAgICAgICBtaW5MZW5ndGggPSAwXG4gICAgKTogRHJvcGRvd25PcHRpb25bXSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IG1pbkxlbmd0aDsgaSA8PSBtYXhMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHsgY29kZTogaSwgbmFtZTogaSA8IDEwID8gYDAke2l9YCA6IGAke2l9YCB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBtYXBCb2R5RXh0cmEoXG4gICAgICAgIGJvZHk6IGFueVtdIHwgdW5kZWZpbmVkXG4gICAgKTogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPltdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYm9keU1hcHBlZDogQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPltdIHwgdW5kZWZpbmVkID1cbiAgICAgICAgICAgIGJvZHk/Lm1hcCgoY29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50TWFwcGVkOiBCb2R5Q29tcG9uZW50PENPTVBPTkVOVFNfRVhUUkE+ID0ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb21wb25lbnQubmFtZT8udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGNvbXBvbmVudC5vcmRlcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxDT01QT05FTlRTX0VYVFJBPjtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTdWJtZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBCYWJ5bG9uU3VibWVudUk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9ICdtZW51JztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gYm9keU1hcHBlZDtcbiAgICB9XG5cbiAgICBtYXBTdWJtZW51KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3VibWVudUkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHByb3BzPy5pdGVtcz8uZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnNlbGVjdGVkKTtcbiAgICAgICAgY29uc3Qgc3VibWVudSA9IHtcbiAgICAgICAgICAgIC8vIGhvdGVsOiBwcm9wcz8uaG90ZWwsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lml0ZW1zXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChsaW5rOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGluaz8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogc2VsZWN0ZWQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgdXJsOiBzZWxlY3RlZD8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgfSBhcyBCYWJ5bG9uQnV0dG9uSSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3VibWVudUk7XG5cbiAgICAgICAgcmV0dXJuIHN1Ym1lbnU7XG4gICAgfVxuXG4gICAgbWFwQ29tcG9uZW50czxUPihcbiAgICAgICAgYm9keTogYW55W10sXG4gICAgICAgIGFkZG9ucz86IENvbXBvbmVudHNBZGRvbnNcbiAgICApOiBCb2R5Q29tcG9uZW50PFQ+W10ge1xuICAgICAgICBpZiAoIWJvZHkgfHwgIWJvZHkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gW10gYXMgQm9keUNvbXBvbmVudDxUPltdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJvZHlNYXBwZWQ6IEJvZHlDb21wb25lbnQ8VD5bXSA9IGJvZHlcbiAgICAgICAgICAgID8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjb21wb25lbnQpID0+IGNvbXBvbmVudCAhPT0gbnVsbCAmJiBjb21wb25lbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgPy5tYXAoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudE1hcHBlZDogQm9keUNvbXBvbmVudDxUPiA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogY29tcG9uZW50Lm5hbWU/LnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjb21wb25lbnQub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgYWxpYXM6IGNvbXBvbmVudC5hbGlhcyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yOiBjb21wb25lbnQudGV4dGNvbG9yLFxuICAgICAgICAgICAgICAgIH0gYXMgQm9keUNvbXBvbmVudDxUPjtcblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9JdCBpcyBuZWNlc3NhcnksIG90aGVyd2lzZSBpdCBnaXZlcyBhbiBlcnJvciBhbmQgZG9lcyBub3Qgc2hvdyBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudC5uYW1lPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kdWxlNDA0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXA0MDQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyAtLS0tLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFRvcFNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnZpZGVvJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWaWRlbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndG9wc2xpZGVydjJsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0b3BzbGlkZXJ2MnJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBUb3BTbGlkZXJWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAndG9wc2xpZGVydjJyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvaW1ncmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvSW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvaW1ncmlnaHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnRleHRjb2xvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbWdzbGlkZXJyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb2ltZ3NsaWRlcmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWdTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5mb2ltZ3NsaWRlcnJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9pbnRybyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0ludHJvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdsZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvMmNvbGltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnaW5mbzJjb2xpbWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvMmNvbGltZ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8yY29saW1nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLm5hbWUgPT09ICdpbmZvMmNvbGltZ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzNpbWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9JbWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC50ZXh0Y29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvemlnemFnbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBaaWd6YWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQubmFtZSA9PT0gJ2luZm96aWd6YWdyaWdodCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbmZvZ3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwSW5mb0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyY29sbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2xpZGVyMmNvbHJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5uYW1lID09PSAnc2xpZGVyMmNvbHJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NsaWRlcjNjb2wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlckNvbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXI0Y29sJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBTbGlkZXJDb2xsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaXRlbXNncmlkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJdGVtc0dyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2dyaWQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zR3JpZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmdhbGxlcnknOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmlkZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR3JpZEdhbGxlcnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiYW5uZXJuZXdzbGV0dGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwQmFubmVyTmV3c2xldHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBPZmZlclNsaWRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLS0tLSBMQVlPVVQgQ09NUE9ORU5UUyBFTkQtLS0tLy9cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RoYW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVGhhbmtzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0Zm9ybSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnRhY3RPZmZpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRvbnM/LmNvbnN1bHRUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0aG93JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb250YWN0SG93KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWJtYXAnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFdlYm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29udGFjdG1hcCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdE1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGVnYWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcExlZ2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb29tc2NvbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21zQ29scyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncm9vbWRldGFpbHMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFJvb21EZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RvcHNsaWRlcnRodW1icyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwVG9wU2xpZGVyVGh1bWJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmZWF0dXJlc3NsaWRlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmVhdHVyZXNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jhbm5lcmluZm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJhbm5lckluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jvb21zbGlzdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwUm9vbXNMaXN0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb21pbmdzb29uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBDb21pbmdTb29uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmRldGFpbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJEZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ29mZmVyc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhcSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRmFxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGF0aWNmb290ZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN0YXRpY0Zvb3RlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2FsbGVyeSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwR2FsbGVyeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmF2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBNZW51KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkb25zPy5tZW51U29jaWFsTWVkaWFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlc21vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBMYW5ndWFnZU1vZGFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIzaXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjNJdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG90ZWxzc2xpZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBIb3RlbHNTbGlkZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvdGVsc2xpc3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhvdGVsc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm80aW1nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBJbmZvNEltZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VydmljZXNzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNlcnZpY2VzU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjb250YWN0YWRkcmVzcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQ29udGFjdEFkZHJlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FkdmFudGFnZXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEFkdmFudGFnZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm9iaWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9CaWcoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZm96aWd6YWd2MmxlZnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mb3ppZ3phZ3YycmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm9aaWdaYWdWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyY29udGFjdCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyQ29udGFjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbzJpbWdiaWcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEluZm8ySW1nQmlnKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJsaW5rcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwRm9vdGVyTGlua3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Zvb3RlcmxvZ29zJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJMb2dvcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJzbGlkZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcE9mZmVyU2xpZGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb290ZXJzb2NpYWxzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBGb290ZXJTb2NpYWxzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzbGlkZXIyaXRlbXMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFNsaWRlcjJpdGVtcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhdGljZm9vdGVydjInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcFN0YXRpY0Zvb3RlcnYyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaXN0Z3JpZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTGlzdEdyaWQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ25ld3NsZXR0ZXJtb2RhbCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTmV3c2xldHRlck1vZGFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdoZWFkaW50cm8nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEhlYWRJbnRybyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYnJlYWRjcnVtYnMnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJyZWFkY3J1bWJzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2ZmZXJiYW5uZXJ2Mic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXJWMihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dsb2JhbG1vZGFsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdnbG9iYWxtb2RhbDInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEdsb2JhbE1vZGFsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWVudSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwU3VibWVudShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NwYWxvcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBFeHRlcm5hbFNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2dsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBCbG9nTGlzdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Jsb2dkZXRhaWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRNYXBwZWQucHJvcHMgPSB0aGlzLm1hcEJsb2dEZXRhaWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvZmZlcmJhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwT2ZmZXJCYW5uZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtb2RhbG11bHRpcGxlbW90b3JzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwTW9kYWxNdWx0aXBsZU1vdG9ycyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbW9kYWxwb3B1cCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwTW9kYWxQb3B1cChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5wcm9wc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIFQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlc3NsaXN0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50TWFwcGVkLnByb3BzID0gdGhpcy5tYXBQcmVzc0xpc3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBUO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2FjdGlvbmJhbm5lcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE1hcHBlZC5wcm9wcyA9IHRoaXMubWFwQWN0aW9uQmFubmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgVDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRNYXBwZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGJvZHlNYXBwZWQ7XG4gICAgfVxuXG4gICAgbWFwNDA0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uNDA0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHMuYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uNDA0STtcbiAgICB9XG5cbiAgICAvLy0tLS0gTEFZT1VUIENPTVBPTkVOVFMgLS0tLS8vXG4gICAgbWFwVG9wU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVG9wU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcyksXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGl0ZW1zTW9iaWxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNtb2JpbGU/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblRvcFNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dvOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8uWzBdLCBmYWxzZSksXG4gICAgICAgICAgICBsb2dvVGl0bGU6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvdGl0bGU/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIC8vIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnRleHRzPy52aWRlbyxcbiAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwVG9wU2xpZGVyVmlkZW8oXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVmlkZW9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZpZGVvRGF0YToge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udmlkZW8/LnRpdGxlLFxuICAgICAgICAgICAgICAgIHNyYzogcHJvcHM/LnZpZGVvPy5zcmMsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3ZpZGVvL21wNCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc21hbGxWaWRlb0RhdGE6IHByb3BzPy52aWRlbz8ubW9iaWxlXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy52aWRlbz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgc3JjOiBwcm9wcz8udmlkZW8/Lm1vYmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndmlkZW8vbXA0JyxcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGxhYmVsSW5mb3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbW9iaWxlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclZpZGVvSTtcbiAgICB9XG5cbiAgICBtYXBUb3BTbGlkZXJWMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlcjRjb2xMYWJlbHNcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBsYWJlbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclYySSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcEluZm9JbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICB0ZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25JbmZvSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBidXR0b25zOiBwcm9wcz8uYnV0dG9uc1xuICAgICAgICAgICAgICAgID8gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAobGluazogYW55KSA9PiBsaW5rPy5saW5rVmFsdWUgIT09IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uc3VidGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5zdWJ0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBuZHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/Lm5kdGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5uZHRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5uZHRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgbGVzc0J0bjogcHJvcHM/LnRleHRzPy5zZWVMZXNzLFxuICAgICAgICAgICAgbW9yZUJ0bjogcHJvcHM/LnRleHRzPy5zZWVNb3JlLFxuICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcyxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICk/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBpdGVtLmljb24gPyBgaWNvbi0ke2l0ZW0uaWNvbn1gIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgYWR2VGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGV4dCA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRleHRcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRleHQ/LmNvbnRhaW4sXG4gICAgICAgICAgICB0b3BCRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnRvcGJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBib3R0b21CRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJvdHRvbWJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LkJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgdGV4dENvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8uc3VidGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgICAgIG5kdGl0bGU6IHByb3BzPy50ZXh0cz8ubmR0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkdlRpdGxlOiBwcm9wcz8udGV4dHM/LnRleHQ/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9JbWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9JbWdTbGlkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm9JbWdTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgLy8gVE9ETzogYWRkIHRvcEJHLCBib3R0b21CR1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LmJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgbGVzc0J0bjogcHJvcHM/LnRleHRzPy5zZWVMZXNzLFxuICAgICAgICAgICAgbW9yZUJ0bjogcHJvcHM/LnRleHRzPy5zZWVNb3JlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBuZHRpdGxlOiBpdGVtPy5uZF90aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSW5mb0ltZ1NsaWRlckl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBJbmZvSW50cm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvSW50cm9JIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3BCRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnRvcGJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBib3R0b21CRzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJvdHRvbWJnPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3BDb2xvcjogcHJvcHM/LnRleHRzPy50b3BDb2xvcixcbiAgICAgICAgICAgIGJvdHRvbUNvbG9yOiBwcm9wcz8udGV4dHM/LkJvdHRvbUNvbG9yLFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgbG9nbzI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvMj8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBidXR0b25Nb2RhbDogcHJvcHM/LnRleHRzPy5wb3B1cG1vZGFsLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW50cm9JO1xuICAgIH1cblxuICAgIG1hcEhlYWRlcihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbWVudTogYW55XG4gICAgKTpcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQm9va1Nob3dJXG4gICAgICAgIHwgQmFieWxvbkhlYWRlckNsZWFySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51Q2VudGVySVxuICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51TG9nb0NlbnRlcklcbiAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudVNob3dJIHtcbiAgICAgICAgY29uc3QgbGluayA9IG1lbnUubGlua3M/LmxvZ29MaW5rPy5mbGF0KCk/LlswXTtcbiAgICAgICAgY29uc3QgaGVhZGVyQnV0dG9ucyA9IHByb3BzO1xuXG4gICAgICAgIHRoaXMuZmxvYXRpbmdCdXR0b25zID0gaGVhZGVyQnV0dG9uc1xuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGJhYnlsb24tJHtoZWFkZXJCdXR0b25zLnRleHRzPy50cmFuc2Zlckljb259YCxcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaGVhZGVyQnV0dG9ucz8udGV4dHM/LnRyYW5zZmVyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2hlYWRlckJ1dHRvbnMudGV4dHM/LmNoZWNraW5JY29ufWAsXG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5jaGVja2luLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsYW5nOiB0aGlzLnNpdGVTdmMuc2VsZWN0ZWRMYW5ndWFnZUluc3RhbnQ/LmxvY2F0ZT8udG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgIGJ0bkJvb2s6IHsgbGFiZWw6IGhlYWRlckJ1dHRvbnM/LnRleHRzPy5ib29rTm93IH0sXG4gICAgICAgICAgICBzaG9wOiBoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcFxuICAgICAgICAgICAgICAgID8gYGljb24tJHtoZWFkZXJCdXR0b25zPy50ZXh0cz8uc2hvcH1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhoZWFkZXJCdXR0b25zPy5saW5rcyksXG4gICAgICAgICAgICBsaW5rTG9nbzoge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBsaW5rPy5sYWJlbCxcbiAgICAgICAgICAgICAgICB1cmw6IGxpbms/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogbGluaz8ubGlua1R5cGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVudTogbWVudT8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG1lbnU6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1lbnU/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiBtZW51Py5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBtZW51Py50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbWVudT8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1lbnU/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbjogbWVudT8uY2hpbGRyZW4/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGNoaWxkPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGlsZD8ubGlua1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6IGNoaWxkPy5saW5rVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjaGlsZD8udHJhbnNsYXRpb25zPy5bMF0/Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNoaWxkPy50cmFuc2xhdGlvbnM/LlswXT8ubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2hpbGQ/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uTWVudUJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBtZW51SW5mbzogdGhpcy5tYXBNZW51KG1lbnUsIHVuZGVmaW5lZCksXG4gICAgICAgIH0gYXNcbiAgICAgICAgICAgIHwgQmFieWxvbkhlYWRlckJvb2tTaG93SVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyQ2xlYXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51Q2VudGVySVxuICAgICAgICAgICAgfCBCYWJ5bG9uSGVhZGVyTWVudUxvZ29DZW50ZXJJXG4gICAgICAgICAgICB8IEJhYnlsb25IZWFkZXJNZW51U2hvd0k7XG4gICAgfVxuXG4gICAgLy9UT0RPOiBXYWl0IGZvciBiYWNrIGluZm9cbiAgICBtYXBNZW51KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBzb2NpYWxNZWRpYTogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbk1lbnVJbmZvSSB7XG4gICAgICAgIGNvbnN0IGxpbmtzID0gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgIHByb3BzPy5uYXY/Lm1hcCgobGluazogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLmxpbmssXG4gICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsudHJhbnNsYXRpb25zPy5bMF0/Lm5hbWUsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmtzOiBsaW5rcz8uc2xpY2UoMCwgNiksXG4gICAgICAgICAgICBib3R0b21MaW5rczogbGlua3M/LnNsaWNlKDYpLFxuICAgICAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHByb3BzPy5hZGRyZXNzPy5bMF0/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgY2l0eTogcHJvcHM/LmFkZHJlc3M/LlswXT8uY2l0eSxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgIGNwOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5jcCxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICBwcm92aW5jZTogcHJvcHM/LmFkZHJlc3M/LlswXT8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8uYWRkcmVzcz8uWzBdPy5saW5rLFxuICAgICAgICAgICAgICAgIGxpbmtzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LmFkZHJlc3M/LlswXT8ubGluayxcbiAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWN0OiB7XG4gICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5jb250YWN0VGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8uY29udGFjdFRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNvY2lhbE1lZGlhOiBzb2NpYWxNZWRpYT8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgYmFieWxvbi0ke2l0ZW0ubmFtZT8udG9Mb3dlckNhc2UoKX1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW4/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgaW1nQmFja2dyb3VuZDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGxpbmtMb2dvOiB7XG4gICAgICAgICAgICAgICAgdXJsOiBwcm9wcz8ubGlua3M/LmxvZ29MaW5rPy5bMF0/LmxpbmtWYWx1ZSxcbiAgICAgICAgICAgICAgICBsaW5rVHlwZTogcHJvcHM/LmxpbmtzPy5sb2dvTGluaz8uWzBdPy5saW5rVHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGFkZHJlc3NUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0Q29sb3JzOiB7XG4gICAgICAgICAgICAgICAgY29udGFjdFRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRhY3RUaXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBhZGRyZXNzVGl0bGU6IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTWVudUluZm9JO1xuICAgIH1cblxuICAgIG1hcEluZm8yaW1nKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICByaWdodFNpZGU6IGJvb2xlYW4gPSBmYWxzZVxuICAgICk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmlnaHRTaWRlOiByaWdodFNpZGUsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgICAgIGl0ZW0xOiBwcm9wcz8udGV4dHM/Lml0ZW0xLFxuICAgICAgICAgICAgICAgIGl0ZW0xVGV4dDogcHJvcHM/LnRleHRzPy5pdGVtMVRleHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGltYWdlczogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXNzbWFsbDogdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2Vzc21hbGwsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvMmltZ0k7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJjb2xpbWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yQ29sSW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHNtYWxsaW1hZ2U6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LnNtYWxsaW1hZ2UsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yQ29sSW1nSTtcbiAgICB9XG5cbiAgICBtYXBaaWd6YWcoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWQsXG4gICAgICAgIHJpZ2h0U2lkZTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKTogQmFieWxvbkluZm8yaW1nSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBpbWFnZXM6IChzdHJpbmcgfCBCYWJ5bG9uSW1hZ2VJKVtdIHwgdW5kZWZpbmVkID0gW107XG4gICAgICAgIGxldCB0ZXh0cywgdGFncztcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gdGhpcy5nZXRBcnJheUltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0ZXh0cyA9IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbiA/PyBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluID8/IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgY29udGVudHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZT8uY29udGFpbiA/P1xuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/LmNvbnRlbnR0aXRsZSxcbiAgICAgICAgICAgICAgICBjb250ZW50c3VidGl0bGU6XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlPy5jb250YWluID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy50ZXh0cz8uY29udGVudHN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LmNvbnRhaW4gPz9cbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5sb2dvPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpY29uczogcHJvcHM/LlZlbnRhamFzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LnRpdGxlIHx8IGl0ZW0/LnRleHRcbiAgICAgICAgICAgICAgICApPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgaWNvblRpdGxlOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8udGV4dHM/Lmljb250aXRsZT8uY29udGFpbiA/PyBwcm9wcz8udGV4dHM/Lmljb250aXRsZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0YWdzID0ge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjb250ZW50dGl0bGU6IHByb3BzPy50ZXh0cz8uY29udGVudHRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgY29udGVudHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmNvbnRlbnRzdWJ0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5jb250ZW50ZGVzY3JpcHRpb24/LnRhZyxcbiAgICAgICAgICAgICAgICBpY29uVGl0bGU6IHByb3BzPy50ZXh0cz8uaWNvbnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnMuZmlsdGVyKChidG46IGFueSkgPT4gISFidG4/LmxpbmtWYWx1ZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0ZXh0cyxcbiAgICAgICAgICAgIGltYWdlcyxcbiAgICAgICAgICAgIHRhZ3MsXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBHcmlkR2FsbGVyeShwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9JbWdJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaXNJbkVudW0gPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxuICAgICAgICAgICAgZW51bU9iajogVCxcbiAgICAgICAgICAgIHZhbHVlOiBhbnlcbiAgICAgICAgKTogdmFsdWUgaXMgVFtrZXlvZiBUXSA9PiBPYmplY3QudmFsdWVzKGVudW1PYmopLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LnBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIHZpZXc6IGlzSW5FbnVtKFZpZXdzVHlwZSwgcHJvcHM/Lm11bHRpbWVkaWE/LnZpZXcpXG4gICAgICAgICAgICAgICAgPyBwcm9wcy5tdWx0aW1lZGlhPy52aWV3XG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBJbmZvR3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9HcmlkSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogaXRlbS5saW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxpbmtzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT4gbGluaz8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbmZvR3JpZEl0ZW1JXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvR3JpZEk7XG4gICAgfVxuXG4gICAgbWFwQmFubmVyR2FsbGVyeShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZFxuICAgICk6IEJhYnlsb25CYW5uZXJHYWxsZXJ5SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob3ZlcjogcHJvcHM/LnRleHRzPy5ob3ZlcixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0QXJyYXlJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJHYWxsZXJ5STtcbiAgICB9XG5cbiAgICBtYXBCYW5uZXJOZXdzbGV0dGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSW5mb0ltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGhvdmVyOiBwcm9wcz8udGV4dHM/LmhvdmVyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ucGxhY2Vob2xkZXIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvSW1nSTtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsMihcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgcmlnaHRTaWRlOiBib29sZWFuID0gZmFsc2VcbiAgICApOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICByaWdodFNpZGU6IHJpZ2h0U2lkZSxcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlcjJDb2xJdGVtSVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBTbGlkZXJDb2xsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVG9wU2xpZGVyVjJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGltYWdlczogKHN0cmluZyB8IEJhYnlsb25JbWFnZUkpW10gfCB1bmRlZmluZWQgPSBbXTtcbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcykge1xuICAgICAgICAgICAgaW1hZ2VzID0gcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5tYXAoKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbWFnZVJlc3BvbnNlID0gdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLnNyY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGltYWdlUmVzcG9uc2UgPT09ICdvYmplY3QnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuPy5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubGlua3M/LmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bi5saW5rVmFsdWUgIT09IG51bGwgfHwgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSW1hZ2VJO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXMpIHtcbiAgICAgICAgICAgIGltYWdlcyA9IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZXM/Lm1hcCgoaXRlbTogSW1hZ2VSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBzcmM6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbWFnZVJlc3BvbnNlLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2UuYWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ0bjogYW55KSA9PiBidG4/LmxpbmtWYWx1ZSAhPT0gbnVsbCB8fCB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9IGFzIEJhYnlsb25JbWFnZUk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgICAgICAgID8gKHtcbiAgICAgICAgICAgICAgICAgIGltYWdlczogaW1hZ2VzLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgdG9wQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy50b3BiZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgYm90dG9tQkc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5ib3R0b21iZz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgdG9wQ29sb3I6IHByb3BzPy50ZXh0cz8udG9wQ29sb3IsXG4gICAgICAgICAgICAgICAgICBib3R0b21Db2xvcjogcHJvcHM/LnRleHRzPy5Cb3R0b21Db2xvcixcbiAgICAgICAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9IGFzIEJhYnlsb25Ub3BTbGlkZXJWMkkpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBtYXBJdGVtc0dyaWQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JdGVtc0dyaWRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICAgICAgICA/ICh7XG4gICAgICAgICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGltYWdlUmVzcG9uc2UgPSB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0/LnByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IGl0ZW0/LnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpbWFnZVJlc3BvbnNlID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltYWdlUmVzcG9uc2Uuc3JjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW1hZ2VSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgaW1hZ2VSZXNwb25zZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWFnZVJlc3BvbnNlLmFsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmxpbmtzPy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidG46IGFueSkgPT4gYnRuLmxpbmtWYWx1ZSAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvbkltYWdlSTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8uYnV0dG9ucz8uZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uSXRlbXNHcmlkSSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG1hcFJvb20ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvMmltZ0kgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXM6IHByb3BzPy5yb29tcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGl0ZW0ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IEltYWdlUmVzcG9uc2UpID0+IGltZy5jb3ZlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkltYWdlSVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlczogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5jbHVkZXMoUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tSW5mb0lcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm8yaW1nSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc0dyaWQocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Sb29tc0dyaWRJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IHJvb21zID0gcHJvcHM/LnJvb21zXG4gICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5maWx0ZXIoKGJ0bjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4/LmxpbmtUeXBlPy5pbmNsdWRlcygnaW50ZXJuYWwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IGl0ZW0ubXVsdGltZWRpYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpbWc6IEltYWdlUmVzcG9uc2UpID0+IGltZy5jb3ZlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogSW1hZ2VSZXNwb25zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltZy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW1nLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpbWcuc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZy5uYW1lID09PSAnUm9vbXNHcmlkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogaW1nLnRhZ3M/LmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWc6IGFueSkgPT4gdGFnPy5maWx0ZXJhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDI6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsNDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFJvb21TZXJ2aWNlVHlwZS5jaGFyYWN0ZXJpc3RpY3MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbUluZm9JXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGxhYmVsczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJvb21zOiBwcm9wcz8uYnV0dG9ucyA/IHJvb21zLnNsaWNlKDAsIDUpIDogcm9vbXMsXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uUm9vbXNHcmlkSTtcbiAgICB9XG5cbiAgICBtYXBSb29tc1NsaWRlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblJvb21zU2xpZGVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgdGV4dHM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByb29tczogcHJvcHM/LnJvb21zXG4gICAgICAgICAgICAgICAgPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LmJ1dHRvbnM/LnNsaWNlKCkucmV2ZXJzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8ubXVsdGltZWRpYT8uZmluZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+IGltZz8uY292ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGV4dHM/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDE6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwzOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDQ6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudHM6IGl0ZW0/LnNlcnZpY2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5zcGxpdCgnLCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21JbmZvSVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc1NsaWRlckk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25PZmZlclNsaWRlckkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmRpbWFnZW5lcz8uWzBdIHx8XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5iYWNrZ3JvdW5kaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG9mZmVyczogcHJvcHM/Lm9mZmVycz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkZyb206IGl0ZW0/LmFwcGxpY2F0aW9uRnJvbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uVG86IGl0ZW0/LmFwcGxpY2F0aW9uVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeTogaXRlbT8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbT8uZGlzY291bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZXM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/Lm11bHRpbWVkaWE/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbS50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBpdGVtLnRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IGl0ZW0udGV4dHM/LmFkZGl0aW9uYWwzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnM6IGl0ZW0udGV4dHM/LmNvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtLnRleHRzPy5yZXNlcnZhdGlvblVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gYXMgQmFieWxvblRleHRJbmZvSSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbT8udXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZUZyb206IGl0ZW0/LnZpc2libGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVRvOiBpdGVtPy52aXNpYmxlVG8sXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcklcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyU2xpZGVySTtcbiAgICB9XG4gICAgLy8tLS0tIExBWU9VVCBDT01QT05FTlRTIEVORC0tLS0vL1xuXG4gICAgbWFwVGhhbmtzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uVGhhbmtzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHMudGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHMuYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uVGhhbmtzSTtcbiAgICB9XG5cbiAgICBtYXBDb250YWN0Rm9ybShcbiAgICAgICAgcHJvcHM6IGFueSB8IHVuZGVmaW5lZCxcbiAgICAgICAgbmRQcm9wczogYW55IHwgdW5kZWZpbmVkLFxuICAgICAgICBuZFByb3BzQ29uc3VsdDogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkNvbnRhY3RGb3JtSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgdGV4dGFyZWE6IHtcbiAgICAgICAgICAgICAgICBpZDogJ21lbnNhamUnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TWVzc2FnZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBVdGlscy5ub3JtYWxpemVUZXh0KHByb3BzPy50ZXh0cz8uaW5wdXRNZXNzYWdlKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dE1lc3NhZ2VQbGFjZUhvbGRlcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUmVxdWlyZWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgY29uZGl0aW9uczI6IHByb3BzPy50ZXh0cz8uY29uZGl0aW9uczIsXG4gICAgICAgICAgICBkcm9wZG93bjoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duVGl0bGUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogbmRQcm9wc0NvbnN1bHQ/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKHByb3A6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VsdFR5cGVJZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcC5jb25zdWx0X3R5cGVfaWQgPz8gcHJvcC5jb25zdWx0VHlwZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IHByb3AuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgRHJvcGRvd25PcHRpb25cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmRyb3Bkb3duUGxhY2Vob2xkZXIsXG4gICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob3RlbERyb3A6XG4gICAgICAgICAgICAgICAgcHJvcHM/LmhvdGVscz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaG90ZWxEcm9wVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHByb3BzPy5ob3RlbHM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogcHJvcC5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIERyb3Bkb3duT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmhvdGVsRHJvcFBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgaW5wdXRzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ25vbWJyZScsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0TmFtZSksXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0TmFtZVBsYWNlSG9sZGVyLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHByb3BzPy50ZXh0cz8uZXJyb3JSZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdzdXJuYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRTdXJuYW1lcyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0U3VybmFtZXMpLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFN1cm5hbWVzUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvclJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ2VtYWlsJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0RW1haWwpLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dEVtYWlsUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5lcnJvckVtYWlsLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5lbWFpbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ3Bob25lJyxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8uaW5wdXRQaG9uZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogVXRpbHMubm9ybWFsaXplVGV4dChwcm9wcz8udGV4dHM/LmlucHV0UGhvbmUpLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5pbnB1dFBob25lUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RlbCcsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/LmVycm9yUGhvbmUsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0gYXMgQmFieWxvbklucHV0SVtdLFxuICAgICAgICAgICAgaW5mbzoge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIG5kUHJvcHM/LnRleHRzPy5hZGRyZXNzSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5kUHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IG5kUHJvcHM/LmxpbmtzPy5hZGRyZXNzPy5bMF0/LlswXT8ubGFiZWwsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgbmRQcm9wcz8udGV4dHM/LmVtYWlsSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5kUHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhuZFByb3BzPy5saW5rcz8uZW1haWw/LlswXSk/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChidG4pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnRuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBtYWlsdG86JHtidG4/LnVybH1sYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGhvbmU6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIG5kUHJvcHM/LnRleHRzPy5waG9uZUljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBuZFByb3BzPy50ZXh0cz8ucGhvbmVUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMobmRQcm9wcz8ubGlua3M/LnBob25lPy5bMF0pPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoYnRuKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmJ0bixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgcGhvbmU6JHtidG4/LnVybH1sYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25Db250YWN0Rm9ybUk7XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdEFkZHJlc3MoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uQ29udGFjdEFkZHJlc3NJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWRkcmVzc1NvdXJjZSA9IHByb3BzPy5ob3RlbEFkZHJlc3MgPz8gcHJvcHM/LmFkZHJlc3M/LlswXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZm86IHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgICAgICAgICAgIGljb246ICdpY29uLScgKyBwcm9wcz8udGV4dHM/LmFkZHJlc3NJY29uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uYWRkcmVzc1RpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZT8uY29udGFpbixcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogW1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc1NvdXJjZT8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIFthZGRyZXNzU291cmNlPy5jcCwgYWRkcmVzc1NvdXJjZT8uY2l0eV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJyAnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LmxvY2FsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgW2FkZHJlc3NTb3VyY2U/LnByb3ZpbmNlLCBhZGRyZXNzU291cmNlPy5jb3VudHJ5XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuam9pbignLCAnKSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgocGFydCwgaWR4LCBhcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAwKSByZXR1cm4gcGFydCArICc8YnI+JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4ID09PSAxICYmIGFyclsyXSkgcmV0dXJuIHBhcnQgKyAnLCAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDEpIHJldHVybiBwYXJ0ICsgJzxicj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPT09IDIpIHJldHVybiBwYXJ0ICsgJzxicj4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcnKSxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFkZHJlc3NTb3VyY2U/LmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGFkZHJlc3NTb3VyY2U/LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdIGFzICh7IHNtYWxsVGV4dD86IHN0cmluZyB9ICYgQmFieWxvbkJ1dHRvbkkpW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlbWFpbDoge1xuICAgICAgICAgICAgICAgICAgICBpY29uOiAnaWNvbi0nICsgcHJvcHM/LnRleHRzPy5lbWFpbEljb24sXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8uZW1haWxUaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5lbWFpbFRpdGxlPy5jb250YWluIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzU291cmNlPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgbGlua3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBtYWlsdG86JHthZGRyZXNzU291cmNlPy5lbWFpbH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBhZGRyZXNzU291cmNlPy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRleHQ6IGFkZHJlc3NTb3VyY2U/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyAoeyBzbWFsbFRleHQ/OiBzdHJpbmcgfSAmIEJhYnlsb25CdXR0b25JKVtdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcGhvbmU6IHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2ljb24tJyArIHByb3BzPy50ZXh0cz8ucmVzZXJ2YXRpb25zSWNvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5yZXNlcnZhdGlvbnNUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucmVzZXJ2YXRpb25zVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucmVzZXJ2YXRpb25zVGl0bGU/LmNvbnRhaW4gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NTb3VyY2U/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICBsaW5rczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYHRlbDoke2FkZHJlc3NTb3VyY2U/LnBob25lfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1R5cGU6ICdleHRlcm5hbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGFkZHJlc3NTb3VyY2U/LnBob25lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsVGV4dDogYWRkcmVzc1NvdXJjZT8ucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdIGFzICh7IHNtYWxsVGV4dD86IHN0cmluZyB9ICYgQmFieWxvbkJ1dHRvbkkpW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbWFwQ29udGFjdE1hcChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkNvbnRhY3RNYXBhSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50VXJsOiBwcm9wcz8udGV4dHM/LnBob25lSWNvbixcbiAgICAgICAgICAgIG1hcEltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIG1hcEltYWdlTW9iaWxlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNtb2JpbGU/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQ29udGFjdE1hcGFJO1xuICAgIH1cblxuICAgIG1hcENvbnRhY3RIb3cocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db250YWN0SG93SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5WZW50YWphcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uaWNvbn1gLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQ29udGFjdE1hcEl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkNvbnRhY3RIb3dJO1xuICAgIH1cblxuICAgIG1hcFdlYm1hcChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbldlYm1hcEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IChcbiAgICAgICAgICAgICAgICBwcm9wcz8ucGFnZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGxpbmsubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtUeXBlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkJ1dHRvbklcbiAgICAgICAgICAgICAgICApIGFzIEJhYnlsb25CdXR0b25JW11cbiAgICAgICAgICAgICkuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChsaW5rKSA9PlxuICAgICAgICAgICAgICAgICAgICBsaW5rLnVybD8uc3BsaXQoJy8nKVsxXSA9PT1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5sb2NhdGVcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcExlZ2FsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTGVnYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbj8uY29udGFpbixcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8udGV4dHM/LmRlc2NyaXB0aW9uPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTGVnYWxJO1xuICAgIH1cblxuICAgIG1hcEJyZWFkY3J1bWJzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQnJlYWRjcnVtYkkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGlua3M6IChwcm9wcz8uaXRlbXMgYXMgYW55W10pXG4gICAgICAgICAgICAgICAgPy5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtPy5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVHlwZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uY2hhckF0KGl0ZW0/LnVybD8ubGVuZ3RoIC0gMSkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy8nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0/LnVybD8uc2xpY2UoMCwgLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGl0ZW0/LnVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQnJlYWRjcnVtYkk7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNDb2xzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNDb2xzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJzOiBwcm9wcz8uZmlsdGVycz8ubWFwKChmaWx0ZXI6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZmlsdGVyPy52YWx1ZXM/Lm1hcCgob3B0aW9uOiBzdHJpbmcpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IG9wdGlvbixcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogb3B0aW9uLFxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogZmlsdGVyLm5hbWUsXG4gICAgICAgICAgICAgICAgc21hbGx0aXRsZTogZmlsdGVyLnNtYWxsdGl0bGUsXG4gICAgICAgICAgICAgICAgZmlsdGVySWQ6IGZpbHRlci5maWx0ZXJJZCxcbiAgICAgICAgICAgIH0pKSBhcyBCYWJ5bG9uRHJvcGRvd25JW10sXG4gICAgICAgICAgICBzdEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5kRmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IHByb3BzPy5yb29tc1xuICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWRyb29tRmlsdGVySWQ6IGl0ZW0/LnRleHRzPy5iZWRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljc0ZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbS5idXR0b25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlVGV4dDogaXRlbS50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGl0ZW0/Lm9yZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudDogaXRlbT8uc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKCh2OiBzdHJpbmcpID0+IHYudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vbVNlcnZpY2VUeXBlLmNoYXJhY3RlcmlzdGljc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblJvb21zTGlzdEVxdWlwbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubXVsdGltZWRpYT8uZmluZCgoaW1nOiBJbWFnZVJlc3BvbnNlKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLnRhZ3M/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhZykgPT4gdGFnLm5hbWUgPT09ICdSb29tc0NvbHMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApID8/IGl0ZW0ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25Sb29tc0xpc3RJdGVtXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhOiBCYWJ5bG9uUm9vbXNMaXN0SXRlbSwgYjogQmFieWxvblJvb21zTGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhLm9yZGVyID8/IDApIC0gKGIub3JkZXIgPz8gMCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21zQ29sc0k7XG4gICAgfVxuXG4gICAgbWFwRmVhdHVyZXNTbGlkZXIoXG4gICAgICAgIHByb3BzOiBhbnkgfCB1bmRlZmluZWRcbiAgICApOiBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8uVmVudGFqYXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkZlYXR1cmVzU2xpZGVySXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRmVhdHVyZXNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEJhbm5lckluZm8ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CYW5uZXJJbmZvSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICB2aWRlbzogcHJvcHM/LnRleHRzPy5bJ1ZpZGVvLWxpbmsnXSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uYnV0dG9uc1xuICAgICAgICAgICAgKT8uWzBdLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25CYW5uZXJJbmZvSTtcbiAgICB9XG5cbiAgICBtYXBSb29tRGV0YWlsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbURldGFpbEkgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXByb3BzPy5yb29tKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdGV4dHMsIG11bHRpbWVkaWEsIGJ1dHRvbnMgfSA9IHByb3BzPy5yb29tO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRleHRzPy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgdGV4dHM/LmFkZGl0aW9uYWw0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB0ZXh0cz8uYWRkaXRpb25hbDQgIT09ICcnXG4gICAgICAgICAgICAgICAgICAgID8gdGV4dHM/LmFkZGl0aW9uYWw0XG4gICAgICAgICAgICAgICAgICAgIDogdGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgcHJldGl0bGU6IHRleHRzPy5hZGRpdGlvbmFsMSxcbiAgICAgICAgICAgIGVxdWlwbWVudFRpdGxlOiB0ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcy5yb29tPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgID8uZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0/LnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcCgodjogc3RyaW5nKSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhSb29tU2VydmljZVR5cGUuRXF1aXBtZW50KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpdGVtPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9KSkgYXMgQmFieWxvbkVxdWlwbWVudEl0ZW1bXSxcbiAgICAgICAgICAgIHNob3dMZXNzOiBwcm9wcz8udGV4dHM/LnNob3dMZXNzLFxuICAgICAgICAgICAgc2hvd01vcmU6IHByb3BzPy50ZXh0cz8uc2hvd01vcmUsXG4gICAgICAgIH0gYXMgQmFieWxvblJvb21EZXRhaWxJO1xuICAgIH1cblxuICAgIG1hcFRvcFNsaWRlclRodW1icyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblRvcFNsaWRlclRodW1ic0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBmcm9tOiBwcm9wcz8udGV4dHM/LmZyb20sXG4gICAgICAgICAgICBwcmljZTogcHJvcHM/LnRleHRzPy5wcmljZSxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9wcz8udGV4dHM/LmN1cnJlbmN5LFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzLmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBpbWFnZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbj8ubWFwKChpdGVtOiBJbWFnZVJlc3BvbnNlKSA9PiAoe1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblRvcFNsaWRlclRodW1ic0k7XG4gICAgfVxuXG4gICAgbWFwUm9vbXNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uUm9vbXNMaXN0SSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdEZpbHRlcnM6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5kRmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ucm9vbXNcbiAgICAgICAgICAgICAgICA/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVkcm9vbUZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcmlzdGljc0ZpbHRlcklkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtzOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5idXR0b25zPy5zbGljZSgpLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGl0ZW0/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbT8ucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VUZXh0OiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1aXBtZW50OiBpdGVtPy5zZXJ2aWNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/LmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoKHY6IHN0cmluZykgPT4gdi50cmltKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb29tU2VydmljZVR5cGUuY2hhcmFjdGVyaXN0aWNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8ubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3N9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0RXF1aXBtZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5tdWx0aW1lZGlhPy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltZzogYW55KSA9PiBpbWc/LmNvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfHwgaXRlbT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmdldEFycmF5SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm11bHRpbWVkaWEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogaXRlbT8ub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uUm9vbXNMaXN0SXRlbVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogQmFieWxvblJvb21zTGlzdEl0ZW0sIGI6IEJhYnlsb25Sb29tc0xpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICB9IGFzIEJhYnlsb25Sb29tc0NvbHNJO1xuICAgIH1cblxuICAgIG1hcENvbWluZ1Nvb24ocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Db21pbmdTb29uSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBsb2dvOiBwcm9wcz8ubXVsdGltZWRpYT8ubG9nbz8ubWFwKFxuICAgICAgICAgICAgICAgIChpbWc6IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGltZyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25JbWFnZUlcbiAgICAgICAgICAgIClbMF0sXG4gICAgICAgICAgICB0ZXh0czogcHJvcHM/LnRleHRzLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IHByb3BzPy5zb2NpYWxNZWRpYSxcbiAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICB9IGFzIEJhYnlsb25Db21pbmdTb29uSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlckRldGFpbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyRGV0YWlsSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBuZFRpdGxlOiBwcm9wcz8ub2ZmZXI/LlswXT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgbGFiZWxEaXNjb3VudDogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgIGxhYmVsRnJvbTogcHJvcHM/Lm9mZmVyPy5bMF0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9wcz8ub2ZmZXI/LlswXT8uY3VycmVuY3ksXG4gICAgICAgICAgICBwcmljZTogcHJvcHM/Lm9mZmVyPy5bMF0/LnByaWNlLFxuICAgICAgICAgICAgZGlzY291bnQ6IHByb3BzPy5vZmZlcj8uWzBdPy5kaXNjb3VudCxcbiAgICAgICAgICAgIGNvbmRpdGlvbnM6IHByb3BzPy5vZmZlcj8uWzBdPy50ZXh0cz8uY29uZGl0aW9ucyxcbiAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ub2ZmZXI/LlswXT8ubXVsdGltZWRpYT8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/Lm9mZmVyPy5bMF0/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgIH0gYXMgQmFieWxvbk9mZmVyRGV0YWlsSTtcbiAgICB9XG5cbiAgICBtYXBPZmZlcnNMaXN0KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJzTGlzdEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ub2ZmZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtPy5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbT8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IGl0ZW0/LmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbT8ubXVsdGltZWRpYT8uWzBdPy5hbHQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZUJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VlT2ZmZXJCdXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEZyb206IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsRGlzY291bnQ6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvbWU6IGl0ZW0/LnNpdGVzPy5bMF0/LmhvbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3B1cDogaXRlbT8uc2l0ZXM/LlswXT8ucG9wdXAsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25PZmZlcnNMaXN0SXRlbVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVySW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uT2ZmZXJzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwRmFxKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRmFxSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LmxvY2F0aW9uSG93XG4gICAgICAgICAgICAgICAgPyBwcm9wcz8ubG9jYXRpb25Ib3c/Lml0ZW1zPy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGZhcTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGZhcS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmYXEuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25GYXFJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBwcm9wcz8uaXRlbXM/Lm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoZmFxOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZmFxLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZhcS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uRmFxSXRlbVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltZzogcHJvcHM/LmxvY2F0aW9uTWFwXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubG9jYXRpb25NYXA/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25GYXFJO1xuICAgIH1cblxuICAgIG1hcFN0YXRpY0Zvb3Rlcihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblN0YXRpY0Zvb3Rlckkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBuZFRpdGxlOiBwcm9wcz8udGV4dHM/LmFkZHJlc3NUaXRsZSxcbiAgICAgICAgICAgIHJkVGl0bGU6IHByb3BzPy50ZXh0cz8ubGlua3NUaXRsZSxcbiAgICAgICAgICAgIHRoVGl0bGU6XG4gICAgICAgICAgICAgICAgcHJvcHM/LnRleHRzPy5sb2NhdGlvblRpdGxlID8/IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlclRpdGxlLFxuICAgICAgICAgICAgZmlmdGhUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRpdGlvbmFsRm9vdGVyVGl0bGUsXG4gICAgICAgICAgICBmcmFtZVVybDogISFwcm9wcz8udGV4dHM/LmZyYW1lVXJsXG4gICAgICAgICAgICAgICAgPyBwcm9wcy50ZXh0cy5mcmFtZVVybFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGFjdEluZm86IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0Py5bMF0pLFxuICAgICAgICAgICAgY29udGFjdExpbmtzOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5saW5rcz8uY29udGFjdExpbmtzPy5bMF0pLFxuICAgICAgICAgICAgZm9vdGVyTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5mb290ZXJMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IEFycmF5LmlzQXJyYXkocHJvcHM/LmFkZHJlc3MpXG4gICAgICAgICAgICAgICAgPyBwcm9wcy5hZGRyZXNzLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkcmVzczogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFkZHJlc3MuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXR5OiBhZGRyZXNzLmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcy5wcm92aW5jZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnk6IGFkZHJlc3MuY291bnRyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwOiBhZGRyZXNzLmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhZGRyZXNzLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2FkZHJlc3M6IGFkZHJlc3MuZnVsbEFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25BZGRyZXNzSXRlbVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogW10sXG4gICAgICAgICAgICBhZGRyZXNzSG90ZWxzOiBBcnJheS5pc0FycmF5KHByb3BzPy5hZGRyZXNzSG90ZWxzKVxuICAgICAgICAgICAgICAgID8gcHJvcHMuYWRkcmVzc0hvdGVscy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZHJlc3M6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBhZGRyZXNzLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYWRkcmVzcy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2l0eTogYWRkcmVzcy5jaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmluY2U6IGFkZHJlc3MucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzLmNvdW50cnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcDogYWRkcmVzcy5jcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYWRkcmVzcy5saW5rLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGFkZHJlc3MucGhvbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogYWRkcmVzcy5lbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfYWRkcmVzczogYWRkcmVzcy5mdWxsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkFkZHJlc3NJdGVtXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzb2NpYWxNZWRpYTogcHJvcHM/LnNvY2lhbE1lZGlhPy5tYXAoXG4gICAgICAgICAgICAgICAgKGxpbms6IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7bGluay5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGxpbmsudXJsLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQnV0dG9uSVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvcHlyaWdodDogcHJvcHM/LnRleHRzPy5jb3B5cmlnaHQsXG4gICAgICAgICAgICBuYXY6IHByb3BzPy5uYXY/Lm1hcChcbiAgICAgICAgICAgICAgICAobmF2OiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogbmF2Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG5hdi51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmJhY2tncm91bmQ/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8uYmFja2dyb3VuZD8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9nbzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmxvZ28/LlswXSwgZmFsc2UpLFxuICAgICAgICAgICAgLy8gaW5wdXQ6IHByb3BzPy50ZXh0cz8ubmV3c2xldHRlckRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbmV3c2xldHRlcicsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgIGVycm9yOiBwcm9wcz8udGV4dHM/Lm5ld3NFcnJvckVtYWlsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxlZ2FsQWR2aXNlOiBwcm9wcz8udGV4dHM/LnN1YnNjcmliZXIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsTGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmxpbmtzPy5hZGRpdGlvbmFsRm9vdGVyTGlua3M/LlswXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uU3RhdGljRm9vdGVySTtcbiAgICB9XG5cbiAgICBtYXBHYWxsZXJ5KHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uR2FsbGVyeUkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9vbXNCdG46IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogcHJvcHM/LnRleHRzPy5maWx0ZXJSb29tcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJzQnRuOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uZmlsdGVyQ2F0ZWdvcmllcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmaWx0ZXJzOiBwcm9wcy5maWx0ZXJzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbDogaXRlbS5hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tOiBpdGVtLnJvb20sXG4gICAgICAgICAgICAgICAgICAgICAgICByb29tczogaXRlbS5yb29tcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZXM6IHByb3BzPy5maWx0ZXJzXG4gICAgICAgICAgICAgICAgPy5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjYzogeyBtdWx0aW1lZGlhOiBhbnlbXTsgZmlsdGVySW5kZXg6IG51bWJlciB9W10sXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4OiBudW1iZXJcbiAgICAgICAgICAgICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyLm11bHRpbWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aW1lZGlhV2l0aEZpbHRlciA9IGZpbHRlci5tdWx0aW1lZGlhLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiBtdWx0aW1lZGlhV2l0aEZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZmxhdE1hcCgoeyBtdWx0aW1lZGlhIH06IGFueSkgPT4gbXVsdGltZWRpYSlcbiAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoaW1nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWcudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWcsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGltZz8uZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvbkdhbGxlcnlJdGVtXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uR2FsbGVyeUk7XG4gICAgfVxuXG4gICAgbWFwTGFuZ3VhZ2VNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxhbmd1YWdlTW9kYWxJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/Lmxhbmd1YWdlcyxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBwcm9wcy5sYW5ndWFnZXMuZmluZChcbiAgICAgICAgICAgICAgICAobG5nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIGxuZy5pZCA9PT0gdGhpcy5zaXRlU3ZjLnNlbGVjdGVkTGFuZ3VhZ2VJbnN0YW50Py5pZFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTGFuZ3VhZ2VNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwRW5naW5lKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRW5naW5lSSB8IEJhYnlsb25FbmdpbmVNb2RhbEkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgb25seUFkdWx0czogcHJvcHM/Lm9ubHlBZHVsdHMsXG4gICAgICAgICAgICBkZWZhdWx0QnV0dG9uOiBwcm9wcz8uZGVmYXVsdEludGVybmFsQnV0dG9uLFxuICAgICAgICAgICAgYnV0dG9uOiB7IGxhYmVsOiBwcm9wcz8udGV4dHM/Lm1vdG9yU3VibWl0LCB1cmw6IHByb3BzPy51cmwgfSxcbiAgICAgICAgICAgIGRhdGVwaWNrZXJEYXRhOiB7XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8ubW90b3JEYXRlVGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ3Vlc3RzSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5tb3Rvckd1ZXN0c0lucHV0SG9sZGVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb21vSW5wdXQ6IHtcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5tb3RvclByb21vSG9sZGVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGd1ZXN0czoge1xuICAgICAgICAgICAgICAgIGJ0bjogeyBsYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFwcGx5IH0sXG4gICAgICAgICAgICAgICAgYWR1bHRzRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JBZHVsdHNUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKHByb3BzPy5tYXhBZHVsdHMsIDEpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAga2lkc0Ryb3Bkb3duOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzbWFsbFRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yS2lkc1NtYWxsTGFiZWwsXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhwcm9wcz8ubWF4Q2hpbGRyZW4pLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmFiaWVzRHJvcGRvd246XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tYXhCYWJpZXMgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQmFiaWVzVGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRpdGxlOiBwcm9wcz8udGV4dHM/Lm1vdG9yQmFiaWVzU21hbGxUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMuZ2VuZXJhdGVBZ2VzT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubWF4QmFiaWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBhZ2VzRHJvcGRvd246IHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogdGhpcy5nZW5lcmF0ZUFnZXNPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEFnZUNoaWxkcmVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM/Lm1heEFnZUJhYmllcyArIDFcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGFnZXNMYWJlbDogcHJvcHM/LnRleHRzPy5tb3RvckFnZXNUaXRsZSxcbiAgICAgICAgICAgICAgICBraWRzTGFiZWw6IHByb3BzPy50ZXh0cz8ubW90b3JLaWRMYWJlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy5tb3RvclRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy50ZXh0cz8ubW90b3JTdWJ0aXRsZSxcbiAgICAgICAgICAgIHVybDogcHJvcHM/LnVybCxcbiAgICAgICAgICAgIGhvdGVsOiBwcm9wcz8uaG90ZWxzPy5bMF0sXG4gICAgICAgICAgICBjb2RpZ286IHByb3BzPy5jb2RpZ28gPyBwcm9wcz8uY29kaWdvIDogJ2RlbW9fYzJ0X2NsaWVudGVzJywgLy90byBjaGFuZ2UsIGRvbnQgY29tZSBmcm9tIGJhY2tcbiAgICAgICAgICAgIGdsVmFsdWU6IHByb3BzPy5nbFZhbHVlLFxuICAgICAgICAgICAgaG90ZWxzSW5wdXQ6IHByb3BzPy50ZXh0cz8ubW90b3JEcm9wRG93bk5hbWUsXG4gICAgICAgICAgICBob3RlbHNQbGFjZWhvbGRlcjogcHJvcHM/LnRleHRzPy5tb3RvckRyb3BEb3duSG9sZGVyLFxuICAgICAgICAgICAgaG90ZWxzOiB7XG4gICAgICAgICAgICAgICAgb3B0aW9uczogcHJvcHM/LmhvdGVscz8ubWFwKChob3RlbDogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBob3RlbD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdGlja2VyOiBob3RlbD8udGlja2VyLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGhvdGVsPy51cmwsXG4gICAgICAgICAgICAgICAgICAgIGlkOiBob3RlbD8uaWQsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRW5naW5lTW9kYWxJIHwgQmFieWxvbkVuZ2luZUk7XG4gICAgfVxuICAgIG1hcFNsaWRlcjNJdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblNsaWRlcjNJdGVtc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcChcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGl0ZW0ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSwgZmFsc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluazogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyk/LlswXSxcbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQmFieWxvblNsaWRlckl0ZW1cbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblNsaWRlcjNJdGVtc0k7XG4gICAgfVxuXG4gICAgbWFwSG90ZWxzU2xpZGVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSG90ZWxzU2xpZGVySSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlLFxuICAgICAgICAgICAgaG90ZWxzOiBwcm9wcz8uaG90ZWxzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT5cbiAgICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXRpdGxlOiBpdGVtLnRleHRzLmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGV4dHMubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbS5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdDogaXRlbS5tdWx0aW1lZGlhPy5bMF0/LmFsdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Ib3RlbHNTbGlkZXJJO1xuICAgIH1cblxuICAgIG1hcEhvdGVsc0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Ib3RlbHNMaXN0SSB7XG4gICAgICAgIC8vIFRPRE86IFJldmlzYXIgbWFwcGVvIGRlIGltw6FnZW5lc1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIGhvdGVsczogcHJvcHM/LmhvdGVscz8ubWFwKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0/LnRleHRzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE1vcmU6IGl0ZW0/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbT8ubXVsdGltZWRpYT8uWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8ubGlua3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0/LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZlRpdGxlOiBwcm9wcz8udGV4dHM/LmZvb3RlclRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZlN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LmZvb3RlclByZXRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IGl0ZW0/LnNlcnZpY2VzTGlzdD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbT8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0/LmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBidG5MZXNzOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidG5Nb3JlOiBpdGVtPy50ZXh0cz8uYWRkaXRpb25hbDQsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25TbGlkZXJJdGVtXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25Ib3RlbHNMaXN0STtcbiAgICB9XG5cbiAgICBtYXBJbmZvNEltZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm80aW1nSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZSxcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGltYWdlMTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2UyOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXNbMV0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTM6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lc1syXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGltYWdlNDogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzWzNdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25JbmZvNGltZ0k7XG4gICAgfVxuXG4gICAgbWFwU2VydmljZXNTbGlkZXIocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25TZXJ2aWNlc1NsaWRlckkge1xuICAgICAgICBjb25zdCBhZHZlbnQgPSBwcm9wcz8uc2VydmljZXNTZXJ2aWNlID8/IHByb3BzPy5WZW50YWphcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnByZXRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ucHJldGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IGFkdmVudD8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSA/PyBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIHRleHQ6IGl0ZW0udGV4dCxcbiAgICAgICAgICAgICAgICBpY29uOiBgaWNvbi0ke2l0ZW0uY2xhc3MgPz8gaXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvblNlcnZpY2VzU2xpZGVySTtcbiAgICB9XG5cbiAgICBtYXBBZHZhbnRhZ2VzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWR2YW50YWdlc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8udGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy50aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICBhZHZhbnRhZ2VzOiBwcm9wcz8uVmVudGFqYXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dENvbG9yczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb2xvcj8udHJpbSgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlZU1vcmU6IHByb3BzPy50ZXh0cz8uYWR2YW50YWdlc3NlZW1vcmUsXG4gICAgICAgICAgICBzZWVMZXNzOiBwcm9wcz8udGV4dHM/LmFkdmFudGFnZXNzZWVsZXNzLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hZHZhbnRhZ2VzaW1hZ2U/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uQWR2YW50YWdlc0k7XG4gICAgfVxuXG4gICAgbWFwSW5mb0JpZyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9CaWdJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdPy5idXR0b25zXG4gICAgICAgICAgICApPy5bMF0sXG4gICAgICAgICAgICBpbWc6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nU21hbGw6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzFdID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9CaWdJO1xuICAgIH1cblxuICAgIG1hcEluZm9aaWdaYWdWMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkluZm9aaWd6YWdWMkkge1xuICAgICAgICBjb25zdCBbaW1hZ2VdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZSB8fCBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXMgfHwgW107XG4gICAgICAgIGNvbnN0IFtpbWFnZTJdID1cbiAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZTIgfHwgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlc3NtYWxsIHx8IFtdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoaW1hZ2U/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaW1hZ2UsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlPy5wcmV0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlPy50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogaW1hZ2U/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGltYWdlMj8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpbWFnZTIsIGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgcHJldGl0bGU6IGltYWdlMj8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZTI/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBpbWFnZTI/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlczogcHJvcHM/LlZlbnRhamFzPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmljb259YCxcbiAgICAgICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdIGFzIEJhYnlsb25JbmZvWmlnemFnVjJJdGVtW10sXG4gICAgICAgIH0gYXMgQmFieWxvbkluZm9aaWd6YWdWMkk7XG4gICAgfVxuXG4gICAgbWFwRm9vdGVyQ29udGFjdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlckNvbnRhY3RJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0LFxuICAgICAgICAgICAgZXh0cmFUeHQ6IHByb3BzPy50ZXh0cz8uYWRkaXRpb25hbFRleHQxLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgaW1nOiB7XG4gICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgYWx0OiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFkdmFudGFnZXM6IHByb3BzPy5WZW50YWphcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgICAgICAgdGV4dDogaXRlbS50ZXh0LFxuICAgICAgICAgICAgICAgIGljb246IGBpY29uLSR7aXRlbS5pY29ufWAsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3RMaW5rcz8uWzBdKSxcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgICAgICAgICBsb2NhbGl0eTogcHJvcHM/LmhvdGVsQWRkcmVzcz8ubG9jYWxpdHksXG4gICAgICAgICAgICAgICAgY2l0eTogcHJvcHM/LmhvdGVsQWRkcmVzcz8uY2l0eSxcbiAgICAgICAgICAgICAgICBwcm92aW5jZTogcHJvcHM/LmhvdGVsQWRkcmVzcz8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgY291bnRyeTogcHJvcHM/LmhvdGVsQWRkcmVzcz8uY291bnRyeSxcbiAgICAgICAgICAgICAgICBjcDogcHJvcHM/LmhvdGVsQWRkcmVzcz8uY3AsXG4gICAgICAgICAgICAgICAgYWRkcmVzczogcHJvcHM/LmhvdGVsQWRkcmVzcz8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICBsYXQ6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmxhdCxcbiAgICAgICAgICAgICAgICBsb246IHByb3BzPy5ob3RlbEFkZHJlc3M/LmxvbixcbiAgICAgICAgICAgICAgICBwaG9uZTogcHJvcHM/LmhvdGVsQWRkcmVzcz8ucGhvbmUsXG4gICAgICAgICAgICAgICAgZW1haWw6IHByb3BzPy5ob3RlbEFkZHJlc3M/LmVtYWlsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uRm9vdGVyQ29udGFjdEk7XG4gICAgfVxuXG4gICAgbWFwSW5mbzJJbWdCaWcocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25JbmZvMmltZ0JpZ0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJldGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8ucHJldGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5wcmV0aXRsZVxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ucHJldGl0bGU/LmNvbnRhaW4sXG4gICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy50aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHByZXRpdGxlMjogcHJvcHM/LnRleHRzPy5uZFByZXRpdGxlLFxuICAgICAgICAgICAgdGl0bGUyOiBwcm9wcz8udGV4dHM/Lm5kVGl0bGUsXG4gICAgICAgICAgICB0ZXh0MjogcHJvcHM/LnRleHRzPy5uZERlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgYnV0dG9uMjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlsxXSxcbiAgICAgICAgICAgIGltZzoge1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdID8/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2U/LlswXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYWx0OlxuICAgICAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/LlswXT8uYWx0ID8/XG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZT8uWzBdLmFsdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbWdTbWFsbDoge1xuICAgICAgICAgICAgICAgIHNyYzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlbmVzPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5uZGltYWdlPy5bMF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGFsdDogcHJvcHM/Lm11bHRpbWVkaWE/Lm5kaW1hZ2VuZXM/LlswXT8uYWx0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uSW5mbzJpbWdCaWdJO1xuICAgIH1cblxuICAgIG1hcEZvb3RlckxvZ29zKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyTG9nb3NJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRleHRzOiBwcm9wcz8udGV4dHMsXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKSxcbiAgICAgICAgICAgIGxvZ29zOiBwcm9wcz8ubXVsdGltZWRpYT8ubG9nb3M/Lm1hcCgobG9nbzogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUobG9nbywgZmFsc2UpLFxuICAgICAgICAgICAgICAgIGxpbms6IFV0aWxzLm1hcEJ1dHRvbnMobG9nbz8ubGlua3M/LlswXSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgQmFieWxvbkZvb3RlckxvZ29zSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJMaW5rcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkZvb3RlckxpbmtzSSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgeWVhcjogcHJvcHM/LnRleHRzPy55ZWFyLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgIH0gYXMgQmFieWxvbkZvb3RlckxpbmtzSTtcbiAgICB9XG5cbiAgICBtYXBGb290ZXJTb2NpYWxzKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uRm9vdGVyU29jaWFsSSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkTGlua3MgPSAocHJvcHM/LnNvY2lhbE1lZGlhIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgICAgICAobGluazogYW55KSA9PlxuICAgICAgICAgICAgICAgIGxpbmsgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBsaW5rICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICBsaW5rLnVybCAhPT0gJycgJiZcbiAgICAgICAgICAgICAgICBsaW5rLmljb24gIT09ICcnXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHRleHQ6IHByb3BzPy50ZXh0cz8udGV4dCxcbiAgICAgICAgICAgIGxpbmtzOiBmaWx0ZXJlZExpbmtzLm1hcCgobGluazogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIGljb246IGBiYWJ5bG9uLSR7bGluay5uYW1lPy50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgdXJsOiBsaW5rLnVybCxcbiAgICAgICAgICAgICAgICBsYWJlbDogbGluay5uYW1lLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25Gb290ZXJTb2NpYWxJO1xuICAgIH1cblxuICAgIG1hcFNsaWRlcjJpdGVtcyhwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblNsaWRlcjJpdGVtc0kge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB0ZXh0OiBwcm9wcz8udGV4dHM/LnRleHQsXG4gICAgICAgICAgICBpdGVtczogcHJvcHM/LnJvb21zPy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogaXRlbT8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50ZXh0cz8ubmFtZSxcbiAgICAgICAgICAgICAgICBpbWc6IHtcbiAgICAgICAgICAgICAgICAgICAgc3JjOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShpdGVtPy5tdWx0aW1lZGlhPy5bMF0pLFxuICAgICAgICAgICAgICAgICAgICBhbHQ6IGl0ZW0/Lm11bHRpbWVkaWE/LlswXT8uYWx0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgLy8gbGluazpcbiAgICAgICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmJ1dHRvbnMpLFxuICAgICAgICAgICAgICAgIHNlcnZpY2VzOiBpdGVtPy5zZXJ2aWNlcz8ubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogYGljb24tJHtpdGVtLmNsYXNzfWAsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIEJhYnlsb25TbGlkZXIyaXRlbXNJO1xuICAgIH1cblxuICAgIG1hcFN0YXRpY0Zvb3RlcnYyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uU3RhdGljRm9vdGVyVjJJIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgbmRUaXRsZTogcHJvcHM/LnRleHRzPy5hZGRyZXNzVGl0bGUsXG4gICAgICAgICAgICByZFRpdGxlOiBwcm9wcz8udGV4dHM/LmxpbmtzVGl0bGUsXG4gICAgICAgICAgICB0aFRpdGxlOiBwcm9wcz8udGV4dHM/LmxvY2F0aW9uVGl0bGUsXG4gICAgICAgICAgICBmcmFtZVVybDogcHJvcHM/LnRleHRzPy5mcmFtZVVybCxcbiAgICAgICAgICAgIGltZ1VybDogcHJvcHM/Lm11bHRpbWVkaWE/LmZvb3RlcmltZz8uWzBdPy5saW5rcz8uWzBdPy5saW5rVmFsdWUsXG4gICAgICAgICAgICBjb250YWN0SW5mbzogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmNvbnRhY3Q/LlswXSksXG4gICAgICAgICAgICBjb250YWN0TGlua3M6IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmxpbmtzPy5jb250YWN0TGlua3M/LlswXSksXG4gICAgICAgICAgICBmb290ZXJMaW5rczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8ubGlua3M/LmZvb3RlckxpbmtzPy5bMF0pLFxuICAgICAgICAgICAgYWRkcmVzczogQXJyYXkuaXNBcnJheShwcm9wcz8uYWRkcmVzcylcbiAgICAgICAgICAgICAgICA/IHByb3BzLmFkZHJlc3MubWFwKFxuICAgICAgICAgICAgICAgICAgICAgIChhZGRyZXNzOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogYWRkcmVzcz8uaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhZGRyZXNzPy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzcz8uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpdHk6IGFkZHJlc3M/LmNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jZTogYWRkcmVzcz8ucHJvdmluY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudHJ5OiBhZGRyZXNzPy5jb3VudHJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3A6IGFkZHJlc3M/LmNwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uQWRkcmVzc0l0ZW1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICAgICAgc29jaWFsTWVkaWE6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHVybDogcHJvcHM/LnNvY2lhbE1lZGlhPy5bMF0/LnVybCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHByb3BzPy50ZXh0cz8uaW5zdGFncmFtVGl0bGUsXG4gICAgICAgICAgICAgICAgfSBhcyBCYWJ5bG9uQnV0dG9uSSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBjb3B5cmlnaHQ6IHByb3BzPy50ZXh0cz8uY29weXJpZ2h0LFxuICAgICAgICAgICAgbmF2OiBwcm9wcz8ubmF2Py5tYXAoXG4gICAgICAgICAgICAgICAgKG5hdjogYW55KSA9PlxuICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG5hdj8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbmF2Py51cmwsXG4gICAgICAgICAgICAgICAgICAgIH0pIGFzIEJhYnlsb25CdXR0b25JXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwcm9wcz8ubXVsdGltZWRpYT8uZm9vdGVyaW1nPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvblN0YXRpY0Zvb3RlclYySTtcbiAgICB9XG5cbiAgICBtYXBMaXN0R3JpZChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkxpc3RHcmlkSSB7XG4gICAgICAgIGNvbnN0IHsgaW1hZ2VuZXMgfSA9IHByb3BzPy5tdWx0aW1lZGlhIHx8IFtdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKHByb3BzPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbXM6IGltYWdlbmVzPy5tYXAoXG4gICAgICAgICAgICAgICAgKGl0ZW06IEltYWdlUmVzcG9uc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMoaXRlbT8uYnV0dG9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rczogVXRpbHMubWFwQnV0dG9ucyhpdGVtPy5saW5rcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoaXRlbSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBpdGVtLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZXM6IFtdLCAvL1RPRE86IHB0ZSBiYWNrLFxuICAgICAgICAgICAgICAgICAgICB9KSBhcyBCYWJ5bG9uSXRlbUdyaWRJXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25MaXN0R3JpZEk7XG4gICAgfVxuXG4gICAgbWFwTmV3c2xldHRlck1vZGFsKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uTmV3c2xldHRlckkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29uZGl0aW9uczogcHJvcHM/LnRleHRzPy5jb25kaXRpb25zLFxuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogcHJvcHM/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21haWwnLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wcz8udGV4dHM/LmlucHV0SG9sZGVyLFxuICAgICAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgICAgICBlcnJvcjogcHJvcHM/LnRleHRzPy5uZXdzRXJyb3JFbWFpbCxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbklucHV0SSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlYmFja2dyb3VuZD8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICB9IGFzIEJhYnlsb25OZXdzbGV0dGVySTtcbiAgICB9XG5cbiAgICBtYXBHbG9iYWxNb2RhbChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbkdsb2JhbE1vZGFsSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBidXR0b25zOiBVdGlscy5tYXBCdXR0b25zKFxuICAgICAgICAgICAgICAgIHByb3BzPy5idXR0b25zLmZpbHRlcigoYnRuOiBhbnkpID0+ICEhYnRuPy5saW5rVmFsdWUpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaWZyYW1lOiBwcm9wcz8udGV4dHM/LmlmcmFtZSxcbiAgICAgICAgICAgIC8vIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUocHJvcHM/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0pLFxuICAgICAgICB9IGFzIEJhYnlsb25HbG9iYWxNb2RhbEk7XG4gICAgfVxuXG4gICAgbWFwT2ZmZXJCYW5uZXJWMihwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvbk9mZmVyUG9wdXBWMkkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgb2ZmZXJEYXRhO1xuICAgICAgICBpZiAocHJvcHMub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzLm9mZmVycz8uWzBdO1xuICAgICAgICAgICAgb2ZmZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKG9mZmVyPy5tdWx0aW1lZGlhPy5maW5kKChpbWc6IGFueSkgPT4gaW1nLmNvdmVyKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/LlswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5kZWZhdWx0aW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogb2ZmZXI/LmRpc2NvdW50LFxuICAgICAgICAgICAgICAgIHByaWNlOiBvZmZlcj8ucHJpY2UsXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6IG9mZmVyPy5jdXJyZW5jeSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbk9mZmVyUG9wdXBWMkk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mZmVyRGF0YSA/PyBvZmZlckRhdGE7XG4gICAgfVxuXG4gICAgbWFwSGVhZEludHJvKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uSGVhZEludHJvSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGV4dDpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy50ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGV4dFxuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8udGV4dD8uY29udGFpbixcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8udGFnLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8udGV4dHM/LnRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGV4dDogcHJvcHM/LnRleHRzPy50ZXh0Py50YWcsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9IGFzIEJhYnlsb25IZWFkSW50cm9JO1xuICAgIH1cblxuICAgIG1hcEV4dGVybmFsU2NyaXB0KFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbkV4dGVybmFsU2NyaXB0SSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzY3JpcHQ6IHByb3BzPy50ZXh0cz8uQ29udGFpbmVyLFxuICAgICAgICAgICAgbXNnX2xvYWRpbmc6IHByb3BzPy50ZXh0cz8ubG9hZGluZyA/PyAnQ2FyZ2FuZG8uLi4nLFxuICAgICAgICB9IGFzIEJhYnlsb25FeHRlcm5hbFNjcmlwdEk7XG4gICAgfVxuXG4gICAgbWFwQmxvZ0xpc3QocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CbG9nTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgcG9zdHMgPSBwcm9wcz8uYmxvZz8ucG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShwb3N0Py5tdWx0aW1lZGlhPy5bMF0sIGZhbHNlKSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyksXG4gICAgICAgICAgICBwb3N0VXJsOiBVdGlscy5tYXBCdXR0b25zKHBvc3Q/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBjYXRlZ29yeTogcG9zdD8uY2F0ZWdvcnksXG4gICAgICAgICAgICBkYXRlOiBwb3N0Py5kYXRlID8gbmV3IERhdGUocG9zdC5kYXRlKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHBvc3RzID0gcG9zdHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgYi5kYXRlKSByZXR1cm4gYi5kYXRlIC0gYS5kYXRlOyAvLyBhbWJvcyBjb24gZmVjaGFcbiAgICAgICAgICAgIGlmIChhLmRhdGUgJiYgIWIuZGF0ZSkgcmV0dXJuIC0xOyAvLyBhIHRpZW5lIGZlY2hhLCBiIG5vXG4gICAgICAgICAgICBpZiAoIWEuZGF0ZSAmJiBiLmRhdGUpIHJldHVybiAxOyAvLyBiIHRpZW5lIGZlY2hhLCBhIG5vXG4gICAgICAgICAgICByZXR1cm4gMDsgLy8gbmluZ3VubyB0aWVuZSBmZWNoYVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBPYnRlbmVyIGxvcyA0IHBvc3RzIG3DoXMgcmVjaWVudGVzXG4gICAgICAgIGNvbnN0IGxhdGVzdFBvc3RzID0gcG9zdHM/LnNsaWNlKDAsIDQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwcmV0aXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5wcmV0aXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LnByZXRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29udGFpbixcbiAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LnRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8udGl0bGVcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LnRpdGxlPy5jb250YWluLFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBub3Rmb3VuZFRleHQ6IHByb3BzPy50ZXh0cz8uc2VhcmNoTm90Rm91bmQsXG4gICAgICAgICAgICBwb3N0czogcG9zdHMsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBwcm9wcz8ucG9zdENhdGVnb3JpZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOlxuICAgICAgICAgICAgICAgIHR5cGVvZiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXMgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzXG4gICAgICAgICAgICAgICAgICAgIDogcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzPy5jb250YWluLFxuICAgICAgICAgICAgbGF0ZXN0UG9zdHM6IGxhdGVzdFBvc3RzLFxuICAgICAgICAgICAgYW50ZXJpb3I6IHByb3BzPy50ZXh0cz8uYW50ZXJpb3IsXG4gICAgICAgICAgICBzaWd1aWVudGU6IHByb3BzPy50ZXh0cz8uc2lndWllbnRlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG1hcEJsb2dEZXRhaWwocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25CbG9nRGV0YWlsc0kgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBjdXJyZW50UG9zdElkID0gcHJvcHM/LnBvc3Q/LmlkO1xuICAgICAgICBjb25zdCBwb3N0cyA9IHByb3BzPy5yZWxhdGVkUG9zdHM/Lm1hcCgocG9zdDogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHBvc3Q/LmlkLFxuICAgICAgICAgICAgdGl0bGU6IHBvc3Q/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcG9zdD8udGV4dHM/LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW1nOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICBwb3N0Py5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwb3N0Py5idXR0b25zKSxcbiAgICAgICAgICAgIHBvc3RVcmw6IFV0aWxzLm1hcEJ1dHRvbnMocG9zdD8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIGNhdGVnb3J5OiBwb3N0Py5jYXRlZ29yeSxcbiAgICAgICAgICAgIGRhdGU6IHBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwb3N0LmRhdGUpIDogdW5kZWZpbmVkLFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IChwb3N0cyB8fCBbXSkuZmlsdGVyKFxuICAgICAgICAgICAgKHA6IGFueSkgPT4gcD8uaWQgIT09IGN1cnJlbnRQb3N0SWRcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgcmVsYXRlZFBvc3RzQ29uc3QgPVxuICAgICAgICAgICAgY2FuZGlkYXRlc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHA6IGFueSkgPT4gcD8uZGF0ZSlcbiAgICAgICAgICAgICAgICAuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IChiLmRhdGUgYXMgYW55KSAtIChhLmRhdGUgYXMgYW55KSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoMCwgNCkgfHwgW107XG4gICAgICAgIGlmIChyZWxhdGVkUG9zdHNDb25zdC5sZW5ndGggPCA0KSB7XG4gICAgICAgICAgICBjb25zdCB3aXRob3V0RGF0ZSA9IGNhbmRpZGF0ZXMuZmlsdGVyKChwOiBhbnkpID0+ICFwPy5kYXRlKTtcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0c0NvbnN0ID0gcmVsYXRlZFBvc3RzQ29uc3QuY29uY2F0KFxuICAgICAgICAgICAgICAgIHdpdGhvdXREYXRlLnNsaWNlKDAsIDQgLSByZWxhdGVkUG9zdHNDb25zdC5sZW5ndGgpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBwcm9wcz8ucG9zdD8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgc3VidGl0bGU6IHByb3BzPy5wb3N0Py50ZXh0cz8uc3VidGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnBvc3Q/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgYWRkaXRpb25hbDI6IHByb3BzPy5wb3N0Py50ZXh0cz8uYWRkaXRpb25hbDIsXG4gICAgICAgICAgICBhZGRpdGlvbmFsMzogcHJvcHM/LnBvc3Q/LnRleHRzPy5hZGRpdGlvbmFsMyxcbiAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBwcm9wcz8ucG9zdD8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgZGF0ZTogcHJvcHM/LnBvc3Q/LmRhdGUgPyBuZXcgRGF0ZShwcm9wcz8ucG9zdD8uZGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjYXRlZ29yeTogcHJvcHM/LnBvc3Q/LmNhdGVnb3J5LFxuICAgICAgICAgICAgdGFnczoge1xuICAgICAgICAgICAgICAgIHByZXRpdGxlOiBwcm9wcz8udGV4dHM/LnByZXRpdGxlPy50YWcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGU/LnRhZyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8udGFnLFxuICAgICAgICAgICAgICAgIGxhdGVzdFBvc3RzVGl0bGU6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8udGFnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRleHRDb2xvcnM6IHtcbiAgICAgICAgICAgICAgICBwcmV0aXRsZTogcHJvcHM/LnRleHRzPy5wcmV0aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZT8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6IHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcz8uY29sb3I/LnRyaW0oKSxcbiAgICAgICAgICAgICAgICBsYXRlc3RQb3N0c1RpdGxlOiBwcm9wcz8udGV4dHM/LmxhdGVzdEVudHJpZXM/LmNvbG9yPy50cmltKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VhcmNoUGxhY2VIb2xkZXI6IHByb3BzPy50ZXh0cz8uc2VhcmNoUGxhY2VIb2xkZXIsXG4gICAgICAgICAgICBjYXRlZ29yaWVzVGl0bGU6XG4gICAgICAgICAgICAgICAgdHlwZW9mIHByb3BzPy50ZXh0cz8uY2F0ZWdvcmllcyA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgPyBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXNcbiAgICAgICAgICAgICAgICAgICAgOiBwcm9wcz8udGV4dHM/LmNhdGVnb3JpZXM/LmNvbnRhaW4sXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBwcm9wcz8ucG9zdENhdGVnb3JpZXM/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgICBpZDogY2F0ZWdvcnk/LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlZ29yeT8ubmFtZSxcbiAgICAgICAgICAgICAgICBwb3N0czogY2F0ZWdvcnk/LnRvdGFsUG9zdHMsXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICByZWxhdGVkUG9zdHNUaXRsZTpcbiAgICAgICAgICAgICAgICB0eXBlb2YgcHJvcHM/LnRleHRzPy5sYXRlc3RFbnRyaWVzID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgICAgICAgICA/IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllc1xuICAgICAgICAgICAgICAgICAgICA6IHByb3BzPy50ZXh0cz8ubGF0ZXN0RW50cmllcz8uY29udGFpbixcbiAgICAgICAgICAgIHJlbGF0ZWRQb3N0czogcmVsYXRlZFBvc3RzQ29uc3QsXG4gICAgICAgICAgICBidXR0b246IFV0aWxzLm1hcEJ1dHRvbnMocHJvcHM/LmJ1dHRvbnMpPy5bMF0sXG4gICAgICAgICAgICBzaGFyZTogcHJvcHM/LnRleHRzPy5zaGFyZSxcbiAgICAgICAgICAgIGltZzogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/LnBvc3Q/Lm11bHRpbWVkaWE/LmltYWdlbmVzPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbkJsb2dEZXRhaWxzSTtcbiAgICB9XG5cbiAgICBtYXBNb2RhbE11bHRpcGxlTW90b3JzKFxuICAgICAgICBwcm9wczogYW55IHwgdW5kZWZpbmVkXG4gICAgKTogQmFieWxvbk1vZGFsTXVsdGlwbGVNb3RvcnNJIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvZ286IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5pbWFnZW5lcz8uWzBdLFxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcHJldGl0bGU6IHByb3BzPy50ZXh0cz8ucHJldGl0bGUsXG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIGJ1dHRvbnM6IFV0aWxzLm1hcEJ1dHRvbnMoXG4gICAgICAgICAgICAgICAgcHJvcHM/LmJ1dHRvbnM/LmZpbHRlcigoYnRuOiBhbnkpID0+IGJ0bj8ubGlua1ZhbHVlICE9PSBudWxsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSBhcyBCYWJ5bG9uTW9kYWxNdWx0aXBsZU1vdG9yc0k7XG4gICAgfVxuICAgIG1hcE9mZmVyQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uT2ZmZXJQb3B1cEkgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgb2ZmZXJEYXRhO1xuICAgICAgICBpZiAocHJvcHMub2ZmZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZlciA9IHByb3BzLm9mZmVycz8uWzBdO1xuICAgICAgICAgICAgb2ZmZXJEYXRhID0ge1xuICAgICAgICAgICAgICAgIHRleHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBvZmZlcj8udGV4dHM/LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogb2ZmZXI/LnRleHRzPy5zdWJ0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9mZmVyPy50ZXh0cz8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwxOiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWwxLFxuICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsMjogb2ZmZXI/LnRleHRzPy5hZGRpdGlvbmFsMixcbiAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbDM6IG9mZmVyPy50ZXh0cz8uYWRkaXRpb25hbDMsXG4gICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWw0OiBvZmZlcj8udGV4dHM/LmFkZGl0aW9uYWw0LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYnV0dG9uOiBVdGlscy5tYXBCdXR0b25zKG9mZmVyPy5idXR0b25zKT8uWzBdLFxuICAgICAgICAgICAgICAgIGltYWdlOiB0aGlzLmdldEltYWdlUmVzcG9uc2l2ZShcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKG9mZmVyPy5tdWx0aW1lZGlhPy5maW5kKChpbWc6IGFueSkgPT4gaW1nLmNvdmVyKSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2ZmZXI/Lm11bHRpbWVkaWE/LlswXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogKG9mZmVyPy5tdWx0aW1lZGlhPy5bMF0gPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5kZWZhdWx0aW1hZ2VuZXM/LlswXSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0gYXMgQmFieWxvbk9mZmVyUG9wdXBJO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZmZlckRhdGEgPz8gb2ZmZXJEYXRhO1xuICAgIH1cblxuICAgIG1hcE1vZGFsUG9wdXAocHJvcHM6IGFueSB8IHVuZGVmaW5lZCk6IEJhYnlsb25Nb2RhbFBvcHVwSSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogcHJvcHM/LnRleHRzPy50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBwcm9wcz8udGV4dHM/LnN1YnRpdGxlLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BzPy50ZXh0cz8uaW5wdXRIb2xkZXIsXG4gICAgICAgICAgICBvcHRpb25zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgob3B0aW9uOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbj8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgdGl0bGU6IG9wdGlvbj8udGl0bGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG9wdGlvbj8uZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKG9wdGlvbiwgZmFsc2UpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5tb2RhbGltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgIH0gYXMgQmFieWxvbk1vZGFsUG9wdXBJO1xuICAgIH1cblxuICAgIG1hcFByZXNzTGlzdChwcm9wczogYW55IHwgdW5kZWZpbmVkKTogQmFieWxvblByZXNzTGlzdEkgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHByb3BzPy50ZXh0cz8udGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHM/LnRleHRzPy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGl0ZW1zOiBwcm9wcz8ubXVsdGltZWRpYT8uaW1hZ2VuZXM/Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtPy50aXRsZSxcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZTogaXRlbT8uc3VidGl0bGUsXG4gICAgICAgICAgICAgICAgaW1hZ2U6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKGl0ZW0sIGZhbHNlKSxcbiAgICAgICAgICAgICAgICBsaW5rOiBVdGlscy5tYXBCdXR0b25zKGl0ZW0/LmxpbmtzKT8uWzBdLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgYnV0dG9uczogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyksXG4gICAgICAgIH0gYXMgQmFieWxvblByZXNzTGlzdEk7XG4gICAgfVxuXG4gICAgbWFwQWN0aW9uQmFubmVyKHByb3BzOiBhbnkgfCB1bmRlZmluZWQpOiBCYWJ5bG9uQWN0aW9uQmFubmVySSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbWFnZTogdGhpcy5nZXRJbWFnZVJlc3BvbnNpdmUoXG4gICAgICAgICAgICAgICAgcHJvcHM/Lm11bHRpbWVkaWE/LmFjdGlvbmJhbm5lcmltYWdlPy5bMF0sXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBpbWFnZTI6IHRoaXMuZ2V0SW1hZ2VSZXNwb25zaXZlKFxuICAgICAgICAgICAgICAgIHByb3BzPy5tdWx0aW1lZGlhPy5hY3Rpb25iYW5uZXJpbWFnZTI/LlswXSxcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJ1dHRvbjogVXRpbHMubWFwQnV0dG9ucyhwcm9wcz8uYnV0dG9ucyk/LlswXSxcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wcz8udGV4dHM/LnRhYmxlLFxuICAgICAgICAgICAgc2FsYTE6IHByb3BzPy50ZXh0cz8uc2FsYTEsXG4gICAgICAgICAgICBzYWxhMjogcHJvcHM/LnRleHRzPy5zYWxhMixcbiAgICAgICAgfSBhcyBCYWJ5bG9uQWN0aW9uQmFubmVySTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZSB7XG4gICAgcGF0aDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgdGh1bWJuYWlsczoge1xuICAgICAgICAzNzU6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA1NDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA3Njg6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICA4MDA6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgICAgICAxMDI0OiBJbWFnZVJlc3BvbnNlUGF0aDtcbiAgICAgICAgMTI4MDogSW1hZ2VSZXNwb25zZVBhdGg7XG4gICAgICAgIDEzNjY6IEltYWdlUmVzcG9uc2VQYXRoO1xuICAgIH07XG4gICAgY292ZXI6IG51bWJlcjtcbiAgICB0YWdzPzogYW55W107XG4gICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgcHJldGl0bGU/OiBzdHJpbmc7XG4gICAgc3VidGl0bGU/OiBzdHJpbmc7XG4gICAgbmRUaXRsZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBsaW5rcz86IGFueVtdO1xuICAgIGJ1dHRvbnM/OiBhbnlbXTtcbiAgICBhbHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VSZXNwb25zZVBhdGgge1xuICAgIG9yaWdpbmFsOiBzdHJpbmc7XG4gICAgd2VicDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudHNBZGRvbnMge1xuICAgIGNvbnRhY3RPZmZpY2U/OiBhbnk7XG4gICAgbWVudVNvY2lhbE1lZGlhPzogeyBbazogc3RyaW5nXTogc3RyaW5nIH1bXTtcbiAgICBjb25zdWx0VHlwZT86IENvbnN1bHRUeXBlSTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgY2hpbGRyZW4/OiBGaWx0ZXJPcHRpb247XG59XG4iXX0=
|