ng-miam 6.2.2 → 6.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ng-miam.umd.js +442 -146
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +2 -2
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/list-input/list-input.component.js +3 -1
- package/esm2015/lib/_services/baskets.service.js +14 -3
- package/esm2015/lib/_services/context.service.js +4 -1
- package/esm2015/lib/_services/ingredients.service.js +2 -11
- package/esm2015/lib/_services/interceptor.service.js +2 -2
- package/esm2015/lib/_types/builded/miam-interface.js +1 -1
- package/esm2015/lib/_web-components/catalog-recipe-card/catalog-recipe-card.component.js +101 -29
- package/esm2015/lib/_web-components/recipe-card/recipe-card.component.js +121 -49
- package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +131 -59
- package/fesm2015/ng-miam.js +369 -146
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_services/baskets.service.d.ts +2 -0
- package/lib/_types/builded/miam-interface.d.ts +4 -0
- package/package.json +1 -1
|
@@ -434,6 +434,8 @@ export class ListInputComponent {
|
|
|
434
434
|
this.orderHasChanged = new EventEmitter();
|
|
435
435
|
this.previousQuantities = [];
|
|
436
436
|
this.maxSelectionNumber = 5;
|
|
437
|
+
this.ingredientService.getReviewedNames();
|
|
438
|
+
this.ingredientService.getReviewedUnits();
|
|
437
439
|
}
|
|
438
440
|
delete(index) {
|
|
439
441
|
var _a;
|
|
@@ -773,4 +775,4 @@ ListInputComponent.ɵcmp = i0.ɵɵdefineComponent({ type: ListInputComponent, se
|
|
|
773
775
|
}], orderHasChanged: [{
|
|
774
776
|
type: Output
|
|
775
777
|
}] }); })();
|
|
776
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19jb21wb25lbnRzL2xpc3QtaW5wdXQvbGlzdC1pbnB1dC5jb21wb25lbnQudHMiLCJsaWIvX2NvbXBvbmVudHMvbGlzdC1pbnB1dC9saXN0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7SUNIakQsK0JBQXNFO0lBQXRFLGdCQUFzRTtJQUFXLGlCQUFNOzs7SUFDdkYsK0JBQXVFO0lBQXZFLGdCQUF1RTtJQUFNLGlCQUFNOzs7SUFZekUsMEJBQXlFOzs7SUFDekUsK0JBQ0U7SUFBQSxtQ0FBdUc7SUFDdkcsZ0NBQXlEO0lBQUEsWUFBb0Q7SUFBQSxpQkFBTztJQUN0SCxpQkFBTTs7Ozs7SUFGK0MsZUFBc0I7SUFBdEIsNENBQXNCO0lBQ2hCLGVBQW9EO0lBQXBELHNJQUFvRDs7OztJQVpySCw4QkFDRTtJQUFBLGlDQUNFO0lBQUEsaUNBQ0U7SUFBQSwrQkFDQTtJQUFBLG1DQUEySTtJQUMzSSx3Q0FDMEc7SUFEcEMs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VTtrQkFBbEIsS0FBSztZQUNHLElBQUk7a0JBQVosS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUVJLFFBQVE7a0JBQWpCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbix9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5ncmVkaWVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi9fbW9kZWxzL2luZ3JlZGllbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLWxpc3QtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlzdElucHV0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgLy8gVE9ETzogaW5wdXQgc3RyaW5nIGRvZXNuJ3Qgd29yayBhbnltb3JlIHdpdGggaTE4biwgdXNlIHRlbXBsYXRlIGFuZCBjaGVjayBpZiB0aGUgZmllbGQgaXMgc3RpbGwgbmVlZGVkXG4gIEBJbnB1dCgpIGluc3RydWN0aW9uczogc3RyaW5nO1xuICBASW5wdXQoKSBpbmdyZWRpZW50TW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1BlcnNvbmFsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxpc3Q6IEZvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICBASW5wdXQoKSBpbmdyZWRpZW50c1BpY3R1cmVzOiB7IHZpc2libGU6IGJvb2xlYW4sIGVkaXRhYmxlOiBib29sZWFuIH0gPSB7IHZpc2libGU6IGZhbHNlLCBlZGl0YWJsZTogZmFsc2UgfTtcblxuICBAT3V0cHV0KCkgZGVsZXRlSWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICBAT3V0cHV0KCkgb3JkZXJIYXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgaWNvbiA9IEljb247XG4gIGhpZGVFcnJvcnM6IGJvb2xlYW47XG4gIGZpbGxMaXN0SW5wdXQ6IEZvcm1Db250cm9sO1xuICBtb3Vzc2VEb3duT25CdXR0b246IGJvb2xlYW47XG4gIGJpZ0ltYWdlV2FybmluZyA9IGZhbHNlO1xuICBwcml2YXRlIHByZXZpb3VzUXVhbnRpdGllczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4U2VsZWN0aW9uTnVtYmVyOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmdyZWRpZW50U2VydmljZTogSW5ncmVkaWVudHNTZXJ2aWNlLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5maWxsTGlzdElucHV0ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICB0aGlzLmRlbGV0ZUlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMub3JkZXJIYXNDaGFuZ2VkICA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnByZXZpb3VzUXVhbnRpdGllcyA9IFtdO1xuICAgIHRoaXMubWF4U2VsZWN0aW9uTnVtYmVyID0gNTtcbiAgfVxuXG4gIGRlbGV0ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bYGNvbnRyb2xzYF0uaWQ/LnZhbHVlKSB7XG4gICAgICB0aGlzLmRlbGV0ZUlkLmVtaXQodGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XVtgY29udHJvbHNgXS5pZC52YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMubGlzdC5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5saXN0Lm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZmlsbExpc3RJbnB1dC52YWx1ZT8udHJpbUVuZCgpLnNwbGl0KCdcXG4nKTtcblxuICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0aGlzLmluZ3JlZGllbnRNb2RlKSB7XG4gICAgICAgIHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuZm9ybWF0SW5ncmVkaWVudHModmFsdWVzKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoaW5ncmVkaWVudHM6IEluZ3JlZGllbnRbXSkgPT4ge1xuICAgICAgICAgIGluZ3JlZGllbnRzLmZvckVhY2goaW5nID0+IHtcbiAgICAgICAgICAgIGluZy5hdHRyaWJ1dGVzLnF1YW50aXR5ID0gcGFyc2VGbG9hdChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMubGlzdC5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGluZy5pZCAhPT0gJy0xJyA/IGluZy5pZCA6IG51bGwpLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogbmV3IEZvcm1Db250cm9sKGluZy5hdHRyaWJ1dGVzLnF1YW50aXR5LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB1bml0OiBuZXcgRm9ybUNvbnRyb2woaW5nLmF0dHJpYnV0ZXMudW5pdCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKGluZy5hdHRyaWJ1dGVzLm5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIC8vIGltcG9ydGFuY2U6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5pbXBvcnRhbmNlLFxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pc1BlcnNvbmFsID8gVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yIDogVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgLy8gTm90IG1hbmRhdG9yeSBmb3IgdGhlIG1vbWVudCwgZGVjb21tZW50IGFib3ZlIGlmIG1hbmRhdG9yeSBsYXRlclxuICAgICAgICAgICAgICAgIGltcG9ydGFuY2U6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5pbXBvcnRhbmNlLCBWYWxpZGF0b3JzLm51bGxWYWxpZGF0b3IpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSk7XG4gICAgICAgICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoZWxlbWVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQudHJpbSgpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChlbGVtZW50KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGxMaXN0SW5wdXQucmVzZXQoKTtcbiAgICB0aGlzLm1vdXNzZURvd25PbkJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tSb3coaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XS5nZXQoJ2F0dHJpYnV0ZXMnKS5nZXQoJ2Rlc2NyaXB0aW9uJykudmFsdWUgfHwgIXRoaXMubGlzdC5jb250cm9sc1tpbmRleF0uZ2V0KCdhdHRyaWJ1dGVzJykuZ2V0KCdkZXNjcmlwdGlvbicpLnZhbHVlLnRyaW0oKSkge1xuICAgICAgdGhpcy5kZWxldGUoaW5kZXgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVF1YW50aXR5VmFsdWUoZXZlbnQsIGluZGV4KSB7XG4gICAgaWYgKE51bWJlci5pc05hTigrZXZlbnQpKXtcbiAgICAgIHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsncXVhbnRpdHknXS52YWx1ZSA9IHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gTmVjZXNzYXJ5IHRvIHVwZGF0ZSB0aGUgdmlldyB3aXRoIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XSA9IGV2ZW50OyAvLyBObyB1cGRhdGUgb2YgdGhlIHZpZXcgc28gbm8gY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH1cbiAgfVxuXG4gIGRyYWcoKSB7XG4gICAgdGhpcy5oaWRlRXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pOiB2b2lkIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5saXN0LmNvbnRyb2xzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIC8vIGlmIHlvdSByZW9yZGVyZWQgdGhlIGxpc3QgYmUgc3VyZSB0aGUgcHJldmlvdXMgcXVhbnRpdGllcyBjaGFuZ2VzIGFjY29yZGluZ2x5XG4gICAgaWYgKHRoaXMuaW5ncmVkaWVudE1vZGUpIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxpc3QuY29udHJvbHMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpWydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ3F1YW50aXR5J10udmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubGlzdC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuaGlkZUVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMub3JkZXJIYXNDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIGlzSW5ncmVkaWVudFJldmlld2VkKGluZ3JlZGllbnROYW1lKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuaXNSZXZpZXdlZE5hbWUoaW5ncmVkaWVudE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBpc1F1YW50aXR5UmV2aWV3ZWQodW5pdE5hbWUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pbmdyZWRpZW50U2VydmljZS5pc1Jldmlld2VkVW5pdCh1bml0TmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyLCBlbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICB1cGxvYWRJbmdyZWRpZW50UGljdHVyZShmaWxlczogRmlsZUxpc3QsIGluZ0Zvcm0pOiB2b2lkIHtcbiAgICBpZiAoIWZpbGVzWzBdIHx8ICFpbmdGb3JtKSB7IHJldHVybjsgfVxuICAgIGlmICghdGhpcy5pbWFnZVNpemVDaGVjayhmaWxlcywgNTEyICogNTEyKSkge1xuICAgICAgdGhpcy5iaWdJbWFnZVdhcm5pbmcgPSB0cnVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZXNbMF0pO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgaW5nRm9ybS5wYXRjaFZhbHVlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2hlY2tzIGlmIGltYWdlIHNpemUgPCBtYXhTaXplXG4gICAqIEBwYXJhbSBmaWxlc1xuICAgKiBAcGFyYW0gbWF4U2l6ZVxuICAgKi9cbiAgaW1hZ2VTaXplQ2hlY2soZmlsZXM6IEZpbGVMaXN0LCBtYXhTaXplOiBudW1iZXIpIHtcbiAgICByZXR1cm4gIWZpbGVzWzBdIHx8IGZpbGVzWzBdLnNpemUgPCBtYXhTaXplO1xuICB9XG5cbiAgY2xvc2VCaWdJbWFnZUVycm9yTW9kYWwoKSB7XG4gICAgdGhpcy5iaWdJbWFnZVdhcm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogZmlsdGVyIHVzaW5nIHRoZSBpbnB1dCB0aGUgcG9zc2libGUgaW5ncmVkaWVudCBuYW1lIHRoZSB1c2VyIG1pZ2h0IHdhbnRcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgZ2V0RmlsdGVyZWROYW1lRnJvbUluZGV4KGluZGV4OiBudW1iZXIpOiBBcnJheTxzdHJpbmc+e1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XS52YWx1ZS5hdHRyaWJ1dGVzLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBwb3NzaWJsZVNlbGVjdGlvbiA9IHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuZ2V0UmV2aWV3ZWROYW1lcygpO1xuICAgIHJldHVybiB0aGlzLmZpbHRlclBvc3NpYmxlU2VsZWN0aW9uRnJvbUlucHV0KGlucHV0LCBwb3NzaWJsZVNlbGVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogZmlsdGVyIHVzaW5nIHRoZSBpbnB1dCB0aGUgcG9zc2libGUgdW5pdCB0aGUgdXNlciBtaWdodCB3YW50XG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIGdldEZpbHRlcmVkVW5pdHNGcm9tSW5kZXgoaW5kZXg6IG51bWJlcik6IEFycmF5PHN0cmluZz57XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmxpc3QuY29udHJvbHNbaW5kZXhdLnZhbHVlLmF0dHJpYnV0ZXMudW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHBvc3NpYmxlU2VsZWN0aW9uID0gdGhpcy5pbmdyZWRpZW50U2VydmljZS5nZXRSZXZpZXdlZFVuaXRzKCk7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyUG9zc2libGVTZWxlY3Rpb25Gcm9tSW5wdXQoaW5wdXQsIHBvc3NpYmxlU2VsZWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmljIG1ldGhvZCB0byBmaWx0ZXIgdGhlIG5hbWUgYW5kIHRoZSB1bml0XG4gICAqIEBwYXJhbSBpbnB1dCB1c2VyIGlucHV0XG4gICAqIEBwYXJhbSBwb3NzaWJsZVNlbGVjdGlvbiBwb3NzaWJsZSBzZWxlY3Rpb24gdG8gZGlzcGxheSB0byB0aGUgdXNlclxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJQb3NzaWJsZVNlbGVjdGlvbkZyb21JbnB1dChpbnB1dDogc3RyaW5nLCBwb3NzaWJsZVNlbGVjdGlvbjogQXJyYXk8c3RyaW5nPil7XG4gICAgY29uc3QgZmlsdGVyZWRTZWxlY3Rpb24gPSBbXTtcbiAgICBjb25zdCBpbnB1dExDID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKGNvbnN0IHNlbGVjdGlvbiBvZiBwb3NzaWJsZVNlbGVjdGlvbil7XG4gICAgICBjb25zdCBzZWxlY3Rpb25MQyA9IHNlbGVjdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHNlbGVjdGlvbkxDLmluY2x1ZGVzKGlucHV0TEMpICYmIHNlbGVjdGlvbkxDICE9PSBpbnB1dExDKSB7IGZpbHRlcmVkU2VsZWN0aW9uLnB1c2goc2VsZWN0aW9uKTsgfVxuICAgICAgaWYgKGZpbHRlcmVkU2VsZWN0aW9uLmxlbmd0aCA+PSB0aGlzLm1heFNlbGVjdGlvbk51bWJlcikgeyBicmVhazsgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRTZWxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIEFycmF5IG9mIGltcG9ydGFuY2VzXG4gICAqL1xuICBwdWJsaWMgZ2V0SW1wb3J0YW5jZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAndGVydGlhcnknXTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVzIHRoZSBpbXBvcnRhbmNlIG9mIGEgZ2l2ZW4gaW5ncmVkaWVudFxuICAgKiBAcGFyYW0gdmFsdWUgbmV3IHZhbHVlXG4gICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgaW5ncmVkaWVudFxuICAgKi9cbiAgdXBkYXRlSW1wb3J0YW5jZSh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICB0aGlzLmxpc3QuY29udHJvbHNbaW5kZXhdWydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ2ltcG9ydGFuY2UnXS52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5saXN0Lm1hcmtBc0RpcnR5KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fbGlzdFwiIFtmb3JtR3JvdXBdPVwibGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2xpc3RfX2xhYmVsXCIgKm5nSWY9XCJpbmdyZWRpZW50TW9kZVwiIGkxOG4+SW5ncsOpZGllbnRzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fbGlzdF9fbGFiZWxcIiAqbmdJZj1cIiFpbmdyZWRpZW50TW9kZVwiIGkxOG4+w4l0YXBlczwvZGl2PlxuICAgIDx1bCAqbmdJZj0nbGlzdC5jb250cm9scz8ubGVuZ3RoID4gMCBlbHNlIGhpbnRQbGFjZWhvbGRlcicgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lciBtLWRlZmF1bHQtY2FyZFwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPSchaW5ncmVkaWVudE1vZGUgZWxzZSBpbmdyZWRpZW50Um93Jz5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgIGNka0RyYWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvd1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvdz8uZ2V0KCdhdHRyaWJ1dGVzJylcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fY29udGFpbmVyX19yb3cgIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fZ3JpcFwiICBbaWNvbk5hbWVdPVwiaWNvbi5HcmlwXCIgY2RrRHJhZ0hhbmRsZT48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhICBjZGtUZXh0YXJlYUF1dG9zaXplPSd0cnVlJyAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCIgKGJsdXIpPSdjaGVja1JvdyhpKSdcbiAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCIgY2RrQXV0b3NpemVNYXhSb3dzPVwiNTBcIiBjbGFzcz1cIm0taW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9J2Rlc2NyaXB0aW9uJz48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiIChjbGljayk9XCJkZWxldGUoaSlcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3BsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19wcmV2aWV3IG0tZGVmYXVsdC1jYXJkXCIgKmNka0RyYWdQcmV2aWV3PlxuICAgICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgW2ljb25OYW1lXT1cImljb24uR3JpcFwiIGNka0RyYWdIYW5kbGU+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3ByZXZpZXdfX3RleHQgbS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnZGVzY3JpcHRpb24nKS52YWx1ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luZ3JlZGllbnRSb3c+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2RrRHJhZz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lcl9fcm93IG0tZGVmYXVsdC1jYXJkXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleTA1KVwiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2dyaXBcIlxuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkdyaXBcIiBjZGtEcmFnSGFuZGxlPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBbYXR0ci5saXN0XT1cIidtaWFtLWxpc3QtaW5wdXQtZHJvcGRvd24taW5ncmVkaWVudHMtaWQnICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihpc0luZ3JlZGllbnRSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsnbmFtZSddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWyduYW1lJ10udmFsdWUgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93Wydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ25hbWUnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1pbnB1dFwiLz5cbiAgICAgICAgICAgICAgICA8ZGF0YWxpc3QgW2F0dHIuaWRdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi1pbmdyZWRpZW50cy1pZCcgKyBpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpbmcgb2YgZ2V0RmlsdGVyZWROYW1lRnJvbUluZGV4KGkpO1wiIFt2YWx1ZV09XCJpbmcgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L2RhdGFsaXN0PlxuXG4gICAgICAgICAgICAgICAgPGlucHV0IFtuZ01vZGVsXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWydxdWFudGl0eSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlUXVhbnRpdHlWYWx1ZSgkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWydxdWFudGl0eSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWlucHV0XCIgbWF4U2l6ZT00ICBhdXRvV2lkdGhJbnB1dCAvPlxuXG4gICAgICAgICAgICAgICAgPGlucHV0IFthdHRyLmxpc3RdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi11bml0cy1pZCcgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGlzUXVhbnRpdHlSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWlucHV0XCIgbWF4U2l6ZT04IGF1dG9XaWR0aElucHV0Lz5cbiAgICAgICAgICAgICAgICA8ZGF0YWxpc3QgW2F0dHIuaWRdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi11bml0cy1pZCcgKyBpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIGdldEZpbHRlcmVkVW5pdHNGcm9tSW5kZXgoaSk7XCIgW3ZhbHVlXT1cInVuaXRcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L2RhdGFsaXN0PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRJbXBvcnRhbmNlcygpLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9faW1wb3J0YW5jZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaW1wb3J0YW5jZSBvZiBnZXRJbXBvcnRhbmNlcygpO1wiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19pbXBvcnRhbmNlX19yYWRpb1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidpbXBvcnRhbmNlJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidpbXBvcnRhbmNlLWlkLScgKyBpbXBvcnRhbmNlICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaW1wb3J0YW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlSW1wb3J0YW5jZShpbXBvcnRhbmNlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93Wydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ2ltcG9ydGFuY2UnXVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUT0RPIGFkZCBpMThuIHRhZyB0byBsYWJlbHMgKGludGVybmF0aW9uYWxpemF0aW9uKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiaW1wb3J0YW5jZSA9PT0gJ3ByaW1hcnknXCIgZm9yPVwie3snaW1wb3J0YW5jZS1pZC1wcmltYXJ5JyArIGl9fVwiPlByaW1vcmRpYWw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJpbXBvcnRhbmNlID09PSAnc2Vjb25kYXJ5J1wiIGZvcj1cInt7J2ltcG9ydGFuY2UtaWQtc2Vjb25kYXJ5JyArIGl9fVwiPlNlY29uZGFpcmU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJpbXBvcnRhbmNlID09PSAndGVydGlhcnknXCIgZm9yPVwie3snaW1wb3J0YW5jZS1pZC10ZXJ0aWFyeScgKyBpfX1cIj5GYWN1bHRhdGlmPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19jb250cm9sc1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW5nLXBpY3R1cmUte3tpfX1cIiAqbmdJZj1cImluZ3JlZGllbnRzUGljdHVyZXMudmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmNvbnRyb2xzLmF0dHJpYnV0ZXMuY29udHJvbHNbJ3BpY3R1cmUtdXJsJ10/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgY2xpY2thYmxlOiBpbmdyZWRpZW50c1BpY3R1cmVzLmVkaXRhYmxlIH1cIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJyb3cuY29udHJvbHMuYXR0cmlidXRlcy5jb250cm9sc1sncGljdHVyZS11cmwnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19waWN0dXJlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLW1pYW0taWNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LmNvbnRyb2xzLmF0dHJpYnV0ZXMuY29udHJvbHNbJ3BpY3R1cmUtdXJsJ10/LnZhbHVlICYmIGluZ3JlZGllbnRzUGljdHVyZXMuZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uUGljdHVyZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIlxuICAgICAgICAgICAgICAgID48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmdyZWRpZW50c1BpY3R1cmVzLnZpc2libGUgJiYgaW5ncmVkaWVudHNQaWN0dXJlcy5lZGl0YWJsZSAmJiAhYmlnSW1hZ2VXYXJuaW5nXCJcbiAgICAgICAgICAgICAgICBpZD1cImluZy1waWN0dXJlLXt7aX19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvanBlZywgaW1hZ2UvcG5nLCBpbWFnZS93ZWJwXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEluZ3JlZGllbnRQaWN0dXJlKCRldmVudC50YXJnZXQuZmlsZXMsIHJvdy5jb250cm9scy5hdHRyaWJ1dGVzLmNvbnRyb2xzWydwaWN0dXJlLXVybCddKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiIChjbGljayk9XCJkZWxldGUoaSlcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fcHJldmlldyBtLWRlZmF1bHQtY2FyZFwiICpjZGtEcmFnUHJldmlldz5cbiAgICAgICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5LXRleHQtZGFyaylcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5HcmlwXCIgY2RrRHJhZ0hhbmRsZT48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbmFtZScpLnZhbHVlIHwgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tYm9keS10eXBvXCI+e3tyb3c/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3F1YW50aXR5JykudmFsdWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgndW5pdCcpLnZhbHVlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIGluZm9ybWF0aW9uIG1lc3NhZ2UgLS0+XG4gICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwicm93Py5nZXQoJ2F0dHJpYnV0ZXMnKVsnaXNOb3RSZXZpZXdlZEluZ3JlZGllbnROYW1lJ10gJiYgIXJvdy5pbnZhbGlkICYmICFoaWRlRXJyb3JzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoaW50IHdhcm5uaW5nXCI+Tm91cyBuZSBjb25uYWlzc29ucyBwYXMgZW5jb3JlIGNldCBpbmdyw6lkaWVudDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LmludmFsaWQgJiYgIWhpZGVFcnJvcnNcIiBjbGFzcz1cImhpbnQgZXJyb3JcIj5MZSBub20gZGUgbCdpbmdyw6lkaWVudCBuZSBwZXV0IHBhcyDDqnRyZVxuICAgICAgICAgICAgICB2aWRlPC9zcGFuPiAtLT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNoaW50UGxhY2Vob2xkZXI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcGxhY2Vob2xkZXIgbWlhbS1saXN0LWlucHV0X19jb250YWluZXIgbS1kZWZhdWx0LWNhcmRcIj5cbiAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5LXRleHQtZGFyaylcIiBbd2lkdGhdPVwiMTUyXCIgW2hlaWdodF09XCIxNTdcIiBbaWNvbk5hbWVdPVwiaWNvbi5FbXB0eVwiPlxuICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcGxhY2Vob2xkZXJfX2hpbnQgbS1ib2R5LXR5cG9cIj5cbiAgICAgICAgPHNwYW4gaTE4bj5PdXBzLi4uIGPigJllc3QgdmlkZSwgY29tbWVuY2V6IMOgIGFqb3V0ZXIgZGVzIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbmdyZWRpZW50TW9kZVwiIGkxOG4+aW5ncsOpZGllbnRzICE8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWluZ3JlZGllbnRNb2RlXCIgaTE4bj7DqXRhcGVzICE8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2FjdGlvbnNcIj5cbiAgICA8dGV4dGFyZWEgKm5nSWY9XCJwbGFjZWhvbGRlciAmJiBwbGFjZWhvbGRlci5sZW5ndGggPiAwXCIgbWF0SW5wdXQgY2xhc3M9XCJtLWlucHV0XCIgY2RrVGV4dGFyZWFBdXRvc2l6ZSAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiNFwiXG4gICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCI0XCIgKGtleWRvd24uZW50ZXIpPSdtb3Vzc2VEb3duT25CdXR0b24gPSB0cnVlJ1xuICAgICAgW2Zvcm1Db250cm9sXT1cImZpbGxMaXN0SW5wdXRcIiBhdHRyLnBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICA+XG4gICAgPC90ZXh0YXJlYT5cbiAgICA8dGV4dGFyZWEgKm5nSWY9XCIoIXBsYWNlaG9sZGVyIHx8IHBsYWNlaG9sZGVyLmxlbmd0aCA8IDEpICYmIGluZ3JlZGllbnRNb2RlXCIgbWF0SW5wdXQgY2xhc3M9XCJtLWlucHV0XCIgY2RrVGV4dGFyZWFBdXRvc2l6ZVxuICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiNFwiIGNka0F1dG9zaXplTWF4Um93cz1cIjRcIiAoa2V5ZG93bi5lbnRlcik9J21vdXNzZURvd25PbkJ1dHRvbiA9IHRydWUnIFtmb3JtQ29udHJvbF09XCJmaWxsTGlzdElucHV0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRXhlbXBsZSA6XFxuNTAwZyBkZSBmYXJpbmVcXG4yNTBnIGRlIGJldXJyZVxcbmh1aWxlIGRcXCdvbGl2ZVxcbjQgdHJhbmNoZXMgZGUgamFtYm9uXCJcbiAgICAgIGkxOG4tcGxhY2Vob2xkZXJcbiAgICA+XG4gICAgPC90ZXh0YXJlYT5cbiAgICA8dGV4dGFyZWEgKm5nSWY9XCIoIXBsYWNlaG9sZGVyIHx8IHBsYWNlaG9sZGVyLmxlbmd0aCA8IDEpICYmICFpbmdyZWRpZW50TW9kZVwiIG1hdElucHV0IGNsYXNzPVwibS1pbnB1dFwiIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjRcIiBjZGtBdXRvc2l6ZU1heFJvd3M9XCI0XCIgKGtleWRvd24uZW50ZXIpPSdtb3Vzc2VEb3duT25CdXR0b24gPSB0cnVlJyBbZm9ybUNvbnRyb2xdPVwiZmlsbExpc3RJbnB1dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIkV4ZW1wbGUgOlxcbkhhY2hlciBncm9zc2nDqHJlbWVudCBsZSBjw6lsZXJpIGV0IGwnb2lnbm9uLlxcbkNvdXBlciBsZSBjaG91LWZsZXVyIGVuIHBldGl0cyBib3VxdWV0cy5cIlxuICAgICAgaTE4bi1wbGFjZWhvbGRlclxuICAgID5cbiAgICA8L3RleHRhcmVhPlxuICAgIDxidXR0b24gY2xhc3M9XCJtLWJ1dHRvbi1wcmltYXJ5XCIgKG1vdXNlZG93bik9J21vdXNzZURvd25PbkJ1dHRvbiA9IHRydWUnIChtb3VzZXVwKT1cInN1Ym1pdCgpXCI+XG4gICAgICA8c3BhbiBpMThuPkFqb3V0ZXIgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2luc3RydWN0aW9uc19fZGlyZWN0aW9uXCI+Pj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiAqbmdJZj1cImluc3RydWN0aW9uc1wiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19hY3Rpb25zX19pbnN0cnVjdGlvbnNcIj57eyBpbnN0cnVjdGlvbnMgfX08L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluc3RydWN0aW9ucyAmJiBpbmdyZWRpZW50TW9kZVwiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19hY3Rpb25zX19pbnN0cnVjdGlvbnNcIj5cbiAgICAgIDxzcGFuIGkxOG4+Vm91cyBwb3V2ZXogc2Fpc2lyIHVuIGluZ3LDqWRpZW50IG91IGNvcGllciBjb2xsZXIgdW5lIGxpc3RlIGTigJlpbmdyw6lkaWVudHMuPC9zcGFuPlxuICAgICAgPGJyIC8+XG4gICAgICA8c3BhbiBpMThuPlVuZSBsaWduZSBjb3JyZXNwb25kIMOgIHVuIGluZ3LDqWRpZW50Ljwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluc3RydWN0aW9ucyAmJiAhaW5ncmVkaWVudE1vZGVcIiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fYWN0aW9uc19faW5zdHJ1Y3Rpb25zXCI+XG4gICAgICA8c3BhbiBpMThuPlZvdXMgcG91dmV6IHNhaXNpciB1bmUgw6l0YXBlIG91IGNvcGllciBjb2xsZXIgdW5lIGxpc3RlIGTigJnDqXRhcGVzLjwvc3Bhbj5cbiAgICAgIDxiciAvPlxuICAgICAgPHNwYW4gaTE4bj5VbmUgbGlnbmUgY29ycmVzcG9uZCDDoCB1bmUgw6l0YXBlLjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBJTkdSRURJRU5UIFBJQ1RVUkUgRVJST1IgTU9EQUwtLT5cbjxuZy1taWFtLW1vZGFsIFxuICAqbmdJZj1cImJpZ0ltYWdlV2FybmluZ1wiXG4gIFtpc0FuZ3VsYXJDb21wb25lbnRdPVwidHJ1ZVwiIFxuICBbbm9IZWFkZXJNb2RlXT1cImZhbHNlXCJcbiAgW2V4cGFuZGVkXT1cInRydWVcIlxuICBpMThuLXRpdGxlXG4gIHRpdGxlPVwiSW1hZ2UgdHJvcCB2b2x1bWluZXVzZVwiXG4gIGNvbmZpcm1CdXR0b25UZXh0PVwiRmVybWVyXCJcbiAgKGNsb3NlKT1cImNsb3NlQmlnSW1hZ2VFcnJvck1vZGFsKClcIlxuICAoY29uZmlybSk9XCJjbG9zZUJpZ0ltYWdlRXJyb3JNb2RhbCgpXCJcbj5cbiAgPHNwYW4gaTE4biBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcGljdHVyZV9fd2FybmluZ1wiPlZvdHJlIGltYWdlIGVzdCB0cm9wIGxvdXJkZSAobGEgdGFpbGxlIGRvaXQgw6p0cmUgaW5mw6lyaWV1cmUgw6AgNTAwIEtvKS4gTWVyY2kgZOKAmWVuIGFqb3V0ZXIgdW5lIHBsdXMgbMOpZ8OocmUuPC9zcGFuPlxuPC9uZy1taWFtLW1vZGFsPiJdfQ==
|
|
778
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2J1aWxkcy9taWFtL25nLW1pYW0tc2RrL3Byb2plY3RzL25nLW1pYW0vc3JjLyIsInNvdXJjZXMiOlsibGliL19jb21wb25lbnRzL2xpc3QtaW5wdXQvbGlzdC1pbnB1dC5jb21wb25lbnQudHMiLCJsaWIvX2NvbXBvbmVudHMvbGlzdC1pbnB1dC9saXN0LWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEdBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7SUNIakQsK0JBQXNFO0lBQXRFLGdCQUFzRTtJQUFXLGlCQUFNOzs7SUFDdkYsK0JBQXVFO0lBQXZFLGdCQUF1RTtJQUFNLGlCQUFNOzs7SUFZekUsMEJBQXlFOzs7SUFDekUsK0JBQ0U7SUFBQSxtQ0FBdUc7SUFDdkcsZ0NBQXlEO0lBQUEsWUFBb0Q7SUFBQSxpQkFBTztJQUN0SCxpQkFBTTs7Ozs7SUFGK0MsZUFBc0I7SUFBdEIsNENBQXNCO0lBQ2hCLGVBQW9EO0lBQXBELHNJQUFvRDs7OztJQVpySCw4QkFDRTtJQUFBLGlDQUNFO0lBQUEsaUNBQ0U7SUFBQSwrQkFDQTtJQUFBLG1DQUEySTtJQUMzSSx3Q0FDMEc7SUFEcEMs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QUFDLElBQUk7YUFDdEM7K0hBRVUsV0FBVztrQkFBbkIsS0FBSztZQUVHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLElBQUk7a0JBQVosS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUVJLFFBQVE7a0JBQWpCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbix9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vX3R5cGVzL2ljb24uZW51bSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5ncmVkaWVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi9fbW9kZWxzL2luZ3JlZGllbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLWxpc3QtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlzdElucHV0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgLy8gVE9ETzogaW5wdXQgc3RyaW5nIGRvZXNuJ3Qgd29yayBhbnltb3JlIHdpdGggaTE4biwgdXNlIHRlbXBsYXRlIGFuZCBjaGVjayBpZiB0aGUgZmllbGQgaXMgc3RpbGwgbmVlZGVkXG4gIEBJbnB1dCgpIGluc3RydWN0aW9uczogc3RyaW5nO1xuICBASW5wdXQoKSBpbmdyZWRpZW50TW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBpc1BlcnNvbmFsID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxpc3Q6IEZvcm1BcnJheSA9IG5ldyBGb3JtQXJyYXkoW10pO1xuICBASW5wdXQoKSBpbmdyZWRpZW50c1BpY3R1cmVzOiB7IHZpc2libGU6IGJvb2xlYW4sIGVkaXRhYmxlOiBib29sZWFuIH0gPSB7IHZpc2libGU6IGZhbHNlLCBlZGl0YWJsZTogZmFsc2UgfTtcblxuICBAT3V0cHV0KCkgZGVsZXRlSWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xuICBAT3V0cHV0KCkgb3JkZXJIYXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8dm9pZD47XG5cbiAgaWNvbiA9IEljb247XG4gIGhpZGVFcnJvcnM6IGJvb2xlYW47XG4gIGZpbGxMaXN0SW5wdXQ6IEZvcm1Db250cm9sO1xuICBtb3Vzc2VEb3duT25CdXR0b246IGJvb2xlYW47XG4gIGJpZ0ltYWdlV2FybmluZyA9IGZhbHNlO1xuICBwcml2YXRlIHByZXZpb3VzUXVhbnRpdGllczogc3RyaW5nW107XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4U2VsZWN0aW9uTnVtYmVyOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmdyZWRpZW50U2VydmljZTogSW5ncmVkaWVudHNTZXJ2aWNlLCBwcml2YXRlIGZiOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5maWxsTGlzdElucHV0ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgICB0aGlzLmRlbGV0ZUlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMub3JkZXJIYXNDaGFuZ2VkICA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnByZXZpb3VzUXVhbnRpdGllcyA9IFtdO1xuICAgIHRoaXMubWF4U2VsZWN0aW9uTnVtYmVyID0gNTtcbiAgICB0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLmdldFJldmlld2VkTmFtZXMoKTtcbiAgICB0aGlzLmluZ3JlZGllbnRTZXJ2aWNlLmdldFJldmlld2VkVW5pdHMoKTtcbiAgfVxuXG4gIGRlbGV0ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bYGNvbnRyb2xzYF0uaWQ/LnZhbHVlKSB7XG4gICAgICB0aGlzLmRlbGV0ZUlkLmVtaXQodGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XVtgY29udHJvbHNgXS5pZC52YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMubGlzdC5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5saXN0Lm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMuZmlsbExpc3RJbnB1dC52YWx1ZT8udHJpbUVuZCgpLnNwbGl0KCdcXG4nKTtcblxuICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0aGlzLmluZ3JlZGllbnRNb2RlKSB7XG4gICAgICAgIHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuZm9ybWF0SW5ncmVkaWVudHModmFsdWVzKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoaW5ncmVkaWVudHM6IEluZ3JlZGllbnRbXSkgPT4ge1xuICAgICAgICAgIGluZ3JlZGllbnRzLmZvckVhY2goaW5nID0+IHtcbiAgICAgICAgICAgIGluZy5hdHRyaWJ1dGVzLnF1YW50aXR5ID0gcGFyc2VGbG9hdChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMubGlzdC5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgICBpZDogbmV3IEZvcm1Db250cm9sKGluZy5pZCAhPT0gJy0xJyA/IGluZy5pZCA6IG51bGwpLFxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogbmV3IEZvcm1Db250cm9sKGluZy5hdHRyaWJ1dGVzLnF1YW50aXR5LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICB1bml0OiBuZXcgRm9ybUNvbnRyb2woaW5nLmF0dHJpYnV0ZXMudW5pdCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKGluZy5hdHRyaWJ1dGVzLm5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgIC8vIGltcG9ydGFuY2U6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5pbXBvcnRhbmNlLFxuICAgICAgICAgICAgICAgIC8vICAgdGhpcy5pc1BlcnNvbmFsID8gVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yIDogVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgLy8gTm90IG1hbmRhdG9yeSBmb3IgdGhlIG1vbWVudCwgZGVjb21tZW50IGFib3ZlIGlmIG1hbmRhdG9yeSBsYXRlclxuICAgICAgICAgICAgICAgIGltcG9ydGFuY2U6IG5ldyBGb3JtQ29udHJvbChpbmcuYXR0cmlidXRlcy5pbXBvcnRhbmNlLCBWYWxpZGF0b3JzLm51bGxWYWxpZGF0b3IpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpbmcuYXR0cmlidXRlcy5xdWFudGl0eSk7XG4gICAgICAgICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZXMuZm9yRWFjaCgoZWxlbWVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnQudHJpbSgpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3QucHVzaCh0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IG5ldyBGb3JtQ29udHJvbChlbGVtZW50KVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGxMaXN0SW5wdXQucmVzZXQoKTtcbiAgICB0aGlzLm1vdXNzZURvd25PbkJ1dHRvbiA9IGZhbHNlO1xuICB9XG5cbiAgY2hlY2tSb3coaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XS5nZXQoJ2F0dHJpYnV0ZXMnKS5nZXQoJ2Rlc2NyaXB0aW9uJykudmFsdWUgfHwgIXRoaXMubGlzdC5jb250cm9sc1tpbmRleF0uZ2V0KCdhdHRyaWJ1dGVzJykuZ2V0KCdkZXNjcmlwdGlvbicpLnZhbHVlLnRyaW0oKSkge1xuICAgICAgdGhpcy5kZWxldGUoaW5kZXgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVF1YW50aXR5VmFsdWUoZXZlbnQsIGluZGV4KSB7XG4gICAgaWYgKE51bWJlci5pc05hTigrZXZlbnQpKXtcbiAgICAgIHRoaXMubGlzdC5jb250cm9sc1tpbmRleF1bJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsncXVhbnRpdHknXS52YWx1ZSA9IHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gTmVjZXNzYXJ5IHRvIHVwZGF0ZSB0aGUgdmlldyB3aXRoIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzW2luZGV4XSA9IGV2ZW50OyAvLyBObyB1cGRhdGUgb2YgdGhlIHZpZXcgc28gbm8gY2RyLmRldGVjdENoYW5nZXMoKVxuICAgIH1cbiAgfVxuXG4gIGRyYWcoKSB7XG4gICAgdGhpcy5oaWRlRXJyb3JzID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pOiB2b2lkIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5saXN0LmNvbnRyb2xzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIC8vIGlmIHlvdSByZW9yZGVyZWQgdGhlIGxpc3QgYmUgc3VyZSB0aGUgcHJldmlvdXMgcXVhbnRpdGllcyBjaGFuZ2VzIGFjY29yZGluZ2x5XG4gICAgaWYgKHRoaXMuaW5ncmVkaWVudE1vZGUpIHtcbiAgICAgIHRoaXMucHJldmlvdXNRdWFudGl0aWVzID0gW107XG4gICAgICB0aGlzLmxpc3QuY29udHJvbHMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1F1YW50aXRpZXMucHVzaChpWydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ3F1YW50aXR5J10udmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMubGlzdC5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuaGlkZUVycm9ycyA9IGZhbHNlO1xuICAgIHRoaXMub3JkZXJIYXNDaGFuZ2VkLmVtaXQoKTtcbiAgfVxuXG4gIGlzSW5ncmVkaWVudFJldmlld2VkKGluZ3JlZGllbnROYW1lKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuaXNSZXZpZXdlZE5hbWUoaW5ncmVkaWVudE5hbWUudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICBpc1F1YW50aXR5UmV2aWV3ZWQodW5pdE5hbWUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pbmdyZWRpZW50U2VydmljZS5pc1Jldmlld2VkVW5pdCh1bml0TmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyLCBlbDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZWw7XG4gIH1cblxuICB1cGxvYWRJbmdyZWRpZW50UGljdHVyZShmaWxlczogRmlsZUxpc3QsIGluZ0Zvcm0pOiB2b2lkIHtcbiAgICBpZiAoIWZpbGVzWzBdIHx8ICFpbmdGb3JtKSB7IHJldHVybjsgfVxuICAgIGlmICghdGhpcy5pbWFnZVNpemVDaGVjayhmaWxlcywgNTEyICogNTEyKSkge1xuICAgICAgdGhpcy5iaWdJbWFnZVdhcm5pbmcgPSB0cnVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZXNbMF0pO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgaW5nRm9ybS5wYXRjaFZhbHVlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgICB0aGlzLmxpc3QubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2hlY2tzIGlmIGltYWdlIHNpemUgPCBtYXhTaXplXG4gICAqIEBwYXJhbSBmaWxlc1xuICAgKiBAcGFyYW0gbWF4U2l6ZVxuICAgKi9cbiAgaW1hZ2VTaXplQ2hlY2soZmlsZXM6IEZpbGVMaXN0LCBtYXhTaXplOiBudW1iZXIpIHtcbiAgICByZXR1cm4gIWZpbGVzWzBdIHx8IGZpbGVzWzBdLnNpemUgPCBtYXhTaXplO1xuICB9XG5cbiAgY2xvc2VCaWdJbWFnZUVycm9yTW9kYWwoKSB7XG4gICAgdGhpcy5iaWdJbWFnZVdhcm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogZmlsdGVyIHVzaW5nIHRoZSBpbnB1dCB0aGUgcG9zc2libGUgaW5ncmVkaWVudCBuYW1lIHRoZSB1c2VyIG1pZ2h0IHdhbnRcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgZ2V0RmlsdGVyZWROYW1lRnJvbUluZGV4KGluZGV4OiBudW1iZXIpOiBBcnJheTxzdHJpbmc+e1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5saXN0LmNvbnRyb2xzW2luZGV4XS52YWx1ZS5hdHRyaWJ1dGVzLm5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBwb3NzaWJsZVNlbGVjdGlvbiA9IHRoaXMuaW5ncmVkaWVudFNlcnZpY2UuZ2V0UmV2aWV3ZWROYW1lcygpO1xuICAgIHJldHVybiB0aGlzLmZpbHRlclBvc3NpYmxlU2VsZWN0aW9uRnJvbUlucHV0KGlucHV0LCBwb3NzaWJsZVNlbGVjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogZmlsdGVyIHVzaW5nIHRoZSBpbnB1dCB0aGUgcG9zc2libGUgdW5pdCB0aGUgdXNlciBtaWdodCB3YW50XG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIGdldEZpbHRlcmVkVW5pdHNGcm9tSW5kZXgoaW5kZXg6IG51bWJlcik6IEFycmF5PHN0cmluZz57XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmxpc3QuY29udHJvbHNbaW5kZXhdLnZhbHVlLmF0dHJpYnV0ZXMudW5pdC50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHBvc3NpYmxlU2VsZWN0aW9uID0gdGhpcy5pbmdyZWRpZW50U2VydmljZS5nZXRSZXZpZXdlZFVuaXRzKCk7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyUG9zc2libGVTZWxlY3Rpb25Gcm9tSW5wdXQoaW5wdXQsIHBvc3NpYmxlU2VsZWN0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmljIG1ldGhvZCB0byBmaWx0ZXIgdGhlIG5hbWUgYW5kIHRoZSB1bml0XG4gICAqIEBwYXJhbSBpbnB1dCB1c2VyIGlucHV0XG4gICAqIEBwYXJhbSBwb3NzaWJsZVNlbGVjdGlvbiBwb3NzaWJsZSBzZWxlY3Rpb24gdG8gZGlzcGxheSB0byB0aGUgdXNlclxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBmaWx0ZXJQb3NzaWJsZVNlbGVjdGlvbkZyb21JbnB1dChpbnB1dDogc3RyaW5nLCBwb3NzaWJsZVNlbGVjdGlvbjogQXJyYXk8c3RyaW5nPil7XG4gICAgY29uc3QgZmlsdGVyZWRTZWxlY3Rpb24gPSBbXTtcbiAgICBjb25zdCBpbnB1dExDID0gaW5wdXQudG9Mb3dlckNhc2UoKTtcbiAgICBmb3IgKGNvbnN0IHNlbGVjdGlvbiBvZiBwb3NzaWJsZVNlbGVjdGlvbil7XG4gICAgICBjb25zdCBzZWxlY3Rpb25MQyA9IHNlbGVjdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKHNlbGVjdGlvbkxDLmluY2x1ZGVzKGlucHV0TEMpICYmIHNlbGVjdGlvbkxDICE9PSBpbnB1dExDKSB7IGZpbHRlcmVkU2VsZWN0aW9uLnB1c2goc2VsZWN0aW9uKTsgfVxuICAgICAgaWYgKGZpbHRlcmVkU2VsZWN0aW9uLmxlbmd0aCA+PSB0aGlzLm1heFNlbGVjdGlvbk51bWJlcikgeyBicmVhazsgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRTZWxlY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIEFycmF5IG9mIGltcG9ydGFuY2VzXG4gICAqL1xuICBwdWJsaWMgZ2V0SW1wb3J0YW5jZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAndGVydGlhcnknXTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGVzIHRoZSBpbXBvcnRhbmNlIG9mIGEgZ2l2ZW4gaW5ncmVkaWVudFxuICAgKiBAcGFyYW0gdmFsdWUgbmV3IHZhbHVlXG4gICAqIEBwYXJhbSBpbmRleCBvZiB0aGUgaW5ncmVkaWVudFxuICAgKi9cbiAgdXBkYXRlSW1wb3J0YW5jZSh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgICB0aGlzLmxpc3QuY29udHJvbHNbaW5kZXhdWydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ2ltcG9ydGFuY2UnXS52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5saXN0Lm1hcmtBc0RpcnR5KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fbGlzdFwiIFtmb3JtR3JvdXBdPVwibGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2xpc3RfX2xhYmVsXCIgKm5nSWY9XCJpbmdyZWRpZW50TW9kZVwiIGkxOG4+SW5ncsOpZGllbnRzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fbGlzdF9fbGFiZWxcIiAqbmdJZj1cIiFpbmdyZWRpZW50TW9kZVwiIGkxOG4+w4l0YXBlczwvZGl2PlxuICAgIDx1bCAqbmdJZj0nbGlzdC5jb250cm9scz8ubGVuZ3RoID4gMCBlbHNlIGhpbnRQbGFjZWhvbGRlcicgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lciBtLWRlZmF1bHQtY2FyZFwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPSchaW5ncmVkaWVudE1vZGUgZWxzZSBpbmdyZWRpZW50Um93Jz5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgIGNka0RyYWc+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvd1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cInJvdz8uZ2V0KCdhdHRyaWJ1dGVzJylcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fY29udGFpbmVyX19yb3cgIG0tZGVmYXVsdC1jYXJkXCI+XG4gICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fZ3JpcFwiICBbaWNvbk5hbWVdPVwiaWNvbi5HcmlwXCIgY2RrRHJhZ0hhbmRsZT48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPHRleHRhcmVhICBjZGtUZXh0YXJlYUF1dG9zaXplPSd0cnVlJyAjYXV0b3NpemU9XCJjZGtUZXh0YXJlYUF1dG9zaXplXCIgKGJsdXIpPSdjaGVja1JvdyhpKSdcbiAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIxXCIgY2RrQXV0b3NpemVNYXhSb3dzPVwiNTBcIiBjbGFzcz1cIm0taW5wdXRcIiBmb3JtQ29udHJvbE5hbWU9J2Rlc2NyaXB0aW9uJz48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiIChjbGljayk9XCJkZWxldGUoaSlcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX3BsYWNlaG9sZGVyXCIgKmNka0RyYWdQbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19wcmV2aWV3IG0tZGVmYXVsdC1jYXJkXCIgKmNka0RyYWdQcmV2aWV3PlxuICAgICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5MDUpXCIgW2ljb25OYW1lXT1cImljb24uR3JpcFwiIGNka0RyYWdIYW5kbGU+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3ByZXZpZXdfX3RleHQgbS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnZGVzY3JpcHRpb24nKS52YWx1ZX19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2luZ3JlZGllbnRSb3c+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCByb3cgb2YgbGlzdC5jb250cm9sczsgbGV0IGkgPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2RrRHJhZz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2NvbnRhaW5lcl9fcm93IG0tZGVmYXVsdC1jYXJkXCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8bmctbWlhbS1pY29uIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItZ3JleTA1KVwiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19yb3dfX2dyaXBcIlxuICAgICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkdyaXBcIiBjZGtEcmFnSGFuZGxlPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBbYXR0ci5saXN0XT1cIidtaWFtLWxpc3QtaW5wdXQtZHJvcGRvd24taW5ncmVkaWVudHMtaWQnICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihpc0luZ3JlZGllbnRSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsnbmFtZSddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWyduYW1lJ10udmFsdWUgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93Wydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ25hbWUnXVwiXG4gICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibS1pbnB1dFwiLz5cbiAgICAgICAgICAgICAgICA8ZGF0YWxpc3QgW2F0dHIuaWRdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi1pbmdyZWRpZW50cy1pZCcgKyBpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpbmcgb2YgZ2V0RmlsdGVyZWROYW1lRnJvbUluZGV4KGkpO1wiIFt2YWx1ZV09XCJpbmcgfCBjYXBpdGFsaXplRmlyc3RMZXR0ZXJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L2RhdGFsaXN0PlxuXG4gICAgICAgICAgICAgICAgPGlucHV0IFtuZ01vZGVsXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWydxdWFudGl0eSddLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlUXVhbnRpdHlWYWx1ZSgkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJvd1snY29udHJvbHMnXVsnYXR0cmlidXRlcyddWydjb250cm9scyddWydxdWFudGl0eSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWlucHV0XCIgbWF4U2l6ZT00ICBhdXRvV2lkdGhJbnB1dCAvPlxuXG4gICAgICAgICAgICAgICAgPGlucHV0IFthdHRyLmxpc3RdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi11bml0cy1pZCcgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiKGlzUXVhbnRpdHlSZXZpZXdlZChyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddLnZhbHVlKSB8IGFzeW5jICkgPyAnYWxlcnQtc3VjY2VzcycgOiAnYWxlcnQtZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3dbJ2NvbnRyb2xzJ11bJ2F0dHJpYnV0ZXMnXVsnY29udHJvbHMnXVsndW5pdCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtLWlucHV0XCIgbWF4U2l6ZT04IGF1dG9XaWR0aElucHV0Lz5cbiAgICAgICAgICAgICAgICA8ZGF0YWxpc3QgW2F0dHIuaWRdPVwiJ21pYW0tbGlzdC1pbnB1dC1kcm9wZG93bi11bml0cy1pZCcgKyBpXCI+XG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIGdldEZpbHRlcmVkVW5pdHNGcm9tSW5kZXgoaSk7XCIgW3ZhbHVlXT1cInVuaXRcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8L2RhdGFsaXN0PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRJbXBvcnRhbmNlcygpLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9faW1wb3J0YW5jZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaW1wb3J0YW5jZSBvZiBnZXRJbXBvcnRhbmNlcygpO1wiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19pbXBvcnRhbmNlX19yYWRpb1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidpbXBvcnRhbmNlJyArIGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidpbXBvcnRhbmNlLWlkLScgKyBpbXBvcnRhbmNlICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaW1wb3J0YW5jZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlSW1wb3J0YW5jZShpbXBvcnRhbmNlLCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93Wydjb250cm9scyddWydhdHRyaWJ1dGVzJ11bJ2NvbnRyb2xzJ11bJ2ltcG9ydGFuY2UnXVwiLz5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUT0RPIGFkZCBpMThuIHRhZyB0byBsYWJlbHMgKGludGVybmF0aW9uYWxpemF0aW9uKSAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwiaW1wb3J0YW5jZSA9PT0gJ3ByaW1hcnknXCIgZm9yPVwie3snaW1wb3J0YW5jZS1pZC1wcmltYXJ5JyArIGl9fVwiPlByaW1vcmRpYWw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJpbXBvcnRhbmNlID09PSAnc2Vjb25kYXJ5J1wiIGZvcj1cInt7J2ltcG9ydGFuY2UtaWQtc2Vjb25kYXJ5JyArIGl9fVwiPlNlY29uZGFpcmU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJpbXBvcnRhbmNlID09PSAndGVydGlhcnknXCIgZm9yPVwie3snaW1wb3J0YW5jZS1pZC10ZXJ0aWFyeScgKyBpfX1cIj5GYWN1bHRhdGlmPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19jb250cm9sc1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaW5nLXBpY3R1cmUte3tpfX1cIiAqbmdJZj1cImluZ3JlZGllbnRzUGljdHVyZXMudmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93LmNvbnRyb2xzLmF0dHJpYnV0ZXMuY29udHJvbHNbJ3BpY3R1cmUtdXJsJ10/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgY2xpY2thYmxlOiBpbmdyZWRpZW50c1BpY3R1cmVzLmVkaXRhYmxlIH1cIlxuICAgICAgICAgICAgICAgICAgW3NyY109XCJyb3cuY29udHJvbHMuYXR0cmlidXRlcy5jb250cm9sc1sncGljdHVyZS11cmwnXS52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X19waWN0dXJlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLW1pYW0taWNvblxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcm93LmNvbnRyb2xzLmF0dHJpYnV0ZXMuY29udHJvbHNbJ3BpY3R1cmUtdXJsJ10/LnZhbHVlICYmIGluZ3JlZGllbnRzUGljdHVyZXMuZWRpdGFibGVcIlxuICAgICAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uUGljdHVyZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiXG4gICAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIlxuICAgICAgICAgICAgICAgID48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpbmdyZWRpZW50c1BpY3R1cmVzLnZpc2libGUgJiYgaW5ncmVkaWVudHNQaWN0dXJlcy5lZGl0YWJsZSAmJiAhYmlnSW1hZ2VXYXJuaW5nXCJcbiAgICAgICAgICAgICAgICBpZD1cImluZy1waWN0dXJlLXt7aX19XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvanBlZywgaW1hZ2UvcG5nLCBpbWFnZS93ZWJwXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwbG9hZEluZ3JlZGllbnRQaWN0dXJlKCRldmVudC50YXJnZXQuZmlsZXMsIHJvdy5jb250cm9scy5hdHRyaWJ1dGVzLmNvbnRyb2xzWydwaWN0dXJlLXVybCddKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcm93X190cmFzaFwiIChjbGljayk9XCJkZWxldGUoaSlcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLWdyZXkwNSlcIiBbaWNvbk5hbWVdPVwiaWNvbi5UcmFzaFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fcGxhY2Vob2xkZXJcIiAqY2RrRHJhZ1BsYWNlaG9sZGVyPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX3Jvd19fcHJldmlldyBtLWRlZmF1bHQtY2FyZFwiICpjZGtEcmFnUHJldmlldz5cbiAgICAgICAgICAgICAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5LXRleHQtZGFyaylcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5HcmlwXCIgY2RrRHJhZ0hhbmRsZT48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgnbmFtZScpLnZhbHVlIHwgY2FwaXRhbGl6ZUZpcnN0TGV0dGVyfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tYm9keS10eXBvXCI+e3tyb3c/LmdldCgnYXR0cmlidXRlcycpPy5nZXQoJ3F1YW50aXR5JykudmFsdWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS1ib2R5LXR5cG9cIj57e3Jvdz8uZ2V0KCdhdHRyaWJ1dGVzJyk/LmdldCgndW5pdCcpLnZhbHVlfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIGluZm9ybWF0aW9uIG1lc3NhZ2UgLS0+XG4gICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwicm93Py5nZXQoJ2F0dHJpYnV0ZXMnKVsnaXNOb3RSZXZpZXdlZEluZ3JlZGllbnROYW1lJ10gJiYgIXJvdy5pbnZhbGlkICYmICFoaWRlRXJyb3JzXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoaW50IHdhcm5uaW5nXCI+Tm91cyBuZSBjb25uYWlzc29ucyBwYXMgZW5jb3JlIGNldCBpbmdyw6lkaWVudDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LmludmFsaWQgJiYgIWhpZGVFcnJvcnNcIiBjbGFzcz1cImhpbnQgZXJyb3JcIj5MZSBub20gZGUgbCdpbmdyw6lkaWVudCBuZSBwZXV0IHBhcyDDqnRyZVxuICAgICAgICAgICAgICB2aWRlPC9zcGFuPiAtLT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNoaW50UGxhY2Vob2xkZXI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcGxhY2Vob2xkZXIgbWlhbS1saXN0LWlucHV0X19jb250YWluZXIgbS1kZWZhdWx0LWNhcmRcIj5cbiAgICAgIDxuZy1taWFtLWljb24gcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1ncmV5LXRleHQtZGFyaylcIiBbd2lkdGhdPVwiMTUyXCIgW2hlaWdodF09XCIxNTdcIiBbaWNvbk5hbWVdPVwiaWNvbi5FbXB0eVwiPlxuICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcGxhY2Vob2xkZXJfX2hpbnQgbS1ib2R5LXR5cG9cIj5cbiAgICAgICAgPHNwYW4gaTE4bj5PdXBzLi4uIGPigJllc3QgdmlkZSwgY29tbWVuY2V6IMOgIGFqb3V0ZXIgZGVzIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpbmdyZWRpZW50TW9kZVwiIGkxOG4+aW5ncsOpZGllbnRzICE8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWluZ3JlZGllbnRNb2RlXCIgaTE4bj7DqXRhcGVzICE8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2FjdGlvbnNcIj5cbiAgICA8dGV4dGFyZWEgKm5nSWY9XCJwbGFjZWhvbGRlciAmJiBwbGFjZWhvbGRlci5sZW5ndGggPiAwXCIgbWF0SW5wdXQgY2xhc3M9XCJtLWlucHV0XCIgY2RrVGV4dGFyZWFBdXRvc2l6ZSAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiNFwiXG4gICAgICBjZGtBdXRvc2l6ZU1heFJvd3M9XCI0XCIgKGtleWRvd24uZW50ZXIpPSdtb3Vzc2VEb3duT25CdXR0b24gPSB0cnVlJ1xuICAgICAgW2Zvcm1Db250cm9sXT1cImZpbGxMaXN0SW5wdXRcIiBhdHRyLnBsYWNlaG9sZGVyPVwie3twbGFjZWhvbGRlcn19XCJcbiAgICA+XG4gICAgPC90ZXh0YXJlYT5cbiAgICA8dGV4dGFyZWEgKm5nSWY9XCIoIXBsYWNlaG9sZGVyIHx8IHBsYWNlaG9sZGVyLmxlbmd0aCA8IDEpICYmIGluZ3JlZGllbnRNb2RlXCIgbWF0SW5wdXQgY2xhc3M9XCJtLWlucHV0XCIgY2RrVGV4dGFyZWFBdXRvc2l6ZVxuICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiNFwiIGNka0F1dG9zaXplTWF4Um93cz1cIjRcIiAoa2V5ZG93bi5lbnRlcik9J21vdXNzZURvd25PbkJ1dHRvbiA9IHRydWUnIFtmb3JtQ29udHJvbF09XCJmaWxsTGlzdElucHV0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRXhlbXBsZSA6XFxuNTAwZyBkZSBmYXJpbmVcXG4yNTBnIGRlIGJldXJyZVxcbmh1aWxlIGRcXCdvbGl2ZVxcbjQgdHJhbmNoZXMgZGUgamFtYm9uXCJcbiAgICAgIGkxOG4tcGxhY2Vob2xkZXJcbiAgICA+XG4gICAgPC90ZXh0YXJlYT5cbiAgICA8dGV4dGFyZWEgKm5nSWY9XCIoIXBsYWNlaG9sZGVyIHx8IHBsYWNlaG9sZGVyLmxlbmd0aCA8IDEpICYmICFpbmdyZWRpZW50TW9kZVwiIG1hdElucHV0IGNsYXNzPVwibS1pbnB1dFwiIGNka1RleHRhcmVhQXV0b3NpemVcbiAgICAgIGNka0F1dG9zaXplTWluUm93cz1cIjRcIiBjZGtBdXRvc2l6ZU1heFJvd3M9XCI0XCIgKGtleWRvd24uZW50ZXIpPSdtb3Vzc2VEb3duT25CdXR0b24gPSB0cnVlJyBbZm9ybUNvbnRyb2xdPVwiZmlsbExpc3RJbnB1dFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIkV4ZW1wbGUgOlxcbkhhY2hlciBncm9zc2nDqHJlbWVudCBsZSBjw6lsZXJpIGV0IGwnb2lnbm9uLlxcbkNvdXBlciBsZSBjaG91LWZsZXVyIGVuIHBldGl0cyBib3VxdWV0cy5cIlxuICAgICAgaTE4bi1wbGFjZWhvbGRlclxuICAgID5cbiAgICA8L3RleHRhcmVhPlxuICAgIDxidXR0b24gY2xhc3M9XCJtLWJ1dHRvbi1wcmltYXJ5XCIgKG1vdXNlZG93bik9J21vdXNzZURvd25PbkJ1dHRvbiA9IHRydWUnIChtb3VzZXVwKT1cInN1Ym1pdCgpXCI+XG4gICAgICA8c3BhbiBpMThuPkFqb3V0ZXIgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWxpc3QtaW5wdXRfX2luc3RydWN0aW9uc19fZGlyZWN0aW9uXCI+Pj48L3NwYW4+XG4gICAgPC9idXR0b24+XG4gICAgPGRpdiAqbmdJZj1cImluc3RydWN0aW9uc1wiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19hY3Rpb25zX19pbnN0cnVjdGlvbnNcIj57eyBpbnN0cnVjdGlvbnMgfX08L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluc3RydWN0aW9ucyAmJiBpbmdyZWRpZW50TW9kZVwiIGNsYXNzPVwibWlhbS1saXN0LWlucHV0X19hY3Rpb25zX19pbnN0cnVjdGlvbnNcIj5cbiAgICAgIDxzcGFuIGkxOG4+Vm91cyBwb3V2ZXogc2Fpc2lyIHVuIGluZ3LDqWRpZW50IG91IGNvcGllciBjb2xsZXIgdW5lIGxpc3RlIGTigJlpbmdyw6lkaWVudHMuPC9zcGFuPlxuICAgICAgPGJyIC8+XG4gICAgICA8c3BhbiBpMThuPlVuZSBsaWduZSBjb3JyZXNwb25kIMOgIHVuIGluZ3LDqWRpZW50Ljwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluc3RydWN0aW9ucyAmJiAhaW5ncmVkaWVudE1vZGVcIiBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fYWN0aW9uc19faW5zdHJ1Y3Rpb25zXCI+XG4gICAgICA8c3BhbiBpMThuPlZvdXMgcG91dmV6IHNhaXNpciB1bmUgw6l0YXBlIG91IGNvcGllciBjb2xsZXIgdW5lIGxpc3RlIGTigJnDqXRhcGVzLjwvc3Bhbj5cbiAgICAgIDxiciAvPlxuICAgICAgPHNwYW4gaTE4bj5VbmUgbGlnbmUgY29ycmVzcG9uZCDDoCB1bmUgw6l0YXBlLjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBJTkdSRURJRU5UIFBJQ1RVUkUgRVJST1IgTU9EQUwtLT5cbjxuZy1taWFtLW1vZGFsIFxuICAqbmdJZj1cImJpZ0ltYWdlV2FybmluZ1wiXG4gIFtpc0FuZ3VsYXJDb21wb25lbnRdPVwidHJ1ZVwiIFxuICBbbm9IZWFkZXJNb2RlXT1cImZhbHNlXCJcbiAgW2V4cGFuZGVkXT1cInRydWVcIlxuICBpMThuLXRpdGxlXG4gIHRpdGxlPVwiSW1hZ2UgdHJvcCB2b2x1bWluZXVzZVwiXG4gIGNvbmZpcm1CdXR0b25UZXh0PVwiRmVybWVyXCJcbiAgKGNsb3NlKT1cImNsb3NlQmlnSW1hZ2VFcnJvck1vZGFsKClcIlxuICAoY29uZmlybSk9XCJjbG9zZUJpZ0ltYWdlRXJyb3JNb2RhbCgpXCJcbj5cbiAgPHNwYW4gaTE4biBjbGFzcz1cIm1pYW0tbGlzdC1pbnB1dF9fcGljdHVyZV9fd2FybmluZ1wiPlZvdHJlIGltYWdlIGVzdCB0cm9wIGxvdXJkZSAobGEgdGFpbGxlIGRvaXQgw6p0cmUgaW5mw6lyaWV1cmUgw6AgNTAwIEtvKS4gTWVyY2kgZOKAmWVuIGFqb3V0ZXIgdW5lIHBsdXMgbMOpZ8OocmUuPC9zcGFuPlxuPC9uZy1taWFtLW1vZGFsPiJdfQ==
|
|
@@ -36,6 +36,7 @@ export class BasketsService extends Service {
|
|
|
36
36
|
this._basket$ = new BehaviorSubject(null);
|
|
37
37
|
this._basketPreview$ = new BehaviorSubject(null);
|
|
38
38
|
this.basketStats$ = new BehaviorSubject(null);
|
|
39
|
+
this.canSaveBasket$ = new BehaviorSubject(true);
|
|
39
40
|
this.basketIsFetching = false;
|
|
40
41
|
this.basketPreviewIsCalculating = false;
|
|
41
42
|
this.basketInitCalled = false;
|
|
@@ -99,7 +100,7 @@ export class BasketsService extends Service {
|
|
|
99
100
|
}), switchMap(basket => {
|
|
100
101
|
console.log('[Miam] Save basket with confirmed=true');
|
|
101
102
|
basket.attributes.confirmed = true;
|
|
102
|
-
return
|
|
103
|
+
return this.saveBasket(basket);
|
|
103
104
|
}), switchMap((resp) => {
|
|
104
105
|
confirmedBasket = this.new();
|
|
105
106
|
confirmedBasket.fill(resp);
|
|
@@ -165,13 +166,17 @@ export class BasketsService extends Service {
|
|
|
165
166
|
// fall case to a default pricebook
|
|
166
167
|
updatePricebook(pricebookName) {
|
|
167
168
|
return this.basket$.pipe(skipWhile(b => !b), take(1), switchMap(basket => {
|
|
169
|
+
if (!pricebookName) {
|
|
170
|
+
console.log(`[Miam] no pricebook ${JSON.stringify(pricebookName)}`);
|
|
171
|
+
return of(basket);
|
|
172
|
+
}
|
|
168
173
|
if (basket.pricebookKey === pricebookName) {
|
|
169
174
|
console.log(`[Miam] same pricebook ${JSON.stringify(pricebookName)}`);
|
|
170
175
|
return of(basket);
|
|
171
176
|
}
|
|
172
177
|
console.log(`[Miam] update pricebook to ${JSON.stringify(pricebookName)}`);
|
|
173
178
|
basket.pricebookKey = pricebookName;
|
|
174
|
-
return
|
|
179
|
+
return this.saveBasket(basket).pipe(map((resp) => {
|
|
175
180
|
const updatedBasket = this.new();
|
|
176
181
|
updatedBasket.fill(resp);
|
|
177
182
|
this._basket$.next(updatedBasket);
|
|
@@ -179,6 +184,12 @@ export class BasketsService extends Service {
|
|
|
179
184
|
}));
|
|
180
185
|
}));
|
|
181
186
|
}
|
|
187
|
+
saveBasket(basket) {
|
|
188
|
+
return this.canSaveBasket$.pipe(skipWhile(canSave => !canSave), take(1), switchMap(() => {
|
|
189
|
+
this.canSaveBasket$.next(false);
|
|
190
|
+
return basket.save().pipe(tap(() => this.canSaveBasket$.next(true)));
|
|
191
|
+
}));
|
|
192
|
+
}
|
|
182
193
|
loadPreview() {
|
|
183
194
|
return this.basket$.pipe(skipWhile(b => !b), switchMap(() => this.recipesService.loadRecipes()), switchMap(recipes => {
|
|
184
195
|
const basket = this._basket$.value;
|
|
@@ -287,4 +298,4 @@ BasketsService.ɵprov = i0.ɵɵdefineInjectable({ token: BasketsService, factory
|
|
|
287
298
|
providedIn: 'root'
|
|
288
299
|
}]
|
|
289
300
|
}], function () { return [{ type: i1.HttpClient }, { type: i2.BasketEntriesService }, { type: i3.GroceriesListsService }, { type: i4.GroceriesEntriesService }, { type: i5.PointOfSalesService }, { type: i6.RecipesService }, { type: i7.AnalyticsService }]; }, null); })();
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvYmFza2V0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBd0MsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFN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T0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXZVTSw4QkFBZSxHQUFHLEVBQUUsQ0FBQzs0RUFEakIsY0FBYztzREFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO2tEQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VydmljZSwgRG9jdW1lbnRDb2xsZWN0aW9uLCBEb2N1bWVudFJlc291cmNlIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgQmFza2V0IH0gZnJvbSAnLi4vX21vZGVscy9iYXNrZXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YXAsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCBhcyBlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEJhc2tldEVudHJpZXNTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXQtZW50cmllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4vcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZSwgTGluZUVudHJpZXMgfSBmcm9tICcuLi9fbW9kZWxzL2Jhc2tldC1wcmV2aWV3LWxpbmUnO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi9fbW9kZWxzL3JlY2lwZSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNFbnRyaWVzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWVudHJpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRFbnRyeSB9IGZyb20gJy4uL19tb2RlbHMvYmFza2V0LWVudHJ5JztcbmltcG9ydCB7IHVuaW9uQnksIGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ3VzdG9tUHJvcGVydGllcyB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JvY2VyaWVzRW50cnkgfSBmcm9tICcuLi9fbW9kZWxzL2dyb2Nlcmllcy1lbnRyeSc7XG5pbXBvcnQgeyBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uL190eXBlcy9idWlsZGVkL2NvbXBhcmFibGUtcHJvZHVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFza2V0U3RhdHMge1xuICB0b3RhbFByaWNlOiBudW1iZXI7XG4gIHJlY2lwZXNDb3VudDogbnVtYmVyO1xuICBlbnRyaWVzQ291bnQ6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0c1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPEJhc2tldD4ge1xuICBzdGF0aWMgZW50cmllc1BlclBhZ2VzID0gMzA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYmFza2V0RW50cmllc1NlcnZpY2U6IEJhc2tldEVudHJpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBncm9jZXJpZXNFbnRyaWVzU2VydmljZTogR3JvY2VyaWVzRW50cmllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIHJlc291cmNlID0gQmFza2V0O1xuICB0eXBlID0gJ2Jhc2tldHMnO1xuICBfYmFza2V0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QmFza2V0PihudWxsKTtcbiAgX2Jhc2tldFByZXZpZXckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYXNrZXRQcmV2aWV3TGluZVtdPihudWxsKTtcbiAgYmFza2V0U3RhdHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYXNrZXRTdGF0cz4obnVsbCk7XG4gIGJhc2tldElzRmV0Y2hpbmcgPSBmYWxzZTtcbiAgYmFza2V0UHJldmlld0lzQ2FsY3VsYXRpbmcgPSBmYWxzZTtcbiAgYmFza2V0SW5pdENhbGxlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2VudHJpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYXNrZXRFbnRyeVtdPihbXSk7XG5cbiAgLyoqXG4gICAqIFdlIHdhbnQgYmFza2V0JCB0byBiZSBhIHNpbmdsZXRvbiB0aGF0IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIGJhc2tldCwgc28gaXQgaXMgZmV0Y2hlZCBvbmx5IHdoZW4gbmVjZXNzYXJ5LlxuICAgKiBBdCBhbnkgcG9pbnQgaW4gdGltZSB0aGUgYmFza2V0IGNhbiBiZSBmZXRjaGVkIHZpYSB0aGUgaW5pdEJhc2tldCBmdW5jdGlvbiAoaWYgd2Ugd2FudCB0byBmZXRjaCBpdCBvbiBzdGFydHVwIHRvIHNhdmUgdGltZSBsYXRlcilcbiAgICogQnV0IGlmIGluaXRCYXNrZXQgaXMgbm90IGNhbGxlZCwgdGhlIGJhc2tldCB3aWxsIG9ubHkgYmUgZmV0Y2hlZCB0aGUgMXN0IHRpbWUgaXQgaXMgbmVlZGVkLlxuICAgKi9cbiAgZ2V0IGJhc2tldCQoKTogQmVoYXZpb3JTdWJqZWN0PEJhc2tldD4ge1xuICAgIGlmICghdGhpcy5fYmFza2V0JC52YWx1ZSAmJiAhdGhpcy5iYXNrZXRJc0ZldGNoaW5nKSB7XG4gICAgICB0aGlzLmJhc2tldElzRmV0Y2hpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5pbml0QmFza2V0KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9iYXNrZXQkO1xuICB9XG5cbiAgLyoqXG4gICAqIGJhc2tldFByZXZpZXckIHNob3VsZCBhbHNvIGJlIGEgc2luZ2xldG9uLCBhbmQgYXMgd2VsbCBhcyBiYXNrZXQkIGl0IHdpbGwgYmUgY2FsY3VsYXRlZCBmb3IgdGhlIGZpcnN0IHRpbWUgb25seSB3aGVuIG5lY2Vzc2FyeVxuICAgKiBvciBpZiBsb2FkUHJldmlldyBpcyBjYWxsZWQgYmVmb3JlXG4gICAqL1xuICBnZXQgYmFza2V0UHJldmlldyQoKTogQmVoYXZpb3JTdWJqZWN0PEJhc2tldFByZXZpZXdMaW5lW10+IHtcbiAgICBpZiAoIXRoaXMuX2Jhc2tldFByZXZpZXckLnZhbHVlICYmICF0aGlzLmJhc2tldFByZXZpZXdJc0NhbGN1bGF0aW5nKSB7XG4gICAgICB0aGlzLmJhc2tldFByZXZpZXdJc0NhbGN1bGF0aW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW5pdEJhc2tldCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYmFza2V0UHJldmlldyQ7XG4gIH1cblxuICAvLyBGZXRjaCByZWxhdGVkIGJhc2tldHMsIGZpbHRlcmluZyBvbiBhIHBvaW50IG9mIHNhbGVcbiAgZmV0Y2hGb3JMaXN0QW5kUG9zKGxpc3RJZDogc3RyaW5nLCBwb3NJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYXNrZXQ+IHtcbiAgICBpZiAoIWxpc3RJZCB8fCAhcG9zSWQpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgbGV0IHVybCA9IFtlLm1pYW1BUEksICdhcGkvdjEvZ3JvY2VyaWVzLWxpc3RzJywgbGlzdElkLCAnYmFza2V0cyddLmpvaW4oJy8nKTtcbiAgICB1cmwgPSBgJHt1cmx9P2ZpbHRlcltwb2ludF9vZl9zYWxlX2lkXT0ke3Bvc0lkfWA7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXG4gICAgICBza2lwV2hpbGUoKHJlc3A6IERvY3VtZW50Q29sbGVjdGlvbjxCYXNrZXQ+KSA9PiByZXNwLmlzX2xvYWRpbmcpLFxuICAgICAgbWFwKChyZXNwOiBEb2N1bWVudENvbGxlY3Rpb248QmFza2V0PikgPT4ge1xuICAgICAgICBjb25zdCBiYXNrZXRzID0gdGhpcy5uZXdDb2xsZWN0aW9uKCk7XG4gICAgICAgIGJhc2tldHMuZmlsbChyZXNwKTtcbiAgICAgICAgcmV0dXJuIGJhc2tldHMuZGF0YVswXTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGluaXRCYXNrZXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJhc2tldEluaXRDYWxsZWQpIHtcbiAgICAgIHRoaXMuYmFza2V0SW5pdENhbGxlZCA9IHRydWU7XG4gICAgICB0aGlzLmxvYWRCYXNrZXQoKS5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMubG9hZFByZXZpZXcoKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICByZWxvYWRCYXNrZXQoKTogT2JzZXJ2YWJsZTxCYXNrZXQ+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkQmFza2V0KCkucGlwZSh0YWtlKDEpKTtcbiAgfVxuXG4gIC8vIFNldCBiYXNrZXQgYXMgY29uZmlybWVkLCBhbmQgcmV0dXJucyBvbmx5IG9uY2UgdGhlIG5ldyBjdXJyZW50IGxpc3QgaXMgcmV0dXJuZWRcbiAgY29uZmlybUJhc2tldCh0b3RhbFByaWNlOiBudW1iZXIgfCBzdHJpbmcpOiBPYnNlcnZhYmxlPEJhc2tldD4ge1xuICAgIGxldCBjb25maXJtZWRCYXNrZXQ6IEJhc2tldDtcbiAgICBjb25zb2xlLmxvZyhgW01pYW1dIENvbmZpcm0gYmFza2V0ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlybWVkQmFza2V0KX1gKTtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoYiA9PiAhYiksXG4gICAgICB0YWtlKDEpLFxuICAgICAgdGFwKGJhc2tldCA9PiB7XG4gICAgICAgIGlmIChiYXNrZXQudG90YWxQcmljZSA+IDApIHtcbiAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50V2hlblJlYWR5KFxuICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1BBWU1FTlRfQ09ORklSTUVELCBudWxsLCB0aGlzLmV2ZW50UHJvcHMoYmFza2V0LCB0b3RhbFByaWNlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKGJhc2tldCA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbTWlhbV0gU2F2ZSBiYXNrZXQgd2l0aCBjb25maXJtZWQ9dHJ1ZScpO1xuICAgICAgICBiYXNrZXQuYXR0cmlidXRlcy5jb25maXJtZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gYmFza2V0LnNhdmUoKTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKChyZXNwOiBEb2N1bWVudFJlc291cmNlPEJhc2tldD4pID0+IHtcbiAgICAgICAgY29uZmlybWVkQmFza2V0ID0gdGhpcy5uZXcoKTtcbiAgICAgICAgY29uZmlybWVkQmFza2V0LmZpbGwocmVzcCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGBbTWlhbV0gc2VuZCBwdXNoIGFuYWx5dGljcyBldmVudCBpZiA+IDA6ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlybWVkQmFza2V0LnRvdGFsUHJpY2UpfSAke0pTT04uc3RyaW5naWZ5KGNvbmZpcm1lZEJhc2tldCl9YCk7XG4gICAgICAgIGlmIChjb25maXJtZWRCYXNrZXQudG90YWxQcmljZSA+IDAgJiYgY29uZmlybWVkQmFza2V0LnRva2VuKSB7XG4gICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudFdoZW5SZWFkeShcbiAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5FVkVOVF9CQVNLRVRfQ09ORklSTUVELCBudWxsLCB0aGlzLmV2ZW50UHJvcHMoY29uZmlybWVkQmFza2V0LCB0b3RhbFByaWNlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYmFza2V0JC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RzU2VydmljZS5yZXNldExpc3QoKTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2tldCQ7XG4gICAgICB9XG4gICAgICApLFxuICAgICAgc2tpcFdoaWxlKChiKSA9PiAhYiksXG4gICAgICBtYXAoKCkgPT4gY29uZmlybWVkQmFza2V0KVxuICAgICk7XG4gIH1cblxuICBldmVudFByb3BzKGJhc2tldDogQmFza2V0LCB0b3RhbFByaWNlOiBudW1iZXIgfCBzdHJpbmcpOiBDdXN0b21Qcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gaWYgeW91IGhhdmUgYSBiYXNrZXQgeW91IGhhdmUgYSBwb3MuLi5cbiAgICAgIHBvc19pZDogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5pZCxcbiAgICAgIHBvc19uYW1lOiB0aGlzLnBvc1NlcnZpY2UucG9zJC5nZXRWYWx1ZSgpLmF0dHJpYnV0ZXMubmFtZSxcbiAgICAgIGJhc2tldF9pZDogYmFza2V0LmlkLFxuICAgICAgbWlhbV9hbW91bnQ6IGJhc2tldC50b3RhbFByaWNlLFxuICAgICAgdG90YWxfYW1vdW50OiB0b3RhbFByaWNlXG4gICAgfTtcbiAgfVxuXG4gIGJhc2tldEVudHJpZXMoKTogT2JzZXJ2YWJsZTxCYXNrZXRFbnRyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJpZXMkO1xuICB9XG5cbiAgYWN0aXZlQmFza2V0RW50cmllcygpOiBPYnNlcnZhYmxlPEJhc2tldEVudHJ5W10+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXRFbnRyaWVzKCkucGlwZShcbiAgICAgIG1hcCgoZW50cmllczogQmFza2V0RW50cnlbXSkgPT4gZW50cmllcy5maWx0ZXIoZW50cnkgPT4gZW50cnkuZ3JvY2VyaWVzRW50cnlTdGF0dXMgPT09ICdhY3RpdmUnKSlcbiAgICApO1xuICB9XG5cbiAgLy8gRGVjcmVhc2UgcXVhbnRpdHkgb24gYSBsaXN0IG9mIGJhc2tldCBlbnRyaWVzXG4gIC8vIElmIHRoZSBxdWFudGl0eSBnb2VzIGJlbG93IDEsIHRoZSBjb3JyZXNwb25kaW5nIGdyb2NlcmllcyBlbnRyeSdzIHN0YXR1cyBnZXRzIGRlbGV0ZWRcbiAgLy8gUmVsb2FkIGJhc2tldCBhZnRlciBhbGwgb2JqZWN0cyBhcmUgc2F2ZWRcbiAgcmVtb3ZlQmFza2V0RW50cmllcyhlbnRyaWVzVG9SZW1vdmU6IENvbXBhcmFibGVQcm9kdWN0W10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5fZW50cmllcyQudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8R3JvY2VyaWVzRW50cnl8QmFza2V0RW50cnk+W10gPSBlbnRyaWVzVG9SZW1vdmUubWFwKGVudHJ5VG9SZW1vdmUgPT4ge1xuICAgICAgY29uc3QgYmFza2V0RW50cnkgPSB0aGlzLl9lbnRyaWVzJC52YWx1ZS5maW5kKGJlID0+IGJlLmlkID09PSBlbnRyeVRvUmVtb3ZlLmlkKTtcbiAgICAgIGlmICghYmFza2V0RW50cnkgfHwgIWVudHJ5VG9SZW1vdmUucXVhbnRpdHkpIHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaW5hbENvdW50ID0gYmFza2V0RW50cnkucXVhbnRpdHkgLSBlbnRyeVRvUmVtb3ZlLnF1YW50aXR5O1xuICAgICAgaWYgKGZpbmFsQ291bnQgPj0gMSkge1xuICAgICAgICBiYXNrZXRFbnRyeS5xdWFudGl0eSA9IGZpbmFsQ291bnQ7XG4gICAgICAgIHJldHVybiBiYXNrZXRFbnRyeS5zYXZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNrZXRFbnRyeS5xdWFudGl0eSA9IDE7XG4gICAgICAgIGJhc2tldEVudHJ5Lmdyb2Nlcmllc0VudHJ5LnN0YXR1cyA9ICdkZWxldGVkJztcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKFtiYXNrZXRFbnRyeS5zYXZlKCksIGJhc2tldEVudHJ5Lmdyb2Nlcmllc0VudHJ5LnNhdmUoKV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKHNhdmVPYnNlcnZhYmxlcykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxpc3RzU2VydmljZS5yZWZyZXNoQ3VycmVudExpc3QoKSksXG4gICAgICB0YWtlKDEpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEJhc2tldCgpOiBPYnNlcnZhYmxlPEJhc2tldD4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmxpc3RzU2VydmljZS5saXN0JCwgdGhpcy5wb3NTZXJ2aWNlLnBvcyRdKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdHMgPT4gICFyZXN1bHRzWzBdIHx8ICFyZXN1bHRzWzFdKSxcbiAgICAgIHN3aXRjaE1hcChyZXN1bHRzID0+IHRoaXMuZmV0Y2hGb3JMaXN0QW5kUG9zKHJlc3VsdHNbMF0uaWQsIHJlc3VsdHNbMV0uaWQpKSxcbiAgICAgIHRhcChiYXNrZXQgPT4ge1xuICAgICAgICB0aGlzLl9iYXNrZXQkLm5leHQoYmFza2V0KTtcbiAgICAgICAgdGhpcy5iYXNrZXRJc0ZldGNoaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyB3aWxsIHBhdGNoIGJhc2tldCB3aXRoIGdpdmVuIHByaWNlYm9va05hbWVcbiAgLy8gQXBpIHdpbGwgbG9vayBmb3IgcHJpY2VzIChwb3MgaXRlbXMpIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBwcmljZWJvb2sga2V5XG4gIC8vIGZhbGwgY2FzZSB0byBhIGRlZmF1bHQgcHJpY2Vib29rXG4gIHB1YmxpYyB1cGRhdGVQcmljZWJvb2socHJpY2Vib29rTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYXNrZXQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoYiA9PiAhYiksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKGJhc2tldCA9PiB7XG4gICAgICAgIGlmIChiYXNrZXQucHJpY2Vib29rS2V5ID09PSBwcmljZWJvb2tOYW1lKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYFtNaWFtXSBzYW1lIHByaWNlYm9vayAke0pTT04uc3RyaW5naWZ5KHByaWNlYm9va05hbWUpfWApO1xuICAgICAgICAgIHJldHVybiBvZihiYXNrZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKGBbTWlhbV0gdXBkYXRlIHByaWNlYm9vayB0byAke0pTT04uc3RyaW5naWZ5KHByaWNlYm9va05hbWUpfWApO1xuICAgICAgICBiYXNrZXQucHJpY2Vib29rS2V5ID0gcHJpY2Vib29rTmFtZTtcbiAgICAgICAgcmV0dXJuIGJhc2tldC5zYXZlKCkucGlwZShtYXAoKHJlc3A6IERvY3VtZW50UmVzb3VyY2U8QmFza2V0PikgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCYXNrZXQgPSB0aGlzLm5ldygpO1xuICAgICAgICAgIHVwZGF0ZWRCYXNrZXQuZmlsbChyZXNwKTtcbiAgICAgICAgICB0aGlzLl9iYXNrZXQkLm5leHQodXBkYXRlZEJhc2tldCk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRCYXNrZXQ7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByZXZpZXcoKTogT2JzZXJ2YWJsZTxCYXNrZXRQcmV2aWV3TGluZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFza2V0JC5waXBlKFxuICAgICAgc2tpcFdoaWxlKGIgPT4gIWIpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucmVjaXBlc1NlcnZpY2UubG9hZFJlY2lwZXMoKSksXG4gICAgICBzd2l0Y2hNYXAocmVjaXBlcyA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2tldDogQmFza2V0ID0gdGhpcy5fYmFza2V0JC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hCYXNrZXRFbnRyaWVzKGJhc2tldCkucGlwZShcbiAgICAgICAgICBtYXAoZW50cmllcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBsaW5lRW50cmllcyA9IHRoaXMuZ3JvdXBCYXNrZXRFbnRyaWVzKHJlY2lwZXMsIGVudHJpZXMpO1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLnJlY2lwZXNBbmRMaW5lRW50cmllc1RvQmFza2V0UHJldmlld0xpbmUocmVjaXBlcywgbGluZUVudHJpZXMpO1xuICAgICAgICAgICAgdGhpcy5fYmFza2V0UHJldmlldyQubmV4dChsaW5lcyk7XG4gICAgICAgICAgICB0aGlzLmJhc2tldFByZXZpZXdJc0NhbGN1bGF0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmJhc2tldFN0YXRzJC5uZXh0KHRoaXMuYnVpbGRTdGF0cyhsaW5lcykpO1xuICAgICAgICAgICAgcmV0dXJuIGxpbmVzO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoQmFza2V0RW50cmllcyhiYXNrZXQ6IEJhc2tldCk6IE9ic2VydmFibGU8QmFza2V0RW50cnlbXT4ge1xuICAgIGlmICghYmFza2V0IHx8ICFiYXNrZXQuY29tcGxldGlvbiB8fCBiYXNrZXQuY29tcGxldGlvbi50b3RhbCA8IDEpIHtcbiAgICAgIHRoaXMuX2VudHJpZXMkLm5leHQoW10pO1xuICAgICAgcmV0dXJuIHRoaXMuX2VudHJpZXMkO1xuICAgIH1cblxuICAgIGNvbnN0IHBhZ2VzQ291bnQgPSBNYXRoLmNlaWwoYmFza2V0LmNvbXBsZXRpb24udG90YWwgLyBCYXNrZXRzU2VydmljZS5lbnRyaWVzUGVyUGFnZXMpO1xuICAgIHJldHVybiBmb3JrSm9pbihBcnJheS5hcHBseShudWxsLCBBcnJheShwYWdlc0NvdW50KSkubWFwKCh2LCBpKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5mZXRjaEJhc2tldEVudHJpZXNQYWdlKGJhc2tldCwgaSArIDEpO1xuICAgIH0pKS5waXBlKFxuICAgICAgbWFwKChjb2xsZWN0aW9uczogRG9jdW1lbnRDb2xsZWN0aW9uPEJhc2tldEVudHJ5PltdKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBmbGF0dGVuKGNvbGxlY3Rpb25zLm1hcChjb2wgPT4gY29sLmRhdGEpKTtcbiAgICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeTogQmFza2V0RW50cnkpID0+IGVudHJ5LnNldEl0ZW1zU2VsZWN0aW9uKCkpO1xuICAgICAgICB0aGlzLl9lbnRyaWVzJC5uZXh0KGVudHJpZXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5fZW50cmllcyQudmFsdWU7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3RhdHMobGluZXM6IEJhc2tldFByZXZpZXdMaW5lW10pOiBCYXNrZXRTdGF0cyB7XG4gICAgY29uc3QgZW50cmllc0ZvdW5kOiBCYXNrZXRFbnRyeVtdID0gdW5pb25CeSguLi4gbGluZXMubWFwKGxpbmUgPT4gbGluZS5lbnRyaWVzLmZvdW5kKSwgJ2lkJyk7XG5cbiAgICBjb25zdCB0b3RhbFByaWNlID0gZW50cmllc0ZvdW5kLnJlZHVjZSgodG90YWwgLCBlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgaXRlbSA9IGVudHJ5LmF0dHJpYnV0ZXNbJ2Jhc2tldC1lbnRyaWVzLWl0ZW1zJ10uZmluZChpID0+IGkuaXRlbV9pZCA9PT0gZW50cnkuYXR0cmlidXRlc1snc2VsZWN0ZWQtaXRlbS1pZCddKTtcbiAgICAgIHRvdGFsICs9ICAoZW50cnkuYXR0cmlidXRlcy5xdWFudGl0eSB8fCAwKSAqIHBhcnNlRmxvYXQoaXRlbVsndW5pdC1wcmljZSddKTtcbiAgICAgIHJldHVybiB0b3RhbDtcbiAgICB9LCAwICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVjaXBlc0NvdW50OiBsaW5lcy5sZW5ndGgsXG4gICAgICBlbnRyaWVzQ291bnQ6IGVudHJpZXNGb3VuZC5sZW5ndGgsXG4gICAgICB0b3RhbFByaWNlXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hCYXNrZXRFbnRyaWVzUGFnZShiYXNrZXQ6IEJhc2tldCwgcGFnZTogbnVtYmVyKSB7XG4gICAgbGV0IHVybCA9IFtlLm1pYW1BUEksICdhcGkvdjEvYmFza2V0cycsIGJhc2tldC5pZCwgJ2Jhc2tldC1lbnRyaWVzJ10uam9pbignLycpO1xuICAgIHVybCA9IGAke3VybH0/aW5jbHVkZT1ncm9jZXJpZXMtZW50cnksaXRlbXMmcGFnZVtudW1iZXJdPSR7cGFnZX0mcGFnZVtzaXplXT0ke0Jhc2tldHNTZXJ2aWNlLmVudHJpZXNQZXJQYWdlc31gO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKChyZXNwOiBEb2N1bWVudENvbGxlY3Rpb248QmFza2V0RW50cnk+KSA9PiByZXNwLmlzX2xvYWRpbmcpLFxuICAgICAgbWFwKChyZXNwOiBEb2N1bWVudENvbGxlY3Rpb248QmFza2V0RW50cnk+KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2tldEVudHJpZXMgPSB0aGlzLmJhc2tldEVudHJpZXNTZXJ2aWNlLm5ld0NvbGxlY3Rpb24oKTtcbiAgICAgICAgYmFza2V0RW50cmllcy5maWxsKHJlc3ApO1xuICAgICAgICByZXR1cm4gYmFza2V0RW50cmllcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjaXBlc0FuZExpbmVFbnRyaWVzVG9CYXNrZXRQcmV2aWV3TGluZShyZWNpcGVzOiBSZWNpcGVbXSwgbGluZUVudHJpZXM6IExpbmVFbnRyaWVzW10pOiBCYXNrZXRQcmV2aWV3TGluZVtdIHtcbiAgICByZXR1cm4gcmVjaXBlcy5tYXAoKHJlY2lwZSwgaWR4KSA9PiB7XG4gICAgICBjb25zdCBpdGVtc0NvdW50ID0gbGluZUVudHJpZXNbaWR4XS5mb3VuZC5sZW5ndGg7XG4gICAgICBsZXQgcmVjaXBlUHJpY2UgPSAwLjA7XG4gICAgICBjb25zdCBndWVzdHMgPSByZWNpcGUubW9kaWZpZWRHdWVzdHMgfHwgcGFyc2VJbnQocmVjaXBlLmd1ZXN0cywgMTApO1xuXG4gICAgICBsaW5lRW50cmllc1tpZHhdLmZvdW5kLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBlbnRyeS5hdHRyaWJ1dGVzWydiYXNrZXQtZW50cmllcy1pdGVtcyddLmZpbmQoaXRlbSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0uaXRlbV9pZCA9PT0gZW50cnkuYXR0cmlidXRlc1snc2VsZWN0ZWQtaXRlbS1pZCddO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcXR5ID0gZW50cnkuYXR0cmlidXRlcy5xdWFudGl0eTtcbiAgICAgICAgY29uc3QgdW5pdFByaWNlID0gcGFyc2VGbG9hdChzZWxlY3RlZEl0ZW1bJ3VuaXQtcHJpY2UnXSk7XG4gICAgICAgIGNvbnN0IG51bWJlck9mUmVjaXBlc0ZvckVudHJ5ID0gZW50cnkuYXR0cmlidXRlc1sncmVjaXBlLWlkcyddLmxlbmd0aCB8fCAxO1xuXG4gICAgICAgIHJlY2lwZVByaWNlICs9IChxdHkgKiB1bml0UHJpY2UpIC8gbnVtYmVyT2ZSZWNpcGVzRm9yRW50cnk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHByaWNlUGVyR3Vlc3QgPSByZWNpcGVQcmljZSAvIGd1ZXN0cztcblxuICAgICAgcmV0dXJuIEJhc2tldFByZXZpZXdMaW5lLmZyb21SZWNpcGUocmVjaXBlLCBpdGVtc0NvdW50LCBwcmljZVBlckd1ZXN0LCByZWNpcGVQcmljZSwgbGluZUVudHJpZXNbaWR4XSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwQmFza2V0RW50cmllcyhyZWNpcGVzOiBSZWNpcGVbXSwgZW50cmllczogQmFza2V0RW50cnlbXSk6IExpbmVFbnRyaWVzW10ge1xuICAgIHJldHVybiByZWNpcGVzLm1hcChyZWNpcGUgPT4ge1xuICAgICAgY29uc3QgbGluZUVudHJpZXMgPSB7IGZvdW5kOiBbXSwgbm90Rm91bmQ6IFtdLCBvZnRlbkRlbGV0ZWQ6IFtdLCByZW1vdmVkOiBbXSB9IGFzIExpbmVFbnRyaWVzO1xuICAgICAgZW50cmllc1xuICAgICAgICAuZmlsdGVyKGVudHJ5ID0+IGVudHJ5LmF0dHJpYnV0ZXNbJ3JlY2lwZS1pZHMnXS5pbmNsdWRlcyhwYXJzZUludChyZWNpcGUuaWQsIDEwKSkpXG4gICAgICAgIC5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICBjb25zdCBhdmFpbGFibGUgPSBlbnRyeS5hdHRyaWJ1dGVzWydzZWxlY3RlZC1pdGVtLWlkJ107XG4gICAgICAgICAgaWYgKGF2YWlsYWJsZSkge1xuICAgICAgICAgICAgc3dpdGNoIChlbnRyeS5hdHRyaWJ1dGVzWydncm9jZXJpZXMtZW50cnktc3RhdHVzJ10pIHtcbiAgICAgICAgICAgICAgY2FzZSAnb2Z0ZW5fZGVsZXRlZCc6IHtcbiAgICAgICAgICAgICAgICBsaW5lRW50cmllcy5vZnRlbkRlbGV0ZWQucHVzaChlbnRyeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2FzZSAnZGVsZXRlZCc6IHtcbiAgICAgICAgICAgICAgICBsaW5lRW50cmllcy5yZW1vdmVkLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lRW50cmllcy5mb3VuZC5wdXNoKGVudHJ5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaW5lRW50cmllcy5ub3RGb3VuZC5wdXNoKGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuIGxpbmVFbnRyaWVzO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFza2V0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvYmFza2V0cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBd0MsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBYyxlQUFlLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsSUFBSSxDQUFDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQWUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFN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QyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ2pGLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDZixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ3ZELElBQUksU0FBUyxFQUFFO29CQUNiLFFBQVEsS0FBSyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO3dCQUNsRCxLQUFLLGVBQWUsQ0FBQyxDQUFDOzRCQUNwQixXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDckMsTUFBTTt5QkFDUDt3QkFDRCxLQUFLLFNBQVMsQ0FBQyxDQUFDOzRCQUNkLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNoQyxNQUFNO3lCQUNQO3dCQUNELE9BQU8sQ0FBQyxDQUFDOzRCQUNQLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUM5QixNQUFNO3lCQUNQO3FCQUNGO2lCQUNGO3FCQUFNO29CQUNMLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNsQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQXpWTSw4QkFBZSxHQUFHLEVBQUUsQ0FBQzs0RUFEakIsY0FBYztzREFBZCxjQUFjLFdBQWQsY0FBYyxtQkFGYixNQUFNO2tEQUVQLGNBQWM7Y0FIMUIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VydmljZSwgRG9jdW1lbnRDb2xsZWN0aW9uLCBEb2N1bWVudFJlc291cmNlIH0gZnJvbSAnbmd4LWpzb25hcGknO1xuaW1wb3J0IHsgQmFza2V0IH0gZnJvbSAnLi4vX21vZGVscy9iYXNrZXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YXAsIG1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCBhcyBlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEJhc2tldEVudHJpZXNTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXQtZW50cmllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4vcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRQcmV2aWV3TGluZSwgTGluZUVudHJpZXMgfSBmcm9tICcuLi9fbW9kZWxzL2Jhc2tldC1wcmV2aWV3LWxpbmUnO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi9fbW9kZWxzL3JlY2lwZSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNFbnRyaWVzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWVudHJpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRFbnRyeSB9IGZyb20gJy4uL19tb2RlbHMvYmFza2V0LWVudHJ5JztcbmltcG9ydCB7IHVuaW9uQnksIGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQ3VzdG9tUHJvcGVydGllcyB9IGZyb20gJy4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JvY2VyaWVzRW50cnkgfSBmcm9tICcuLi9fbW9kZWxzL2dyb2Nlcmllcy1lbnRyeSc7XG5pbXBvcnQgeyBDb21wYXJhYmxlUHJvZHVjdCB9IGZyb20gJy4uL190eXBlcy9idWlsZGVkL2NvbXBhcmFibGUtcHJvZHVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFza2V0U3RhdHMge1xuICB0b3RhbFByaWNlOiBudW1iZXI7XG4gIHJlY2lwZXNDb3VudDogbnVtYmVyO1xuICBlbnRyaWVzQ291bnQ6IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmFza2V0c1NlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlPEJhc2tldD4ge1xuICBzdGF0aWMgZW50cmllc1BlclBhZ2VzID0gMzA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYmFza2V0RW50cmllc1NlcnZpY2U6IEJhc2tldEVudHJpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBncm9jZXJpZXNFbnRyaWVzU2VydmljZTogR3JvY2VyaWVzRW50cmllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMucmVnaXN0ZXIoKTtcbiAgfVxuXG4gIHJlc291cmNlID0gQmFza2V0O1xuICB0eXBlID0gJ2Jhc2tldHMnO1xuICBfYmFza2V0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QmFza2V0PihudWxsKTtcbiAgX2Jhc2tldFByZXZpZXckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYXNrZXRQcmV2aWV3TGluZVtdPihudWxsKTtcbiAgYmFza2V0U3RhdHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYXNrZXRTdGF0cz4obnVsbCk7XG4gIGNhblNhdmVCYXNrZXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgYmFza2V0SXNGZXRjaGluZyA9IGZhbHNlO1xuICBiYXNrZXRQcmV2aWV3SXNDYWxjdWxhdGluZyA9IGZhbHNlO1xuICBiYXNrZXRJbml0Q2FsbGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZW50cmllcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2tldEVudHJ5W10+KFtdKTtcblxuICAvKipcbiAgICogV2Ugd2FudCBiYXNrZXQkIHRvIGJlIGEgc2luZ2xldG9uIHRoYXQgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgYmFza2V0LCBzbyBpdCBpcyBmZXRjaGVkIG9ubHkgd2hlbiBuZWNlc3NhcnkuXG4gICAqIEF0IGFueSBwb2ludCBpbiB0aW1lIHRoZSBiYXNrZXQgY2FuIGJlIGZldGNoZWQgdmlhIHRoZSBpbml0QmFza2V0IGZ1bmN0aW9uIChpZiB3ZSB3YW50IHRvIGZldGNoIGl0IG9uIHN0YXJ0dXAgdG8gc2F2ZSB0aW1lIGxhdGVyKVxuICAgKiBCdXQgaWYgaW5pdEJhc2tldCBpcyBub3QgY2FsbGVkLCB0aGUgYmFza2V0IHdpbGwgb25seSBiZSBmZXRjaGVkIHRoZSAxc3QgdGltZSBpdCBpcyBuZWVkZWQuXG4gICAqL1xuICBnZXQgYmFza2V0JCgpOiBCZWhhdmlvclN1YmplY3Q8QmFza2V0PiB7XG4gICAgaWYgKCF0aGlzLl9iYXNrZXQkLnZhbHVlICYmICF0aGlzLmJhc2tldElzRmV0Y2hpbmcpIHtcbiAgICAgIHRoaXMuYmFza2V0SXNGZXRjaGluZyA9IHRydWU7XG4gICAgICB0aGlzLmluaXRCYXNrZXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Jhc2tldCQ7XG4gIH1cblxuICAvKipcbiAgICogYmFza2V0UHJldmlldyQgc2hvdWxkIGFsc28gYmUgYSBzaW5nbGV0b24sIGFuZCBhcyB3ZWxsIGFzIGJhc2tldCQgaXQgd2lsbCBiZSBjYWxjdWxhdGVkIGZvciB0aGUgZmlyc3QgdGltZSBvbmx5IHdoZW4gbmVjZXNzYXJ5XG4gICAqIG9yIGlmIGxvYWRQcmV2aWV3IGlzIGNhbGxlZCBiZWZvcmVcbiAgICovXG4gIGdldCBiYXNrZXRQcmV2aWV3JCgpOiBCZWhhdmlvclN1YmplY3Q8QmFza2V0UHJldmlld0xpbmVbXT4ge1xuICAgIGlmICghdGhpcy5fYmFza2V0UHJldmlldyQudmFsdWUgJiYgIXRoaXMuYmFza2V0UHJldmlld0lzQ2FsY3VsYXRpbmcpIHtcbiAgICAgIHRoaXMuYmFza2V0UHJldmlld0lzQ2FsY3VsYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5pbml0QmFza2V0KCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9iYXNrZXRQcmV2aWV3JDtcbiAgfVxuXG4gIC8vIEZldGNoIHJlbGF0ZWQgYmFza2V0cywgZmlsdGVyaW5nIG9uIGEgcG9pbnQgb2Ygc2FsZVxuICBmZXRjaEZvckxpc3RBbmRQb3MobGlzdElkOiBzdHJpbmcsIHBvc0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEJhc2tldD4ge1xuICAgIGlmICghbGlzdElkIHx8ICFwb3NJZCkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBsZXQgdXJsID0gW2UubWlhbUFQSSwgJ2FwaS92MS9ncm9jZXJpZXMtbGlzdHMnLCBsaXN0SWQsICdiYXNrZXRzJ10uam9pbignLycpO1xuICAgIHVybCA9IGAke3VybH0/ZmlsdGVyW3BvaW50X29mX3NhbGVfaWRdPSR7cG9zSWR9YDtcblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCkucGlwZShcbiAgICAgIHNraXBXaGlsZSgocmVzcDogRG9jdW1lbnRDb2xsZWN0aW9uPEJhc2tldD4pID0+IHJlc3AuaXNfbG9hZGluZyksXG4gICAgICBtYXAoKHJlc3A6IERvY3VtZW50Q29sbGVjdGlvbjxCYXNrZXQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhc2tldHMgPSB0aGlzLm5ld0NvbGxlY3Rpb24oKTtcbiAgICAgICAgYmFza2V0cy5maWxsKHJlc3ApO1xuICAgICAgICByZXR1cm4gYmFza2V0cy5kYXRhWzBdO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgaW5pdEJhc2tldCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYmFza2V0SW5pdENhbGxlZCkge1xuICAgICAgdGhpcy5iYXNrZXRJbml0Q2FsbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9hZEJhc2tldCgpLnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5sb2FkUHJldmlldygpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbG9hZEJhc2tldCgpOiBPYnNlcnZhYmxlPEJhc2tldD4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRCYXNrZXQoKS5waXBlKHRha2UoMSkpO1xuICB9XG5cbiAgLy8gU2V0IGJhc2tldCBhcyBjb25maXJtZWQsIGFuZCByZXR1cm5zIG9ubHkgb25jZSB0aGUgbmV3IGN1cnJlbnQgbGlzdCBpcyByZXR1cm5lZFxuICBjb25maXJtQmFza2V0KHRvdGFsUHJpY2U6IG51bWJlciB8IHN0cmluZyk6IE9ic2VydmFibGU8QmFza2V0PiB7XG4gICAgbGV0IGNvbmZpcm1lZEJhc2tldDogQmFza2V0O1xuICAgIGNvbnNvbGUubG9nKGBbTWlhbV0gQ29uZmlybSBiYXNrZXQgJHtKU09OLnN0cmluZ2lmeShjb25maXJtZWRCYXNrZXQpfWApO1xuICAgIHJldHVybiB0aGlzLmJhc2tldCQucGlwZShcbiAgICAgIHNraXBXaGlsZShiID0+ICFiKSxcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAoYmFza2V0ID0+IHtcbiAgICAgICAgaWYgKGJhc2tldC50b3RhbFByaWNlID4gMCkge1xuICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkoXG4gICAgICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUEFZTUVOVF9DT05GSVJNRUQsIG51bGwsIHRoaXMuZXZlbnRQcm9wcyhiYXNrZXQsIHRvdGFsUHJpY2UpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoYmFza2V0ID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tNaWFtXSBTYXZlIGJhc2tldCB3aXRoIGNvbmZpcm1lZD10cnVlJyk7XG4gICAgICAgIGJhc2tldC5hdHRyaWJ1dGVzLmNvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVCYXNrZXQoYmFza2V0KTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKChyZXNwOiBEb2N1bWVudFJlc291cmNlPEJhc2tldD4pID0+IHtcbiAgICAgICAgY29uZmlybWVkQmFza2V0ID0gdGhpcy5uZXcoKTtcbiAgICAgICAgY29uZmlybWVkQmFza2V0LmZpbGwocmVzcCk7XG4gICAgICAgIGNvbnNvbGUubG9nKGBbTWlhbV0gc2VuZCBwdXNoIGFuYWx5dGljcyBldmVudCBpZiA+IDA6ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlybWVkQmFza2V0LnRvdGFsUHJpY2UpfSAke0pTT04uc3RyaW5naWZ5KGNvbmZpcm1lZEJhc2tldCl9YCk7XG4gICAgICAgIGlmIChjb25maXJtZWRCYXNrZXQudG90YWxQcmljZSA+IDAgJiYgY29uZmlybWVkQmFza2V0LnRva2VuKSB7XG4gICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudFdoZW5SZWFkeShcbiAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5FVkVOVF9CQVNLRVRfQ09ORklSTUVELCBudWxsLCB0aGlzLmV2ZW50UHJvcHMoY29uZmlybWVkQmFza2V0LCB0b3RhbFByaWNlKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYmFza2V0JC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RzU2VydmljZS5yZXNldExpc3QoKTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2tldCQ7XG4gICAgICB9XG4gICAgICApLFxuICAgICAgc2tpcFdoaWxlKChiKSA9PiAhYiksXG4gICAgICBtYXAoKCkgPT4gY29uZmlybWVkQmFza2V0KVxuICAgICk7XG4gIH1cblxuICBldmVudFByb3BzKGJhc2tldDogQmFza2V0LCB0b3RhbFByaWNlOiBudW1iZXIgfCBzdHJpbmcpOiBDdXN0b21Qcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gaWYgeW91IGhhdmUgYSBiYXNrZXQgeW91IGhhdmUgYSBwb3MuLi5cbiAgICAgIHBvc19pZDogdGhpcy5wb3NTZXJ2aWNlLnBvcyQuZ2V0VmFsdWUoKS5pZCxcbiAgICAgIHBvc19uYW1lOiB0aGlzLnBvc1NlcnZpY2UucG9zJC5nZXRWYWx1ZSgpLmF0dHJpYnV0ZXMubmFtZSxcbiAgICAgIGJhc2tldF9pZDogYmFza2V0LmlkLFxuICAgICAgbWlhbV9hbW91bnQ6IGJhc2tldC50b3RhbFByaWNlLFxuICAgICAgdG90YWxfYW1vdW50OiB0b3RhbFByaWNlXG4gICAgfTtcbiAgfVxuXG4gIGJhc2tldEVudHJpZXMoKTogT2JzZXJ2YWJsZTxCYXNrZXRFbnRyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VudHJpZXMkO1xuICB9XG5cbiAgYWN0aXZlQmFza2V0RW50cmllcygpOiBPYnNlcnZhYmxlPEJhc2tldEVudHJ5W10+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXRFbnRyaWVzKCkucGlwZShcbiAgICAgIG1hcCgoZW50cmllczogQmFza2V0RW50cnlbXSkgPT4gZW50cmllcy5maWx0ZXIoZW50cnkgPT4gZW50cnkuZ3JvY2VyaWVzRW50cnlTdGF0dXMgPT09ICdhY3RpdmUnKSlcbiAgICApO1xuICB9XG5cbiAgLy8gRGVjcmVhc2UgcXVhbnRpdHkgb24gYSBsaXN0IG9mIGJhc2tldCBlbnRyaWVzXG4gIC8vIElmIHRoZSBxdWFudGl0eSBnb2VzIGJlbG93IDEsIHRoZSBjb3JyZXNwb25kaW5nIGdyb2NlcmllcyBlbnRyeSdzIHN0YXR1cyBnZXRzIGRlbGV0ZWRcbiAgLy8gUmVsb2FkIGJhc2tldCBhZnRlciBhbGwgb2JqZWN0cyBhcmUgc2F2ZWRcbiAgcmVtb3ZlQmFza2V0RW50cmllcyhlbnRyaWVzVG9SZW1vdmU6IENvbXBhcmFibGVQcm9kdWN0W10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5fZW50cmllcyQudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlT2JzZXJ2YWJsZXM6IE9ic2VydmFibGU8R3JvY2VyaWVzRW50cnl8QmFza2V0RW50cnk+W10gPSBlbnRyaWVzVG9SZW1vdmUubWFwKGVudHJ5VG9SZW1vdmUgPT4ge1xuICAgICAgY29uc3QgYmFza2V0RW50cnkgPSB0aGlzLl9lbnRyaWVzJC52YWx1ZS5maW5kKGJlID0+IGJlLmlkID09PSBlbnRyeVRvUmVtb3ZlLmlkKTtcbiAgICAgIGlmICghYmFza2V0RW50cnkgfHwgIWVudHJ5VG9SZW1vdmUucXVhbnRpdHkpIHtcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaW5hbENvdW50ID0gYmFza2V0RW50cnkucXVhbnRpdHkgLSBlbnRyeVRvUmVtb3ZlLnF1YW50aXR5O1xuICAgICAgaWYgKGZpbmFsQ291bnQgPj0gMSkge1xuICAgICAgICBiYXNrZXRFbnRyeS5xdWFudGl0eSA9IGZpbmFsQ291bnQ7XG4gICAgICAgIHJldHVybiBiYXNrZXRFbnRyeS5zYXZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNrZXRFbnRyeS5xdWFudGl0eSA9IDE7XG4gICAgICAgIGJhc2tldEVudHJ5Lmdyb2Nlcmllc0VudHJ5LnN0YXR1cyA9ICdkZWxldGVkJztcbiAgICAgICAgcmV0dXJuIGZvcmtKb2luKFtiYXNrZXRFbnRyeS5zYXZlKCksIGJhc2tldEVudHJ5Lmdyb2Nlcmllc0VudHJ5LnNhdmUoKV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZvcmtKb2luKHNhdmVPYnNlcnZhYmxlcykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxpc3RzU2VydmljZS5yZWZyZXNoQ3VycmVudExpc3QoKSksXG4gICAgICB0YWtlKDEpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEJhc2tldCgpOiBPYnNlcnZhYmxlPEJhc2tldD4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmxpc3RzU2VydmljZS5saXN0JCwgdGhpcy5wb3NTZXJ2aWNlLnBvcyRdKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlc3VsdHMgPT4gICFyZXN1bHRzWzBdIHx8ICFyZXN1bHRzWzFdKSxcbiAgICAgIHN3aXRjaE1hcChyZXN1bHRzID0+IHRoaXMuZmV0Y2hGb3JMaXN0QW5kUG9zKHJlc3VsdHNbMF0uaWQsIHJlc3VsdHNbMV0uaWQpKSxcbiAgICAgIHRhcChiYXNrZXQgPT4ge1xuICAgICAgICB0aGlzLl9iYXNrZXQkLm5leHQoYmFza2V0KTtcbiAgICAgICAgdGhpcy5iYXNrZXRJc0ZldGNoaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyB3aWxsIHBhdGNoIGJhc2tldCB3aXRoIGdpdmVuIHByaWNlYm9va05hbWVcbiAgLy8gQXBpIHdpbGwgbG9vayBmb3IgcHJpY2VzIChwb3MgaXRlbXMpIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBwcmljZWJvb2sga2V5XG4gIC8vIGZhbGwgY2FzZSB0byBhIGRlZmF1bHQgcHJpY2Vib29rXG4gIHB1YmxpYyB1cGRhdGVQcmljZWJvb2socHJpY2Vib29rTmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYXNrZXQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoYiA9PiAhYiksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKGJhc2tldCA9PiB7XG4gICAgICAgIGlmICghcHJpY2Vib29rTmFtZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBbTWlhbV0gbm8gcHJpY2Vib29rICR7SlNPTi5zdHJpbmdpZnkocHJpY2Vib29rTmFtZSl9YCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGJhc2tldCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJhc2tldC5wcmljZWJvb2tLZXkgPT09IHByaWNlYm9va05hbWUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgW01pYW1dIHNhbWUgcHJpY2Vib29rICR7SlNPTi5zdHJpbmdpZnkocHJpY2Vib29rTmFtZSl9YCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGJhc2tldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coYFtNaWFtXSB1cGRhdGUgcHJpY2Vib29rIHRvICR7SlNPTi5zdHJpbmdpZnkocHJpY2Vib29rTmFtZSl9YCk7XG4gICAgICAgIGJhc2tldC5wcmljZWJvb2tLZXkgPSBwcmljZWJvb2tOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcy5zYXZlQmFza2V0KGJhc2tldCkucGlwZShtYXAoKHJlc3A6IERvY3VtZW50UmVzb3VyY2U8QmFza2V0PikgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRCYXNrZXQgPSB0aGlzLm5ldygpO1xuICAgICAgICAgIHVwZGF0ZWRCYXNrZXQuZmlsbChyZXNwKTtcbiAgICAgICAgICB0aGlzLl9iYXNrZXQkLm5leHQodXBkYXRlZEJhc2tldCk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRCYXNrZXQ7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZUJhc2tldChiYXNrZXQ6IEJhc2tldCkge1xuICAgIHJldHVybiB0aGlzLmNhblNhdmVCYXNrZXQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoY2FuU2F2ZSA9PiAhY2FuU2F2ZSksXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5TYXZlQmFza2V0JC5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIGJhc2tldC5zYXZlKCkucGlwZShcbiAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5jYW5TYXZlQmFza2V0JC5uZXh0KHRydWUpKVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUHJldmlldygpOiBPYnNlcnZhYmxlPEJhc2tldFByZXZpZXdMaW5lW10+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXQkLnBpcGUoXG4gICAgICBza2lwV2hpbGUoYiA9PiAhYiksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5yZWNpcGVzU2VydmljZS5sb2FkUmVjaXBlcygpKSxcbiAgICAgIHN3aXRjaE1hcChyZWNpcGVzID0+IHtcbiAgICAgICAgY29uc3QgYmFza2V0OiBCYXNrZXQgPSB0aGlzLl9iYXNrZXQkLnZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEJhc2tldEVudHJpZXMoYmFza2V0KS5waXBlKFxuICAgICAgICAgIG1hcChlbnRyaWVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpbmVFbnRyaWVzID0gdGhpcy5ncm91cEJhc2tldEVudHJpZXMocmVjaXBlcywgZW50cmllcyk7XG4gICAgICAgICAgICBjb25zdCBsaW5lcyA9IHRoaXMucmVjaXBlc0FuZExpbmVFbnRyaWVzVG9CYXNrZXRQcmV2aWV3TGluZShyZWNpcGVzLCBsaW5lRW50cmllcyk7XG4gICAgICAgICAgICB0aGlzLl9iYXNrZXRQcmV2aWV3JC5uZXh0KGxpbmVzKTtcbiAgICAgICAgICAgIHRoaXMuYmFza2V0UHJldmlld0lzQ2FsY3VsYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYmFza2V0U3RhdHMkLm5leHQodGhpcy5idWlsZFN0YXRzKGxpbmVzKSk7XG4gICAgICAgICAgICByZXR1cm4gbGluZXM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hCYXNrZXRFbnRyaWVzKGJhc2tldDogQmFza2V0KTogT2JzZXJ2YWJsZTxCYXNrZXRFbnRyeVtdPiB7XG4gICAgaWYgKCFiYXNrZXQgfHwgIWJhc2tldC5jb21wbGV0aW9uIHx8IGJhc2tldC5jb21wbGV0aW9uLnRvdGFsIDwgMSkge1xuICAgICAgdGhpcy5fZW50cmllcyQubmV4dChbXSk7XG4gICAgICByZXR1cm4gdGhpcy5fZW50cmllcyQ7XG4gICAgfVxuXG4gICAgY29uc3QgcGFnZXNDb3VudCA9IE1hdGguY2VpbChiYXNrZXQuY29tcGxldGlvbi50b3RhbCAvIEJhc2tldHNTZXJ2aWNlLmVudHJpZXNQZXJQYWdlcyk7XG4gICAgcmV0dXJuIGZvcmtKb2luKEFycmF5LmFwcGx5KG51bGwsIEFycmF5KHBhZ2VzQ291bnQpKS5tYXAoKHYsIGkpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmZldGNoQmFza2V0RW50cmllc1BhZ2UoYmFza2V0LCBpICsgMSk7XG4gICAgfSkpLnBpcGUoXG4gICAgICBtYXAoKGNvbGxlY3Rpb25zOiBEb2N1bWVudENvbGxlY3Rpb248QmFza2V0RW50cnk+W10pID0+IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGZsYXR0ZW4oY29sbGVjdGlvbnMubWFwKGNvbCA9PiBjb2wuZGF0YSkpO1xuICAgICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5OiBCYXNrZXRFbnRyeSkgPT4gZW50cnkuc2V0SXRlbXNTZWxlY3Rpb24oKSk7XG4gICAgICAgIHRoaXMuX2VudHJpZXMkLm5leHQoZW50cmllcyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnRyaWVzJC52YWx1ZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTdGF0cyhsaW5lczogQmFza2V0UHJldmlld0xpbmVbXSk6IEJhc2tldFN0YXRzIHtcbiAgICBjb25zdCBlbnRyaWVzRm91bmQ6IEJhc2tldEVudHJ5W10gPSB1bmlvbkJ5KC4uLiBsaW5lcy5tYXAobGluZSA9PiBsaW5lLmVudHJpZXMuZm91bmQpLCAnaWQnKTtcblxuICAgIGNvbnN0IHRvdGFsUHJpY2UgPSBlbnRyaWVzRm91bmQucmVkdWNlKCh0b3RhbCAsIGVudHJ5KSA9PiB7XG4gICAgICBjb25zdCBpdGVtID0gZW50cnkuYXR0cmlidXRlc1snYmFza2V0LWVudHJpZXMtaXRlbXMnXS5maW5kKGkgPT4gaS5pdGVtX2lkID09PSBlbnRyeS5hdHRyaWJ1dGVzWydzZWxlY3RlZC1pdGVtLWlkJ10pO1xuICAgICAgdG90YWwgKz0gIChlbnRyeS5hdHRyaWJ1dGVzLnF1YW50aXR5IHx8IDApICogcGFyc2VGbG9hdChpdGVtWyd1bml0LXByaWNlJ10pO1xuICAgICAgcmV0dXJuIHRvdGFsO1xuICAgIH0sIDAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWNpcGVzQ291bnQ6IGxpbmVzLmxlbmd0aCxcbiAgICAgIGVudHJpZXNDb3VudDogZW50cmllc0ZvdW5kLmxlbmd0aCxcbiAgICAgIHRvdGFsUHJpY2VcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaEJhc2tldEVudHJpZXNQYWdlKGJhc2tldDogQmFza2V0LCBwYWdlOiBudW1iZXIpIHtcbiAgICBsZXQgdXJsID0gW2UubWlhbUFQSSwgJ2FwaS92MS9iYXNrZXRzJywgYmFza2V0LmlkLCAnYmFza2V0LWVudHJpZXMnXS5qb2luKCcvJyk7XG4gICAgdXJsID0gYCR7dXJsfT9pbmNsdWRlPWdyb2Nlcmllcy1lbnRyeSxpdGVtcyZwYWdlW251bWJlcl09JHtwYWdlfSZwYWdlW3NpemVdPSR7QmFza2V0c1NlcnZpY2UuZW50cmllc1BlclBhZ2VzfWA7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXG4gICAgICBza2lwV2hpbGUoKHJlc3A6IERvY3VtZW50Q29sbGVjdGlvbjxCYXNrZXRFbnRyeT4pID0+IHJlc3AuaXNfbG9hZGluZyksXG4gICAgICBtYXAoKHJlc3A6IERvY3VtZW50Q29sbGVjdGlvbjxCYXNrZXRFbnRyeT4pID0+IHtcbiAgICAgICAgY29uc3QgYmFza2V0RW50cmllcyA9IHRoaXMuYmFza2V0RW50cmllc1NlcnZpY2UubmV3Q29sbGVjdGlvbigpO1xuICAgICAgICBiYXNrZXRFbnRyaWVzLmZpbGwocmVzcCk7XG4gICAgICAgIHJldHVybiBiYXNrZXRFbnRyaWVzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNpcGVzQW5kTGluZUVudHJpZXNUb0Jhc2tldFByZXZpZXdMaW5lKHJlY2lwZXM6IFJlY2lwZVtdLCBsaW5lRW50cmllczogTGluZUVudHJpZXNbXSk6IEJhc2tldFByZXZpZXdMaW5lW10ge1xuICAgIHJldHVybiByZWNpcGVzLm1hcCgocmVjaXBlLCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1zQ291bnQgPSBsaW5lRW50cmllc1tpZHhdLmZvdW5kLmxlbmd0aDtcbiAgICAgIGxldCByZWNpcGVQcmljZSA9IDAuMDtcbiAgICAgIGNvbnN0IGd1ZXN0cyA9IHJlY2lwZS5tb2RpZmllZEd1ZXN0cyB8fCBwYXJzZUludChyZWNpcGUuZ3Vlc3RzLCAxMCk7XG5cbiAgICAgIGxpbmVFbnRyaWVzW2lkeF0uZm91bmQuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IGVudHJ5LmF0dHJpYnV0ZXNbJ2Jhc2tldC1lbnRyaWVzLWl0ZW1zJ10uZmluZChpdGVtID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5pdGVtX2lkID09PSBlbnRyeS5hdHRyaWJ1dGVzWydzZWxlY3RlZC1pdGVtLWlkJ107XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBxdHkgPSBlbnRyeS5hdHRyaWJ1dGVzLnF1YW50aXR5O1xuICAgICAgICBjb25zdCB1bml0UHJpY2UgPSBwYXJzZUZsb2F0KHNlbGVjdGVkSXRlbVsndW5pdC1wcmljZSddKTtcbiAgICAgICAgY29uc3QgbnVtYmVyT2ZSZWNpcGVzRm9yRW50cnkgPSBlbnRyeS5hdHRyaWJ1dGVzWydyZWNpcGUtaWRzJ10ubGVuZ3RoIHx8IDE7XG5cbiAgICAgICAgcmVjaXBlUHJpY2UgKz0gKHF0eSAqIHVuaXRQcmljZSkgLyBudW1iZXJPZlJlY2lwZXNGb3JFbnRyeTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHJpY2VQZXJHdWVzdCA9IHJlY2lwZVByaWNlIC8gZ3Vlc3RzO1xuXG4gICAgICByZXR1cm4gQmFza2V0UHJldmlld0xpbmUuZnJvbVJlY2lwZShyZWNpcGUsIGl0ZW1zQ291bnQsIHByaWNlUGVyR3Vlc3QsIHJlY2lwZVByaWNlLCBsaW5lRW50cmllc1tpZHhdKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ3JvdXBCYXNrZXRFbnRyaWVzKHJlY2lwZXM6IFJlY2lwZVtdLCBlbnRyaWVzOiBCYXNrZXRFbnRyeVtdKTogTGluZUVudHJpZXNbXSB7XG4gICAgcmV0dXJuIHJlY2lwZXMubWFwKHJlY2lwZSA9PiB7XG4gICAgICBjb25zdCBsaW5lRW50cmllcyA9IHsgZm91bmQ6IFtdLCBub3RGb3VuZDogW10sIG9mdGVuRGVsZXRlZDogW10sIHJlbW92ZWQ6IFtdIH0gYXMgTGluZUVudHJpZXM7XG4gICAgICBlbnRyaWVzXG4gICAgICAgIC5maWx0ZXIoZW50cnkgPT4gZW50cnkuYXR0cmlidXRlc1sncmVjaXBlLWlkcyddLmluY2x1ZGVzKHBhcnNlSW50KHJlY2lwZS5pZCwgMTApKSlcbiAgICAgICAgLmZvckVhY2goZW50cnkgPT4ge1xuICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IGVudHJ5LmF0dHJpYnV0ZXNbJ3NlbGVjdGVkLWl0ZW0taWQnXTtcbiAgICAgICAgICBpZiAoYXZhaWxhYmxlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGVudHJ5LmF0dHJpYnV0ZXNbJ2dyb2Nlcmllcy1lbnRyeS1zdGF0dXMnXSkge1xuICAgICAgICAgICAgICBjYXNlICdvZnRlbl9kZWxldGVkJzoge1xuICAgICAgICAgICAgICAgIGxpbmVFbnRyaWVzLm9mdGVuRGVsZXRlZC5wdXNoKGVudHJ5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjYXNlICdkZWxldGVkJzoge1xuICAgICAgICAgICAgICAgIGxpbmVFbnRyaWVzLnJlbW92ZWQucHVzaChlbnRyeSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGxpbmVFbnRyaWVzLmZvdW5kLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxpbmVFbnRyaWVzLm5vdEZvdW5kLnB1c2goZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gbGluZUVudHJpZXM7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -145,6 +145,9 @@ export class ContextService {
|
|
|
145
145
|
setDefaultIngredientPicture: (url) => {
|
|
146
146
|
this.defaultIngredientPicture = url;
|
|
147
147
|
},
|
|
148
|
+
search: (provider, query) => {
|
|
149
|
+
return this.recipesService.all({ remotefilter: { recipe_provider_id: provider, search: query } }).pipe(skipWhile(result => !result), map(response => response['data']));
|
|
150
|
+
},
|
|
148
151
|
// We keep those just in case
|
|
149
152
|
// setRecipesPrimaryButtonActions: (display = true, addToBasket = true) => {
|
|
150
153
|
// this.recipesService.setRecipesPrimaryButtonActions(display, addToBasket);
|
|
@@ -287,4 +290,4 @@ ContextService.ɵprov = i0.ɵɵdefineInjectable({ token: ContextService, factory
|
|
|
287
290
|
providedIn: 'root'
|
|
288
291
|
}]
|
|
289
292
|
}], function () { return [{ type: i1.PointOfSalesService }, { type: i2.GroceriesListsService }, { type: i3.BasketsService }, { type: i4.UserService }, { type: i5.AnalyticsService }, { type: i6.RecipesService }, { type: i7.MediaMatcher }, { type: i8.SuppliersService }, { type: i7.BreakpointObserver }, { type: i9.BasketsSynchronizerService }, { type: i10.RecipeStatusService }, { type: i11.RecipeTypeService }]; }, null); })();
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFckUsTUFBTSxlQUFlLEdB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QUVPLE9BQU8sQ0FBQyxTQUFpQixFQUFFLGVBQXdCLEVBQUUsVUFBbUI7UUFDOUUsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUNELGdIQUFnSDtRQUNoSCxJQUFJLFVBQVUsRUFBRTtZQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQywyREFBMkQ7U0FDOUY7UUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7OzRFQXJSVSxjQUFjO3NEQUFkLGNBQWMsV0FBZCxjQUFjLG1CQUZiLE1BQU07a0RBRVAsY0FBYztjQUgxQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcm9jZXJpZXNMaXN0c1NlcnZpY2UgfSBmcm9tICcuL2dyb2Nlcmllcy1saXN0cy5zZXJ2aWNlJztcbmltcG9ydCB7IFBvaW50T2ZTYWxlc1NlcnZpY2UgfSBmcm9tICcuL3BvaW50LW9mLXNhbGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFza2V0c1NlcnZpY2UgfSBmcm9tICcuL2Jhc2tldHMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVTdGF0dXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtc3RhdHVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlVHlwZVNlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS10eXBlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVjaXBlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBDdXN0b21Qcm9wZXJ0aWVzLCBFdmVudFRyYWNlIH0gZnJvbSAnLi9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi9yZWNpcGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWVkaWFNYXRjaGVyLCBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IFN1cHBsaWVyc1NlcnZpY2UgfSBmcm9tICcuL3N1cHBsaWVycy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9fbW9kZWxzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWlhbUludGVyZmFjZSB9IGZyb20gJy4uL190eXBlcy9idWlsZGVkL21pYW0taW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBhcmFibGVQcm9kdWN0IH0gZnJvbSAnLi4vX3R5cGVzL2J1aWxkZWQvY29tcGFyYWJsZS1wcm9kdWN0JztcbmltcG9ydCB7IEJhc2tldHNTeW5jaHJvbml6ZXJTZXJ2aWNlIH0gZnJvbSAnLi9iYXNrZXRzLXN5bmNocm9uaXppbmcnO1xuXG5jb25zdCBTTUFMTF9TQ1JFRU5fQlAgPSAnKG1pbi13aWR0aDogMTAyM3B4KSc7XG5cbmludGVyZmFjZSBJY29uT3ZlcnJpZGUge1xuICBpY29uOiBJY29uO1xuICB1cmw6IHN0cmluZztcbn1cblxuLy8gQ29udGV4dCBzaGFyZWQgYmV0d2VlbiBNaWFtIFNESyAmIGhvc3QgYXBwXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDb250ZXh0U2VydmljZSB7XG4gIHVzZXJJbmZvOiBVc2VyO1xuICBpY29uczogSWNvbk92ZXJyaWRlW107XG4gIHZpZGVvUmVjaXBlc0VuYWJsZWQgPSBmYWxzZTtcbiAgYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkID0gZmFsc2U7XG4gIHRhZ3NPblJlY2lwZXNFbmFibGVkID0gZmFsc2U7XG4gIGhvb2tDYWxsYmFjazogKGlzTG9nZ2VkLCBpc1Bvc1ZhbGlkKSA9PiBib29sZWFuO1xuICBkaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyA9IGZhbHNlO1xuICBkZWZhdWx0SW5ncmVkaWVudFBpY3R1cmUgPSAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pbWFnZXMvZGVmYXVsdC1pbmdyZWRpZW50LXBpY3R1cmUuc3ZnJztcbiAgZ2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgaXNTbWFsbFNjcmVlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgb3JpZ2luID0gJyc7XG4gIGNhdGFsb2dVcmwgPSAnJztcbiAgcmVjaXBlSW5mb1VybCA9ICcnO1xuICBzdGFydHVwRGF0YVdhc0ZldGNoZWQgPSBmYWxzZTtcblxuXG4gIHByaXZhdGUgQ09SU0lzc3VlczogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaWMgZW5hYmxlUGVyc29uYWxSZWNpcGVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIG1pYW06IE1pYW1JbnRlcmZhY2UgPSB7XG4gICAgcGF5bWVudFN0YXJ0ZWQ6ICh0b3RhbFByaWNlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnW01pYW1dIHNlbmQgcGF5bWVudFN0YXJ0ZWQgZXZlbnQnKTtcbiAgICAgIHRoaXMub25CYXNrZXRBbmRQb3NTZW5kRXZlbnQodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1BBWU1FTlRfU1RBUlRFRCwgdG90YWxQcmljZSk7XG4gICAgfSxcbiAgICBhbmFseXRpY3M6IHtcbiAgICAgIGluaXQ6IChkb21haW46IHN0cmluZywgb3B0aW1pemVLZXk/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmluaXQoZG9tYWluLCBvcHRpbWl6ZUtleSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBiYXNrZXQ6IHtcbiAgICAgIGJhc2tldElzUmVhZHkkOiB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoc3RhdHMgPT4gIXN0YXRzKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgICApLFxuICAgICAgaW5pdGlhbGl6ZTogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmluaXRCYXNrZXQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCBNaWFtOiBvcmlnaW4gaGFzblxcJ3QgYmVlbiBzZXQnKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZVByaWNlYm9vazogKHByaWNlYm9va05hbWU6IHN0cmluZykgPT4gdGhpcy5iYXNrZXRzU2VydmljZS51cGRhdGVQcmljZWJvb2socHJpY2Vib29rTmFtZSksXG4gICAgfSxcbiAgICBiYXNrZXRTeW5jOiB7XG4gICAgICBkZWZpbmVQdXNoUHJvZHVjdHNUb0Jhc2tldDogKHB1c2hQcm9kdWN0c1RvQmFza2V0OiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5wdXNoUHJvZHVjdHNUb0Jhc2tldCA9IHB1c2hQcm9kdWN0c1RvQmFza2V0O1xuICAgICAgfSxcbiAgICAgIGRlZmluZVB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQ6IChwdXNoQmFza2V0RW50cmllc1RvQmFza2V0OiAoZW50cmllczogYW55W10pID0+IHZvaWQpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLnB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQgPSBwdXNoQmFza2V0RW50cmllc1RvQmFza2V0O1xuICAgICAgfSxcbiAgICAgIHJldGFpbGVyQmFza2V0Q2hhbmdlZDogKGNvbXBhcmFibGVQcm9kdWN0czogQ29tcGFyYWJsZVByb2R1Y3RbXSk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucmV0YWlsZXJCYXNrZXRDaGFuZ2VkKGNvbXBhcmFibGVQcm9kdWN0cyk7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5sYXN0U3VwcGxpZXJCYXNrZXQgPSBjb21wYXJhYmxlUHJvZHVjdHM7XG4gICAgICB9LFxuICAgICAgaGFuZGxlUGF5bWVudDogKHRvdGFsOiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLmhhbmRsZVBheW1lbnQodG90YWwpO1xuICAgICAgICB0aGlzLnN1cHBsaWVyc1NlcnZpY2UubGFzdFN1cHBsaWVyQmFza2V0ID0gW107XG4gICAgICB9XG4gICAgfSxcbiAgICBmZWF0dXJlczoge1xuICAgICAgZW5hYmxlVmlkZW9SZWNpcGVzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudmlkZW9SZWNpcGVzRW5hYmxlZCA9IHRydWU7XG4gICAgICAgIC8vIEluamVjdCB5b3V0dWJlIHNjcmlwdFxuICAgICAgICBjb25zdCB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgICAgdGFnLnNyYyA9ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9pZnJhbWVfYXBpJztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YWcpO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZUFydGljbGVzSW5DYXRhbG9nOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYXJ0aWNsZXNJbkNhdGFsb2dFbmFibGVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVVc2VyUHJlZmVyZW5jZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS5wcmVmZXJlbmNlc0FjdGl2YXRlZCQubmV4dCh0cnVlKTtcbiAgICAgIH0sXG4gICAgICBlbmFibGVUYWdzT25SZWNpcGVzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMudGFnc09uUmVjaXBlc0VuYWJsZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVBlcnNvbmFsUmVjaXBlczogKCkgPT4ge1xuICAgICAgICB0aGlzLmVuYWJsZVBlcnNvbmFsUmVjaXBlcyQubmV4dCh0cnVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGhvb2s6IHtcbiAgICAgIHNldEhvb2tDYWxsYmFjazogKGNhbGxiYWNrOiAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5ob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICAgIH1cbiAgICB9LFxuICAgIGxpc3Q6IHtcbiAgICAgIHJlc2V0OiAoKSA9PiB0aGlzLmxpc3RzU2VydmljZS5yZXNldExpc3QoKS5zdWJzY3JpYmUoKSxcbiAgICAgIGFkZFJlY2lwZTogKHJlY2lwZUlkLCBndWVzdHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdHNTZXJ2aWNlLmFwcGVuZFJlY2lwZVRvTGlzdChyZWNpcGVJZCwgZ3Vlc3RzLCB7IG9yaWdpblBhdGg6ICdjbGllbnQnLCBwcm9wczogeyByZWNpcGVfaWQ6IHJlY2lwZUlkIH0gfSk7XG4gICAgICB9LFxuICAgICAgaGFzUmVjaXBlOiAocmVjaXBlSWQpID0+IHRoaXMubGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHJlY2lwZUlkKSxcbiAgICAgIHJlY2lwZUNvdW50OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RzU2VydmljZS5saXN0JC5waXBlKFxuICAgICAgICAgIHNraXBXaGlsZShsID0+ICFsKSxcbiAgICAgICAgICBtYXAobCA9PiBsLmF0dHJpYnV0ZXNbJ3JlY2lwZXMtaWRzJ10ubGVuZ3RoKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgcG9zOiB7XG4gICAgICBsb2FkOiAoZXh0ZXJuYWxJZCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLnBvc1NlcnZpY2UubG9hZFBvc1dpdGhFeHRJZChleHRlcm5hbElkKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCBNaWFtOiBvcmlnaW4gaGFzblxcJ3QgYmVlbiBzZXQnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjaXBlczoge1xuICAgICAgaGlkZGVuOiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmhpZGRlbixcbiAgICAgIHNob3VsZERpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzOiAoc2hvdWxkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHMgPSBzaG91bGQ7XG4gICAgICB9LFxuICAgICAgc2V0RGVmYXVsdEluZ3JlZGllbnRQaWN0dXJlOiAodXJsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmUgPSB1cmw7XG4gICAgICB9LFxuICAgICAgLy8gV2Uga2VlcCB0aG9zZSBqdXN0IGluIGNhc2VcbiAgICAgIC8vIHNldFJlY2lwZXNQcmltYXJ5QnV0dG9uQWN0aW9uczogKGRpc3BsYXkgPSB0cnVlLCBhZGRUb0Jhc2tldCA9IHRydWUpID0+IHtcbiAgICAgIC8vICAgdGhpcy5yZWNpcGVzU2VydmljZS5zZXRSZWNpcGVzUHJpbWFyeUJ1dHRvbkFjdGlvbnMoZGlzcGxheSwgYWRkVG9CYXNrZXQpO1xuICAgICAgLy8gfSxcbiAgICAgIC8vIHNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnM6IChkaXNwbGF5ID0gdHJ1ZSwgYWRkVG9CYXNrZXQgPSB0cnVlKSA9PiB7XG4gICAgICAvLyAgIHRoaXMucmVjaXBlc1NlcnZpY2Uuc2V0U3VnZ2VzdGlvbnNQcmltYXJ5QnV0dG9uQWN0aW9ucyhkaXNwbGF5LCBhZGRUb0Jhc2tldCk7XG4gICAgICAvLyB9LFxuICAgICAgc2V0RGlmZmljdWx0eUxldmVsczogKGxldmVsczogeyB2YWx1ZTogbnVtYmVyLCBsYWJlbDogc3RyaW5nIH1bXSkgPT4ge1xuICAgICAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHMgPSBsZXZlbHM7XG4gICAgICB9LFxuICAgICAgc2hvd0NvbmZpcm1hdGlvblRvYXN0ZXI6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5jb25maXJtYXRpb25Ub2FzdGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJvdXRlcjoge1xuICAgICAgc2V0UmVjaXBlQ2F0YWxvZ1VybDogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuY2F0YWxvZ1VybCA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZXRSZWNpcGVJbmZvTGluazogKHVybCA9ICcnKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlSW5mb1VybCA9IHVybDtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdXBwbGllcjoge1xuICAgICAgc2V0T3JpZ2luOiAob3JpZ2luOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKG9yaWdpbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vcmlnaW4gPSBvcmlnaW47XG4gICAgICAgICAgaWYgKCF0aGlzLnN0YXJ0dXBEYXRhV2FzRmV0Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5mZXRjaFN0YXJ0dXBEYXRhKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbG9hZDogKHN1cHBsaWVySWQ6IG51bWJlciB8IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcmlnaW4pIHtcbiAgICAgICAgICB0aGlzLnN1cHBsaWVyc1NlcnZpY2UubG9hZFN1cHBsaWVyKHN1cHBsaWVySWQudG9TdHJpbmcoKSkuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgTWlhbTogb3JpZ2luIGhhc25cXCd0IGJlZW4gc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHVzZXI6IHtcbiAgICAgIGxvYWRXaXRoRXh0ZXJuYWxJZDogKGlkLCBmb3JiaWRQcm9maWxpbmcgPSBmYWxzZSwgaW5pdEJhc2tldCA9IGZhbHNlKSA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdfbWlhbS91c2VySWQnLCBpZCk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS91c2VyVG9rZW4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9nVXNlcihpZCwgZm9yYmlkUHJvZmlsaW5nLCBpbml0QmFza2V0KTtcbiAgICAgIH0sXG4gICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlclRva2VuJyk7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdfbWlhbS91c2VySWQnKTtcbiAgICAgICAgdGhpcy51c2VyU2VydmljZS50b2dnbGVJc0xvZ2dlZChmYWxzZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbTWlhbV0gd2lsbCByZWZyZXNoIGxpc3QgYWZ0ZXIgcmVzZXQnKTtcbiAgICAgICAgdGhpcy5saXN0c1NlcnZpY2UucmVmcmVzaEN1cnJlbnRMaXN0KCk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UucmVzZXRVc2VySW5mbygpO1xuICAgICAgfSxcbiAgICAgIHNldEZhdm9yaXRlSXRlbXM6IChmYXZvcml0ZVByb2R1Y3RJZHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2Uuc2V0RmF2b3JpdGVJdGVtcyhmYXZvcml0ZVByb2R1Y3RJZHMpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHZpZXc6IHtcbiAgICAgIC8vIFNldCB0aGUgbWFpbiBzY3JvbGxpbmcgSFRNTEVsZW1lbnQgb2YgdGhlIHdlYnNpdGUgc28gd2UgY2FuIGRpc2FibGUgc2Nyb2xsIHdoZW4gYSBtb2RhbC9kcmF3ZXIvcG9wdXAgaXMgb3BlblxuICAgICAgc2V0R2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQ6IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoZWxlbWVudCAmJiB0aGlzLmdsb2JhbFNjcm9sbGFibGVFbGVtZW50ICE9PSBlbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5nbG9iYWxTY3JvbGxhYmxlRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgdHdvIHRpbWVzICdsbCBub3QgYmUgY29uc2lkZXJlZFxuICAgICAqIEBwYXJhbSBpY29uIGhhdmUgdG8gYmUgYSBrbm93ZWQgaWNvbiBuYW1lIHNlZSBzZWN0aW9uICdDdXN0b20gaWNvbnMnIGluIHJlYWQgbWVcbiAgICAgKiBAcGFyYW0gdXJsIG9mIHRoZSBuZXcgaWNvblxuICAgICAqL1xuICAgIG92ZXJyaWRlSWNvbjogKGljb24sIHVybCkgPT4geyAvLyBUT0RPOiBNT1ZFIFRPIGNvbnRlbnRcbiAgICAgIGlmICghdGhpcy5pY29ucykgeyB0aGlzLmljb25zID0gW107IH1cbiAgICAgIGNvbnN0IGV4aXN0aW5nSWNvbiA9IHRoaXMuaWNvbnMuZmluZCgoaTogSWNvbk92ZXJyaWRlKSA9PiBpLmljb24udG9TdHJpbmcoKSA9PT0gaWNvbik7XG4gICAgICBpZiAoZXhpc3RpbmdJY29uKSB7XG4gICAgICAgIHRoaXMuaWNvbnMuc3BsaWNlKHRoaXMuaWNvbnMuaW5kZXhPZihleGlzdGluZ0ljb24pLCAxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaWNvbnMucHVzaCh7IGljb24sIHVybCB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwb3NTZXJ2aWNlOiBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGlzdHNTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXNrZXRzU2VydmljZTogQmFza2V0c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVjaXBlc1NlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHJpdmF0ZSBzdXBwbGllcnNTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgcHJpdmF0ZSBiYXNrZXRIYW5kbGVyOiBCYXNrZXRzU3luY2hyb25pemVyU2VydmljZSxcbiAgICBwcml2YXRlIHN0YXR1c1NlcnZpY2U6IFJlY2lwZVN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0eXBlU2VydmljZTogUmVjaXBlVHlwZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pc1NtYWxsU2NyZWVuJC5uZXh0KCF0aGlzLm1lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKFNNQUxMX1NDUkVFTl9CUCkubWF0Y2hlcyk7XG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShTTUFMTF9TQ1JFRU5fQlApLnN1YnNjcmliZShCUENoYW5nZSA9PiB0aGlzLmlzU21hbGxTY3JlZW4kLm5leHQoIUJQQ2hhbmdlLm1hdGNoZXMpKTtcbiAgICB0aGlzLmljb25zID0gW107XG4gICAgdGhpcy5DT1JTSXNzdWVzID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gICAgT2JqZWN0LmFzc2lnbih3aW5kb3csIHsgbWlhbTogdGhpcy5taWFtIH0pO1xuXG4gIH1cblxuICBzZXRDT1JTSXNzdWVTdGF0ZSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuQ09SU0lzc3Vlcy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldENPUlNJc3N1ZXNTdGF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5DT1JTSXNzdWVzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0T3ZlcnJpZGVJY29uVXJsKGljb246IEljb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmRpY29uID0gdGhpcy5pY29ucy5maW5kKGVsID0+IGVsLmljb24udG9TdHJpbmcoKSA9PT0gSWNvbltpY29uXSk7XG4gICAgcmV0dXJuIGZpbmRpY29uID8gZmluZGljb24udXJsIDogJyc7XG4gIH1cblxuICBwcml2YXRlIG9uQmFza2V0QW5kUG9zU2VuZEV2ZW50KGV2ZW50VHlwZTogc3RyaW5nLCB0b3RhbFByaWNlOiBudW1iZXIpIHtcbiAgICBmb3JrSm9pbihcbiAgICAgIFtcbiAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcFdoaWxlKHJlcyA9PiAhcmVzKSwgdGFrZSgxKSksXG4gICAgICAgIHRoaXMucG9zU2VydmljZS5wb3MkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2tpcFdoaWxlKHJlcyA9PiAhcmVzKSwgdGFrZSgxKSksXG4gICAgICBdXG4gICAgKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHJlcyA9PiAhcmVzWzBdIHx8ICFyZXNbMV0pLFxuICAgICAgdGFrZSgxKVxuICAgICkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBjb25zdCBiYXNrZXQgPSByZXNbMF07XG4gICAgICBjb25zdCBwb3MgPSByZXNbMV07XG4gICAgICBpZiAoYmFza2V0LnRvdGFsUHJpY2UgPiAwKSB7XG4gICAgICAgIGNvbnN0IHByb3BzOiBDdXN0b21Qcm9wZXJ0aWVzID0ge1xuICAgICAgICAgIHBvc19pZDogcG9zLmlkLFxuICAgICAgICAgIHBvc19uYW1lOiBwb3MuYXR0cmlidXRlcy5uYW1lLFxuICAgICAgICAgIGJhc2tldF9pZDogYmFza2V0LmlkLFxuICAgICAgICAgIG1pYW1fYW1vdW50OiBiYXNrZXQudG90YWxQcmljZSxcbiAgICAgICAgICB0b3RhbF9hbW91bnQ6IHRvdGFsUHJpY2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudFdoZW5SZWFkeShldmVudFR5cGUsIG51bGwsIHByb3BzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nVXNlcih0b2tlbk9ySWQ6IHN0cmluZywgZm9yYmlkUHJvZmlsaW5nOiBib29sZWFuLCBpbml0QmFza2V0OiBib29sZWFuKSB7XG4gICAgaWYgKHRva2VuT3JJZCkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS50b2dnbGVJc0xvZ2dlZCh0cnVlKTtcbiAgICB9XG4gICAgLy8gaWYgaW5pdEJhc2tldCBpcyBzZXQgdG8gZmFsc2UsIHRoZSBiYXNrZXQgJiBsaXN0IHdpbGwgbm90IGJlIGluaXRpYWxpc2VkIHVudGlsIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIG5lZWRlZFxuICAgIGlmIChpbml0QmFza2V0KSB7XG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmluaXRCYXNrZXQoKTsgLy8gVGhlIGJhc2tldCBuZWVkcyB0aGUgR0wgc28gYm90aCB3aWxsIGJlIGluaXRpYWxpemVkIGhlcmVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2Uuc2V0VXNlckluZm8oZm9yYmlkUHJvZmlsaW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTdGFydHVwRGF0YSgpIHtcbiAgICB0aGlzLnN0YXR1c1NlcnZpY2UuZmV0Y2hTdGF0dXNlcygpO1xuICAgIHRoaXMudHlwZVNlcnZpY2UuZmV0Y2hUeXBlcygpO1xuICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZGlzcGxheVJlY2lwZUluVXJsKCk7XG4gICAgdGhpcy5zdGFydHVwRGF0YVdhc0ZldGNoZWQgPSB0cnVlO1xuICB9XG59XG4iXX0=
|
|
293
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fc2VydmljZXMvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0MsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFckUsTUFBTSxlQUFlLEdB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dGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyb2Nlcmllc0xpc3RzU2VydmljZSB9IGZyb20gJy4vZ3JvY2VyaWVzLWxpc3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9pbnRPZlNhbGVzU2VydmljZSB9IGZyb20gJy4vcG9pbnQtb2Ytc2FsZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNrZXRzU2VydmljZSB9IGZyb20gJy4vYmFza2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IFJlY2lwZVN0YXR1c1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1zdGF0dXMuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVUeXBlU2VydmljZSB9IGZyb20gJy4vcmVjaXBlLXR5cGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNpcGVQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuL3JlY2lwZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIEN1c3RvbVByb3BlcnRpZXMsIEV2ZW50VHJhY2UgfSBmcm9tICcuL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgUmVjaXBlc1NlcnZpY2UgfSBmcm9tICcuL3JlY2lwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIsIEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU3VwcGxpZXJzU2VydmljZSB9IGZyb20gJy4vc3VwcGxpZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL19tb2RlbHMnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNaWFtSW50ZXJmYWNlIH0gZnJvbSAnLi4vX3R5cGVzL2J1aWxkZWQvbWlhbS1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29tcGFyYWJsZVByb2R1Y3QgfSBmcm9tICcuLi9fdHlwZXMvYnVpbGRlZC9jb21wYXJhYmxlLXByb2R1Y3QnO1xuaW1wb3J0IHsgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UgfSBmcm9tICcuL2Jhc2tldHMtc3luY2hyb25pemluZyc7XG5cbmNvbnN0IFNNQUxMX1NDUkVFTl9CUCA9ICcobWluLXdpZHRoOiAxMDIzcHgpJztcblxuaW50ZXJmYWNlIEljb25PdmVycmlkZSB7XG4gIGljb246IEljb247XG4gIHVybDogc3RyaW5nO1xufVxuXG4vLyBDb250ZXh0IHNoYXJlZCBiZXR3ZWVuIE1pYW0gU0RLICYgaG9zdCBhcHBcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTZXJ2aWNlIHtcbiAgdXNlckluZm86IFVzZXI7XG4gIGljb25zOiBJY29uT3ZlcnJpZGVbXTtcbiAgdmlkZW9SZWNpcGVzRW5hYmxlZCA9IGZhbHNlO1xuICBhcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSBmYWxzZTtcbiAgdGFnc09uUmVjaXBlc0VuYWJsZWQgPSBmYWxzZTtcbiAgaG9va0NhbGxiYWNrOiAoaXNMb2dnZWQsIGlzUG9zVmFsaWQpID0+IGJvb2xlYW47XG4gIGRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzID0gZmFsc2U7XG4gIGRlZmF1bHRJbmdyZWRpZW50UGljdHVyZSA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWluZ3JlZGllbnQtcGljdHVyZS5zdmcnO1xuICBnbG9iYWxTY3JvbGxhYmxlRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICBpc1NtYWxsU2NyZWVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBvcmlnaW4gPSAnJztcbiAgY2F0YWxvZ1VybCA9ICcnO1xuICByZWNpcGVJbmZvVXJsID0gJyc7XG4gIHN0YXJ0dXBEYXRhV2FzRmV0Y2hlZCA9IGZhbHNlO1xuXG5cbiAgcHJpdmF0ZSBDT1JTSXNzdWVzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyBlbmFibGVQZXJzb25hbFJlY2lwZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgbWlhbTogTWlhbUludGVyZmFjZSA9IHtcbiAgICBwYXltZW50U3RhcnRlZDogKHRvdGFsUHJpY2UpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdbTWlhbV0gc2VuZCBwYXltZW50U3RhcnRlZCBldmVudCcpO1xuICAgICAgdGhpcy5vbkJhc2tldEFuZFBvc1NlbmRFdmVudCh0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUEFZTUVOVF9TVEFSVEVELCB0b3RhbFByaWNlKTtcbiAgICB9LFxuICAgIGFuYWx5dGljczoge1xuICAgICAgaW5pdDogKGRvbWFpbjogc3RyaW5nLCBvcHRpbWl6ZUtleT86IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuaW5pdChkb21haW4sIG9wdGltaXplS2V5KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGJhc2tldDoge1xuICAgICAgYmFza2V0SXNSZWFkeSQ6IHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0U3RhdHMkLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShzdGF0cyA9PiAhc3RhdHMpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgICAgICksXG4gICAgICBpbml0aWFsaXplOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9yaWdpbikge1xuICAgICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuaW5pdEJhc2tldCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHN0YXJ0IE1pYW06IG9yaWdpbiBoYXNuXFwndCBiZWVuIHNldCcpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXBkYXRlUHJpY2Vib29rOiAocHJpY2Vib29rTmFtZTogc3RyaW5nKSA9PiB0aGlzLmJhc2tldHNTZXJ2aWNlLnVwZGF0ZVByaWNlYm9vayhwcmljZWJvb2tOYW1lKSxcbiAgICB9LFxuICAgIGJhc2tldFN5bmM6IHtcbiAgICAgIGRlZmluZVB1c2hQcm9kdWN0c1RvQmFza2V0OiAocHVzaFByb2R1Y3RzVG9CYXNrZXQ6IChjb21wYXJhYmxlUHJvZHVjdHM6IENvbXBhcmFibGVQcm9kdWN0W10pID0+IHZvaWQpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRIYW5kbGVyLnB1c2hQcm9kdWN0c1RvQmFza2V0ID0gcHVzaFByb2R1Y3RzVG9CYXNrZXQ7XG4gICAgICB9LFxuICAgICAgZGVmaW5lUHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldDogKHB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQ6IChlbnRyaWVzOiBhbnlbXSkgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIucHVzaEJhc2tldEVudHJpZXNUb0Jhc2tldCA9IHB1c2hCYXNrZXRFbnRyaWVzVG9CYXNrZXQ7XG4gICAgICB9LFxuICAgICAgcmV0YWlsZXJCYXNrZXRDaGFuZ2VkOiAoY29tcGFyYWJsZVByb2R1Y3RzOiBDb21wYXJhYmxlUHJvZHVjdFtdKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0SGFuZGxlci5yZXRhaWxlckJhc2tldENoYW5nZWQoY29tcGFyYWJsZVByb2R1Y3RzKTtcbiAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmxhc3RTdXBwbGllckJhc2tldCA9IGNvbXBhcmFibGVQcm9kdWN0cztcbiAgICAgIH0sXG4gICAgICBoYW5kbGVQYXltZW50OiAodG90YWw6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmJhc2tldEhhbmRsZXIuaGFuZGxlUGF5bWVudCh0b3RhbCk7XG4gICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZS5sYXN0U3VwcGxpZXJCYXNrZXQgPSBbXTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGZlYXR1cmVzOiB7XG4gICAgICBlbmFibGVWaWRlb1JlY2lwZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy52aWRlb1JlY2lwZXNFbmFibGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gSW5qZWN0IHlvdXR1YmUgc2NyaXB0XG4gICAgICAgIGNvbnN0IHRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICB0YWcuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2lmcmFtZV9hcGknO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhZyk7XG4gICAgICB9LFxuICAgICAgZW5hYmxlQXJ0aWNsZXNJbkNhdGFsb2c6ICgpID0+IHtcbiAgICAgICAgdGhpcy5hcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgPSB0cnVlO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVVzZXJQcmVmZXJlbmNlczogKCkgPT4ge1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnByZWZlcmVuY2VzQWN0aXZhdGVkJC5uZXh0KHRydWUpO1xuICAgICAgfSxcbiAgICAgIGVuYWJsZVRhZ3NPblJlY2lwZXM6ICgpID0+IHtcbiAgICAgICAgdGhpcy50YWdzT25SZWNpcGVzRW5hYmxlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgZW5hYmxlUGVyc29uYWxSZWNpcGVzOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZW5hYmxlUGVyc29uYWxSZWNpcGVzJC5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgaG9vazoge1xuICAgICAgc2V0SG9va0NhbGxiYWNrOiAoY2FsbGJhY2s6IChpc0xvZ2dlZCwgaXNQb3NWYWxpZCkgPT4gYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhvb2tDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdDoge1xuICAgICAgcmVzZXQ6ICgpID0+IHRoaXMubGlzdHNTZXJ2aWNlLnJlc2V0TGlzdCgpLnN1YnNjcmliZSgpLFxuICAgICAgYWRkUmVjaXBlOiAocmVjaXBlSWQsIGd1ZXN0cykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5saXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHJlY2lwZUlkLCBndWVzdHMsIHsgb3JpZ2luUGF0aDogJ2NsaWVudCcsIHByb3BzOiB7IHJlY2lwZV9pZDogcmVjaXBlSWQgfSB9KTtcbiAgICAgIH0sXG4gICAgICBoYXNSZWNpcGU6IChyZWNpcGVJZCkgPT4gdGhpcy5saXN0c1NlcnZpY2UucmVjaXBlSXNJbkxpc3QocmVjaXBlSWQpLFxuICAgICAgcmVjaXBlQ291bnQ6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdHNTZXJ2aWNlLmxpc3QkLnBpcGUoXG4gICAgICAgICAgc2tpcFdoaWxlKGwgPT4gIWwpLFxuICAgICAgICAgIG1hcChsID0+IGwuYXR0cmlidXRlc1sncmVjaXBlcy1pZHMnXS5sZW5ndGgpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSxcbiAgICBwb3M6IHtcbiAgICAgIGxvYWQ6IChleHRlcm5hbElkKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9yaWdpbikge1xuICAgICAgICAgIHRoaXMucG9zU2VydmljZS5sb2FkUG9zV2l0aEV4dElkKGV4dGVybmFsSWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHN0YXJ0IE1pYW06IG9yaWdpbiBoYXNuXFwndCBiZWVuIHNldCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICByZWNpcGVzOiB7XG4gICAgICBoaWRkZW46IHRoaXMucmVjaXBlc1NlcnZpY2UuaGlkZGVuLFxuICAgICAgc2hvdWxkRGlzcGxheUluZ3JlZGllbnRQaWN0dXJlc09uUmVjaXBlQ2FyZHM6IChzaG91bGQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyA9IHNob3VsZDtcbiAgICAgIH0sXG4gICAgICBzZXREZWZhdWx0SW5ncmVkaWVudFBpY3R1cmU6ICh1cmw6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmRlZmF1bHRJbmdyZWRpZW50UGljdHVyZSA9IHVybDtcbiAgICAgIH0sXG4gICAgICBzZWFyY2g6IChwcm92aWRlciwgcXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVjaXBlc1NlcnZpY2UuYWxsKFxuICAgICAgICAgIHsgcmVtb3RlZmlsdGVyOiB7IHJlY2lwZV9wcm92aWRlcl9pZDogcHJvdmlkZXIsIHNlYXJjaDogcXVlcnkgfSB9XG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBza2lwV2hpbGUocmVzdWx0ID0+ICFyZXN1bHQpLFxuICAgICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZVsnZGF0YSddKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIC8vIFdlIGtlZXAgdGhvc2UganVzdCBpbiBjYXNlXG4gICAgICAvLyBzZXRSZWNpcGVzUHJpbWFyeUJ1dHRvbkFjdGlvbnM6IChkaXNwbGF5ID0gdHJ1ZSwgYWRkVG9CYXNrZXQgPSB0cnVlKSA9PiB7XG4gICAgICAvLyAgIHRoaXMucmVjaXBlc1NlcnZpY2Uuc2V0UmVjaXBlc1ByaW1hcnlCdXR0b25BY3Rpb25zKGRpc3BsYXksIGFkZFRvQmFza2V0KTtcbiAgICAgIC8vIH0sXG4gICAgICAvLyBzZXRTdWdnZXN0aW9uc1ByaW1hcnlCdXR0b25BY3Rpb25zOiAoZGlzcGxheSA9IHRydWUsIGFkZFRvQmFza2V0ID0gdHJ1ZSkgPT4ge1xuICAgICAgLy8gICB0aGlzLnJlY2lwZXNTZXJ2aWNlLnNldFN1Z2dlc3Rpb25zUHJpbWFyeUJ1dHRvbkFjdGlvbnMoZGlzcGxheSwgYWRkVG9CYXNrZXQpO1xuICAgICAgLy8gfSxcbiAgICAgIHNldERpZmZpY3VsdHlMZXZlbHM6IChsZXZlbHM6IHsgdmFsdWU6IG51bWJlciwgbGFiZWw6IHN0cmluZyB9W10pID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzID0gbGV2ZWxzO1xuICAgICAgfSxcbiAgICAgIHNob3dDb25maXJtYXRpb25Ub2FzdGVyOiAoKSA9PiB7XG4gICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuY29uZmlybWF0aW9uVG9hc3RlciA9IHRydWU7XG4gICAgICB9XG4gICAgfSxcbiAgICByb3V0ZXI6IHtcbiAgICAgIHNldFJlY2lwZUNhdGFsb2dVcmw6ICh1cmwgPSAnJyk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmNhdGFsb2dVcmwgPSB1cmw7XG4gICAgICB9LFxuICAgICAgc2V0UmVjaXBlSW5mb0xpbms6ICh1cmwgPSAnJyk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnJlY2lwZUluZm9VcmwgPSB1cmw7XG4gICAgICB9LFxuICAgIH0sXG4gICAgc3VwcGxpZXI6IHtcbiAgICAgIHNldE9yaWdpbjogKG9yaWdpbjogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChvcmlnaW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luO1xuICAgICAgICAgIGlmICghdGhpcy5zdGFydHVwRGF0YVdhc0ZldGNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hTdGFydHVwRGF0YSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGxvYWQ6IChzdXBwbGllcklkOiBudW1iZXIgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3JpZ2luKSB7XG4gICAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlLmxvYWRTdXBwbGllcihzdXBwbGllcklkLnRvU3RyaW5nKCkpLnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHN0YXJ0IE1pYW06IG9yaWdpbiBoYXNuXFwndCBiZWVuIHNldCcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB1c2VyOiB7XG4gICAgICBsb2FkV2l0aEV4dGVybmFsSWQ6IChpZCwgZm9yYmlkUHJvZmlsaW5nID0gZmFsc2UsIGluaXRCYXNrZXQgPSBmYWxzZSkgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnX21pYW0vdXNlcklkJywgaWQpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlclRva2VuJyk7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZ1VzZXIoaWQsIGZvcmJpZFByb2ZpbGluZywgaW5pdEJhc2tldCk7XG4gICAgICB9LFxuICAgICAgcmVzZXQ6ICgpID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ19taWFtL3VzZXJUb2tlbicpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnX21pYW0vdXNlcklkJyk7XG4gICAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQoZmFsc2UpO1xuICAgICAgICBjb25zb2xlLmxvZygnW01pYW1dIHdpbGwgcmVmcmVzaCBsaXN0IGFmdGVyIHJlc2V0Jyk7XG4gICAgICAgIHRoaXMubGlzdHNTZXJ2aWNlLnJlZnJlc2hDdXJyZW50TGlzdCgpO1xuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLnJlc2V0VXNlckluZm8oKTtcbiAgICAgIH0sXG4gICAgICBzZXRGYXZvcml0ZUl0ZW1zOiAoZmF2b3JpdGVQcm9kdWN0SWRzKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnNldEZhdm9yaXRlSXRlbXMoZmF2b3JpdGVQcm9kdWN0SWRzKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aWV3OiB7XG4gICAgICAvLyBTZXQgdGhlIG1haW4gc2Nyb2xsaW5nIEhUTUxFbGVtZW50IG9mIHRoZSB3ZWJzaXRlIHNvIHdlIGNhbiBkaXNhYmxlIHNjcm9sbCB3aGVuIGEgbW9kYWwvZHJhd2VyL3BvcHVwIGlzIG9wZW5cbiAgICAgIHNldEdsb2JhbFNjcm9sbGFibGVFbGVtZW50OiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgdGhpcy5nbG9iYWxTY3JvbGxhYmxlRWxlbWVudCAhPT0gZWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuZ2xvYmFsU2Nyb2xsYWJsZUVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE92ZXJyaWRlIHR3byB0aW1lcyAnbGwgbm90IGJlIGNvbnNpZGVyZWRcbiAgICAgKiBAcGFyYW0gaWNvbiBoYXZlIHRvIGJlIGEga25vd2VkIGljb24gbmFtZSBzZWUgc2VjdGlvbiAnQ3VzdG9tIGljb25zJyBpbiByZWFkIG1lXG4gICAgICogQHBhcmFtIHVybCBvZiB0aGUgbmV3IGljb25cbiAgICAgKi9cbiAgICBvdmVycmlkZUljb246IChpY29uLCB1cmwpID0+IHsgLy8gVE9ETzogTU9WRSBUTyBjb250ZW50XG4gICAgICBpZiAoIXRoaXMuaWNvbnMpIHsgdGhpcy5pY29ucyA9IFtdOyB9XG4gICAgICBjb25zdCBleGlzdGluZ0ljb24gPSB0aGlzLmljb25zLmZpbmQoKGk6IEljb25PdmVycmlkZSkgPT4gaS5pY29uLnRvU3RyaW5nKCkgPT09IGljb24pO1xuICAgICAgaWYgKGV4aXN0aW5nSWNvbikge1xuICAgICAgICB0aGlzLmljb25zLnNwbGljZSh0aGlzLmljb25zLmluZGV4T2YoZXhpc3RpbmdJY29uKSwgMSk7XG4gICAgICB9XG4gICAgICB0aGlzLmljb25zLnB1c2goeyBpY29uLCB1cmwgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcG9zU2VydmljZTogUG9pbnRPZlNhbGVzU2VydmljZSxcbiAgICBwcml2YXRlIGxpc3RzU2VydmljZTogR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIG1lZGlhTWF0Y2hlcjogTWVkaWFNYXRjaGVyLFxuICAgIHByaXZhdGUgc3VwcGxpZXJzU2VydmljZTogU3VwcGxpZXJzU2VydmljZSxcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIHByaXZhdGUgYmFza2V0SGFuZGxlcjogQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdGF0dXNTZXJ2aWNlOiBSZWNpcGVTdGF0dXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHlwZVNlcnZpY2U6IFJlY2lwZVR5cGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaXNTbWFsbFNjcmVlbiQubmV4dCghdGhpcy5tZWRpYU1hdGNoZXIubWF0Y2hNZWRpYShTTUFMTF9TQ1JFRU5fQlApLm1hdGNoZXMpO1xuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoU01BTExfU0NSRUVOX0JQKS5zdWJzY3JpYmUoQlBDaGFuZ2UgPT4gdGhpcy5pc1NtYWxsU2NyZWVuJC5uZXh0KCFCUENoYW5nZS5tYXRjaGVzKSk7XG4gICAgdGhpcy5pY29ucyA9IFtdO1xuICAgIHRoaXMuQ09SU0lzc3VlcyA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICAgIE9iamVjdC5hc3NpZ24od2luZG93LCB7IG1pYW06IHRoaXMubWlhbSB9KTtcblxuICB9XG5cbiAgc2V0Q09SU0lzc3VlU3RhdGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLkNPUlNJc3N1ZXMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXRDT1JTSXNzdWVzU3RhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuQ09SU0lzc3Vlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldE92ZXJyaWRlSWNvblVybChpY29uOiBJY29uKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5kaWNvbiA9IHRoaXMuaWNvbnMuZmluZChlbCA9PiBlbC5pY29uLnRvU3RyaW5nKCkgPT09IEljb25baWNvbl0pO1xuICAgIHJldHVybiBmaW5kaWNvbiA/IGZpbmRpY29uLnVybCA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkJhc2tldEFuZFBvc1NlbmRFdmVudChldmVudFR5cGU6IHN0cmluZywgdG90YWxQcmljZTogbnVtYmVyKSB7XG4gICAgZm9ya0pvaW4oXG4gICAgICBbXG4gICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0JC5hc09ic2VydmFibGUoKS5waXBlKHNraXBXaGlsZShyZXMgPT4gIXJlcyksIHRha2UoMSkpLFxuICAgICAgICB0aGlzLnBvc1NlcnZpY2UucG9zJC5hc09ic2VydmFibGUoKS5waXBlKHNraXBXaGlsZShyZXMgPT4gIXJlcyksIHRha2UoMSkpLFxuICAgICAgXVxuICAgICkucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXMgPT4gIXJlc1swXSB8fCAhcmVzWzFdKSxcbiAgICAgIHRha2UoMSlcbiAgICApLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgY29uc3QgYmFza2V0ID0gcmVzWzBdO1xuICAgICAgY29uc3QgcG9zID0gcmVzWzFdO1xuICAgICAgaWYgKGJhc2tldC50b3RhbFByaWNlID4gMCkge1xuICAgICAgICBjb25zdCBwcm9wczogQ3VzdG9tUHJvcGVydGllcyA9IHtcbiAgICAgICAgICBwb3NfaWQ6IHBvcy5pZCxcbiAgICAgICAgICBwb3NfbmFtZTogcG9zLmF0dHJpYnV0ZXMubmFtZSxcbiAgICAgICAgICBiYXNrZXRfaWQ6IGJhc2tldC5pZCxcbiAgICAgICAgICBtaWFtX2Ftb3VudDogYmFza2V0LnRvdGFsUHJpY2UsXG4gICAgICAgICAgdG90YWxfYW1vdW50OiB0b3RhbFByaWNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5zZW5kRXZlbnRXaGVuUmVhZHkoZXZlbnRUeXBlLCBudWxsLCBwcm9wcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvZ1VzZXIodG9rZW5PcklkOiBzdHJpbmcsIGZvcmJpZFByb2ZpbGluZzogYm9vbGVhbiwgaW5pdEJhc2tldDogYm9vbGVhbikge1xuICAgIGlmICh0b2tlbk9ySWQpIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UudG9nZ2xlSXNMb2dnZWQodHJ1ZSk7XG4gICAgfVxuICAgIC8vIGlmIGluaXRCYXNrZXQgaXMgc2V0IHRvIGZhbHNlLCB0aGUgYmFza2V0ICYgbGlzdCB3aWxsIG5vdCBiZSBpbml0aWFsaXNlZCB1bnRpbCB0aGUgZmlyc3QgdGltZSB0aGV5IGFyZSBuZWVkZWRcbiAgICBpZiAoaW5pdEJhc2tldCkge1xuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5pbml0QmFza2V0KCk7IC8vIFRoZSBiYXNrZXQgbmVlZHMgdGhlIEdMIHNvIGJvdGggd2lsbCBiZSBpbml0aWFsaXplZCBoZXJlXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnNldFVzZXJJbmZvKGZvcmJpZFByb2ZpbGluZyk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoU3RhcnR1cERhdGEoKSB7XG4gICAgdGhpcy5zdGF0dXNTZXJ2aWNlLmZldGNoU3RhdHVzZXMoKTtcbiAgICB0aGlzLnR5cGVTZXJ2aWNlLmZldGNoVHlwZXMoKTtcbiAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpc3BsYXlSZWNpcGVJblVybCgpO1xuICAgIHRoaXMuc3RhcnR1cERhdGFXYXNGZXRjaGVkID0gdHJ1ZTtcbiAgfVxufVxuIl19
|