@messaia/cdk 17.1.5-rc07 → 17.1.5-rc09
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/base/components/generic-list.component.mjs +3 -2
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +3 -3
- package/esm2022/lib/forms/models/form-field-definition.mjs +2 -2
- package/esm2022/lib/table/table.data-source.mjs +6 -2
- package/fesm2022/messaia-cdk.mjs +10 -5
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/base/components/generic-list.component.d.ts +1 -1
- package/lib/forms/models/form-field-definition.d.ts +1 -1
- package/lib/table/table.data-source.d.ts +4 -0
- package/package.json +1 -1
|
@@ -327,7 +327,8 @@ export class GenericListComponent extends BaseComponent {
|
|
|
327
327
|
* Connects a collection viewer (such as a data-table) to the data source.
|
|
328
328
|
* @param staticFieldFilters
|
|
329
329
|
*/
|
|
330
|
-
connect(staticFieldFilters = null) {
|
|
330
|
+
connect(staticFieldFilters = null, path) {
|
|
331
|
+
this.dataSource.path = path;
|
|
331
332
|
this.dataSource.staticFieldFilters = staticFieldFilters || {};
|
|
332
333
|
this.dataSource.connect(undefined).subscribe();
|
|
333
334
|
if (!this.dynamicTable) {
|
|
@@ -762,4 +763,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
762
763
|
type: HostListener,
|
|
763
764
|
args: ['document:keydown', ['$event']]
|
|
764
765
|
}] } });
|
|
765
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFB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RSxDQUFDO1NBQzFDO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssT0FBTyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7MEhBOTBCeEMsb0JBQW9COzhHQUFwQixvQkFBb0IsdUxBSzlCLFlBQVkscUZBTVosT0FBTyw2RkF3RFAsdUJBQXVCOzsyRkFuRWIsb0JBQW9CO2tCQUR6QyxTQUFTOzZKQU9GLFNBQVM7c0JBRGYsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU9sQyxJQUFJO3NCQURWLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF5RDdCLFlBQVk7c0JBRGxCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXFGN0MsVUFBVTtzQkFEaEIsS0FBSztnQkFncEJOLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQsIFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlscyc7XHJcbmltcG9ydCB7IEFwcFN0b3JhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vaGVscGVycy9hcHAtc3RvcmFnZSc7XHJcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2FjdGlvbi1pdGVtJztcclxuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvZW50aXR5JztcclxuaW1wb3J0IHsgR2VuZXJpY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9odHRwL3NlcnZpY2VzL2dlbmVyaWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFZkRHluYW1pY1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFibGUvY29tcG9uZW50cy9keW5hbWljLXRhYmxlL2R5bmFtaWMtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vdGFibGUvZW51bXMvdGFibGUtY29sdW1uLXR5cGUnO1xyXG5pbXBvcnQgeyBnZXRUYWJsZURlZmluaXRpb24gfSBmcm9tICcuLi8uLi90YWJsZS9mdW5jdGlvbnMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi90YWJsZS9tb2RlbHMvdGFibGUtY29sdW1uJztcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5Db25maWcgfSBmcm9tICcuLi8uLi90YWJsZS9tb2RlbHMvdGFibGUtY29sdW1uLWNvbmZpZyc7XHJcbmltcG9ydCB7IFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL3RhYmxlL3RhYmxlLmRhdGEtc291cmNlJztcclxuaW1wb3J0IHsgQXV0aEhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvYXV0aC1oZWxwZXInO1xyXG5pbXBvcnQgeyBJR2VuZXJpY0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2lnZW5lcmljLWxpc3QtY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy10YWJsZS1jb25maWctZGlhbG9nLmNvbW5wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEEgYmFzZSBsaXN0IGNvbXBvbmVudCBmb3IgY29tcG9uZW50cyB3aXRoIHBhZ2luYXRpb24gc3VwcG9ydFxyXG4gKi9cclxuLy8gQGR5bmFtaWNcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHZW5lcmljTGlzdENvbXBvbmVudDxURW50aXR5IGV4dGVuZHMgSUVudGl0eSB8IGFueSwgVFNlcnZpY2UgZXh0ZW5kcyBHZW5lcmljU2VydmljZTxURW50aXR5Pj4gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgSUdlbmVyaWNMaXN0Q29tcG9uZW50PFRFbnRpdHk+LCBPbkRlc3Ryb3kge1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFBhZ2luYXRvciBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHsgc3RhdGljOiB0cnVlIH0pXHJcblx0cHVibGljIHBhZ2luYXRvcj86IE1hdFBhZ2luYXRvcjtcclxuXHJcblx0LyoqXHJcblx0ICogQSByZWZlcmVuY2UgdG8gTWRTb3J0IGF0dHJpYnV0ZVxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgc29ydD86IE1hdFNvcnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhZ2Ugc2l6ZSBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIHBhZ2VTaXplT3B0aW9uczogQXJyYXk8bnVtYmVyPiA9IFs1LCAxMCwgMTUsIDIwLCAzMCwgNTAsIDEwMCwgMjAwXTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIG5hdmlnYXRpb25zIHRvIGluY2x1ZGVzXHJcblx0ICovXHJcblx0cHVibGljIGluY2x1ZGVzOiBBcnJheTxzdHJpbmc+ID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdXHJcblx0ICovXHJcblx0cHVibGljIHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYXZpZ2F0aW9ucyB0byBpbmNsdWRlc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBleGNsdWRlZENvbHVtbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogR2V0IHBhcmFtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBxdWVyeTogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIERhdGEtdGFibGUgZGF0YXNvdXJjZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkYXRhU291cmNlPzogVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPiB8IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogQ3VycmVudCBzb3J0IGNvbHVtblxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzb3J0QWN0aXZlPzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgZGlyZWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcclxuXHJcblx0LyoqXHJcblx0ICogQW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHRvIGNyZWF0ZSB0aGUgdGFibGUgZm9yXHJcblx0ICovXHJcblx0cHVibGljIGNsYXNzSW5zdGFuY2U6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogY29sdW1uczogVGFibGVDb2x1bW5bXSBcclxuXHQgKi9cclxuXHRwdWJsaWMgY29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChWZER5bmFtaWNUYWJsZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgZHluYW1pY1RhYmxlPzogVmREeW5hbWljVGFibGVDb21wb25lbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0eXBlIG9mIHRoZSBkaWFsb2cgZm9yIGNyZWF0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGFkZERpYWxvZ1R5cGU6IGFueSA9IG51bGw7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIHRoZSBjb2x1bW4gJ0NoZWNrYm94J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZWxlY3RhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgYnV0dG9uICdBZGQnXHJcblx0ICovXHJcblx0cHVibGljIGFkZGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdFZGl0J1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBlZGl0YWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0RlbGV0ZSdcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRG93bmxvYWQnXHJcblx0ICovXHJcblx0cHVibGljIGRvd25sb2FkYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEdXBsaWNhdGUnXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnQ29uZmlndXJlIHRhYmxlJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25maWd1cmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiByb3dOZ0NsYXNzOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dOZ0NsYXNzPzogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSB1bmRlZmluZWQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJvd0NsaWNrOiBGdW5jdGlvblxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dDbGljaz86ICh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55ID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvKipcclxuXHQgKiBlZGl0Um91dGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIG9uRWRpdD86ICh4OiBURW50aXR5LCBjdHg6IGFueSkgPT4gYW55ID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvKipcclxuXHQgKiBkZXRhaWxzVGVtcGxhdGU6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIGRldGFpbHNUZW1wbGF0ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcclxuXHJcblx0LyoqXHJcblx0ICogdG9vbGJhckFjdGlvbnM6IEFjdGlvbkl0ZW1bXVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b29sYmFyQWN0aW9uczogQWN0aW9uSXRlbVtdID0gW3tcclxuXHRcdGljb246ICdyZWZyZXNoJyxcclxuXHRcdGV2ZW50OiAoKSA9PiB0aGlzLmxvYWRMaXN0KClcclxuXHR9XTtcclxuXHJcblx0LyoqXHJcblx0ICogVG9vbGJhciBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUYWJsZSByb3cgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3dNZW51SXRlbXM6IEFjdGlvbkl0ZW08VEVudGl0eT5bXSA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBBZGRzIGEgYmFjayBidXR0b24gdG8gdGhlIHRvb2xiYXJcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBiYWNrQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIERhdGFMb2FkZWQgZXZlbnQgc3Vic2NyaXB0aW9uXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGRhdGFMb2FkZWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBrZXkgZm9yIGNvbmZpZ3NcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY29uZmlnc0tleTogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGxpc3RDb25maWc6IHtjb25maWdzOiBhbnksIHF1ZXJ5OiBhbnl9XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGxpc3RDb25maWc6IHsgY29uZmlnczogVGFibGVDb2x1bW5Db25maWdbXSwgcXVlcnk6IGFueSB9ID0geyBjb25maWdzOiBbXSwgcXVlcnk6IHsgcGFnZVNpemU6IDE1IH0gfTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gc2VydmljZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHB1YmxpYyBzZXJ2aWNlOiBUU2VydmljZSxcclxuXHRcdHByb3RlY3RlZCByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcblx0XHRwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG5cdFx0cHVibGljIGNsYXNzVHlwZT86IHsgbmV3KCk6IFRFbnRpdHkgfVxyXG5cdCkge1xyXG5cdFx0c3VwZXIocm91dGUsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBcclxuXHQgKiBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cclxuXHRcdC8qIEFzc2VtYmxlIHRoZSBjb25maWcga2V5ICovXHJcblx0XHR0aGlzLmNvbmZpZ3NLZXkgPSBbdGhpcy5wcm9qZWN0TmFtZSwgJ2xpc3QtY29uZmlnJywgd2luZG93LmJ0b2EodGhpcy5jdXJyZW50QmFzZVJvdXRlID8/ICcnKSwgdGhpcy5tZW51Py50aXRsZV0uam9pbignLicpO1xyXG5cclxuXHRcdC8qIExvYWQgbGlzdCBjb25maWdzICovXHJcblx0XHR0aGlzLmxpc3RDb25maWcgPSBBcHBTdG9yYWdlLmdldE9iamVjdEVuY29kZWQodGhpcy5jb25maWdzS2V5LCB7IGNvbmZpZ3M6IFtdLCBxdWVyeTogeyBwYWdlU2l6ZTogMTUgfSB9KTtcclxuXHJcblx0XHQvKiBTZXQgYmFjayBidXR0b24gZnJvbSByb3V0ZSBwYXJhbXMgKi9cclxuXHRcdHRoaXMuYmFja0J1dHRvbiA9IHRoaXMucm91dGU/LnNuYXBzaG90Py5wYXJhbU1hcD8uZ2V0KCdiYWNrQnV0dG9uJykgPT0gJ3RydWUnO1xyXG5cclxuXHRcdC8qIFJlYWQgc29tZSBwYXJhbXMgZnJvbSByb3V0aW5nIGRhdGEgKi9cclxuXHRcdHRoaXMucm91dGUuZGF0YS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMucXVlcnksIGRhdGEucXVlcnkgfHwge30pO1xyXG5cdFx0XHR0aGlzLmNsYXNzVHlwZSB8fD0gZGF0YS5jbGFzc1R5cGU7XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5jbGFzc05hbWUpIHtcclxuXHRcdFx0XHR0aGlzLmNsYXNzTmFtZSA9IGRhdGEuY2xhc3NOYW1lO1xyXG5cclxuXHRcdFx0XHQvKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUsIHVwZGF0ZSBhbmQgZGVsZXRlIGJhc2VkIG9uIHRoZSBjbGFzcyBuYW1lICovXHJcblx0XHRcdFx0dGhpcy5jYW5DcmVhdGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYENyZWF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYFVwZGF0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5EZWxldGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYERlbGV0ZSR7dGhpcy5jbGFzc05hbWV9YCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmNvbHVtbnMpIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSBbLi4uKGRhdGEuY29sdW1ucyB8fCBbXSldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoZGF0YS5lbmRwb2ludCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5lbmRwb2ludCA9IGRhdGEuZW5kcG9pbnQ7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmluY2x1ZGVzKSB7XHJcblx0XHRcdFx0dGhpcy5pbmNsdWRlcyA9IGRhdGEuaW5jbHVkZXM7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goeCA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMuaGFzT3duUHJvcGVydHkoeCkgJiYgeCAhPSAnY29sdW1ucycpIHtcclxuXHRcdFx0XHRcdCh0aGlzIGFzIGFueSlbeF0gPSBkYXRhW3hdO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHJcblx0XHQvKiBHZXQgY29sdW1ucyBmcm9tIGNsYXNzICovXHJcblx0XHRpZiAodGhpcy5jbGFzc1R5cGUpIHtcclxuXHRcdFx0dGhpcy5jbGFzc0luc3RhbmNlID0gbmV3IHRoaXMuY2xhc3NUeXBlKCk7XHJcblxyXG5cdFx0XHQvKiBHZXQgdGhlIHRhYmxlIGRlZmluaXRpb24gdXNpbmcgdGhlIGNsYXNzIHR5cGUgKi9cclxuXHRcdFx0dmFyIHRhYmxlRGVmaW5pdGlvbiA9IGdldFRhYmxlRGVmaW5pdGlvbih0aGlzLmNsYXNzVHlwZSk7XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHByb3BzIGluIHRoZSBjdXJyZW50IG9iamVjdCBmcm9tIHRoZSB0YWJsZSBkZWZpbml0aW9uICovXHJcblx0XHRcdE9iamVjdC5rZXlzKHRhYmxlRGVmaW5pdGlvbiB8fCB7fSkuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSkge1xyXG5cdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkoKHRoaXMgYXMgYW55KVt4XSkgJiYgQXJyYXkuaXNBcnJheSgodGFibGVEZWZpbml0aW9uIGFzIGFueSlbeF0pKSB7XHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSlbeF0gPSAodGFibGVEZWZpbml0aW9uIGFzIGFueSlbeF0uY29uY2F0KCh0aGlzIGFzIGFueSlbeF0pXHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQodGhpcyBhcyBhbnkpW3hdID0gKHRhYmxlRGVmaW5pdGlvbiBhcyBhbnkpW3hdO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBTZXQgZW5kcG9pbnQgZnJvbSB0YWJsZSBkZWZpbml0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0aWYgKHRhYmxlRGVmaW5pdGlvbj8uZW5kcG9pbnQpIHtcclxuXHRcdFx0XHR0aGlzLnNlcnZpY2UuZW5kcG9pbnQgPSB0YWJsZURlZmluaXRpb24/LmVuZHBvaW50O1xyXG5cclxuXHRcdFx0XHQvKiBDaGVjayBpZiB0aGUgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUsIHVwZGF0ZSBhbmQgZGVsZXRlIGJhc2VkIG9uIHRoZSBhcGkgZW5kcG9pbnQgKi9cclxuXHRcdFx0XHR0aGlzLmNhbkNyZWF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgQ3JlYXRlJHt0aGlzLnNlcnZpY2UuZW5kcG9pbnR9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5VcGRhdGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYFVwZGF0ZSR7dGhpcy5zZXJ2aWNlLmVuZHBvaW50fWApO1xyXG5cdFx0XHRcdHRoaXMuY2FuRGVsZXRlIHx8PSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKGBEZWxldGUke3RoaXMuc2VydmljZS5lbmRwb2ludH1gKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogU2V0IHRoZSB0YWJsZSBjb2x1bW5zIGZyb20gdGhlIHRhYmxlIGRlZmludGlvbiAqL1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uPy5jb2x1bW5zKSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGFibGVEZWZpbml0aW9uLmNvbHVtbnMubWFwKHggPT4geyByZXR1cm4geyAuLi54IH0gfSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8qIEhhbmRsZSBldmVudHMgKi9cclxuXHRcdFx0dGhpcy5jb2x1bW5zPy5mb3JFYWNoKCh4OiBUYWJsZUNvbHVtbikgPT4ge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgeC5ldmVudCA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0XHRcdGxldCBldmVudE5hbWU6IHN0cmluZyA9ICgoeC5ldmVudCkgYXMgc3RyaW5nKTtcclxuXHRcdFx0XHRcdHguZXZlbnQgPSAocm93OiBhbnkpID0+ICh4LmV2ZW50QXJncyA/ICh0aGlzIGFzIGFueSlbZXZlbnROYW1lXShyb3csIHguZXZlbnRBcmdzKSA6ICh0aGlzIGFzIGFueSlbZXZlbnROYW1lXShyb3cpKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogSGlkZSBjb2x1bW5zIHVzaW5nIHJvdXRlIGRhdGEgKi9cclxuXHRcdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKHg6IFRhYmxlQ29sdW1uKSA9PiAheC5oaWRlIHx8ICF4LmhpZGUoZGF0YSwgdW5kZWZpbmVkLCB0aGlzKSk7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0LyogR2V0IGN1c3RvbSBhY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHR2YXIgYWN0aW9ucyA9IHRhYmxlRGVmaW5pdGlvbj8uYWN0aW9ucztcclxuXHRcdFx0aWYgKGFjdGlvbnMgIT0gbnVsbCkge1xyXG5cdFx0XHRcdGFjdGlvbnMuZm9yRWFjaCh5ID0+IHRoaXMucm93TWVudUl0ZW1zPy5wdXNoKHkpKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEhpZGUgZXhjbHVkZWQgY29sdW1ucyAqL1xyXG5cdFx0dGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5zPy5maWx0ZXIoKHg6IFRhYmxlQ29sdW1uKSA9PiAhdGhpcy5leGNsdWRlZENvbHVtbnM/LmluY2x1ZGVzKHgubmFtZSkpO1xyXG5cclxuXHRcdC8qIEFkZCBsaXN0IG1uZXUgaXRlbXMgKi9cclxuXHRcdHRoaXMuYWRkVG9vbGJhck1lbnVJdGVtcygpO1xyXG5cclxuXHRcdGlmICh0aGlzLmR5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHQvKiBBZGQgbWVudSBpdGVtcyBmb3IgZWFjaCByb3cgKi9cclxuXHRcdFx0dGhpcy5hZGRSb3dNZW51SXRlbXMoKTtcclxuXHJcblx0XHRcdC8qIENoZWNrIGlmIHRoZSBhY3Rpb24gY29sdW1uIGFscmVhZHkgZXhpc3RzICovXHJcblx0XHRcdHZhciBhY3Rpb25Db2xtdW4gPSAodGhpcy5jb2x1bW5zIGFzIFRhYmxlQ29sdW1uW10pPy5maW5kKHggPT4geC5uYW1lID09ICdhY3Rpb24nKTtcclxuXHJcblx0XHRcdC8qIElmIHNvLCBqdXN0IGFkZCB0aGUgbWVudSBpdGVtcyB0byBpdCAqL1xyXG5cdFx0XHRpZiAoYWN0aW9uQ29sbXVuKSB7XHJcblx0XHRcdFx0YWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcyA/Pz0gW107XHJcblx0XHRcdFx0dGhpcy5yb3dNZW51SXRlbXMuZm9yRWFjaCh5ID0+IGFjdGlvbkNvbG11biEucm93TWVudUl0ZW1zIS51bnNoaWZ0KHkpKTtcclxuXHJcblx0XHRcdFx0LyogQ3JlYXRlIGEgdGFibGUgbWVudSAqL1xyXG5cdFx0XHRcdGFjdGlvbkNvbG11bi5tZW51ID0gbmV3IEFjdGlvbkl0ZW0oe1xyXG5cdFx0XHRcdFx0aWNvbjogJ21vcmVfdmVydCcsXHJcblx0XHRcdFx0XHRpdGVtczogdGhpcy5yb3dNZW51SXRlbXNcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogT3RoZXJ3aXNlIGFkZCBhIG5ldyBvbmUgKi9cclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5jb2x1bW5zLnB1c2gobmV3IFRhYmxlQ29sdW1uKHtcclxuXHRcdFx0XHRcdGluZGV4OiAyMDAwLFxyXG5cdFx0XHRcdFx0bmFtZTogJ2FjdGlvbicsXHJcblx0XHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQWN0aW9uLFxyXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWUsXHJcblx0XHRcdFx0XHRtZW51OiBuZXcgQWN0aW9uSXRlbSh7XHJcblx0XHRcdFx0XHRcdGljb246ICdtb3JlX3ZlcnQnLFxyXG5cdFx0XHRcdFx0XHRpdGVtczogdGhpcy5yb3dNZW51SXRlbXNcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0cm93TWVudUl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtcyxcclxuXHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2VcclxuXHRcdFx0XHR9KSk7XHJcblx0XHRcdH1cclxuXHJcblxyXG5cclxuXHRcdFx0dGhpcy51cGRhdGVDb2x1bW5zKHRydWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCBxdWVyeSBwYXJhbXMgaW50byBxdWVyeSBvYmplY3QgKi9cclxuXHRcdHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHggPT4gT2JqZWN0LmFzc2lnbih0aGlzLnF1ZXJ5LCB4IHx8IHt9LCB7IHJldHVyblVybDogbnVsbCB9KSk7XHJcblxyXG5cdFx0LyogSW5pdGlsaWFsaXplIHRoZSBkYXRhIHNvdXJjZSB3aXRoIHRoZSBjdXJyZW50IHNlcnZpY2UsIHBhZ2luYXRvciBhbmQgc29ydCAqL1xyXG5cdFx0dGhpcy5zb3J0ID0gdGhpcy5keW5hbWljVGFibGU/Lm1hdFNvcnQgfHwgKHRoaXMuc29ydCA/IHRoaXMuc29ydCA6IG5ldyBNYXRTb3J0KCkpO1xyXG5cdFx0dGhpcy5kYXRhU291cmNlID0gbmV3IFRhYmxlRGF0YVNvdXJjZTxURW50aXR5LCBUU2VydmljZT4odGhpcy5zZXJ2aWNlISwgdGhpcy5wYWdpbmF0b3IsIHRoaXMuc29ydCk7XHJcblxyXG5cdFx0LyogU2V0IGluY2x1ZGVzICovXHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuaW5jbHVkZXMgPSB0aGlzLmluY2x1ZGVzO1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnByb2plY3Rpb24gPSB0aGlzLnByb2plY3Rpb247XHJcblxyXG5cdFx0LyogTG9hZCBxdWVyeSBmcm9tIGJyb3dzZXIgc3RvcmFnZSAqL1xyXG5cdFx0dmFyIHN0b3JyZWRRdWVyeSA9IHRoaXMubGlzdENvbmZpZz8ucXVlcnk7XHJcblx0XHRpZiAoc3RvcnJlZFF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMgPSB0aGlzLmNsZWFuKHN0b3JyZWRRdWVyeS5maWVsZEZpbHRlcnMpIHx8IHt9O1xyXG5cdFx0XHR0aGlzLnNvcnRBY3RpdmUgPSBzdG9ycmVkUXVlcnkuc29ydEJ5O1xyXG5cdFx0XHR0aGlzLnNvcnREaXJlY3Rpb24gPSBzdG9ycmVkUXVlcnkuc29ydERpcmVjdGlvbjtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnBhZ2VTaXplID0gc3RvcnJlZFF1ZXJ5LnBhZ2VTaXplO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnZUluZGV4ID0gc3RvcnJlZFF1ZXJ5LnBhZ2VJbmRleDtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgc29tZSBmaWx0ZXIgZnJvbSByb3V0ZXIgKi9cclxuXHRcdGlmICh0aGlzLnF1ZXJ5KSB7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5zdGF0aWNGaWVsZEZpbHRlcnMgPSB0aGlzLnF1ZXJ5O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFJlbWVtYmVyIHRoZSBmaWx0ZXJzICovXHJcblx0XHR0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGFTb3VyY2Uub25EYXRhTG9hZGVkLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuXHRcdFx0aWYgKHJlc3VsdCkge1xyXG5cdFx0XHRcdHRoaXMubGlzdENvbmZpZyA/Pz0geyBjb25maWdzOiBbXSwgcXVlcnk6IHt9IH07XHJcblx0XHRcdFx0dGhpcy5saXN0Q29uZmlnLnF1ZXJ5ID0ge1xyXG5cdFx0XHRcdFx0ZmllbGRGaWx0ZXJzOiB0aGlzLmRhdGFTb3VyY2UuZmllbGRGaWx0ZXJzLFxyXG5cdFx0XHRcdFx0c29ydEJ5OiB0aGlzLnNvcnQ/LmFjdGl2ZSxcclxuXHRcdFx0XHRcdHNvcnREaXJlY3Rpb246IHRoaXMuc29ydD8uZGlyZWN0aW9uLFxyXG5cdFx0XHRcdFx0cGFnZVNpemU6IHRoaXMucGFnaW5hdG9yPy5wYWdlU2l6ZSxcclxuXHRcdFx0XHRcdHBhZ2VJbmRleDogdGhpcy5wYWdpbmF0b3I/LnBhZ2VJbmRleCxcclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHQvKiBTYXZlIHRoZSBzZXR0aW5ncyAqL1xyXG5cdFx0XHRcdEFwcFN0b3JhZ2Uuc2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHRoaXMubGlzdENvbmZpZyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29ubmVjdHMgYSBjb2xsZWN0aW9uIHZpZXdlciAoc3VjaCBhcyBhIGRhdGEtdGFibGUpIHRvIHRoZSBkYXRhIHNvdXJjZS4gXHJcblx0ICogQHBhcmFtIHN0YXRpY0ZpZWxkRmlsdGVycyBcclxuXHQgKi9cclxuXHRwdWJsaWMgY29ubmVjdChzdGF0aWNGaWVsZEZpbHRlcnM6IGFueSA9IG51bGwpOiB2b2lkIHtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5zdGF0aWNGaWVsZEZpbHRlcnMgPSBzdGF0aWNGaWVsZEZpbHRlcnMgfHwge307XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuY29ubmVjdCh1bmRlZmluZWQpLnN1YnNjcmliZSgpO1xyXG5cclxuXHRcdGlmICghdGhpcy5keW5hbWljVGFibGUpIHtcclxuXHRcdFx0dGhpcy5hZGRSb3dNZW51SXRlbXMoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgdGhlIHRhYmxlIGNvbHVtbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBkYXRlQ29sdW1ucyhsb2FkQ29uZmlnPzogYm9vbGVhbik6IHZvaWQge1xyXG5cdFx0LyogR2V0IGNvbmZpZyBmcm9tIGxvY2FsIHN0b3JhZ2UgKi9cclxuXHRcdGlmIChsb2FkQ29uZmlnKSB7XHJcblx0XHRcdHRoaXMubG9hZENvbmZpZ3MoKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBTb3J0IHRoZSBjb2x1bW5zIGJ5IGluZGV4ICovXHJcblx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy5jb2x1bW5zIHx8IFtdLCAnaW5kZXgnKTtcclxuXHJcblx0XHQvKiBUcmlnZ2VyIGNoYW5nZXMgKi9cclxuXHRcdHRoaXMuZHluYW1pY1RhYmxlPy51cGRhdGVDb2x1bW5zKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWxvYWRzIGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRMaXN0KHJlc2V0U2VsZWN0aW9uOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0dGhpcz8uZGF0YVNvdXJjZT8ucmVsb2FkKHJlc2V0U2VsZWN0aW9uKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlYXJjaFxyXG5cdCAqIEBwYXJhbSBmaWx0ZXIgXHJcblx0ICovXHJcblx0cHVibGljIHNlYXJjaChmaWx0ZXI6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLmZpbHRlciA9IGZpbHRlcjtcclxuXHR9XHJcblxyXG5cclxuXHQvKipcclxuXHQgKiBOYXZpZ2F0ZXMgdG8gdGhlIGFkZCBwYWdlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhZGQoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5hZGREaWFsb2dUeXBlKSB7XHJcblx0XHRcdHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKHRoaXMuYWRkRGlhbG9nVHlwZSwgeyB3aWR0aDogJzY1MHB4JywgZGF0YTogdGhpcy5jbGFzc0luc3RhbmNlIH0pXHJcblx0XHRcdFx0LmFmdGVyQ2xvc2VkKClcclxuXHRcdFx0XHQuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9hZExpc3QoZmFsc2UpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHZhciBoYXNQYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwO1xyXG5cdFx0XHR0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuXHRcdFx0XHRbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9hZGRgXSxcclxuXHRcdFx0XHR7IHF1ZXJ5UGFyYW1zOiBoYXNQYXJhbXMgPyB7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSA6IHt9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG4gKiBOYXZpZ2F0ZXMgdG8gdGhlIGVkaXQgcGFnZS5cclxuICogQHBhcmFtIGVudGl0eSAtIFRoZSBlbnRpdHkgdG8gYmUgZWRpdGVkLlxyXG4gKiBAcGFyYW0gY29udGV4dCAtIEFkZGl0aW9uYWwgY29udGV4dCBkYXRhLlxyXG4gKi9cclxuXHRwdWJsaWMgZWRpdChlbnRpdHk/OiBURW50aXR5LCBjb250ZXh0PzogYW55KTogdm9pZCB7XHJcblx0XHQvKiBDaGVjayBpZiBlbnRpdHkgaXMgbnVsbCAqL1xyXG5cdFx0aWYgKGVudGl0eSA9PT0gbnVsbCB8fCBlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBtdXN0IGJlIGRlZmluZWQgZm9yIGVkaXRpbmcuJyk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQ2hlY2sgaWYgdGV4dCBpcyBzZWxlY3RlZCAqL1xyXG5cdFx0aWYgKCF0aGlzLmlzVGV4dFNlbGVjdGVkKCkpIHtcclxuXHRcdFx0LyogSWYgYSBjdXN0b20gb25FZGl0IGZ1bmN0aW9uIGlzIHByb3ZpZGVkLCBjYWxsIGl0ICovXHJcblx0XHRcdGlmICh0aGlzLm9uRWRpdCkge1xyXG5cdFx0XHRcdC8qIENhbGwgdGhlIGN1c3RvbSBvbkVkaXQgZnVuY3Rpb24gd2l0aCB0aGUgZW50aXR5IGFuZCBjb250ZXh0ICovXHJcblx0XHRcdFx0dGhpcy5vbkVkaXQoZW50aXR5LCBjb250ZXh0KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHQvKiBJZiBvbkVkaXQgaXMgbm90IHByb3ZpZGVkLCBjb25zdHJ1Y3QgdGhlIGVkaXQgcm91dGUgYW5kIG5hdmlnYXRlICovXHJcblx0XHRcdFx0Y29uc3QgaGFzUGFyYW1zID0gT2JqZWN0LmtleXModGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykubGVuZ3RoID4gMDtcclxuXHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gdGhlIGVkaXQgcGFnZSB3aXRoIHRoZSBlbnRpdHkncyBpZCBhbmQgb3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVycyAqL1xyXG5cdFx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG5cdFx0XHRcdFx0W2Ake3RoaXMuY3VycmVudEJhc2VSb3V0ZX0vZWRpdGAsIChlbnRpdHkgYXMgYW55KT8uaWRdLFxyXG5cdFx0XHRcdFx0eyBxdWVyeVBhcmFtczogaGFzUGFyYW1zID8geyByZXR1cm5Vcmw6IHRoaXMuY3VycmVudFJvdXRlIH0gOiB7fSwgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9XHJcblx0XHRcdFx0KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGF0Y2hlcyB0aGUgZW50aXR5XHJcblx0ICogUGF0Y2hlcyB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIHBhdGNoXHJcblx0ICogQHBhcmFtIHZhbHVlIFRoZSAob3B0aW9uYWwpIHZhbHVlIHRvIGNoYW5nZVxyXG5cdCAqIEBwYXJhbSBpbmNsdWRlcyBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcblx0ICovXHJcblx0cHVibGljIHBhdGNoKGlkOiBudW1iZXIsIGZpZWxkczogQXJyYXk8c3RyaW5nPiwgdmFsdWU6IGFueSwgaW5jbHVkZXM/OiBhbnkpOiB2b2lkIHtcclxuXHRcdHRoaXMuX3BhdGNoKGlkLCBmaWVsZHMsIHZhbHVlLCBpbmNsdWRlcywgKF86IGFueSkgPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgSUQgb2YgdGhlIGVudGl0eVxyXG5cdCAqIEBwYXJhbSBmaWVsZHMgVGhlIGZpZWxkcyB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBUaGUgKG9wdGlvbmFsKSB2YWx1ZSB0byBjaGFuZ2VcclxuXHQgKiBAcGFyYW0gaW5jbHVkZXMgSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgQSBjYWxsYmFjayBmdW5jdGlvbiB0byBlIGNhbGxlZCBvbiBzdWNjZXNzXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wYXRjaChpZDogbnVtYmVyLCBmaWVsZHM6IEFycmF5PHN0cmluZz4sIHZhbHVlOiBhbnksIGluY2x1ZGVzPzogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBGdW5jdGlvbik6IHZvaWQge1xyXG5cdFx0dGhpcy5pc1NhdmluZyA9IHRydWU7XHJcblxyXG5cdFx0LyogR2V0IGVudGl0eSBieSBJRCAqL1xyXG5cdFx0bGV0IGVudGl0eSA9IHRoaXMuZGF0YVNvdXJjZS5pdGVtcz8uZmlsdGVyKCh4OiBhbnkpID0+ICg8YW55PngpLmlkID09PSBpZClbMF07XHJcblx0XHRpZiAoZW50aXR5KSB7XHJcblx0XHRcdC8qIEJ1aWxkIHBhdGNoIG1ldGhvZHMgKi9cclxuXHRcdFx0bGV0IHBhdGNoZXMgPSBmaWVsZHMubWFwKHggPT4geyByZXR1cm4geyBvcDogJ3JlcGxhY2UnLCBwYXRoOiBgLyR7eH1gLCB2YWx1ZTogdmFsdWUgIT0gdW5kZWZpbmVkID8gdmFsdWUgOiBlbnRpdHlbeF0gfTsgfSk7XHJcblxyXG5cdFx0XHQvKiBTZW5kIHJlcXVlc3QgKi9cclxuXHRcdFx0dGhpcy5zZXJ2aWNlXHJcblx0XHRcdFx0LnBhdGNoKGlkLCBwYXRjaGVzLCB1bmRlZmluZWQsIHsgaGVhZGVyczogeyAnU2hvdy1NZXNzYWdlJzogJ1llcycgfSwgcGFyYW1zOiBpbmNsdWRlcyA/IFV0aWxzLnRvSHR0cFBhcmFtcyh7IGluY2x1ZGVzOiBpbmNsdWRlcyB9KSA6IG51bGwgfSlcclxuXHRcdFx0XHQuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdG5leHQ6ICh4KSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3NDYWxsYmFjayh4KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSwgZXJyb3I6IChfKSA9PiB0aGlzLmlzU2F2aW5nID0gZmFsc2VcclxuXHRcdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbShlbnRpdHk/OiBURW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLnNob3dEZWxldGVJdGVtRGlhbG9nKCkuc3Vic2NyaWJlKChhY2NlcHQ6IGJvb2xlYW4pID0+IHtcclxuXHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGUoKGVudGl0eSBhcyBhbnkpLmlkKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1EZWxldGVkKDxhbnk+ZW50aXR5KSxcclxuXHRcdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gaXRlbSBmcm9tIHRoZSBkYXRhYmFzZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlSXRlbXMoKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5kYXRhU291cmNlLnNlbGVjdGlvbk1vZGVsLmhhc1ZhbHVlKCkpIHtcclxuXHRcdFx0dGhpcy5zaG93RGVsZXRlSXRlbXNEaWFsb2coKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRcdGlmIChhY2NlcHQpIHtcclxuXHRcdFx0XHRcdGxldCBpZHMgPSB0aGlzLmRhdGFTb3VyY2UuZ2V0U2VsZWN0ZWRJZHMoKTtcclxuXHRcdFx0XHRcdHRoaXMuc2VydmljZS5kZWxldGVMaXN0KGlkcykuc3Vic2NyaWJlKHtcclxuXHRcdFx0XHRcdFx0bmV4dDogKF8pID0+IHRoaXMub25BZnRlckl0ZW1zRGVsZXRlZChpZHMpLFxyXG5cdFx0XHRcdFx0XHRlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUb2dnbGVzIGEgcHJvcGVydHlcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKiBAcGFyYW0gcHJvcGVydHlcclxuXHQgKi9cclxuXHRwdWJsaWMgdG9nZ2xlKGl0ZW06IFRFbnRpdHksIHByb3BlcnR5OiBzdHJpbmcgPSAnZW5hYmxlZCcpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZVxyXG5cdFx0XHQucGF0Y2goKDxhbnk+aXRlbSkuaWQsIFt7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHtwcm9wZXJ0eX1gLCB2YWx1ZTogKGl0ZW0gYXMgYW55KVtwcm9wZXJ0eV0gfV0pXHJcblx0XHRcdC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBsb2FkcyB0YXJuc2ZlcnMgY3N2IGZpbGVzXHJcblx0ICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gdXBsb2FkXHJcblx0ICogQHBhcmFtIHJlbG9hZCBJZiB0cnVlLCByZWxvYWQgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUsIHJlbG9hZDogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VydmljZS51cGxvYWQoZmlsZSkuc3Vic2NyaWJlKHtcclxuXHRcdFx0bmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcblx0XHRcdFx0cmVzcG9uc2UgPSByZXNwb25zZS5qc29uKCk7XHJcblxyXG5cdFx0XHRcdC8qIFJlbG9hZCBsaXN0ICovXHJcblx0XHRcdFx0aWYgKHJlbG9hZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5sb2FkTGlzdCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSwgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERvd25sb2FkcyBhIGRvY3VtZW50XHJcblx0ICogQHBhcmFtIGVudGl0eSBcclxuXHQgKi9cclxuXHRwdWJsaWMgZG93bmxvYWQoZW50aXR5PzogVEVudGl0eSwgcGF0aDogc3RyaW5nID0gJ2Rvd25sb2FkJyk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLmRvd25sb2FkKGAke3BhdGh9LyR7KGVudGl0eSBhcyBJRW50aXR5KS5pZH1gKS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdHNhdmVBcyhuZXcgQmxvYihbeC5kYXRhXSwge30pLCB4LmZpbGVuYW1lKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRHVwbGljYXRlcyBhIHJlY29yZFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgXHJcblx0ICovXHJcblx0cHVibGljIGR1cGxpY2F0ZShlbnRpdHk/OiBURW50aXR5KSB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZHVwbGljYXRlKChlbnRpdHkgYXMgYW55KS5pZCkuc3Vic2NyaWJlKF8gPT4gdGhpcy5sb2FkTGlzdCgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXMgaW5mb3JtcyB0aGUgdGFibGUgaG93IHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHJvd3MgdG8gXHJcblx0ICogdHJhY2sgaG93IHRoZSBkYXRhIGNoYW5nZXMgd2l0aCBlYWNoIHVwZGF0ZS5cclxuXHQgKiBAcGFyYW0gaW5kZXggXHJcblx0ICogQHBhcmFtIGl0ZW0gXHJcblx0ICovXHJcblx0cHVibGljIHRyYWNrQnlJZChfOiBudW1iZXIsIGl0ZW06IGFueSkge1xyXG5cdFx0cmV0dXJuIGl0ZW0uaWQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBPcGVucyB0aGUgY29uZmlnIGRpYWxvZ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcGVuQ29uZmlnRGlhbG9nKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihWZER5bmFtaWNUYWJsZUNvbmZpZ0RpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHR3aWR0aDogJzkwMHB4JyxcclxuXHRcdFx0ZGF0YTogdGhpcyxcclxuXHRcdFx0ZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG5cdFx0XHRwYW5lbENsYXNzOiBbJ2ZsYXQtZGlhbG9nJywgJ2RpYWxvZy1mdWxsLXNjcmVlbiddXHJcblx0XHR9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShfID0+IHRoaXMucmVsb2FkUGFnZSgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNhdmVzIHRoZSB0YWJsZSBjb25maWdcclxuXHQgKiBAcGFyYW0gY29uZmlnc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBzYXZlQ29uZmlncyhjb25maWdzOiBUYWJsZUNvbHVtbkNvbmZpZ1tdKTogdm9pZCB7XHJcblx0XHRpZiAoY29uZmlncykge1xyXG5cdFx0XHQvKiBTZXQgdGhlIGNvbmZpZyBpbiB0aGUgbGlzdCBjb25maWcgKi9cclxuXHRcdFx0dGhpcy5saXN0Q29uZmlnID8/PSB7IGNvbmZpZ3M6IFtdLCBxdWVyeToge30gfTtcclxuXHRcdFx0dGhpcy5saXN0Q29uZmlnLmNvbmZpZ3MgPSBjb25maWdzO1xyXG5cclxuXHRcdFx0LyogU2F2ZSB0aGUgY29uZmlncyAqL1xyXG5cdFx0XHRBcHBTdG9yYWdlLnNldE9iamVjdEVuY29kZWQodGhpcy5jb25maWdzS2V5LCB0aGlzLmxpc3RDb25maWcpO1xyXG5cclxuXHRcdFx0LyogU2V0IHRoZSB0YWJsZSBjb2x1bW5zICovXHJcblx0XHRcdHRoaXMudXBkYXRlQ29sdW1ucygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBhbmQgYXBwbGllcyB0aGUgdGFibGUgY29uZmlnc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkQ29uZmlncygpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmxpc3RDb25maWc/LmNvbmZpZ3MpIHtcclxuXHRcdFx0dHJ5IHtcclxuXHRcdFx0XHQodGhpcy5saXN0Q29uZmlnPy5jb25maWdzID8/IFtdKT8uZm9yRWFjaCgoeDogVGFibGVDb2x1bW5Db25maWcpID0+IHtcclxuXHRcdFx0XHRcdHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKCh5OiBUYWJsZUNvbHVtbikgPT4geS5uYW1lID09IHgubmFtZSlbMF07XHJcblx0XHRcdFx0XHRpZiAoY29sdW1uKSB7XHJcblx0XHRcdFx0XHRcdE9iamVjdC5hc3NpZ24oY29sdW1uLCB4KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHsgfVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSW5jbHVkZXMgc29tZSBuYXZpZ2F0aW9uc1xyXG5cdCAqIEBwYXJhbSBpbmMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGluY2x1ZGUoLi4uaW5jOiBzdHJpbmdbXSkge1xyXG5cdFx0aW5jPy5mb3JFYWNoKHggPT4gdGhpcy5pbmNsdWRlcy5wdXNoKHgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZCB0b29sYmFyIG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgYWRkVG9vbGJhck1lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCAnRGVsZXRlIHNlbGVjdGVkJyBtZW51IGl0ZW0gKi9cclxuXHRcdGlmICh0aGlzLmRlbGV0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJNZW51SXRlbXMucHVzaCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkZWxldGVTZWxlY3RlZDpEZWxldGUgc2VsZWN0ZWRgLFxyXG5cdFx0XHRcdGljb246ICdkZWxldGVfZm9yZXZlcicsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtb3JhbmdlLTgwMCcsXHJcblx0XHRcdFx0ZXZlbnQ6ICgpID0+IHRoaXMuZGVsZXRlSXRlbXMoKSxcclxuXHRcdFx0XHRoaWRlOiAoKSA9PiAhdGhpcy5jYW5EZWxldGUsXHJcblx0XHRcdFx0ZGlzYWJsZTogKCkgPT4gIXRoaXMuY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucygoeDogVEVudGl0eSkgPT4gdGhpcy5jYW5EZWxldGVJdGVtKHgpKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBPcGVucyBjb25maWcgZGlhbG9nICovXHJcblx0XHRpZiAodGhpcy5jb25maWd1cmFibGUpIHtcclxuXHRcdFx0dGhpcy50b29sYmFyTWVudUl0ZW1zLnB1c2goe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAY29uZmlndXJlVGFibGU6Q29uZmlndXJlIHRhYmxlYCxcclxuXHRcdFx0XHRpY29uOiAnc2V0dGluZ3MnLFxyXG5cdFx0XHRcdGV2ZW50OiAoKSA9PiB0aGlzLm9wZW5Db25maWdEaWFsb2coKVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy50b29sYmFyTWVudUl0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0LyogU29ydCB0aGUgbWVudSBpdGVtcyBieSBpbmRleCAqL1xyXG5cdFx0XHRVdGlscy5zb3J0QXJyYXkodGhpcy50b29sYmFyTWVudUl0ZW1zLCAnaW5kZXgnKTtcclxuXHJcblx0XHRcdC8qIEFkZCB0aGUgdG9vbGJhciBtZW51IGl0ZW1zIHRvIHRoZSB0aGUgdG9vbGJhciBhY3Rpb25zICovXHJcblx0XHRcdHRoaXMudG9vbGJhckFjdGlvbnMucHVzaCh7IGljb246ICdtb3JlX3ZlcnQnLCBpdGVtczogdGhpcy50b29sYmFyTWVudUl0ZW1zIH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHJvdyBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGFkZFJvd01lbnVJdGVtcygpOiB2b2lkIHtcclxuXHRcdC8qIEFkZCBjaGVja2JveCBjb2x1bW4gKi9cclxuXHRcdGlmICh0aGlzLnNlbGVjdGFibGUpIHtcclxuXHRcdFx0dGhpcy5jb2x1bW5zLnVuc2hpZnQobmV3IFRhYmxlQ29sdW1uKHtcclxuXHRcdFx0XHRuYW1lOiAnc2VsZWN0JyxcclxuXHRcdFx0XHR0eXBlOiBUYWJsZUNvbHVtblR5cGUuQ2hlY2tib3gsXHJcblx0XHRcdFx0ZGlzYWJsZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhblNlbGVjdEl0ZW0ocm93KSxcclxuXHRcdFx0XHRjZWxsTmdDbGFzczogKHJvdzogVEVudGl0eSkgPT4gdGhpcy5zZWxlY3RSb3dOZ0NsYXNzKHJvdyksXHJcblx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZVxyXG5cdFx0XHR9KSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGR1cGxpY2F0ZSBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kdXBsaWNhYmxlKSB7XHJcblx0XHRcdHRoaXMucm93TWVudUl0ZW1zLnVuc2hpZnQoe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZHVwbGljYXRlOkR1cGxpY2F0ZWAsXHJcblx0XHRcdFx0aWNvbjogJ2ZpbGVfY29weScsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c/OiBURW50aXR5KSA9PiB0aGlzLmR1cGxpY2F0ZShyb3cpLFxyXG5cdFx0XHRcdGhpZGU6IChyb3c/OiBURW50aXR5KSA9PiAhdGhpcy5jYW5EdXBsaWNhdGVJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGRvd25sb2FkIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmRvd25sb2FkYWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRvd25sb2FkOkRvd25sb2FkYCxcclxuXHRcdFx0XHRpY29uOiAnZmlsZV9kb3dubG9hZCcsXHJcblx0XHRcdFx0ZXZlbnQ6IChyb3c/OiBURW50aXR5KSA9PiB0aGlzLmRvd25sb2FkKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhbkRvd25sb2FkSXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBkZWxldGUgbWVudSAqL1xyXG5cdFx0aWYgKHRoaXMuZGVsZXRhYmxlKSB7XHJcblx0XHRcdHRoaXMucm93TWVudUl0ZW1zLnVuc2hpZnQoe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZGVsZXRlOkRlbGV0ZWAsXHJcblx0XHRcdFx0aWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuXHRcdFx0XHRpY29uQ2xhc3M6ICd0Yy1vcmFuZ2UtODAwJyxcclxuXHRcdFx0XHRldmVudDogKHJvdz86IFRFbnRpdHkpID0+IHRoaXMuZGVsZXRlSXRlbShyb3cpLFxyXG5cdFx0XHRcdGhpZGU6IChyb3c/OiBURW50aXR5KSA9PiAhdGhpcy5jYW5EZWxldGVJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGVkaXQgbWVudSAqL1xyXG5cdFx0aWYgKHRoaXMuZWRpdGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBlZGl0OkVkaXRgLFxyXG5cdFx0XHRcdGljb246ICdlZGl0X25vdGUnLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLWJsdWUtNDAwJyxcclxuXHRcdFx0XHRldmVudDogKHJvdz86IFRFbnRpdHkpID0+IHRoaXMuZWRpdChyb3csIHRoaXMpLFxyXG5cdFx0XHRcdGhpZGU6IChyb3c/OiBURW50aXR5KSA9PiAhdGhpcy5jYW5FZGl0SXRlbShyb3cpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgc2VsZWN0YWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5TZWxlY3RJdGVtKGVudGl0eT86IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdzZWxlY3RhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydzZWxlY3RhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgZGVsZXRhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkRlbGV0ZUl0ZW0oZW50aXR5PzogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jYW5EZWxldGUgJiYgKCFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdkZWxldGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2RlbGV0YWJsZSddKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBlZGl0YWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5FZGl0SXRlbShlbnRpdHk/OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNhblVwZGF0ZSAmJiAoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2VkaXRhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydlZGl0YWJsZSddKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkb3dubG9hZGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRG93bmxvYWRJdGVtKGVudGl0eT86IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdkb3dubG9hZGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2Rvd25sb2FkYWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGR1cGxpY2FibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRHVwbGljYXRlSXRlbShlbnRpdHk/OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiAhZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZHVwbGljYWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnZHVwbGljYWJsZSddOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgTmdDbGFzcyBvYmplY3QgZm9yIHNlbGVjdCBjb2x1bW5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2VsZWN0Um93TmdDbGFzcyhfOiBURW50aXR5KTogYW55IHsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgdGhlcmUgYW55IHNlbGVjdGVkIHJvd1xyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBoYXNTZWxlY3RlZFJvd3MoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmRhdGFTb3VyY2U/LnNlbGVjdGlvbk1vZGVsPy5oYXNWYWx1ZSgpIH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZW50aXR5IGhhcyBiZWVuIGRlbGV0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJJdGVtRGVsZXRlZChpdGVtOiBJRW50aXR5KTogdm9pZCB7XHJcblx0XHR0aGlzLmxvYWRMaXN0KHRydWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdGllcyBoYXMgYmVlbiBkZWxldGVkLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBvbkFmdGVySXRlbXNEZWxldGVkKGlkczogbnVtYmVyW10pOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZExpc3QodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgaWYgdGhlIHVzZXIgY2FuIHBlcmZvcm0gbXVsdGlwbGUgb3BlcmF0aW9ucyAoTGlrZSAnZGVsZXRlIHNlbGVjdGVkJykuXHJcblx0ICogQHBhcmFtIGFjdGlvbiBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRXhlY3V0ZU11bHRpcGxlT3BlcmF0aW9ucyhhY3Rpb24/OiBGdW5jdGlvbik6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaGFzU2VsZWN0ZWRSb3dzKCkgJiYgKGFjdGlvbiA/IHRoaXMuZGF0YVNvdXJjZT8uc2VsZWN0aW9uTW9kZWw/LnNlbGVjdGVkPy5ldmVyeSgoeDogYW55KSA9PiBhY3Rpb24oeCkpIDogdHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXNwb25kcyB0byB1c2VyLWluaXRpYXRlZCBldmVudHNcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXHJcblx0aGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG5cdFx0aWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkge1xyXG5cdFx0XHRzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIGFkZCBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnYSc6XHJcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5hZGQoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKHRoaXMucGFnaW5hdG9yKSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gcHJldmlvdXMgcGFnZSAqL1xyXG5cdFx0XHRcdGNhc2UgJ1BhZ2VVcCc6XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2luYXRvci5wcmV2aW91c1BhZ2UoKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byBuZXh0IHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdQYWdlRG93bic6XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2luYXRvci5uZXh0UGFnZSgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgY2FsbGJhY2sgdXNlZCBmb3IgYW55IGN1c3RvbSBjbGVhbnVwIHRoYXQgbmVlZHMgdG8gb2NjdXIgXHJcblx0ICogd2hlbiB0aGUgaW5zdGFuY2UgaXMgZGVzdHJveWVkLlxyXG5cdCAqL1xyXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG5cdFx0c3VwZXIubmdPbkRlc3Ryb3koKTtcclxuXHRcdGlmICh0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5kYXRhTG9hZGVkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgU3ltYm9sLnRvU3RyaW5nVGFnIHdlbGwta25vd24gc3ltYm9sIGlzIGEgc3RyaW5nIHZhbHVlZCBwcm9wZXJ0eSB0aGF0IGlzIHVzZWQgXHJcblx0ICogaW4gdGhlIGNyZWF0aW9uIG9mIHRoZSBkZWZhdWx0IHN0cmluZyBkZXNjcmlwdGlvbiBvZiBhbiBvYmplY3RcclxuXHQgKi9cclxuXHRnZXQgW1N5bWJvbC50b1N0cmluZ1RhZ10oKSB7IHJldHVybiAnR2VuZXJpY0xpc3RDb21wb25lbnQnOyB9XHJcbn0iXX0=
|
|
766
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Jhc2UvY29tcG9uZW50cy9nZW5lcmljLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQWlCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFB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QUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDMUM7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxPQUFPLHNCQUFzQixDQUFDLENBQUMsQ0FBQzswSEEvMEJ4QyxvQkFBb0I7OEdBQXBCLG9CQUFvQix1TEFLOUIsWUFBWSxxRkFNWixPQUFPLDZGQXdEUCx1QkFBdUI7OzJGQW5FYixvQkFBb0I7a0JBRHpDLFNBQVM7NkpBT0YsU0FBUztzQkFEZixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT2xDLElBQUk7c0JBRFYsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXlEN0IsWUFBWTtzQkFEbEIsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBcUY3QyxVQUFVO3NCQURoQixLQUFLO2dCQWlwQk4sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgQXBwU3RvcmFnZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9oZWxwZXJzL2FwcC1zdG9yYWdlJztcclxuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvYWN0aW9uLWl0ZW0nO1xyXG5pbXBvcnQgeyBJRW50aXR5IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9lbnRpdHknO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uL2h0dHAvc2VydmljZXMvZ2VuZXJpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmREeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi90YWJsZS9jb21wb25lbnRzL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tICcuLi8uLi90YWJsZS9lbnVtcy90YWJsZS1jb2x1bW4tdHlwZSc7XHJcbmltcG9ydCB7IGdldFRhYmxlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3RhYmxlL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4nO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uL3RhYmxlL21vZGVscy90YWJsZS1jb2x1bW4tY29uZmlnJztcclxuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vdGFibGUvdGFibGUuZGF0YS1zb3VyY2UnO1xyXG5pbXBvcnQgeyBBdXRoSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9hdXRoLWhlbHBlcic7XHJcbmltcG9ydCB7IElHZW5lcmljTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWdlbmVyaWMtbGlzdC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLXRhYmxlLWNvbmZpZy1kaWFsb2cuY29tbnBvbmVudCc7XHJcblxyXG4vKipcclxuICogQSBiYXNlIGxpc3QgY29tcG9uZW50IGZvciBjb21wb25lbnRzIHdpdGggcGFnaW5hdGlvbiBzdXBwb3J0XHJcbiAqL1xyXG4vLyBAZHluYW1pY1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdlbmVyaWNMaXN0Q29tcG9uZW50PFRFbnRpdHkgZXh0ZW5kcyBJRW50aXR5IHwgYW55LCBUU2VydmljZSBleHRlbmRzIEdlbmVyaWNTZXJ2aWNlPFRFbnRpdHk+PiBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBJR2VuZXJpY0xpc3RDb21wb25lbnQ8VEVudGl0eT4sIE9uRGVzdHJveSB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kUGFnaW5hdG9yIGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSlcclxuXHRwdWJsaWMgcGFnaW5hdG9yPzogTWF0UGFnaW5hdG9yO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVyZW5jZSB0byBNZFNvcnQgYXR0cmlidXRlXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBzb3J0PzogTWF0U29ydDtcclxuXHJcblx0LyoqXHJcblx0ICogUGFnZSBzaXplIG9wdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGFnZVNpemVPcHRpb25zOiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAxNSwgMjAsIDMwLCA1MCwgMTAwLCAyMDBdO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmF2aWdhdGlvbnMgdG8gaW5jbHVkZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaW5jbHVkZXM6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW11cclxuXHQgKi9cclxuXHRwdWJsaWMgcHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW10gPSBbXTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIG5hdmlnYXRpb25zIHRvIGluY2x1ZGVzXHJcblx0ICovXHJcblx0cHVibGljIGV4Y2x1ZGVkQ29sdW1uczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXQgcGFyYW1zXHJcblx0ICovXHJcblx0cHVibGljIHF1ZXJ5OiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogRGF0YS10YWJsZSBkYXRhc291cmNlXHJcblx0ICovXHJcblx0cHVibGljIGRhdGFTb3VyY2U/OiBUYWJsZURhdGFTb3VyY2U8VEVudGl0eSwgVFNlcnZpY2U+IHwgYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBDdXJyZW50IHNvcnQgY29sdW1uXHJcblx0ICovXHJcblx0cHVibGljIHNvcnRBY3RpdmU/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEN1cnJlbnQgc29ydCBkaXJlY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG5cclxuXHQvKipcclxuXHQgKiBBbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgdG8gY3JlYXRlIHRoZSB0YWJsZSBmb3JcclxuXHQgKi9cclxuXHRwdWJsaWMgY2xhc3NJbnN0YW5jZTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBjb2x1bW5zOiBUYWJsZUNvbHVtbltdIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJlbmNlIHRvIE1kU29ydCBhdHRyaWJ1dGVcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKFZkRHluYW1pY1RhYmxlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG5cdHB1YmxpYyBkeW5hbWljVGFibGU/OiBWZER5bmFtaWNUYWJsZUNvbXBvbmVudDtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHR5cGUgb2YgdGhlIGRpYWxvZyBmb3IgY3JlYXRpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkRGlhbG9nVHlwZTogYW55ID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogU2hvd3MgdGhlIGNvbHVtbiAnQ2hlY2tib3gnXHJcblx0ICovXHJcblx0cHVibGljIHNlbGVjdGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBidXR0b24gJ0FkZCdcclxuXHQgKi9cclxuXHRwdWJsaWMgYWRkYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0VkaXQnXHJcblx0ICovXHJcblx0cHVibGljIGVkaXRhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogSWYgdHJ1ZSwgc2hvdyB0aGUgbWVudSAnRGVsZXRlJ1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdEb3dubG9hZCdcclxuXHQgKi9cclxuXHRwdWJsaWMgZG93bmxvYWRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIElmIHRydWUsIHNob3cgdGhlIG1lbnUgJ0R1cGxpY2F0ZSdcclxuXHQgKi9cclxuXHRwdWJsaWMgZHVwbGljYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBJZiB0cnVlLCBzaG93IHRoZSBtZW51ICdDb25maWd1cmUgdGFibGUnXHJcblx0ICovXHJcblx0cHVibGljIGNvbmZpZ3VyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHJvd05nQ2xhc3M6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHJvd05nQ2xhc3M/OiAoeDogVEVudGl0eSwgY3R4OiBhbnkpID0+IGFueSA9IHVuZGVmaW5lZDtcclxuXHJcblx0LyoqXHJcblx0ICogcm93Q2xpY2s6IEZ1bmN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHJvd0NsaWNrPzogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSB1bmRlZmluZWQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGVkaXRSb3V0ZTogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgb25FZGl0PzogKHg6IFRFbnRpdHksIGN0eDogYW55KSA9PiBhbnkgPSB1bmRlZmluZWQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGRldGFpbHNUZW1wbGF0ZTogRnVuY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgZGV0YWlsc1RlbXBsYXRlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xyXG5cclxuXHQvKipcclxuXHQgKiB0b29sYmFyQWN0aW9uczogQWN0aW9uSXRlbVtdXHJcblx0ICovXHJcblx0cHVibGljIHRvb2xiYXJBY3Rpb25zOiBBY3Rpb25JdGVtW10gPSBbe1xyXG5cdFx0aWNvbjogJ3JlZnJlc2gnLFxyXG5cdFx0ZXZlbnQ6ICgpID0+IHRoaXMubG9hZExpc3QoKVxyXG5cdH1dO1xyXG5cclxuXHQvKipcclxuXHQgKiBUb29sYmFyIG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgdG9vbGJhck1lbnVJdGVtczogQWN0aW9uSXRlbTxURW50aXR5PltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRhYmxlIHJvdyBtZW51IGl0ZW1zXHJcblx0ICovXHJcblx0cHVibGljIHJvd01lbnVJdGVtczogQWN0aW9uSXRlbTxURW50aXR5PltdID0gW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIEFkZHMgYSBiYWNrIGJ1dHRvbiB0byB0aGUgdG9vbGJhclxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGJhY2tCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogRGF0YUxvYWRlZCBldmVudCBzdWJzY3JpcHRpb25cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZGF0YUxvYWRlZFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGtleSBmb3IgY29uZmlnc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjb25maWdzS2V5OiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogbGlzdENvbmZpZzoge2NvbmZpZ3M6IGFueSwgcXVlcnk6IGFueX1cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgbGlzdENvbmZpZzogeyBjb25maWdzOiBUYWJsZUNvbHVtbkNvbmZpZ1tdLCBxdWVyeTogYW55IH0gPSB7IGNvbmZpZ3M6IFtdLCBxdWVyeTogeyBwYWdlU2l6ZTogMTUgfSB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBzZXJ2aWNlIFxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIHNlcnZpY2U6IFRTZXJ2aWNlLFxyXG5cdFx0cHJvdGVjdGVkIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuXHRcdHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0XHRwdWJsaWMgY2xhc3NUeXBlPzogeyBuZXcoKTogVEVudGl0eSB9XHJcblx0KSB7XHJcblx0XHRzdXBlcihyb3V0ZSwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIFxyXG5cdCAqIG9mIGEgZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG5cdFx0LyogQXNzZW1ibGUgdGhlIGNvbmZpZyBrZXkgKi9cclxuXHRcdHRoaXMuY29uZmlnc0tleSA9IFt0aGlzLnByb2plY3ROYW1lLCAnbGlzdC1jb25maWcnLCB3aW5kb3cuYnRvYSh0aGlzLmN1cnJlbnRCYXNlUm91dGUgPz8gJycpLCB0aGlzLm1lbnU/LnRpdGxlXS5qb2luKCcuJyk7XHJcblxyXG5cdFx0LyogTG9hZCBsaXN0IGNvbmZpZ3MgKi9cclxuXHRcdHRoaXMubGlzdENvbmZpZyA9IEFwcFN0b3JhZ2UuZ2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHsgY29uZmlnczogW10sIHF1ZXJ5OiB7IHBhZ2VTaXplOiAxNSB9IH0pO1xyXG5cclxuXHRcdC8qIFNldCBiYWNrIGJ1dHRvbiBmcm9tIHJvdXRlIHBhcmFtcyAqL1xyXG5cdFx0dGhpcy5iYWNrQnV0dG9uID0gdGhpcy5yb3V0ZT8uc25hcHNob3Q/LnBhcmFtTWFwPy5nZXQoJ2JhY2tCdXR0b24nKSA9PSAndHJ1ZSc7XHJcblxyXG5cdFx0LyogUmVhZCBzb21lIHBhcmFtcyBmcm9tIHJvdXRpbmcgZGF0YSAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5xdWVyeSwgZGF0YS5xdWVyeSB8fCB7fSk7XHJcblx0XHRcdHRoaXMuY2xhc3NUeXBlIHx8PSBkYXRhLmNsYXNzVHlwZTtcclxuXHJcblx0XHRcdGlmIChkYXRhLmNsYXNzTmFtZSkge1xyXG5cdFx0XHRcdHRoaXMuY2xhc3NOYW1lID0gZGF0YS5jbGFzc05hbWU7XHJcblxyXG5cdFx0XHRcdC8qIENoZWNrIGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSwgdXBkYXRlIGFuZCBkZWxldGUgYmFzZWQgb24gdGhlIGNsYXNzIG5hbWUgKi9cclxuXHRcdFx0XHR0aGlzLmNhbkNyZWF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgQ3JlYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0XHR0aGlzLmNhblVwZGF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgVXBkYXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0XHR0aGlzLmNhbkRlbGV0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgRGVsZXRlJHt0aGlzLmNsYXNzTmFtZX1gKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuY29sdW1ucykge1xyXG5cdFx0XHRcdHRoaXMuY29sdW1ucyA9IFsuLi4oZGF0YS5jb2x1bW5zIHx8IFtdKV07XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChkYXRhLmVuZHBvaW50KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmVuZHBvaW50ID0gZGF0YS5lbmRwb2ludDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKGRhdGEuaW5jbHVkZXMpIHtcclxuXHRcdFx0XHR0aGlzLmluY2x1ZGVzID0gZGF0YS5pbmNsdWRlcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0T2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCh4ID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eSh4KSAmJiB4ICE9ICdjb2x1bW5zJykge1xyXG5cdFx0XHRcdFx0KHRoaXMgYXMgYW55KVt4XSA9IGRhdGFbeF07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qIEdldCBjb2x1bW5zIGZyb20gY2xhc3MgKi9cclxuXHRcdGlmICh0aGlzLmNsYXNzVHlwZSkge1xyXG5cdFx0XHR0aGlzLmNsYXNzSW5zdGFuY2UgPSBuZXcgdGhpcy5jbGFzc1R5cGUoKTtcclxuXHJcblx0XHRcdC8qIEdldCB0aGUgdGFibGUgZGVmaW5pdGlvbiB1c2luZyB0aGUgY2xhc3MgdHlwZSAqL1xyXG5cdFx0XHR2YXIgdGFibGVEZWZpbml0aW9uID0gZ2V0VGFibGVEZWZpbml0aW9uKHRoaXMuY2xhc3NUeXBlKTtcclxuXHJcblx0XHRcdC8qIFNldCB0aGUgcHJvcHMgaW4gdGhlIGN1cnJlbnQgb2JqZWN0IGZyb20gdGhlIHRhYmxlIGRlZmluaXRpb24gKi9cclxuXHRcdFx0T2JqZWN0LmtleXModGFibGVEZWZpbml0aW9uIHx8IHt9KS5mb3JFYWNoKHggPT4ge1xyXG5cdFx0XHRcdGlmICh0aGlzLmhhc093blByb3BlcnR5KHgpKSB7XHJcblx0XHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheSgodGhpcyBhcyBhbnkpW3hdKSAmJiBBcnJheS5pc0FycmF5KCh0YWJsZURlZmluaXRpb24gYXMgYW55KVt4XSkpIHtcclxuXHRcdFx0XHRcdFx0KHRoaXMgYXMgYW55KVt4XSA9ICh0YWJsZURlZmluaXRpb24gYXMgYW55KVt4XS5jb25jYXQoKHRoaXMgYXMgYW55KVt4XSlcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdCh0aGlzIGFzIGFueSlbeF0gPSAodGFibGVEZWZpbml0aW9uIGFzIGFueSlbeF07XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdC8qIFNldCBlbmRwb2ludCBmcm9tIHRhYmxlIGRlZmluaXRpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRpZiAodGFibGVEZWZpbml0aW9uPy5lbmRwb2ludCkge1xyXG5cdFx0XHRcdHRoaXMuc2VydmljZS5lbmRwb2ludCA9IHRhYmxlRGVmaW5pdGlvbj8uZW5kcG9pbnQ7XHJcblxyXG5cdFx0XHRcdC8qIENoZWNrIGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSwgdXBkYXRlIGFuZCBkZWxldGUgYmFzZWQgb24gdGhlIGFwaSBlbmRwb2ludCAqL1xyXG5cdFx0XHRcdHRoaXMuY2FuQ3JlYXRlIHx8PSBBdXRoSGVscGVyLmlzUGVybWl0dGVkKGBDcmVhdGUke3RoaXMuc2VydmljZS5lbmRwb2ludH1gKTtcclxuXHRcdFx0XHR0aGlzLmNhblVwZGF0ZSB8fD0gQXV0aEhlbHBlci5pc1Blcm1pdHRlZChgVXBkYXRlJHt0aGlzLnNlcnZpY2UuZW5kcG9pbnR9YCk7XHJcblx0XHRcdFx0dGhpcy5jYW5EZWxldGUgfHw9IEF1dGhIZWxwZXIuaXNQZXJtaXR0ZWQoYERlbGV0ZSR7dGhpcy5zZXJ2aWNlLmVuZHBvaW50fWApO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHRhYmxlIGNvbHVtbnMgZnJvbSB0aGUgdGFibGUgZGVmaW50aW9uICovXHJcblx0XHRcdGlmICh0YWJsZURlZmluaXRpb24/LmNvbHVtbnMpIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSB0YWJsZURlZmluaXRpb24uY29sdW1ucy5tYXAoeCA9PiB7IHJldHVybiB7IC4uLnggfSB9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogSGFuZGxlIGV2ZW50cyAqL1xyXG5cdFx0XHR0aGlzLmNvbHVtbnM/LmZvckVhY2goKHg6IFRhYmxlQ29sdW1uKSA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB4LmV2ZW50ID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRcdFx0bGV0IGV2ZW50TmFtZTogc3RyaW5nID0gKCh4LmV2ZW50KSBhcyBzdHJpbmcpO1xyXG5cdFx0XHRcdFx0eC5ldmVudCA9IChyb3c6IGFueSkgPT4gKHguZXZlbnRBcmdzID8gKHRoaXMgYXMgYW55KVtldmVudE5hbWVdKHJvdywgeC5ldmVudEFyZ3MpIDogKHRoaXMgYXMgYW55KVtldmVudE5hbWVdKHJvdykpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBIaWRlIGNvbHVtbnMgdXNpbmcgcm91dGUgZGF0YSAqL1xyXG5cdFx0XHR0aGlzLnJvdXRlLmRhdGEuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcigoeDogVGFibGVDb2x1bW4pID0+ICF4LmhpZGUgfHwgIXguaGlkZShkYXRhLCB1bmRlZmluZWQsIHRoaXMpKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0XHQvKiBHZXQgY3VzdG9tIGFjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdHZhciBhY3Rpb25zID0gdGFibGVEZWZpbml0aW9uPy5hY3Rpb25zO1xyXG5cdFx0XHRpZiAoYWN0aW9ucyAhPSBudWxsKSB7XHJcblx0XHRcdFx0YWN0aW9ucy5mb3JFYWNoKHkgPT4gdGhpcy5yb3dNZW51SXRlbXM/LnB1c2goeSkpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LyogSGlkZSBleGNsdWRlZCBjb2x1bW5zICovXHJcblx0XHR0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcigoeDogVGFibGVDb2x1bW4pID0+ICF0aGlzLmV4Y2x1ZGVkQ29sdW1ucz8uaW5jbHVkZXMoeC5uYW1lKSk7XHJcblxyXG5cdFx0LyogQWRkIGxpc3QgbW5ldSBpdGVtcyAqL1xyXG5cdFx0dGhpcy5hZGRUb29sYmFyTWVudUl0ZW1zKCk7XHJcblxyXG5cdFx0aWYgKHRoaXMuZHluYW1pY1RhYmxlKSB7XHJcblx0XHRcdC8qIEFkZCBtZW51IGl0ZW1zIGZvciBlYWNoIHJvdyAqL1xyXG5cdFx0XHR0aGlzLmFkZFJvd01lbnVJdGVtcygpO1xyXG5cclxuXHRcdFx0LyogQ2hlY2sgaWYgdGhlIGFjdGlvbiBjb2x1bW4gYWxyZWFkeSBleGlzdHMgKi9cclxuXHRcdFx0dmFyIGFjdGlvbkNvbG11biA9ICh0aGlzLmNvbHVtbnMgYXMgVGFibGVDb2x1bW5bXSk/LmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2FjdGlvbicpO1xyXG5cclxuXHRcdFx0LyogSWYgc28sIGp1c3QgYWRkIHRoZSBtZW51IGl0ZW1zIHRvIGl0ICovXHJcblx0XHRcdGlmIChhY3Rpb25Db2xtdW4pIHtcclxuXHRcdFx0XHRhY3Rpb25Db2xtdW4ucm93TWVudUl0ZW1zID8/PSBbXTtcclxuXHRcdFx0XHR0aGlzLnJvd01lbnVJdGVtcy5mb3JFYWNoKHkgPT4gYWN0aW9uQ29sbXVuIS5yb3dNZW51SXRlbXMhLnVuc2hpZnQoeSkpO1xyXG5cclxuXHRcdFx0XHQvKiBDcmVhdGUgYSB0YWJsZSBtZW51ICovXHJcblx0XHRcdFx0YWN0aW9uQ29sbXVuLm1lbnUgPSBuZXcgQWN0aW9uSXRlbSh7XHJcblx0XHRcdFx0XHRpY29uOiAnbW9yZV92ZXJ0JyxcclxuXHRcdFx0XHRcdGl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtc1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBPdGhlcndpc2UgYWRkIGEgbmV3IG9uZSAqL1xyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR0aGlzLmNvbHVtbnMucHVzaChuZXcgVGFibGVDb2x1bW4oe1xyXG5cdFx0XHRcdFx0aW5kZXg6IDIwMDAsXHJcblx0XHRcdFx0XHRuYW1lOiAnYWN0aW9uJyxcclxuXHRcdFx0XHRcdHR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BY3Rpb24sXHJcblx0XHRcdFx0XHRkaXNhYmxlZDogdHJ1ZSxcclxuXHRcdFx0XHRcdG1lbnU6IG5ldyBBY3Rpb25JdGVtKHtcclxuXHRcdFx0XHRcdFx0aWNvbjogJ21vcmVfdmVydCcsXHJcblx0XHRcdFx0XHRcdGl0ZW1zOiB0aGlzLnJvd01lbnVJdGVtc1xyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHRyb3dNZW51SXRlbXM6IHRoaXMucm93TWVudUl0ZW1zLFxyXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZVxyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFx0fVxyXG5cclxuXHJcblxyXG5cdFx0XHR0aGlzLnVwZGF0ZUNvbHVtbnModHJ1ZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogU2V0IHF1ZXJ5IHBhcmFtcyBpbnRvIHF1ZXJ5IG9iamVjdCAqL1xyXG5cdFx0dGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoeCA9PiBPYmplY3QuYXNzaWduKHRoaXMucXVlcnksIHggfHwge30sIHsgcmV0dXJuVXJsOiBudWxsIH0pKTtcclxuXHJcblx0XHQvKiBJbml0aWxpYWxpemUgdGhlIGRhdGEgc291cmNlIHdpdGggdGhlIGN1cnJlbnQgc2VydmljZSwgcGFnaW5hdG9yIGFuZCBzb3J0ICovXHJcblx0XHR0aGlzLnNvcnQgPSB0aGlzLmR5bmFtaWNUYWJsZT8ubWF0U29ydCB8fCAodGhpcy5zb3J0ID8gdGhpcy5zb3J0IDogbmV3IE1hdFNvcnQoKSk7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UgPSBuZXcgVGFibGVEYXRhU291cmNlPFRFbnRpdHksIFRTZXJ2aWNlPih0aGlzLnNlcnZpY2UhLCB0aGlzLnBhZ2luYXRvciwgdGhpcy5zb3J0KTtcclxuXHJcblx0XHQvKiBTZXQgaW5jbHVkZXMgKi9cclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5pbmNsdWRlcyA9IHRoaXMuaW5jbHVkZXM7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHJcblx0XHQvKiBMb2FkIHF1ZXJ5IGZyb20gYnJvd3NlciBzdG9yYWdlICovXHJcblx0XHR2YXIgc3RvcnJlZFF1ZXJ5ID0gdGhpcy5saXN0Q29uZmlnPy5xdWVyeTtcclxuXHRcdGlmIChzdG9ycmVkUXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLmZpZWxkRmlsdGVycyA9IHRoaXMuY2xlYW4oc3RvcnJlZFF1ZXJ5LmZpZWxkRmlsdGVycykgfHwge307XHJcblx0XHRcdHRoaXMuc29ydEFjdGl2ZSA9IHN0b3JyZWRRdWVyeS5zb3J0Qnk7XHJcblx0XHRcdHRoaXMuc29ydERpcmVjdGlvbiA9IHN0b3JyZWRRdWVyeS5zb3J0RGlyZWN0aW9uO1xyXG5cdFx0XHR0aGlzLmRhdGFTb3VyY2UucGFnZVNpemUgPSBzdG9ycmVkUXVlcnkucGFnZVNpemU7XHJcblx0XHRcdHRoaXMuZGF0YVNvdXJjZS5wYWdlSW5kZXggPSBzdG9ycmVkUXVlcnkucGFnZUluZGV4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIEFkZCBzb21lIGZpbHRlciBmcm9tIHJvdXRlciAqL1xyXG5cdFx0aWYgKHRoaXMucXVlcnkpIHtcclxuXHRcdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHRoaXMucXVlcnk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogUmVtZW1iZXIgdGhlIGZpbHRlcnMgKi9cclxuXHRcdHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YVNvdXJjZS5vbkRhdGFMb2FkZWQuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG5cdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0dGhpcy5saXN0Q29uZmlnID8/PSB7IGNvbmZpZ3M6IFtdLCBxdWVyeToge30gfTtcclxuXHRcdFx0XHR0aGlzLmxpc3RDb25maWcucXVlcnkgPSB7XHJcblx0XHRcdFx0XHRmaWVsZEZpbHRlcnM6IHRoaXMuZGF0YVNvdXJjZS5maWVsZEZpbHRlcnMsXHJcblx0XHRcdFx0XHRzb3J0Qnk6IHRoaXMuc29ydD8uYWN0aXZlLFxyXG5cdFx0XHRcdFx0c29ydERpcmVjdGlvbjogdGhpcy5zb3J0Py5kaXJlY3Rpb24sXHJcblx0XHRcdFx0XHRwYWdlU2l6ZTogdGhpcy5wYWdpbmF0b3I/LnBhZ2VTaXplLFxyXG5cdFx0XHRcdFx0cGFnZUluZGV4OiB0aGlzLnBhZ2luYXRvcj8ucGFnZUluZGV4LFxyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdC8qIFNhdmUgdGhlIHNldHRpbmdzICovXHJcblx0XHRcdFx0QXBwU3RvcmFnZS5zZXRPYmplY3RFbmNvZGVkKHRoaXMuY29uZmlnc0tleSwgdGhpcy5saXN0Q29uZmlnKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25uZWN0cyBhIGNvbGxlY3Rpb24gdmlld2VyIChzdWNoIGFzIGEgZGF0YS10YWJsZSkgdG8gdGhlIGRhdGEgc291cmNlLiBcclxuXHQgKiBAcGFyYW0gc3RhdGljRmllbGRGaWx0ZXJzIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb25uZWN0KHN0YXRpY0ZpZWxkRmlsdGVyczogYW55ID0gbnVsbCwgcGF0aD86IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnBhdGggPSBwYXRoO1xyXG5cdFx0dGhpcy5kYXRhU291cmNlLnN0YXRpY0ZpZWxkRmlsdGVycyA9IHN0YXRpY0ZpZWxkRmlsdGVycyB8fCB7fTtcclxuXHRcdHRoaXMuZGF0YVNvdXJjZS5jb25uZWN0KHVuZGVmaW5lZCkuc3Vic2NyaWJlKCk7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmR5bmFtaWNUYWJsZSkge1xyXG5cdFx0XHR0aGlzLmFkZFJvd01lbnVJdGVtcygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVXBkYXRlcyB0aGUgdGFibGUgY29sdW1uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGRhdGVDb2x1bW5zKGxvYWRDb25maWc/OiBib29sZWFuKTogdm9pZCB7XHJcblx0XHQvKiBHZXQgY29uZmlnIGZyb20gbG9jYWwgc3RvcmFnZSAqL1xyXG5cdFx0aWYgKGxvYWRDb25maWcpIHtcclxuXHRcdFx0dGhpcy5sb2FkQ29uZmlncygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNvcnQgdGhlIGNvbHVtbnMgYnkgaW5kZXggKi9cclxuXHRcdFV0aWxzLnNvcnRBcnJheSh0aGlzLmNvbHVtbnMgfHwgW10sICdpbmRleCcpO1xyXG5cclxuXHRcdC8qIFRyaWdnZXIgY2hhbmdlcyAqL1xyXG5cdFx0dGhpcy5keW5hbWljVGFibGU/LnVwZGF0ZUNvbHVtbnMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlbG9hZHMgaXRlbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9hZExpc3QocmVzZXRTZWxlY3Rpb246IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcblx0XHR0aGlzPy5kYXRhU291cmNlPy5yZWxvYWQocmVzZXRTZWxlY3Rpb24pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2VhcmNoXHJcblx0ICogQHBhcmFtIGZpbHRlciBcclxuXHQgKi9cclxuXHRwdWJsaWMgc2VhcmNoKGZpbHRlcjogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIE5hdmlnYXRlcyB0byB0aGUgYWRkIHBhZ2UuXHJcblx0ICovXHJcblx0cHVibGljIGFkZCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmFkZERpYWxvZ1R5cGUpIHtcclxuXHRcdFx0dGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4odGhpcy5hZGREaWFsb2dUeXBlLCB7IHdpZHRoOiAnNjUwcHgnLCBkYXRhOiB0aGlzLmNsYXNzSW5zdGFuY2UgfSlcclxuXHRcdFx0XHQuYWZ0ZXJDbG9zZWQoKVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkTGlzdChmYWxzZSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dmFyIGhhc1BhcmFtcyA9IE9iamVjdC5rZXlzKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpLmxlbmd0aCA+IDA7XHJcblx0XHRcdHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG5cdFx0XHRcdFtgJHt0aGlzLmN1cnJlbnRCYXNlUm91dGV9L2FkZGBdLFxyXG5cdFx0XHRcdHsgcXVlcnlQYXJhbXM6IGhhc1BhcmFtcyA/IHsgcmV0dXJuVXJsOiB0aGlzLmN1cnJlbnRSb3V0ZSB9IDoge30sIHJlbGF0aXZlVG86IHRoaXMucm91dGUgfVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcbiAqIE5hdmlnYXRlcyB0byB0aGUgZWRpdCBwYWdlLlxyXG4gKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0byBiZSBlZGl0ZWQuXHJcbiAqIEBwYXJhbSBjb250ZXh0IC0gQWRkaXRpb25hbCBjb250ZXh0IGRhdGEuXHJcbiAqL1xyXG5cdHB1YmxpYyBlZGl0KGVudGl0eT86IFRFbnRpdHksIGNvbnRleHQ/OiBhbnkpOiB2b2lkIHtcclxuXHRcdC8qIENoZWNrIGlmIGVudGl0eSBpcyBudWxsICovXHJcblx0XHRpZiAoZW50aXR5ID09PSBudWxsIHx8IGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcignRW50aXR5IG11c3QgYmUgZGVmaW5lZCBmb3IgZWRpdGluZy4nKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBDaGVjayBpZiB0ZXh0IGlzIHNlbGVjdGVkICovXHJcblx0XHRpZiAoIXRoaXMuaXNUZXh0U2VsZWN0ZWQoKSkge1xyXG5cdFx0XHQvKiBJZiBhIGN1c3RvbSBvbkVkaXQgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGNhbGwgaXQgKi9cclxuXHRcdFx0aWYgKHRoaXMub25FZGl0KSB7XHJcblx0XHRcdFx0LyogQ2FsbCB0aGUgY3VzdG9tIG9uRWRpdCBmdW5jdGlvbiB3aXRoIHRoZSBlbnRpdHkgYW5kIGNvbnRleHQgKi9cclxuXHRcdFx0XHR0aGlzLm9uRWRpdChlbnRpdHksIGNvbnRleHQpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdC8qIElmIG9uRWRpdCBpcyBub3QgcHJvdmlkZWQsIGNvbnN0cnVjdCB0aGUgZWRpdCByb3V0ZSBhbmQgbmF2aWdhdGUgKi9cclxuXHRcdFx0XHRjb25zdCBoYXNQYXJhbXMgPSBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zKS5sZW5ndGggPiAwO1xyXG5cclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byB0aGUgZWRpdCBwYWdlIHdpdGggdGhlIGVudGl0eSdzIGlkIGFuZCBvcHRpb25hbCBxdWVyeSBwYXJhbWV0ZXJzICovXHJcblx0XHRcdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcblx0XHRcdFx0XHRbYCR7dGhpcy5jdXJyZW50QmFzZVJvdXRlfS9lZGl0YCwgKGVudGl0eSBhcyBhbnkpPy5pZF0sXHJcblx0XHRcdFx0XHR7IHF1ZXJ5UGFyYW1zOiBoYXNQYXJhbXMgPyB7IHJldHVyblVybDogdGhpcy5jdXJyZW50Um91dGUgfSA6IHt9LCByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlIH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBQYXRjaGVzIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBlbnRpdHlcclxuXHQgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIChvcHRpb25hbCkgdmFsdWUgdG8gY2hhbmdlXHJcblx0ICogQHBhcmFtIGluY2x1ZGVzIEluY2x1ZGVzIHNvbWUgbmF2aWdhdGlvbnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGF0Y2goaWQ6IG51bWJlciwgZmllbGRzOiBBcnJheTxzdHJpbmc+LCB2YWx1ZTogYW55LCBpbmNsdWRlcz86IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5fcGF0Y2goaWQsIGZpZWxkcywgdmFsdWUsIGluY2x1ZGVzLCAoXzogYW55KSA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGF0Y2hlcyB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZW50aXR5XHJcblx0ICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIHBhdGNoXHJcblx0ICogQHBhcmFtIHZhbHVlIFRoZSAob3B0aW9uYWwpIHZhbHVlIHRvIGNoYW5nZVxyXG5cdCAqIEBwYXJhbSBpbmNsdWRlcyBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcblx0ICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGUgY2FsbGVkIG9uIHN1Y2Nlc3NcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3BhdGNoKGlkOiBudW1iZXIsIGZpZWxkczogQXJyYXk8c3RyaW5nPiwgdmFsdWU6IGFueSwgaW5jbHVkZXM/OiBhbnksIHN1Y2Nlc3NDYWxsYmFjaz86IEZ1bmN0aW9uKTogdm9pZCB7XHJcblx0XHR0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuXHJcblx0XHQvKiBHZXQgZW50aXR5IGJ5IElEICovXHJcblx0XHRsZXQgZW50aXR5ID0gdGhpcy5kYXRhU291cmNlLml0ZW1zPy5maWx0ZXIoKHg6IGFueSkgPT4gKDxhbnk+eCkuaWQgPT09IGlkKVswXTtcclxuXHRcdGlmIChlbnRpdHkpIHtcclxuXHRcdFx0LyogQnVpbGQgcGF0Y2ggbWV0aG9kcyAqL1xyXG5cdFx0XHRsZXQgcGF0Y2hlcyA9IGZpZWxkcy5tYXAoeCA9PiB7IHJldHVybiB7IG9wOiAncmVwbGFjZScsIHBhdGg6IGAvJHt4fWAsIHZhbHVlOiB2YWx1ZSAhPSB1bmRlZmluZWQgPyB2YWx1ZSA6IGVudGl0eVt4XSB9OyB9KTtcclxuXHJcblx0XHRcdC8qIFNlbmQgcmVxdWVzdCAqL1xyXG5cdFx0XHR0aGlzLnNlcnZpY2VcclxuXHRcdFx0XHQucGF0Y2goaWQsIHBhdGNoZXMsIHVuZGVmaW5lZCwgeyBoZWFkZXJzOiB7ICdTaG93LU1lc3NhZ2UnOiAnWWVzJyB9LCBwYXJhbXM6IGluY2x1ZGVzID8gVXRpbHMudG9IdHRwUGFyYW1zKHsgaW5jbHVkZXM6IGluY2x1ZGVzIH0pIDogbnVsbCB9KVxyXG5cdFx0XHRcdC5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0bmV4dDogKHgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzc0NhbGxiYWNrKSB7XHJcblx0XHRcdFx0XHRcdFx0c3VjY2Vzc0NhbGxiYWNrKHgpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LCBlcnJvcjogKF8pID0+IHRoaXMuaXNTYXZpbmcgPSBmYWxzZVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBhbiBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGVJdGVtKGVudGl0eT86IFRFbnRpdHkpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2hvd0RlbGV0ZUl0ZW1EaWFsb2coKS5zdWJzY3JpYmUoKGFjY2VwdDogYm9vbGVhbikgPT4ge1xyXG5cdFx0XHRpZiAoYWNjZXB0KSB7XHJcblx0XHRcdFx0dGhpcy5zZXJ2aWNlLmRlbGV0ZSgoZW50aXR5IGFzIGFueSkuaWQpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0XHRuZXh0OiAoXykgPT4gdGhpcy5vbkFmdGVySXRlbURlbGV0ZWQoPGFueT5lbnRpdHkpLFxyXG5cdFx0XHRcdFx0ZXJyb3I6IChlcnJvcikgPT4gdGhpcy5sb2coZXJyb3IpXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBhbiBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGVJdGVtcygpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmRhdGFTb3VyY2Uuc2VsZWN0aW9uTW9kZWwuaGFzVmFsdWUoKSkge1xyXG5cdFx0XHR0aGlzLnNob3dEZWxldGVJdGVtc0RpYWxvZygpLnN1YnNjcmliZSgoYWNjZXB0OiBib29sZWFuKSA9PiB7XHJcblx0XHRcdFx0aWYgKGFjY2VwdCkge1xyXG5cdFx0XHRcdFx0bGV0IGlkcyA9IHRoaXMuZGF0YVNvdXJjZS5nZXRTZWxlY3RlZElkcygpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXJ2aWNlLmRlbGV0ZUxpc3QoaWRzKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRcdFx0XHRuZXh0OiAoXykgPT4gdGhpcy5vbkFmdGVySXRlbXNEZWxldGVkKGlkcyksXHJcblx0XHRcdFx0XHRcdGVycm9yOiAoZXJyb3IpID0+IHRoaXMubG9nKGVycm9yKVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRvZ2dsZXMgYSBwcm9wZXJ0eVxyXG5cdCAqIEBwYXJhbSBpdGVtIFxyXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b2dnbGUoaXRlbTogVEVudGl0eSwgcHJvcGVydHk6IHN0cmluZyA9ICdlbmFibGVkJyk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZXJ2aWNlXHJcblx0XHRcdC5wYXRjaCgoPGFueT5pdGVtKS5pZCwgW3sgb3A6ICdyZXBsYWNlJywgcGF0aDogYC8ke3Byb3BlcnR5fWAsIHZhbHVlOiAoaXRlbSBhcyBhbnkpW3Byb3BlcnR5XSB9XSlcclxuXHRcdFx0LnN1YnNjcmliZSh4ID0+IHRoaXMubG9hZExpc3QoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGxvYWRzIHRhcm5zZmVycyBjc3YgZmlsZXNcclxuXHQgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSB0byB1cGxvYWRcclxuXHQgKiBAcGFyYW0gcmVsb2FkIElmIHRydWUsIHJlbG9hZCBpdGVtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGxvYWQoZmlsZTogRmlsZSwgcmVsb2FkOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0dGhpcy5zZXJ2aWNlLnVwbG9hZChmaWxlKS5zdWJzY3JpYmUoe1xyXG5cdFx0XHRuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHRyZXNwb25zZSA9IHJlc3BvbnNlLmpzb24oKTtcclxuXHJcblx0XHRcdFx0LyogUmVsb2FkIGxpc3QgKi9cclxuXHRcdFx0XHRpZiAocmVsb2FkKSB7XHJcblx0XHRcdFx0XHR0aGlzLmxvYWRMaXN0KCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LCBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmxvZyhlcnJvcilcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRG93bmxvYWRzIGEgZG9jdW1lbnRcclxuXHQgKiBAcGFyYW0gZW50aXR5IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkb3dubG9hZChlbnRpdHk/OiBURW50aXR5LCBwYXRoOiBzdHJpbmcgPSAnZG93bmxvYWQnKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlcnZpY2UuZG93bmxvYWQoYCR7cGF0aH0vJHsoZW50aXR5IGFzIElFbnRpdHkpLmlkfWApLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0c2F2ZUFzKG5ldyBCbG9iKFt4LmRhdGFdLCB7fSksIHguZmlsZW5hbWUpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEdXBsaWNhdGVzIGEgcmVjb3JkXHJcblx0ICogQHBhcmFtIGVudGl0eSBcclxuXHQgKi9cclxuXHRwdWJsaWMgZHVwbGljYXRlKGVudGl0eT86IFRFbnRpdHkpIHtcclxuXHRcdHRoaXMuc2VydmljZS5kdXBsaWNhdGUoKGVudGl0eSBhcyBhbnkpLmlkKS5zdWJzY3JpYmUoXyA9PiB0aGlzLmxvYWRMaXN0KCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhpcyBpbmZvcm1zIHRoZSB0YWJsZSBob3cgdG8gdW5pcXVlbHkgaWRlbnRpZnkgcm93cyB0byBcclxuXHQgKiB0cmFjayBob3cgdGhlIGRhdGEgY2hhbmdlcyB3aXRoIGVhY2ggdXBkYXRlLlxyXG5cdCAqIEBwYXJhbSBpbmRleCBcclxuXHQgKiBAcGFyYW0gaXRlbSBcclxuXHQgKi9cclxuXHRwdWJsaWMgdHJhY2tCeUlkKF86IG51bWJlciwgaXRlbTogYW55KSB7XHJcblx0XHRyZXR1cm4gaXRlbS5pZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wZW5zIHRoZSBjb25maWcgZGlhbG9nXHJcblx0ICovXHJcblx0cHVibGljIG9wZW5Db25maWdEaWFsb2coKTogdm9pZCB7XHJcblx0XHR0aGlzLmRpYWxvZy5vcGVuKFZkRHluYW1pY1RhYmxlQ29uZmlnRGlhbG9nQ29tcG9uZW50LCB7XHJcblx0XHRcdHdpZHRoOiAnOTAwcHgnLFxyXG5cdFx0XHRkYXRhOiB0aGlzLFxyXG5cdFx0XHRkaXNhYmxlQ2xvc2U6IHRydWUsXHJcblx0XHRcdHBhbmVsQ2xhc3M6IFsnZmxhdC1kaWFsb2cnLCAnZGlhbG9nLWZ1bGwtc2NyZWVuJ11cclxuXHRcdH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKF8gPT4gdGhpcy5yZWxvYWRQYWdlKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2F2ZXMgdGhlIHRhYmxlIGNvbmZpZ1xyXG5cdCAqIEBwYXJhbSBjb25maWdzXHJcblx0ICovXHJcblx0cHVibGljIHNhdmVDb25maWdzKGNvbmZpZ3M6IFRhYmxlQ29sdW1uQ29uZmlnW10pOiB2b2lkIHtcclxuXHRcdGlmIChjb25maWdzKSB7XHJcblx0XHRcdC8qIFNldCB0aGUgY29uZmlnIGluIHRoZSBsaXN0IGNvbmZpZyAqL1xyXG5cdFx0XHR0aGlzLmxpc3RDb25maWcgPz89IHsgY29uZmlnczogW10sIHF1ZXJ5OiB7fSB9O1xyXG5cdFx0XHR0aGlzLmxpc3RDb25maWcuY29uZmlncyA9IGNvbmZpZ3M7XHJcblxyXG5cdFx0XHQvKiBTYXZlIHRoZSBjb25maWdzICovXHJcblx0XHRcdEFwcFN0b3JhZ2Uuc2V0T2JqZWN0RW5jb2RlZCh0aGlzLmNvbmZpZ3NLZXksIHRoaXMubGlzdENvbmZpZyk7XHJcblxyXG5cdFx0XHQvKiBTZXQgdGhlIHRhYmxlIGNvbHVtbnMgKi9cclxuXHRcdFx0dGhpcy51cGRhdGVDb2x1bW5zKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGFuZCBhcHBsaWVzIHRoZSB0YWJsZSBjb25maWdzXHJcblx0ICovXHJcblx0cHVibGljIGxvYWRDb25maWdzKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubGlzdENvbmZpZz8uY29uZmlncykge1xyXG5cdFx0XHR0cnkge1xyXG5cdFx0XHRcdCh0aGlzLmxpc3RDb25maWc/LmNvbmZpZ3MgPz8gW10pPy5mb3JFYWNoKCh4OiBUYWJsZUNvbHVtbkNvbmZpZykgPT4ge1xyXG5cdFx0XHRcdFx0dmFyIGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKHk6IFRhYmxlQ29sdW1uKSA9PiB5Lm5hbWUgPT0geC5uYW1lKVswXTtcclxuXHRcdFx0XHRcdGlmIChjb2x1bW4pIHtcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihjb2x1bW4sIHgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9IGNhdGNoIChlcnJvcikgeyB9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBJbmNsdWRlcyBzb21lIG5hdmlnYXRpb25zXHJcblx0ICogQHBhcmFtIGluYyBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaW5jbHVkZSguLi5pbmM6IHN0cmluZ1tdKSB7XHJcblx0XHRpbmM/LmZvckVhY2goeCA9PiB0aGlzLmluY2x1ZGVzLnB1c2goeCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWRkIHRvb2xiYXIgbWVudSBpdGVtc1xyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBhZGRUb29sYmFyTWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0LyogQWRkICdEZWxldGUgc2VsZWN0ZWQnIG1lbnUgaXRlbSAqL1xyXG5cdFx0aWYgKHRoaXMuZGVsZXRhYmxlKSB7XHJcblx0XHRcdHRoaXMudG9vbGJhck1lbnVJdGVtcy5wdXNoKHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGRlbGV0ZVNlbGVjdGVkOkRlbGV0ZSBzZWxlY3RlZGAsXHJcblx0XHRcdFx0aWNvbjogJ2RlbGV0ZV9mb3JldmVyJyxcclxuXHRcdFx0XHRpY29uQ2xhc3M6ICd0Yy1vcmFuZ2UtODAwJyxcclxuXHRcdFx0XHRldmVudDogKCkgPT4gdGhpcy5kZWxldGVJdGVtcygpLFxyXG5cdFx0XHRcdGhpZGU6ICgpID0+ICF0aGlzLmNhbkRlbGV0ZSxcclxuXHRcdFx0XHRkaXNhYmxlOiAoKSA9PiAhdGhpcy5jYW5FeGVjdXRlTXVsdGlwbGVPcGVyYXRpb25zKCh4OiBURW50aXR5KSA9PiB0aGlzLmNhbkRlbGV0ZUl0ZW0oeCkpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIE9wZW5zIGNvbmZpZyBkaWFsb2cgKi9cclxuXHRcdGlmICh0aGlzLmNvbmZpZ3VyYWJsZSkge1xyXG5cdFx0XHR0aGlzLnRvb2xiYXJNZW51SXRlbXMucHVzaCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBjb25maWd1cmVUYWJsZTpDb25maWd1cmUgdGFibGVgLFxyXG5cdFx0XHRcdGljb246ICdzZXR0aW5ncycsXHJcblx0XHRcdFx0ZXZlbnQ6ICgpID0+IHRoaXMub3BlbkNvbmZpZ0RpYWxvZygpXHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICh0aGlzLnRvb2xiYXJNZW51SXRlbXM/Lmxlbmd0aCkge1xyXG5cdFx0XHQvKiBTb3J0IHRoZSBtZW51IGl0ZW1zIGJ5IGluZGV4ICovXHJcblx0XHRcdFV0aWxzLnNvcnRBcnJheSh0aGlzLnRvb2xiYXJNZW51SXRlbXMsICdpbmRleCcpO1xyXG5cclxuXHRcdFx0LyogQWRkIHRoZSB0b29sYmFyIG1lbnUgaXRlbXMgdG8gdGhlIHRoZSB0b29sYmFyIGFjdGlvbnMgKi9cclxuXHRcdFx0dGhpcy50b29sYmFyQWN0aW9ucy5wdXNoKHsgaWNvbjogJ21vcmVfdmVydCcsIGl0ZW1zOiB0aGlzLnRvb2xiYXJNZW51SXRlbXMgfSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBZGQgcm93IG1lbnUgaXRlbXNcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgYWRkUm93TWVudUl0ZW1zKCk6IHZvaWQge1xyXG5cdFx0LyogQWRkIGNoZWNrYm94IGNvbHVtbiAqL1xyXG5cdFx0aWYgKHRoaXMuc2VsZWN0YWJsZSkge1xyXG5cdFx0XHR0aGlzLmNvbHVtbnMudW5zaGlmdChuZXcgVGFibGVDb2x1bW4oe1xyXG5cdFx0XHRcdG5hbWU6ICdzZWxlY3QnLFxyXG5cdFx0XHRcdHR5cGU6IFRhYmxlQ29sdW1uVHlwZS5DaGVja2JveCxcclxuXHRcdFx0XHRkaXNhYmxlOiAocm93PzogVEVudGl0eSkgPT4gIXRoaXMuY2FuU2VsZWN0SXRlbShyb3cpLFxyXG5cdFx0XHRcdGNlbGxOZ0NsYXNzOiAocm93OiBURW50aXR5KSA9PiB0aGlzLnNlbGVjdFJvd05nQ2xhc3Mocm93KSxcclxuXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlXHJcblx0XHRcdH0pKTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZHVwbGljYXRlIG1lbnUgKi9cclxuXHRcdGlmICh0aGlzLmR1cGxpY2FibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkdXBsaWNhdGU6RHVwbGljYXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZmlsZV9jb3B5JyxcclxuXHRcdFx0XHRldmVudDogKHJvdz86IFRFbnRpdHkpID0+IHRoaXMuZHVwbGljYXRlKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhbkR1cGxpY2F0ZUl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZG93bmxvYWQgbWVudSAqL1xyXG5cdFx0aWYgKHRoaXMuZG93bmxvYWRhYmxlKSB7XHJcblx0XHRcdHRoaXMucm93TWVudUl0ZW1zLnVuc2hpZnQoe1xyXG5cdFx0XHRcdHRpdGxlOiAkbG9jYWxpemVgOkBAZG93bmxvYWQ6RG93bmxvYWRgLFxyXG5cdFx0XHRcdGljb246ICdmaWxlX2Rvd25sb2FkJyxcclxuXHRcdFx0XHRldmVudDogKHJvdz86IFRFbnRpdHkpID0+IHRoaXMuZG93bmxvYWQocm93KSxcclxuXHRcdFx0XHRoaWRlOiAocm93PzogVEVudGl0eSkgPT4gIXRoaXMuY2FuRG93bmxvYWRJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0LyogQWRkIGRlbGV0ZSBtZW51ICovXHJcblx0XHRpZiAodGhpcy5kZWxldGFibGUpIHtcclxuXHRcdFx0dGhpcy5yb3dNZW51SXRlbXMudW5zaGlmdCh7XHJcblx0XHRcdFx0dGl0bGU6ICRsb2NhbGl6ZWA6QEBkZWxldGU6RGVsZXRlYCxcclxuXHRcdFx0XHRpY29uOiAnZGVsZXRlX2ZvcmV2ZXInLFxyXG5cdFx0XHRcdGljb25DbGFzczogJ3RjLW9yYW5nZS04MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93PzogVEVudGl0eSkgPT4gdGhpcy5kZWxldGVJdGVtKHJvdyksXHJcblx0XHRcdFx0aGlkZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhbkRlbGV0ZUl0ZW0ocm93KVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvKiBBZGQgZWRpdCBtZW51ICovXHJcblx0XHRpZiAodGhpcy5lZGl0YWJsZSkge1xyXG5cdFx0XHR0aGlzLnJvd01lbnVJdGVtcy51bnNoaWZ0KHtcclxuXHRcdFx0XHR0aXRsZTogJGxvY2FsaXplYDpAQGVkaXQ6RWRpdGAsXHJcblx0XHRcdFx0aWNvbjogJ2VkaXRfbm90ZScsXHJcblx0XHRcdFx0aWNvbkNsYXNzOiAndGMtYmx1ZS00MDAnLFxyXG5cdFx0XHRcdGV2ZW50OiAocm93PzogVEVudGl0eSkgPT4gdGhpcy5lZGl0KHJvdywgdGhpcyksXHJcblx0XHRcdFx0aGlkZTogKHJvdz86IFRFbnRpdHkpID0+ICF0aGlzLmNhbkVkaXRJdGVtKHJvdylcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBzZWxlY3RhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhblNlbGVjdEl0ZW0oZW50aXR5PzogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ3NlbGVjdGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ3NlbGVjdGFibGUnXTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBkZWxldGFibGVcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgY2FuRGVsZXRlSXRlbShlbnRpdHk/OiBURW50aXR5KTogYm9vbGVhbiB7IHJldHVybiB0aGlzLmNhbkRlbGV0ZSAmJiAoIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2RlbGV0YWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnZGVsZXRhYmxlJ10pOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGVkaXRhYmxlXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGNhbkVkaXRJdGVtKGVudGl0eT86IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuY2FuVXBkYXRlICYmICghZW50aXR5Py5oYXNPd25Qcm9wZXJ0eSgnZWRpdGFibGUnKSB8fCAoZW50aXR5IGFzIGFueSlbJ2VkaXRhYmxlJ10pOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSBpdGVtIGlzIGRvd25sb2FkYWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5Eb3dubG9hZEl0ZW0oZW50aXR5PzogVEVudGl0eSk6IGJvb2xlYW4geyByZXR1cm4gIWVudGl0eT8uaGFzT3duUHJvcGVydHkoJ2Rvd25sb2FkYWJsZScpIHx8IChlbnRpdHkgYXMgYW55KVsnZG93bmxvYWRhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgZHVwbGljYWJsZVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5EdXBsaWNhdGVJdGVtKGVudGl0eT86IFRFbnRpdHkpOiBib29sZWFuIHsgcmV0dXJuICFlbnRpdHk/Lmhhc093blByb3BlcnR5KCdkdXBsaWNhYmxlJykgfHwgKGVudGl0eSBhcyBhbnkpWydkdXBsaWNhYmxlJ107IH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJucyBOZ0NsYXNzIG9iamVjdCBmb3Igc2VsZWN0IGNvbHVtblxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBzZWxlY3RSb3dOZ0NsYXNzKF86IFRFbnRpdHkpOiBhbnkgeyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrIGlmIHRoZSB0aGVyZSBhbnkgc2VsZWN0ZWQgcm93XHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGhhc1NlbGVjdGVkUm93cygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZT8uc2VsZWN0aW9uTW9kZWw/Lmhhc1ZhbHVlKCkgfTtcclxuXHJcblx0LyoqXHJcblx0ICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBlbnRpdHkgaGFzIGJlZW4gZGVsZXRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgb25BZnRlckl0ZW1EZWxldGVkKGl0ZW06IElFbnRpdHkpOiB2b2lkIHtcclxuXHRcdHRoaXMubG9hZExpc3QodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGVudGl0aWVzIGhhcyBiZWVuIGRlbGV0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIG9uQWZ0ZXJJdGVtc0RlbGV0ZWQoaWRzOiBudW1iZXJbXSk6IHZvaWQge1xyXG5cdFx0dGhpcy5sb2FkTGlzdCh0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENoZWNrcyBpZiB0aGUgdXNlciBjYW4gcGVyZm9ybSBtdWx0aXBsZSBvcGVyYXRpb25zIChMaWtlICdkZWxldGUgc2VsZWN0ZWQnKS5cclxuXHQgKiBAcGFyYW0gYWN0aW9uIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBjYW5FeGVjdXRlTXVsdGlwbGVPcGVyYXRpb25zKGFjdGlvbj86IEZ1bmN0aW9uKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5oYXNTZWxlY3RlZFJvd3MoKSAmJiAoYWN0aW9uID8gdGhpcy5kYXRhU291cmNlPy5zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0ZWQ/LmV2ZXJ5KCh4OiBhbnkpID0+IGFjdGlvbih4KSkgOiB0cnVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlc3BvbmRzIHRvIHVzZXItaW5pdGlhdGVkIGV2ZW50c1xyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuXHRoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcblx0XHRpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XHJcblx0XHRcdHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcblx0XHRcdFx0LyogTmF2aWdhdGUgdG8gYWRkIHBhZ2UgKi9cclxuXHRcdFx0XHRjYXNlICdhJzpcclxuXHRcdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRcdFx0XHR0aGlzLmFkZCgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAodGhpcy5wYWdpbmF0b3IpIHtcclxuXHRcdFx0c3dpdGNoIChldmVudC5rZXkpIHtcclxuXHRcdFx0XHQvKiBOYXZpZ2F0ZSB0byBwcmV2aW91cyBwYWdlICovXHJcblx0XHRcdFx0Y2FzZSAnUGFnZVVwJzpcclxuXHRcdFx0XHRcdHRoaXMucGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblxyXG5cdFx0XHRcdC8qIE5hdmlnYXRlIHRvIG5leHQgcGFnZSAqL1xyXG5cdFx0XHRcdGNhc2UgJ1BhZ2VEb3duJzpcclxuXHRcdFx0XHRcdHRoaXMucGFnaW5hdG9yLm5leHRQYWdlKCk7XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayB1c2VkIGZvciBhbnkgY3VzdG9tIGNsZWFudXAgdGhhdCBuZWVkcyB0byBvY2N1ciBcclxuXHQgKiB3aGVuIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXHJcblx0ICovXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRzdXBlci5uZ09uRGVzdHJveSgpO1xyXG5cdFx0aWYgKHRoaXMuZGF0YUxvYWRlZFN1YnNjcmlwdGlvbikge1xyXG5cdFx0XHR0aGlzLmRhdGFMb2FkZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBTeW1ib2wudG9TdHJpbmdUYWcgd2VsbC1rbm93biBzeW1ib2wgaXMgYSBzdHJpbmcgdmFsdWVkIHByb3BlcnR5IHRoYXQgaXMgdXNlZCBcclxuXHQgKiBpbiB0aGUgY3JlYXRpb24gb2YgdGhlIGRlZmF1bHQgc3RyaW5nIGRlc2NyaXB0aW9uIG9mIGFuIG9iamVjdFxyXG5cdCAqL1xyXG5cdGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHsgcmV0dXJuICdHZW5lcmljTGlzdENvbXBvbmVudCc7IH1cclxufSJdfQ==
|