@dignite-ng/expand.cms 3.0.1 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/admin/entries/create.component.mjs +2 -1
- package/esm2022/lib/components/admin/entries/entries.component.mjs +1 -2
- package/esm2022/lib/components/admin/fields/edit-field.component.mjs +3 -2
- package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +12 -3
- package/esm2022/lib/components/dynamic-form/entry/entry-view.component.mjs +17 -3
- package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +1 -1
- package/esm2022/lib/services/fields-data.service.mjs +1 -1
- package/fesm2022/dignite-ng-expand.cms.mjs +30 -6
- package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
- package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -96,6 +96,7 @@ export class CreateComponent {
|
|
|
96
96
|
input.publishTime = new Date(new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000).toISOString();
|
|
97
97
|
this.formEntity.markAllAsTouched();
|
|
98
98
|
this.formValidation = true;
|
|
99
|
+
// console.log(input,'提交',this.formEntity)
|
|
99
100
|
if (!this.formEntity.valid) {
|
|
100
101
|
for (const item of this.showEntryTypeInfo.fieldTabs) {
|
|
101
102
|
for (const el of item.fields) {
|
|
@@ -170,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
170
171
|
type: ViewChild,
|
|
171
172
|
args: ['submitclick', { static: true }]
|
|
172
173
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZW50cmllcy9jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUcsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHFCQUFxQixHQUN0QixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFB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LHdCQUF3QjtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBM0pVLGVBQWU7a0dBQWYsZUFBZSxxQ0FQZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsY0FBYzthQUN2QztTQUNGLG9KQ2hDSCx5dENBZ0JXOzsyRkRrQkUsZUFBZTtrQkFYM0IsU0FBUzsrQkFDRSxZQUFZLGFBR1g7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxjQUFjO3lCQUN2QztxQkFDRjs4QkFjMkMsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7ICBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4vLyBpbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgRUNtc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7XG4gIENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UsXG4gIEVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbn0gZnJvbSAnLi9jcmVhdGUtb3ItdXBkYXRlLWVudHJ5LWlucHV0LWJhc2UnO1xuaW1wb3J0IHtcbiAgVmFsaWRhdG9yc1NlcnZpY2UsXG4gIFVwZGF0ZUxpc3RTZXJ2aWNlLFxuICBMb2NhdGlvbkJhY2tTZXJ2aWNlLFxuICBEaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UsXG59IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2VudHJpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtY3JlYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5FbnRyaWVzX0NyZWF0ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgcHJpdmF0ZSBfdXBkYXRlTGlzdFNlcnZpY2UgPSBpbmplY3QoVXBkYXRlTGlzdFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ZXIgPSBpbmplY3QoVG9hc3RlclNlcnZpY2UpO1xuICBwdWJsaWMgX2xvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgX0VudHJ5QWRtaW5TZXJ2aWNlID0gaW5qZWN0KEVudHJ5QWRtaW5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfVmFsaWRhdG9yc1NlcnZpY2UgPSBpbmplY3QoVmFsaWRhdG9yc1NlcnZpY2UpO1xuXG4gIC8qKuiOt+WPluaPkOS6pOaMiemSruabv+i6q++8jOeUqOS6juecn+WunuinpuWPkeihqOWNleaPkOS6pCAqL1xuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuXG4gIC8qKuihqOWNlemqjOivgeeKtuaAgVxuICAgKiB7XG4gICAqICB0aXRsZTp0cnVlLFxuICAgKiB9XG4gICAqL1xuICBmb3JtVmFsaWRhdGlvbjogYW55ID0gJyc7XG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBmb3JtRW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG4gIC8qKuivreiogCAqL1xuICBjdWx0dXJlTmFtZTogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebruexu+Wei2lkICovXG4gIGVudHJ5VHlwZUlkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq54mI5Z2XaWQgKi9cbiAgc2VjdGlvbklkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu54mI5pysaWQgKi9cbiAgZW50cnlWZXJzaW9uSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67kv6Hmga8gKi9cbiAgZW50cnlJbmZvOiBhbnkgPSAnJztcbiAgLyoq5piv5ZCm5Yib5bu65YW25LuW6K+t6KiA54mI5pysICovXG4gIGlzT3RoZXI6IHN0cmluZyB8IGFueSA9IDA7XG5cbiAgLyoq5piv5ZCm6I2J56i/5o6n5Lu2Ki9cbiAgZ2V0IGRyYWZ0SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdkcmFmdCcpIGFzIEZvcm1Db250cm9sO1xuICB9XG4gIC8qKuivreiogOaOp+S7tiAqL1xuICBnZXQgY3VsdHVyZUlucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2N1bHR1cmUnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcblxuICAgIHRoaXMuY3VsdHVyZU5hbWUgPSBxdWVyeVBhcmFtcy5jdWx0dXJlTmFtZTtcbiAgICB0aGlzLmVudHJ5VHlwZUlkID0gcXVlcnlQYXJhbXMuZW50cnlUeXBlSWQ7XG4gICAgdGhpcy5zZWN0aW9uSWQgPSBxdWVyeVBhcmFtcy5zZWN0aW9uSWQ7XG4gICAgdGhpcy5lbnRyeVZlcnNpb25JZCA9IHF1ZXJ5UGFyYW1zLmVudHJ5VmVyc2lvbklkO1xuICAgIHRoaXMuaXNPdGhlciA9IHF1ZXJ5UGFyYW1zLmlzT3RoZXIgfHwgMDtcbiAgICB0aGlzLmZvcm1FbnRpdHkgPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlKCkpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LnBhdGNoVmFsdWUodGhpcy5jdWx0dXJlTmFtZSk7XG4gICAgaWYgKHRoaXMuZW50cnlWZXJzaW9uSWQpIGF3YWl0IHRoaXMuZ2V0RW50cnlJbmZvKCk7XG4gIH1cbiAgLyoq6I635Y+W5p2h55uu5L+h5oGvICovXG4gIGdldEVudHJ5SW5mbygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmdldCh0aGlzLmVudHJ5VmVyc2lvbklkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jdWx0dXJlTmFtZSA9IHJlcy5jdWx0dXJlO1xuICAgICAgICB0aGlzLmVudHJ5VHlwZUlkID0gcmVzLmVudHJ5VHlwZUlkO1xuICAgICAgICB0aGlzLnNlY3Rpb25JZCA9IHJlcy5zZWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuZW50cnlJbmZvID0gcmVzO1xuXG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKuaYvuekuuadoeebruexu+Wei+S/oeaBryAqL1xuICBzaG93RW50cnlUeXBlSW5mbzogYW55ID0gJyc7XG4gIC8qKuWPjemmiOWtkOe6p+mhtemdouS/oeaBryAqL1xuICBfZmVlZGJhY2tDaGlsZEluZm8oZXZlbnQpIHtcbiAgICB0aGlzLnNob3dFbnRyeVR5cGVJbmZvID0gZXZlbnQ/LnNob3dFbnRyeVR5cGUgfHwgJyc7XG4gIH1cblxuXG4gIHByaXZhdGUgX0xvY2F0aW9uQmFja1NlcnZpY2UgPSBpbmplY3QoTG9jYXRpb25CYWNrU2VydmljZSk7XG4gIHByaXZhdGUgX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZSA9IGluamVjdChEaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UpO1xuXG4gIC8qKuaPkOS6pCAqL1xuICBzYXZlKCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5mb3JtRW50aXR5Py52YWx1ZTtcbiAgICBpbnB1dC5wdWJsaXNoVGltZSA9IG5ldyBEYXRlKFxuICAgICAgbmV3IERhdGUoaW5wdXQucHVibGlzaFRpbWUpLmdldFRpbWUoKSArIDggKiA2MCAqIDYwICogMTAwMCxcbiAgICApLnRvSVNPU3RyaW5nKCk7XG4gICAgdGhpcy5mb3JtRW50aXR5Lm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uPXRydWU7XG5cbiAgICBpZiAoIXRoaXMuZm9ybUVudGl0eS52YWxpZCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8uZmllbGRUYWJzKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBpbmZvID0gYCR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgYENtczo6VGhlezF9RmllbGRVbmRlclRoZXswfVRBQmAsXG4gICAgICAgICAgICBpdGVtLm5hbWUsXG4gICAgICAgICAgICBlbC5maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICApfWA7XG4gICAgICAgICAgRW50cmllc1RvRm9ybUxhYmVsTWFwW2VsLmZpZWxkLm5hbWVdID0gaW5mbztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9EaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHtcbiAgICAgICAgZm9ybTogdGhpcy5mb3JtRW50aXR5LFxuICAgICAgICBtYXA6IEVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5pc090aGVyID09IDEpIHtcbiAgICAgICAgdGhpcy5zbHVnSW5wdXQuZGlzYWJsZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdWx0dXJlSW5wdXQuZGlzYWJsZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGlucHV0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcblxuICAgICAgICAvL+ajgOa1i+ivpemhtemdouS4iuS4gOe6p+aYr+WQpuaYr+ezu+e7n+mhtemdou+8jOWmguaenOaYr+i/lOWbnuS4iuS4gOmhte+8jOWmguaenOS4jeaYr++8jOWImeS9v+eUqOmhtemdoui3s+i9rOWIsOS4iuS4gOe6p+mhtemdouOAglxuICAgICAgICB0aGlzLl9Mb2NhdGlvbkJhY2tTZXJ2aWNlLmJhY2tUbyh7XG4gICAgICAgICAgdXJsOiBgL2Ntcy9hZG1pbi9lbnRyaWVzYCxcbiAgICAgICAgICByZXBsZW5pc2g6ICcvY3JlYXRlJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xuICAgICAgfSk7XG4gIH1cbiAgaXNTdWJtaXQ6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgLyoq54K55Ye75o+Q5LqkICovXG4gIGNsaWNrU3VibWl0KHR5cGUpIHtcbiAgICAvLyBpZiAodGhpcy5pc1N1Ym1pdCkgcmV0dXJuO1xuICAgIC8vIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xuICAgIHRoaXMuZHJhZnRJbnB1dC5wYXRjaFZhbHVlKHR5cGUpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LmVuYWJsZSgpO1xuICAgIGlmICh0aGlzLmlzT3RoZXIgPT0gMSkge1xuICAgICAgdGhpcy5zbHVnSW5wdXQuZW5hYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybUVudGl0eS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9LCAwKTtcbiAgfVxuICBnZXQgc2x1Z0lucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ3NsdWcnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIC8qKui/lOWbnuS4iuS4gOmhtSAqL1xuICBiYWNrVG8oKSB7XG4gICAgdGhpcy5fbG9jYXRpb24uYmFjaygpO1xuICB9XG59XG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6Ok5ldyd8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cclxuICAgIDxmb3JtIGNsYXNzPVwicm93IGctMyBuZWVkcy12YWxpZGF0aW9uXCIgW2Zvcm1Hcm91cF09XCJmb3JtRW50aXR5XCIgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCJcclxuICAgICAgICAoc3VibWl0KT1cInNhdmUoKVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1FbnRpdHkmJnNlY3Rpb25JZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cnlWZXJzaW9uSWQ7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIiBbaXNFZGl0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0XT1cImVudHJ5SW5mb1wiIFtpc0NyZWF0ZVZlcnNpb25dPVwidHJ1ZVwiIFtpc090aGVyXT1cImlzT3RoZXJcIiAgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCIgW2VudGl0eV09XCJmb3JtRW50aXR5XCI+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGNtcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzIFtzZWN0aW9uSWRdPVwic2VjdGlvbklkXCIgW2VudHJ5VHlwZUlkXT1cImVudHJ5VHlwZUlkXCIgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNFZGl0XT1cImZhbHNlXCIgW3NlbGVjdF09XCJlbnRyeUluZm9cIiBbaXNPdGhlcl09XCJpc090aGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImZvcm1FbnRpdHlcIiA+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZm9ybT5cclxuPC9hYnAtcGFnZT4iXX0=
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZW50cmllcy9jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUcsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHFCQUFxQixHQUN0QixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFB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LDZCQUE2QjtRQUM3Qix3QkFBd0I7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3pDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQWdCLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVc7SUFDWCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQTdKVSxlQUFlO2tHQUFmLGVBQWUscUNBUGY7WUFDVDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLGNBQWM7YUFDdkM7U0FDRixvSkNoQ0gseXRDQWdCVzs7MkZEa0JFLGVBQWU7a0JBWDNCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsY0FBYzt5QkFDdkM7cUJBQ0Y7OEJBYzJDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyAgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuLy8gaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9hZG1pbi9lbnRyaWVzJztcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQge1xuICBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlLFxuICBFbnRyaWVzVG9Gb3JtTGFiZWxNYXAsXG59IGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1lbnRyeS1pbnB1dC1iYXNlJztcbmltcG9ydCB7XG4gIFZhbGlkYXRvcnNTZXJ2aWNlLFxuICBVcGRhdGVMaXN0U2VydmljZSxcbiAgTG9jYXRpb25CYWNrU2VydmljZSxcbiAgRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlLFxufSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9lbnRyaWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY21zLWNyZWF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxuICAgICAgdXNlVmFsdWU6IEVDbXNDb21wb25lbnQuRW50cmllc19DcmVhdGUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgX3VwZGF0ZUxpc3RTZXJ2aWNlID0gaW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9sb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZSA9IGluamVjdChFbnRyeUFkbWluU2VydmljZSk7XG4gIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcblxuICAvKirojrflj5bmj5DkuqTmjInpkq7mm7/ouqvvvIznlKjkuo7nnJ/lrp7op6blj5HooajljZXmj5DkuqQgKi9cbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcblxuICAvKirooajljZXpqozor4HnirbmgIFcbiAgICoge1xuICAgKiAgdGl0bGU6dHJ1ZSxcbiAgICogfVxuICAgKi9cbiAgZm9ybVZhbGlkYXRpb246IGFueSA9ICcnO1xuICAvKirooajljZXlrp7kvZMgKi9cbiAgZm9ybUVudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICAvKiror63oqIAgKi9cbiAgY3VsdHVyZU5hbWU6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67nsbvlnotpZCAqL1xuICBlbnRyeVR5cGVJZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebrueJiOacrGlkICovXG4gIGVudHJ5VmVyc2lvbklkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu5L+h5oGvICovXG4gIGVudHJ5SW5mbzogYW55ID0gJyc7XG4gIC8qKuaYr+WQpuWIm+W7uuWFtuS7luivreiogOeJiOacrCAqL1xuICBpc090aGVyOiBzdHJpbmcgfCBhbnkgPSAwO1xuXG4gIC8qKuaYr+WQpuiNieeov+aOp+S7tiovXG4gIGdldCBkcmFmdElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnZHJhZnQnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuICAvKiror63oqIDmjqfku7YgKi9cbiAgZ2V0IGN1bHR1cmVJbnB1dCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdjdWx0dXJlJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG5cbiAgICB0aGlzLmN1bHR1cmVOYW1lID0gcXVlcnlQYXJhbXMuY3VsdHVyZU5hbWU7XG4gICAgdGhpcy5lbnRyeVR5cGVJZCA9IHF1ZXJ5UGFyYW1zLmVudHJ5VHlwZUlkO1xuICAgIHRoaXMuc2VjdGlvbklkID0gcXVlcnlQYXJhbXMuc2VjdGlvbklkO1xuICAgIHRoaXMuZW50cnlWZXJzaW9uSWQgPSBxdWVyeVBhcmFtcy5lbnRyeVZlcnNpb25JZDtcbiAgICB0aGlzLmlzT3RoZXIgPSBxdWVyeVBhcmFtcy5pc090aGVyIHx8IDA7XG4gICAgdGhpcy5mb3JtRW50aXR5ID0gdGhpcy5mYi5ncm91cChuZXcgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSgpKTtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5wYXRjaFZhbHVlKHRoaXMuY3VsdHVyZU5hbWUpO1xuICAgIGlmICh0aGlzLmVudHJ5VmVyc2lvbklkKSBhd2FpdCB0aGlzLmdldEVudHJ5SW5mbygpO1xuICB9XG4gIC8qKuiOt+WPluadoeebruS/oeaBryAqL1xuICBnZXRFbnRyeUluZm8oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXQodGhpcy5lbnRyeVZlcnNpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuY3VsdHVyZU5hbWUgPSByZXMuY3VsdHVyZTtcbiAgICAgICAgdGhpcy5lbnRyeVR5cGVJZCA9IHJlcy5lbnRyeVR5cGVJZDtcbiAgICAgICAgdGhpcy5zZWN0aW9uSWQgPSByZXMuc2VjdGlvbklkO1xuICAgICAgICB0aGlzLmVudHJ5SW5mbyA9IHJlcztcblxuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKirmmL7npLrmnaHnm67nsbvlnovkv6Hmga8gKi9cbiAgc2hvd0VudHJ5VHlwZUluZm86IGFueSA9ICcnO1xuICAvKirlj43ppojlrZDnuqfpobXpnaLkv6Hmga8gKi9cbiAgX2ZlZWRiYWNrQ2hpbGRJbmZvKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93RW50cnlUeXBlSW5mbyA9IGV2ZW50Py5zaG93RW50cnlUeXBlIHx8ICcnO1xuICB9XG5cblxuICBwcml2YXRlIF9Mb2NhdGlvbkJhY2tTZXJ2aWNlID0gaW5qZWN0KExvY2F0aW9uQmFja1NlcnZpY2UpO1xuICBwcml2YXRlIF9EaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UgPSBpbmplY3QoRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlKTtcblxuICAvKirmj5DkuqQgKi9cbiAgc2F2ZSgpIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZm9ybUVudGl0eT8udmFsdWU7XG4gICAgXG4gICAgaW5wdXQucHVibGlzaFRpbWUgPSBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKGlucHV0LnB1Ymxpc2hUaW1lKS5nZXRUaW1lKCkgKyA4ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgKS50b0lTT1N0cmluZygpO1xuICAgIHRoaXMuZm9ybUVudGl0eS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbj10cnVlO1xuLy8gY29uc29sZS5sb2coaW5wdXQsJ+aPkOS6pCcsdGhpcy5mb3JtRW50aXR5KVxuICAgIGlmICghdGhpcy5mb3JtRW50aXR5LnZhbGlkKSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5zaG93RW50cnlUeXBlSW5mby5maWVsZFRhYnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbCBvZiBpdGVtLmZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGluZm8gPSBgJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICBgQ21zOjpUaGV7MX1GaWVsZFVuZGVyVGhlezB9VEFCYCxcbiAgICAgICAgICAgIGl0ZW0ubmFtZSxcbiAgICAgICAgICAgIGVsLmZpZWxkLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICl9YDtcbiAgICAgICAgICBFbnRyaWVzVG9Gb3JtTGFiZWxNYXBbZWwuZmllbGQubmFtZV0gPSBpbmZvO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZS5nZXRFcnJvck1lc3NhZ2Uoe1xuICAgICAgICBmb3JtOiB0aGlzLmZvcm1FbnRpdHksXG4gICAgICAgIG1hcDogRW50cmllc1RvRm9ybUxhYmVsTWFwLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLmlzT3RoZXIgPT0gMSkge1xuICAgICAgICB0aGlzLnNsdWdJbnB1dC5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmN1bHR1cmVJbnB1dC5kaXNhYmxlKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2VcbiAgICAgIC5jcmVhdGUoaW5wdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlNhdmVkU3VjY2Vzc2Z1bGx5YCkpO1xuXG4gICAgICAgIC8v5qOA5rWL6K+l6aG16Z2i5LiK5LiA57qn5piv5ZCm5piv57O757uf6aG16Z2i77yM5aaC5p6c5piv6L+U5Zue5LiK5LiA6aG177yM5aaC5p6c5LiN5piv77yM5YiZ5L2/55So6aG16Z2i6Lez6L2s5Yiw5LiK5LiA57qn6aG16Z2i44CCXG4gICAgICAgIHRoaXMuX0xvY2F0aW9uQmFja1NlcnZpY2UuYmFja1RvKHtcbiAgICAgICAgICB1cmw6IGAvY21zL2FkbWluL2VudHJpZXNgLFxuICAgICAgICAgIHJlcGxlbmlzaDogJy9jcmVhdGUnLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl91cGRhdGVMaXN0U2VydmljZS51cGRhdGVMaXN0KCk7XG4gICAgICB9KTtcbiAgfVxuICBpc1N1Ym1pdDogYm9vbGVhbiB8IGFueSA9IGZhbHNlO1xuICAvKirngrnlh7vmj5DkuqQgKi9cbiAgY2xpY2tTdWJtaXQodHlwZSkge1xuICAgIC8vIGlmICh0aGlzLmlzU3VibWl0KSByZXR1cm47XG4gICAgLy8gdGhpcy5pc1N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5kcmFmdElucHV0LnBhdGNoVmFsdWUodHlwZSk7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQuZW5hYmxlKCk7XG4gICAgaWYgKHRoaXMuaXNPdGhlciA9PSAxKSB7XG4gICAgICB0aGlzLnNsdWdJbnB1dC5lbmFibGUoKTtcbiAgICB9XG4gICAgdGhpcy5mb3JtRW50aXR5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2submF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH0sIDApO1xuICB9XG4gIGdldCBzbHVnSW5wdXQoKTogRm9ybUNvbnRyb2wge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnc2x1ZycpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgLyoq6L+U5Zue5LiK5LiA6aG1ICovXG4gIGJhY2tUbygpIHtcbiAgICB0aGlzLl9sb2NhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6TmV3J3wgYWJwTG9jYWxpemF0aW9uXCIgW3Rvb2xiYXJdPVwidHJ1ZVwiPlxyXG4gICAgPGZvcm0gY2xhc3M9XCJyb3cgZy0zIG5lZWRzLXZhbGlkYXRpb25cIiBbZm9ybUdyb3VwXT1cImZvcm1FbnRpdHlcIiBbY2xhc3NdPVwieyd3YXMtdmFsaWRhdGVkJzpmb3JtVmFsaWRhdGlvbn1cIlxyXG4gICAgICAgIChzdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICNzdWJtaXRjbGljaz48L2J1dHRvbj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUVudGl0eSYmc2VjdGlvbklkXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbnRyeVZlcnNpb25JZDsgZWxzZSBlbHNlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxjbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcyBbc2VjdGlvbklkXT1cInNlY3Rpb25JZFwiIFtlbnRyeVR5cGVJZF09XCJlbnRyeVR5cGVJZFwiIFtpc0VkaXRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RdPVwiZW50cnlJbmZvXCIgW2lzQ3JlYXRlVmVyc2lvbl09XCJ0cnVlXCIgW2lzT3RoZXJdPVwiaXNPdGhlclwiICAoZmVlZGJhY2tDaGlsZEluZm8pPVwiX2ZlZWRiYWNrQ2hpbGRJbmZvKCRldmVudClcIiBbZW50aXR5XT1cImZvcm1FbnRpdHlcIj48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIiAoZmVlZGJhY2tDaGlsZEluZm8pPVwiX2ZlZWRiYWNrQ2hpbGRJbmZvKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0VkaXRdPVwiZmFsc2VcIiBbc2VsZWN0XT1cImVudHJ5SW5mb1wiIFtpc090aGVyXT1cImlzT3RoZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZm9ybUVudGl0eVwiID48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9mb3JtPlxyXG48L2FicC1wYWdlPiJdfQ==
|
|
@@ -109,7 +109,6 @@ export class EntriesComponent {
|
|
|
109
109
|
await this.getSectionLanguagesList();
|
|
110
110
|
this.filters.sorting = 'creationTime desc';
|
|
111
111
|
this.hookToQuery();
|
|
112
|
-
console.log(this.entryTypeList, 'entryTypeList', this.data.items);
|
|
113
112
|
}
|
|
114
113
|
/**切换板块 */
|
|
115
114
|
async sectionIdChange() {
|
|
@@ -405,4 +404,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
405
404
|
},
|
|
406
405
|
], template: "<abp-page [title]=\"'Cms::Entries' | abpLocalization\" [toolbar]=\"true\">\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length < 1\" class=\"col \">\r\n </abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length === 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button class=\"btn btn-sm btn-primary\"\r\n [disabled]=\"data.totalCount===1&&SiteOfSectionType===SectionType.Single\"\r\n [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\"><i\r\n class=\"fa fa-plus me-2\"></i> {{'Cms::NewEntry'|abpLocalization}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length > 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm ms-2\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n <i class=\"fa fa-plus pe-1\" aria-hidden=\"true\"></i>{{'Cms::NewEntry' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [disabled]=\"data.totalCount===1&&SiteOfSectionType===SectionType.Single&&isEntryTypeExist(item.id)\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\">{{item.displayName}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div id=\"sites-page\" class=\"sites-page\">\r\n <div class=\"card\">\r\n <div class=\"card-body \">\r\n <div class=\"row align-items-end\">\r\n <div class=\"mb-3 col-md-3\">\r\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}\uFF1A</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.sectionId\"\r\n (change)=\"sectionIdChange()\">\r\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\r\n <option [value]=\"item.id\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-md-3\">\r\n <label class=\"form-label\">{{'AbpUi::Languages' | abpLocalization}}\uFF1A</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.culture\" (change)=\"cultureChange()\">\r\n <ng-container *ngFor=\"let item of sectionLanguagesList\">\r\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-md-6\">\r\n <!-- <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'Cms::PagerSearch'|abpLocalization\" />\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"listget()\">\r\n <i class=\"bi bi-search\"></i>\r\n </button>\r\n </div> -->\r\n </div>\r\n </div>\r\n @if(filters.culture&&enablegearchFormEntity&&enableSearchFieldList.length>0){\r\n <div id=\"entries-advanced-form\" class=\"entries-advanced-form \" [hidden]=\"isexpanded\"\r\n (abpInit)=\"abpInitss()\">\r\n <form [formGroup]=\"enablegearchFormEntity\">\r\n <div class=\"row align-items-end\">\r\n <ng-container *ngFor=\"let el of enableSearchFieldList\">\r\n <ng-container *ngIf=\"el.field&&enablegearchFormEntity&&el.enableSearch\">\r\n <div class=\"col-md-3\">\r\n <df-dynamic-search [fields]=\"el\" [parentFiledName]=\"'extraProperties'\"\r\n [culture]=\"filters.culture\"\r\n [entity]=\"enablegearchFormEntity\"></df-dynamic-search>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-md-3 mb-3 \">\r\n <button type=\"button\" class=\"btn btn-primary \" (click)=\"listget()\">\r\n <span>{{ 'AbpUi::Refresh' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"card mb-0\">\r\n <div class=\"card-body p-0\">\r\n @if(SiteOfSectionType!==SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\" [columnMode]=\"ColumnMode.force\"\r\n [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [virtualization]=\"false\"\r\n [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\r\n <!-- <ngx-datatable-column [name]=\"'Cms::Title' | abpLocalization\" prop=\"title\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n <ngx-datatable-column [name]=\"'Cms::Slug' | abpLocalization\" prop=\"slug\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <!-- <ngx-datatable-column [name]=\"'Cms::SectionType' | abpLocalization\" prop=\"sectionType\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ 'Cms::Enum:SectionType:'+SectionType[value] |\r\n abpLocalization }}\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n <!-- <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column> -->\r\n \r\n <ngx-datatable-column [name]=\"'Cms::Status' | abpLocalization\" prop=\"status\" [width]=\"80\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.value=== value\">{{ 'Cms::Enum:EntryStatus:'+item.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n @for (item of showinFieldList; track $index) {\r\n <ngx-datatable-column [name]=\"'Cms::'+item.displayName | abpLocalization\"\r\n [prop]=\"item?.field?.name\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <df-dynamic-view [type]=\"item.field.formControlName\" [showInList]=\"true\" [fields]=\"item\"\r\n [value]=\"row?.extraProperties[item.field.name]\"></df-dynamic-view>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n <ngx-datatable-column [name]=\"'Cms::PublishTime' | abpLocalization\" prop=\"publishTime\"\r\n [width]=\"190\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{value | shortDateTime }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\"\r\n [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <div ngbDropdown container=\"body\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{row.id}}/edit\">{{'Cms::Edit' |\r\n abpLocalization}}</button>\r\n @if\r\n (((row|getLocalizedEntriesBySlug:filters.sectionId:sectionLanguagesList)|async)===false)\r\n {\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:row.entryTypeId,entryVersionId:row.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}} </button>\r\n }\r\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'Cms::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n </ngx-datatable>\r\n </div>\r\n }\r\n\r\n @if(SiteOfSectionType===SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <table class=\"table overflow-nowrap mb-0\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <thead>\r\n <tr>\r\n <th class=\"sticky-left-card-bg\"> <span\r\n class=\"bi bi-arrows-move fs-5 drag-handle me-2 opacity-0\"></span>{{'AbpUi::Actions'\r\n | abpLocalization}}</th>\r\n <th>{{'Cms::Slug' | abpLocalization}}</th>\r\n <!-- <th>{{'Cms::Title' | abpLocalization}}</th> -->\r\n <th>{{'Cms::SectionType' | abpLocalization}}</th>\r\n <th>{{'Cms::EntryType' | abpLocalization}}</th>\r\n <th>{{'Cms::Status' | abpLocalization}}</th>\r\n @for (item of showinFieldList; track $index) {\r\n <th>{{'Cms::'+item.displayName | abpLocalization}}</th>\r\n }\r\n <th>{{'Cms::PublishTime' | abpLocalization}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of data.items\" cdkDrag>\r\n <td class=\"sticky-left-card-bg\">\r\n <div ngbDropdown container=\"body\">\r\n <span class=\"bi bi-arrows-move fs-5 drag-handle me-2\" cdkDragHandle></span>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{item.id}}/edit\">{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n @if\r\n (((item|getLocalizedEntriesBySlug:filters.sectionId:sectionLanguagesList)|async)===false)\r\n {\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.entryTypeId,entryVersionId:item.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}}</button>\r\n }\r\n <!-- <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:row.entryTypeId,entryVersionId:row.id,isOther:1}\">{{'Cms::CreateOtherLanguages'\r\n |\r\n abpLocalization}} </button> -->\r\n\r\n <button ngbDropdownItem (click)=\"deletefield(item)\">{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </td>\r\n <!-- <td class=\"white-space-normal\">{{item.title}}</td> -->\r\n <td class=\"white-space-normal\">{{item.slug}}</td>\r\n <td>\r\n {{ 'Cms::Enum:SectionType:'+SectionType[item.sectionType] |\r\n abpLocalization }}\r\n </td>\r\n <td>\r\n <ng-container *ngFor=\"let item1 of entryTypeList\">\r\n <ng-container\r\n *ngIf=\"item1.id === item.entryTypeId\">{{item1.displayName}}</ng-container>\r\n </ng-container>\r\n </td>\r\n \r\n <td>\r\n <ng-container *ngFor=\"let item2 of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.status=== item2.value\">{{\r\n 'Cms::Enum:EntryStatus:'+item2.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </td>\r\n @for (item1 of showinFieldList; track $index) {\r\n <td>\r\n <df-dynamic-view [type]=\"item1.field.formControlName\" [showInList]=\"true\"\r\n [fields]=\"item1\"\r\n [value]=\"item?.extraProperties[item1.field.name]\"></df-dynamic-view>\r\n\r\n </td>\r\n }\r\n <td>{{item.publishTime | shortDateTime }}</td>\r\n </tr>\r\n </tbody>\r\n @if(data.items.length === 0){\r\n <div class=\"text-muted p-2\">\r\n {{ 'Cms::NoDataAvailableInDatatable' | abpLocalization}}\r\n </div>\r\n }\r\n </table>\r\n </div>\r\n <div class=\"card-footer py-2\">\r\n <small class=\"text-muted\"> {{data.totalCount}} {{ 'Cms::Total' | abpLocalization}}</small>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</abp-page>", styles: ["::ng-deep .sites-page .dignite_page{background:transparent}::ng-deep .sites-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .sites-page .card-header input{flex:2 1 auto}::ng-deep .sites-page .card-header .form-select{padding:.475rem 3.75rem .475rem 1.25rem}::ng-deep .sites-page .morentr{border:2px solid transparent}::ng-deep .sites-page .borderdrag{border:2px solid var(--ck-color-selector-column-resizer-hover)!important}::ng-deep .sites-page .borderdragtd{background-color:var(--ck-color-selector-column-resizer-hover)!important}::ng-deep .sites-page .testtr{border-color:transparent}::ng-deep .sites-page .testtr td{padding:2px}::ng-deep .sites-page .testtr:hover{background-color:transparent}.cdk-drag-preview{display:table;box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:0}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .sites-modal-form .form-control{padding:.4rem 1.25rem}.white-space-normal{white-space:normal;min-width:150px}.overflow-nowrap{overflow:auto;white-space:nowrap}::ng-deep .sites-page .table th{padding-left:1rem!important;padding-right:1rem!important}::ng-deep .sites-page .table td{padding:.875rem 1rem!important}::ng-deep .sites-page .table .sticky-left-card-bg{position:sticky;left:0;background:var(--bs-card-bg)}::ng-deep .sites-page .entries-advanced-form{transition:all .3s linear}\n"] }]
|
|
407
406
|
}], ctorParameters: () => [{ type: i1.EntryAdminService }, { type: i2.SectionAdminService }, { type: i3.ToasterService }, { type: i3.ConfirmationService }, { type: i4.ConfigStateService }, { type: i5.Router }, { type: i4.LocalizationService }, { type: i6.FormAdminService }, { type: i7.FieldAdminService }, { type: i0.ChangeDetectorRef }, { type: i8.FormControlsService }] });
|
|
408
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZW50cmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZW50cmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsOENBQThDO0FBQzlDLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsV0FBVyxFQUNYLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBR3BCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGlCQUFpQixHQUdsQixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFN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QUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUNwRDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLE9BQU87YUFDaEM7U0FDRiwwQkMvQ0gseTdtQkFpU1c7OzJGRGhQRSxnQkFBZ0I7a0JBZjVCLFNBQVM7K0JBQ0UsYUFBYSxhQUdaO3dCQUNULFdBQVc7d0JBQ1gsNERBQTREO3dCQUM1RCx1RUFBdUU7d0JBQ3ZFLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ3BEOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsT0FBTzt5QkFDaEM7cUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWFzeW5jLXByb21pc2UtZXhlY3V0b3IgKi9cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcbmltcG9ydCB7XG4gIExpc3RTZXJ2aWNlLFxuICBMSVNUX1FVRVJZX0RFQk9VTkNFX1RJTUUsXG4gIENvbmZpZ1N0YXRlU2VydmljZSxcbiAgTG9jYWxpemF0aW9uU2VydmljZSxcbiAgUGFnZWRSZXN1bHREdG8sXG4gIEFCUCxcbn0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlLCBDb25maXJtYXRpb24gfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDb2x1bW5Nb2RlIH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7XG4gIEVudHJ5QWRtaW5TZXJ2aWNlLFxuICBFbnRyeUR0byxcbiAgR2V0RW50cmllc0lucHV0LFxufSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9lbnRyaWVzJztcbmltcG9ydCB7IFNlY3Rpb25BZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9zZWN0aW9ucyc7XG5pbXBvcnQgeyBlbnRyeVN0YXR1c09wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9lbnRyaWVzJztcbmltcG9ydCB7IFJlZ2lvbmFsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2FicC9yZWdpb25hbGl6YXRpb24tbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBTZWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL3NlY3Rpb25zJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRm9ybUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2R5bmFtaWMtZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9maWVsZHMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0tY29udHJvbHMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1lbnRyaWVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudHJpZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbnRyaWVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIExpc3RTZXJ2aWNlLFxuICAgIC8vIFByb3ZpZGUgdGhpcyB0b2tlbiBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCBkZWJvdW5jZSB0aW1lLlxuICAgIC8vIERlZmF1bHQgaXMgMzAwLiBDYW5ub3QgYmUgMC4gQW55IHZhbHVlIGJlbG93IDEwMCBpcyBub3QgcmVjb21tZW5kZWQuXG4gICAgeyBwcm92aWRlOiBMSVNUX1FVRVJZX0RFQk9VTkNFX1RJTUUsIHVzZVZhbHVlOiA1MDAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5FbnRyaWVzLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVudHJpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZTogRW50cnlBZG1pblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfU2VjdGlvbkFkbWluU2VydmljZTogU2VjdGlvbkFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0ZXI6IFRvYXN0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU3RhdGU6IENvbmZpZ1N0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfRm9ybUFkbWluU2VydmljZTogRm9ybUFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIF9GaWVsZEFkbWluU2VydmljZTogRmllbGRBZG1pblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfRm9ybUNvbnRyb2xzU2VydmljZTogRm9ybUNvbnRyb2xzU2VydmljZSxcbiAgKSB7fVxuXG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICBwcml2YXRlIF9VcGRhdGVMaXN0U2VydmljZSA9IGluamVjdChVcGRhdGVMaXN0U2VydmljZSk7XG4gIHB1YmxpYyByZWFkb25seSBsaXN0ID0gaW5qZWN0KExpc3RTZXJ2aWNlPEdldEVudHJpZXNJbnB1dD4pO1xuXG4gIC8qKuadv+Wdl+exu+WeiyAqL1xuICBTZWN0aW9uVHlwZSA9IFNlY3Rpb25UeXBlO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UGFnZURhdGUoKTtcbiAgICB0aGlzLl9VcGRhdGVMaXN0U2VydmljZS51cGRhdGVMaXN0RXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZGF0YS5pdGVtcyA9IFtdO1xuICAgICAgdGhpcy5kYXRhLnRvdGFsQ291bnQgPSAwO1xuICAgICAgdGhpcy5saXN0LmdldCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoq56uZ54K55LiL55qE54mI5Z2XICovXG4gIFNpdGVPZlNlY3Rpb25MaXN0OiBhbnlbYW55XSA9IFtdO1xuXG4gIC8qKueJiOWdl+S4i+eahOivreiogOWIl+ihqCAqL1xuICBzZWN0aW9uTGFuZ3VhZ2VzTGlzdDogYW55W2FueV0gPSBbXTtcbiAgLyoq54mI5Z2X5LiL55qE5p2h55uu57G75Z6L5YiX6KGoICovXG4gIGVudHJ5VHlwZUxpc3Q6IGFueVthbnldID0gW107XG4gIC8qKueKtuaAgee8lueggSAqL1xuICBfZW50cnlTdGF0dXNPcHRpb25zID0gZW50cnlTdGF0dXNPcHRpb25zO1xuXG4gIC8qKuiOt+WPlumhtemdouaVsOaNriAqL1xuICBhc3luYyBnZXRQYWdlRGF0ZSgpIHtcbiAgICB0aGlzLmVuYWJsZVNlYXJjaFR5cGVMaXN0ID0gYXdhaXQgdGhpcy5fRm9ybUNvbnRyb2xzU2VydmljZS5nZXRFbmFibGVTZWFyY2hUeXBlTGlzdCgpO1xuICAgIGF3YWl0IHRoaXMuZ2V0U2l0ZU9mU2VjdGlvbkxpc3QoKTtcbiAgICBhd2FpdCB0aGlzLmdldFNlY3Rpb25MYW5ndWFnZXNMaXN0KCk7XG4gICAgdGhpcy5maWx0ZXJzLnNvcnRpbmcgPSAnY3JlYXRpb25UaW1lIGRlc2MnO1xuICAgIHRoaXMuaG9va1RvUXVlcnkoKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmVudHJ5VHlwZUxpc3QsJ2VudHJ5VHlwZUxpc3QnLHRoaXMuZGF0YS5pdGVtcyk7XG4gIH1cbiAgLyoq6ZyA6KaB5p+l6K+i55qE5Yqo5oCB6KGo5Y2V57G75Z6LICovXG4gIGVuYWJsZVNlYXJjaFR5cGVMaXN0OiBhbnlbXSA9IFtdO1xuICAvKirpnIDopoHmn6Xor6LnmoTliqjmgIHooajljZXlrZfmrrUgKi9cbiAgZW5hYmxlU2VhcmNoRmllbGRMaXN0OiBhbnlbXSA9IFtdO1xuICAvKirkuI3pnIDopoHlsZXnpLrnmoTliqjmgIHooajljZXnsbvlnosgKi9cbiAgZGlzYWJsZXNob3dpblR5cGVMaXN0OiBhbnlbXSA9IFtdO1xuICAvKirpnIDopoHlsZXnpLrnmoTliqjmgIHliJfooajlrZfmrrUgKi9cbiAgc2hvd2luRmllbGRMaXN0OiBhbnlbXSA9IFtdO1xuXG5cbiAgLyoq5YiH5o2i5p2/5Z2XICovXG4gIGFzeW5jIHNlY3Rpb25JZENoYW5nZSgpIHtcbiAgICB0aGlzLmdldFNlY3Rpb25PZkVudHJ5VHlwZSgpO1xuICAgIGF3YWl0IHRoaXMuZ2V0U2VjdGlvbkxhbmd1YWdlc0xpc3QoKTtcbiAgICB0aGlzLnJlc2V0RGF0YSgpO1xuICB9XG4gIC8qKuWIh+aNouivreiogCAqL1xuICBhc3luYyBjdWx0dXJlQ2hhbmdlKCkge1xuICAgIHRoaXMucmVzZXREYXRhKCk7XG4gIH1cblxuICAvKirojrflj5bnq5nngrnkuIvnmoTniYjlnZcgKi9cbiAgZ2V0U2l0ZU9mU2VjdGlvbkxpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlXG4gICAgICAgIC5nZXRMaXN0KHtcbiAgICAgICAgICBtYXhSZXN1bHRDb3VudDogMTAwMCxcbiAgICAgICAgfSlcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLlNpdGVPZlNlY3Rpb25MaXN0ID0gcmVzLml0ZW1zLmZpbHRlcihlbCA9PiBlbC5pc0FjdGl2ZSApO1xuICAgICAgICAgIHRoaXMuZmlsdGVycy5zZWN0aW9uSWQgPSByZXMuaXRlbXNbMF0/LmlkIHx8ICcnO1xuICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0U2VjdGlvbk9mRW50cnlUeXBlKCk7XG4gICAgICAgICAgcmVzb2x2ZShyZXMuaXRlbXMpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKirooajljZUgKi9cbiAgZW5hYmxlZ2VhcmNoRm9ybUVudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkID0gdGhpcy5mYi5ncm91cCh7XG4gICAgZXh0cmFQcm9wZXJ0aWVzOiB0aGlzLmZiLmdyb3VwKHt9KSxcbiAgfSk7XG5cbiAgZ2V0IGV4dHJhUHJvcGVydGllc0lucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZWdlYXJjaEZvcm1FbnRpdHk/LmdldCgnZXh0cmFQcm9wZXJ0aWVzJykgYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgLyoq6K6+572u562b6YCJ5p2h5Lu2ICovXG4gIHNldGZpbHRlcnNWYWx1ZSgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhUHJvcGVydGllcyA9IHRoaXMuZXh0cmFQcm9wZXJ0aWVzSW5wdXQudmFsdWU7XG4gICAgICBjb25zdCBpbnB1dHM6IGFueVtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBleHRyYVByb3BlcnRpZXMpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGV4dHJhUHJvcGVydGllc1trZXldO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50KSA/IChlbGVtZW50Lmxlbmd0aCA+IDAgPyBlbGVtZW50IDogbnVsbCkgOiBlbGVtZW50KSB7XG4gICAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgICAgbmFtZToga2V5LFxuICAgICAgICAgICAgdmFsdWU6IGVsZW1lbnQgPT09IHRydWUgPyAnVHJ1ZScgOiBBcnJheS5pc0FycmF5KGVsZW1lbnQpID8gZWxlbWVudC5qb2luKCcsJykgOiBlbGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50ID09PSBmYWxzZSkge1xuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgICAgIHZhbHVlOiAnRmFsc2UnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlcnMucXVlcnlpbmdCeUZpZWxkc0pzb24gPSBpbnB1dHMubGVuZ3RoID4gMCA/IEpTT04uc3RyaW5naWZ5KGlucHV0cykgOiAnJztcbiAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0Z2V0KCkge1xuICAgIGF3YWl0IHRoaXMuc2V0ZmlsdGVyc1ZhbHVlKCk7XG4gICAgdGhpcy5saXN0LmdldCgpO1xuICAgIC8vIHRoaXMuZmlsdGVycy5cbiAgfVxuXG4gIC8qKuermeeCueS4i+adv+Wdl+eahOexu+WeiyAqL1xuICBTaXRlT2ZTZWN0aW9uVHlwZTogYW55ID0gU2VjdGlvblR5cGUuU2luZ2xlO1xuXG4gIC8qKuiOt+WPlueJiOWdl+S4i+eahOadoeebruexu+WeiyAqL1xuICBhc3luYyBnZXRTZWN0aW9uT2ZFbnRyeVR5cGUoKSB7XG4gICAgLy8gbGV0IHNlY3Rpb25JZCA9IHRoaXMuZmlsdGVyc0Zvcm0uZ2V0KCdzZWN0aW9uSWQnKS52YWx1ZTtcbiAgICBjb25zdCBzZWN0aW9uSWQgPSB0aGlzLmZpbHRlcnMuc2VjdGlvbklkO1xuICAgIGNvbnN0IFNlY3Rpb25JbmZvOiBhbnkgPSBhd2FpdCB0aGlzLmdldFNlY3Rpb25JbmZvKHNlY3Rpb25JZCk7XG4gICAgY29uc3QgX2VudHJ5VHlwZUxpc3QgPSBTZWN0aW9uSW5mbz8uZW50cnlUeXBlcyB8fCBbXTtcblxuICAgIC8vIGxldCBfZW50cnlUeXBlTGlzdCA9IHRoaXMuU2l0ZU9mU2VjdGlvbkxpc3QuZmluZChlbCA9PiBlbC5pZCA9PSBzZWN0aW9uSWQpPy5lbnRyeVR5cGVzIHx8IFtdO1xuICAgIHRoaXMuZW50cnlUeXBlTGlzdCA9IF9lbnRyeVR5cGVMaXN0O1xuICAgIC8v6YCJ5oup5p2/5Z2X55qE57G75Z6LU2VjdGlvblR5cGVcbiAgICB0aGlzLlNpdGVPZlNlY3Rpb25UeXBlID0gdGhpcy5TaXRlT2ZTZWN0aW9uTGlzdC5maW5kKGVsID0+IGVsLmlkID09IHNlY3Rpb25JZCk/LnR5cGU7XG4gICAgaWYgKHRoaXMuU2l0ZU9mU2VjdGlvblR5cGUgPT0gU2VjdGlvblR5cGUuU3RydWN0dXJlKSB7XG4gICAgICB0aGlzLm1heFJlc3VsdENvdW50ID0gMTAwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXhSZXN1bHRDb3VudCA9IDEwO1xuICAgIH1cbiAgICAvLyDliJ3lp4vljJbmlbDnu4RcbiAgICB0aGlzLmVuYWJsZVNlYXJjaEZpZWxkTGlzdCA9IFtdO1xuICAgIHRoaXMuc2hvd2luRmllbGRMaXN0ID0gW107XG4gICAgLy8gX2VudHJ5VHlwZUxpc3QubGVuZ3RoID09PSAxXG4gICAgaWYgKHRydWUpIHtcbiAgICAgIC8vIHRoaXMuZmlsdGVycy5lbnRyeVR5cGVJZCA9IHRoaXMuZW50cnlUeXBlTGlzdFswXS5pZDtcblxuICAgICAgLy8g5L2/55SoZm9yLi4ub2bmm7/ku6Nmb3JFYWNo5p2l5aSE55CG5byC5q2lXG4gICAgICBmb3IgKGNvbnN0IGVsIG9mIF9lbnRyeVR5cGVMaXN0KSB7XG4gICAgICAgIGZvciAoY29uc3QgZWwxIG9mIGVsLmZpZWxkVGFicykge1xuICAgICAgICAgIGZvciAoY29uc3QgZWwyIG9mIGVsMS5maWVsZHMpIHtcbiAgICAgICAgICAgIC8vIGVsMi5maWVsZCA9IGF3YWl0IHRoaXMuZ2V0RHluYW1pY0Zvcm1FbnRpdHkoZWwyLmZpZWxkSWQpO1xuICAgICAgICAgICAgaWYgKGVsMi5lbmFibGVTZWFyY2ggJiYgdGhpcy5lbmFibGVTZWFyY2hUeXBlTGlzdC5pbmNsdWRlcyhlbDIuZmllbGQuZm9ybUNvbnRyb2xOYW1lKSkge1xuICAgICAgICAgICAgICB0aGlzLmVuYWJsZVNlYXJjaEZpZWxkTGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgICAuLi5lbDIsXG4gICAgICAgICAgICAgICAgZmllbGQ6IHtcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZTogZWwyLmZpZWxkLmZvcm1Db250cm9sTmFtZSxcbiAgICAgICAgICAgICAgICAgIGZvcm1Db25maWd1cmF0aW9uOiBlbDIuZmllbGQuZm9ybUNvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgICAgICAgICBuYW1lOiBlbDIuZmllbGQubmFtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbDIuc2hvd0luTGlzdCAmJiAhdGhpcy5kaXNhYmxlc2hvd2luVHlwZUxpc3QuaW5jbHVkZXMoZWwyLmZpZWxkLmZvcm1Db250cm9sTmFtZSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93aW5GaWVsZExpc3QucHVzaChlbDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgfVxuICBhc3luYyBhYnBJbml0c3MoKSB7XG4gICAgYXdhaXQgdGhpcy5zZXRmaWx0ZXJzVmFsdWUoKTtcbiAgfVxuICAvKirojrflj5bmnb/lnZfor6bmg4UgKi9cbiAgZ2V0U2VjdGlvbkluZm8oaWRzKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9TZWN0aW9uQWRtaW5TZXJ2aWNlLmdldChpZHMpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKirojrflj5blrZfmrrXor6bmg4UgKi9cbiAgZ2V0RHluYW1pY0Zvcm1FbnRpdHkoZmllbGRJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9GaWVsZEFkbWluU2VydmljZS5nZXQoZmllbGRJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoQ29uZmlnU3RhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfUmVnaW9uYWxpemF0aW9uU2VydmljZSA9IGluamVjdChSZWdpb25hbGl6YXRpb25TZXJ2aWNlKTtcbiAgLyoq6I635Y+W54mI5Z2X5LiL55qE6K+t6KiA5YiX6KGoICovXG4gIGdldFNlY3Rpb25MYW5ndWFnZXNMaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgLy/ojrflj5bmiYDmnInor63oqIAgKi9cbiAgICAgIGNvbnN0IGxhbmd1YWdlc1N5c3RlbSA9IHRoaXMuY29uZmlnU3RhdGUuZ2V0RGVlcCgnbG9jYWxpemF0aW9uLmxhbmd1YWdlcycpO1xuICAgICAgLy/ojrflj5bns7vnu5/pu5jorqTor63oqIAgKi9cbiAgICAgIGxldCBEZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmNvbmZpZy5nZXRTZXR0aW5nKCdBYnAuUmVnaW9uYWxpemF0aW9uLkRlZmF1bHRDdWx0dXJlTmFtZScpO1xuICAgICAgY29uc3QgY29uZmlnQ21zU2l0ZUxhbmd1YWdlcyA9IHRoaXMuY29uZmlnLmdldFNldHRpbmcoJ0Ntcy5TaXRlLkxhbmd1YWdlcycpO1xuICAgICAgaWYgKCFjb25maWdDbXNTaXRlTGFuZ3VhZ2VzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0U2l0ZVNldHRpbmdzTGFuZ3VhZ2VzKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kZWZhdWx0Q3VsdHVyZU5hbWUpIHtcbiAgICAgICAgRGVmYXVsdExhbmd1YWdlID0gdGhpcy5kZWZhdWx0Q3VsdHVyZU5hbWU7XG4gICAgICB9XG4gICAgICBjb25zdCBMYW5ndWFnZXNTaXRlID1cbiAgICAgICAgKGNvbmZpZ0Ntc1NpdGVMYW5ndWFnZXMgPyBjb25maWdDbXNTaXRlTGFuZ3VhZ2VzLnNwbGl0KCcsJykgOiAnJykgfHxcbiAgICAgICAgdGhpcy5TaXRlU2V0dGluZ3NBZG1pbkxhbmd1YWdlcztcbiAgICAgIGNvbnN0IExhbmd1YWdlc0FycmF5ID0gbGFuZ3VhZ2VzU3lzdGVtLmZpbHRlcihlbCA9PiBMYW5ndWFnZXNTaXRlLmluY2x1ZGVzKGVsLmN1bHR1cmVOYW1lKSk7XG4gICAgICAvL+iOt+WPluW9k+WJjemAieaLqeeahOivreiogFxuICAgICAgY29uc3Qgbm93Y3VsdHVyZSA9IHRoaXMuZmlsdGVycy5jdWx0dXJlO1xuICAgICAgLy8gbGV0IG5vd2N1bHR1cmUgPSB0aGlzLmZpbHRlcnNGb3JtLmdldCgnY3VsdHVyZScpLnZhbHVlO1xuICAgICAgLy/lvZPliY3pgInmi6nnmoTor63oqIDvvIzmmK/lkKblnKjniYjlnZfnmoTnmoTor63oqIDliJfooajkuK1cbiAgICAgIGNvbnN0IGlzZXhpc3QgPSBMYW5ndWFnZXNBcnJheS5maW5kKGVsID0+IGVsLmN1bHR1cmVOYW1lID09IG5vd2N1bHR1cmUpO1xuICAgICAgdGhpcy5maWx0ZXJzLmN1bHR1cmUgPSBub3djdWx0dXJlXG4gICAgICAgID8gaXNleGlzdFxuICAgICAgICAgID8gbm93Y3VsdHVyZVxuICAgICAgICAgIDogRGVmYXVsdExhbmd1YWdlXG4gICAgICAgIDogRGVmYXVsdExhbmd1YWdlO1xuICAgICAgdGhpcy5zZWN0aW9uTGFuZ3VhZ2VzTGlzdCA9IExhbmd1YWdlc0FycmF5O1xuICAgICAgcmVzb2x2ZShMYW5ndWFnZXNBcnJheSk7XG4gICAgfSk7XG4gIH1cblxuICAvKirnq5nngrnorr7nva7or63oqIAgKi9cbiAgU2l0ZVNldHRpbmdzQWRtaW5MYW5ndWFnZXM6IGFueVtdID0gW107XG4gIC8qKuermeeCueiuvue9rueahOm7mOiupOivreiogCAqL1xuICBkZWZhdWx0Q3VsdHVyZU5hbWU6IGFueSA9ICcnO1xuICAvKipcbiAgICog6I635Y+W56uZ54K56K6+572u6K+t6KiAXG4gICAqL1xuICBnZXRTaXRlU2V0dGluZ3NMYW5ndWFnZXMoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9SZWdpb25hbGl6YXRpb25TZXJ2aWNlLmdldCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLlNpdGVTZXR0aW5nc0FkbWluTGFuZ3VhZ2VzID0gcmVzLmF2YWlsYWJsZUN1bHR1cmVOYW1lcztcbiAgICAgICAgdGhpcy5kZWZhdWx0Q3VsdHVyZU5hbWUgPSByZXMuZGVmYXVsdEN1bHR1cmVOYW1lO1xuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0RGF0YSgpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSB7XG4gICAgICBzZWN0aW9uSWQ6IHRoaXMuZmlsdGVycy5zZWN0aW9uSWQsXG4gICAgICBjdWx0dXJlOiB0aGlzLmZpbHRlcnMuY3VsdHVyZSxcbiAgICAgc29ydGluZyA6ICdjcmVhdGlvblRpbWUgZGVzYycsXG4gICAgfSBhcyBHZXRFbnRyaWVzSW5wdXQ7XG4gICAgdGhpcy5saXN0LmZpbHRlciA9ICcnO1xuICAgIHRoaXMubGlzdC5tYXhSZXN1bHRDb3VudCA9IHRoaXMubWF4UmVzdWx0Q291bnQ7XG4gICAgdGhpcy5saXN0LnBhZ2UgPSAwO1xuICAgIHRoaXMuZGF0YS5pdGVtcyA9IFtdO1xuICAgIHRoaXMubGlzdC5nZXQoKTtcbiAgfVxuXG4gIC8qKuaWsOWini3ljZXkuKogKi9cbiAgY3JlYXRlRW50cmllc0J0bigpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9jbXMvYWRtaW4vZW50cmllcy9jcmVhdGUnXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgY3VsdHVyZU5hbWU6IHRoaXMuZmlsdGVycy5jdWx0dXJlLFxuICAgICAgICBzZWN0aW9uSWQ6IHRoaXMuZmlsdGVycy5zZWN0aW9uSWQsXG4gICAgICAgIGVudHJ5VHlwZUlkOiB0aGlzLmVudHJ5VHlwZUxpc3RbMF0uaWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIGNyZWF0ZUNvcHlFbnRyaWVzQnRuKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Ntcy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS1jb3B5J10sIHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIGN1bHR1cmVOYW1lOiB0aGlzLmZpbHRlcnMuY3VsdHVyZSxcbiAgICAgICAgc2VjdGlvbklkOiB0aGlzLmZpbHRlcnMuc2VjdGlvbklkLFxuICAgICAgICBlbnRyeVR5cGVJZDogdGhpcy5lbnRyeVR5cGVMaXN0WzBdLmlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKuWIl+ihqOebuOWFsyAqL1xuICBDb2x1bW5Nb2RlID0gQ29sdW1uTW9kZTtcbiAgZGF0YTogUGFnZWRSZXN1bHREdG88RW50cnlEdG8+IHwgYW55ID0ge1xuICAgIGl0ZW1zOiBbXSxcbiAgICB0b3RhbENvdW50OiAwLFxuICB9O1xuXG4gIGZpbHRlcnMgPSB7fSBhcyBHZXRFbnRyaWVzSW5wdXQ7XG5cbiAgbWF4UmVzdWx0Q291bnQgPSAxMDtcblxuICBob29rVG9RdWVyeSgpIHtcbiAgICBjb25zdCBnZXREYXRhID0gKHF1ZXJ5OiBBQlAuUGFnZVF1ZXJ5UGFyYW1zKSA9PlxuICAgICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuZ2V0TGlzdCh7XG4gICAgICAgIC4uLnF1ZXJ5LFxuICAgICAgICAuLi50aGlzLmZpbHRlcnMsXG4gICAgICAgIG1heFJlc3VsdENvdW50OiB0aGlzLm1heFJlc3VsdENvdW50LFxuICAgICAgfSk7XG4gICAgY29uc3Qgc2V0RGF0YSA9IChsaXN0OiBQYWdlZFJlc3VsdER0bzxFbnRyeUR0bz4gfCBhbnkpID0+IHtcbiAgICAgIHRoaXMuZGF0YS5pdGVtcyA9IFtdO1xuICAgICAgdGhpcy5kYXRhLnRvdGFsQ291bnQgPSAwO1xuICAgICAgaWYgKHRoaXMuU2l0ZU9mU2VjdGlvblR5cGUgPT0gU2VjdGlvblR5cGUuU3RydWN0dXJlKSB7XG4gICAgICAgIGxpc3QuaXRlbXMgPSBsaXN0Lml0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gbmV3IERhdGUoYi5jcmVhdGlvblRpbWUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEuY3JlYXRpb25UaW1lKS5nZXRUaW1lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGxpc3QuaXRlbXMpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkl0ZW09dGhpcy5TaXRlT2ZTZWN0aW9uTGlzdC5maW5kKGVsPT5lbC5pZD09ZWxlbWVudC5zZWN0aW9uSWQpO1xuICAgICAgICBlbGVtZW50LnNlY3Rpb25UeXBlPXNlY3Rpb25JdGVtLnR5cGU7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEgPSBsaXN0O1xuICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgIH07XG4gICAgdGhpcy5saXN0Lmhvb2tUb1F1ZXJ5KGdldERhdGEpLnN1YnNjcmliZShzZXREYXRhKTtcbiAgfVxuICBzY3JvbGxUb1RvcCgpIHtcbiAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdscHgtc2Nyb2xsLWNvbnRhaW5lcicpWzBdO1xuICAgIChzY3JvbGxDb250YWluZXIgfHwgd2luZG93KS5zY3JvbGxUbygwLCAwKTtcbiAgfVxuXG4gIC8qKuWIpOaWreafkOS4quexu+Wei+eahOadoeebruaYr+WQpuWtmOWcqCAqL1xuICBpc0VudHJ5VHlwZUV4aXN0KGVudHJ5VHlwZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhPy5pdGVtcz8uc29tZShlbCA9PiBlbC5lbnRyeVR5cGVJZCA9PSBlbnRyeVR5cGVJZCk7XG4gIH1cblxuICAvKirliKDpmaTmnaHnm64gKi9cbiAgZGVsZXRlZmllbGQocm93OiBhbnkpIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblxuICAgICAgLndhcm4ocm93LmRpc3BsYXlOYW1lLCB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpJdGVtV2lsbEJlRGVsZXRlZE1lc3NhZ2VgKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09ICdjb25maXJtJykge1xuICAgICAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlKHJvdy5pZClcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHt9KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6RGVsZXRlZFN1Y2Nlc3NmdWxseWApKTtcbiAgICAgICAgICAgICAgdGhpcy5saXN0LmdldCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZHJvcChldmVudDogYW55KSB7XG4gICAgY29uc3QgcHJldmlvdXNJZDogYW55ID0gdGhpcy5kYXRhLml0ZW1zW2V2ZW50LnByZXZpb3VzSW5kZXhdLmlkO1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXhPcmRlciA9IHRoaXMuZGF0YS5pdGVtc1tldmVudC5wcmV2aW91c0luZGV4XS5vcmRlcjtcbiAgICBjb25zdCBjdXJyZW50SW5kZXhPcmRlciA9IHRoaXMuZGF0YS5pdGVtc1tldmVudC5jdXJyZW50SW5kZXhdLm9yZGVyO1xuICAgIGxldCBtb3Zlb3JkZXIgPSBjdXJyZW50SW5kZXhPcmRlcjtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNJbmRleCA9PSBldmVudC5jdXJyZW50SW5kZXgpIHJldHVyblxuICAgIGlmIChwcmV2aW91c0luZGV4T3JkZXIgPCBjdXJyZW50SW5kZXhPcmRlcikge1xuICAgICAgbW92ZW9yZGVyID0gY3VycmVudEluZGV4T3JkZXIgKyAxO1xuICAgIH1cbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5kYXRhLml0ZW1zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAubW92ZShwcmV2aW91c0lkLCB7XG4gICAgICAgIG9yZGVyOiBtb3Zlb3JkZXIsXG4gICAgICAgIC8vIG9yZGVyOiBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHt9LFxuICAgICAgICBlcnIgPT4ge30sXG4gICAgICApO1xuICAgIC8vIG1vdmVJdGVtSW5BcnJheSh0aGlzLnJvd3MsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgLy8gdGhpcy5yb3dzID0gWy4uLnRoaXMucm93c107XG4gIH1cblxuICBpc2V4cGFuZGVkOiBib29sZWFuIHwgYW55ID0gZmFsc2U7XG4gIC8qKumrmOe6p+etm+mAieWIh+aNoiAqL1xuICBleHBhbmRlZENoYW5nZShldmVudCkge1xuICAgIHRoaXMuaXNleHBhbmRlZCA9IGV2ZW50O1xuICB9XG59XG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6OkVudHJpZXMnIHwgYWJwTG9jYWxpemF0aW9uXCIgW3Rvb2xiYXJdPVwidHJ1ZVwiPlxyXG4gICAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyICpuZ0lmPVwiZW50cnlUeXBlTGlzdC5sZW5ndGggPCAxXCIgY2xhc3M9XCJjb2wgXCI+XHJcbiAgICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gICAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyICpuZ0lmPVwiZW50cnlUeXBlTGlzdC5sZW5ndGggPT09IDFcIiBjbGFzcz1cImNvbCBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbXgtMCBnYXAtMlwiICphYnBQZXJtaXNzaW9uPVwiJ0Ntc0FkbWluLkVudHJ5LkNyZWF0ZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTAgcHQtMFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBlbnRyeVR5cGVMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGF0YS50b3RhbENvdW50PT09MSYmU2l0ZU9mU2VjdGlvblR5cGU9PT1TZWN0aW9uVHlwZS5TaW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbJy9jbXMvYWRtaW4vZW50cmllcy9jcmVhdGUnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7Y3VsdHVyZU5hbWU6IGZpbHRlcnMuY3VsdHVyZSxzZWN0aW9uSWQ6ZmlsdGVycy5zZWN0aW9uSWQsZW50cnlUeXBlSWQ6aXRlbS5pZH1cIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTJcIj48L2k+IHt7J0Ntczo6TmV3RW50cnknfGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gICAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyICpuZ0lmPVwiZW50cnlUeXBlTGlzdC5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb2wgXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIG14LTAgZ2FwLTJcIiAqYWJwUGVybWlzc2lvbj1cIidDbXNBZG1pbi5FbnRyeS5DcmVhdGUnXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0byBweC0wIHB0LTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtcy0yXCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgcGUtMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT57eydDbXM6Ok5ld0VudHJ5JyB8IGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBlbnRyeVR5cGVMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBbcm91dGVyTGlua109XCJbJy9jbXMvYWRtaW4vZW50cmllcy9jcmVhdGUnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEudG90YWxDb3VudD09PTEmJlNpdGVPZlNlY3Rpb25UeXBlPT09U2VjdGlvblR5cGUuU2luZ2xlJiZpc0VudHJ5VHlwZUV4aXN0KGl0ZW0uaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwie2N1bHR1cmVOYW1lOiBmaWx0ZXJzLmN1bHR1cmUsc2VjdGlvbklkOmZpbHRlcnMuc2VjdGlvbklkLGVudHJ5VHlwZUlkOml0ZW0uaWR9XCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gICAgPGRpdiBpZD1cInNpdGVzLXBhZ2VcIiBjbGFzcz1cInNpdGVzLXBhZ2VcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyAgY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0Ntczo6U2VjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9ufX3vvJo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3QgY29sLWF1dG9cIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuc2VjdGlvbklkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VjdGlvbklkQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgU2l0ZU9mU2VjdGlvbkxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyBjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQWJwVWk6Okxhbmd1YWdlcycgfCBhYnBMb2NhbGl6YXRpb259fe+8mjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjb2wtYXV0b1wiIFsobmdNb2RlbCldPVwiZmlsdGVycy5jdWx0dXJlXCIgKGNoYW5nZSk9XCJjdWx0dXJlQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VjdGlvbkxhbmd1YWdlc0xpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtLmN1bHR1cmVOYW1lXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyAgY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLmZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDbXM6OlBhZ2VyU2VhcmNoJ3xhYnBMb2NhbGl6YXRpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibGlzdGdldCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJiaSBiaS1zZWFyY2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBAaWYoZmlsdGVycy5jdWx0dXJlJiZlbmFibGVnZWFyY2hGb3JtRW50aXR5JiZlbmFibGVTZWFyY2hGaWVsZExpc3QubGVuZ3RoPjApe1xyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImVudHJpZXMtYWR2YW5jZWQtZm9ybVwiIGNsYXNzPVwiZW50cmllcy1hZHZhbmNlZC1mb3JtIFwiIFtoaWRkZW5dPVwiaXNleHBhbmRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGFicEluaXQpPVwiYWJwSW5pdHNzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImVuYWJsZWdlYXJjaEZvcm1FbnRpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsIG9mIGVuYWJsZVNlYXJjaEZpZWxkTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbC5maWVsZCYmZW5hYmxlZ2VhcmNoRm9ybUVudGl0eSYmZWwuZW5hYmxlU2VhcmNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRmLWR5bmFtaWMtc2VhcmNoIFtmaWVsZHNdPVwiZWxcIiBbcGFyZW50RmlsZWROYW1lXT1cIidleHRyYVByb3BlcnRpZXMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VsdHVyZV09XCJmaWx0ZXJzLmN1bHR1cmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbnRpdHldPVwiZW5hYmxlZ2VhcmNoRm9ybUVudGl0eVwiPjwvZGYtZHluYW1pYy1zZWFyY2g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTMgbWItMyBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBcIiAoY2xpY2spPVwibGlzdGdldCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdBYnBVaTo6UmVmcmVzaCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIG1iLTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTBcIj5cclxuICAgICAgICAgICAgICAgIEBpZihTaXRlT2ZTZWN0aW9uVHlwZSE9PVNlY3Rpb25UeXBlLlN0cnVjdHVyZSl7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSB0YWJsZS1maXhlZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZSBjbGFzcz1cIm1hdGVyaWFsIFwiIFtyb3dzXT1cImRhdGEuaXRlbXNcIiBbbGlzdF09XCJsaXN0XCIgW2NvbHVtbk1vZGVdPVwiQ29sdW1uTW9kZS5mb3JjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJIZWlnaHRdPVwiNTBcIiBbZm9vdGVySGVpZ2h0XT1cIjUwXCIgcm93SGVpZ2h0PVwiYXV0b1wiIFt2aXJ0dWFsaXphdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtleHRlcm5hbFBhZ2luZ109XCJ0cnVlXCIgW2NvdW50XT1cImRhdGEudG90YWxDb3VudFwiIFtzY3JvbGxiYXJIXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cInRpdGxlXCIgW3NvcnRhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OlNsdWcnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cInNsdWdcIiBbc29ydGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjpFbnRyeVR5cGUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cImVudHJ5VHlwZUlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVudHJ5VHlwZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaWQgPT09IHZhbHVlXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OlNlY3Rpb25UeXBlJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJzZWN0aW9uVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0Ntczo6RW51bTpTZWN0aW9uVHlwZTonK1NlY3Rpb25UeXBlW3ZhbHVlXSB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjpFbnRyeVR5cGUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cImVudHJ5VHlwZUlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVudHJ5VHlwZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uaWQgPT09IHZhbHVlXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OlN0YXR1cycgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwic3RhdHVzXCIgW3dpZHRoXT1cIjgwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIF9lbnRyeVN0YXR1c09wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0udmFsdWU9PT0gdmFsdWVcIj57eyAnQ21zOjpFbnVtOkVudHJ5U3RhdHVzOicraXRlbS5rZXkgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9uIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHNob3dpbkZpZWxkTGlzdDsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjonK2l0ZW0uZGlzcGxheU5hbWUgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3BdPVwiaXRlbT8uZmllbGQ/Lm5hbWVcIiBbc29ydGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRmLWR5bmFtaWMtdmlldyBbdHlwZV09XCJpdGVtLmZpZWxkLmZvcm1Db250cm9sTmFtZVwiIFtzaG93SW5MaXN0XT1cInRydWVcIiBbZmllbGRzXT1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwicm93Py5leHRyYVByb3BlcnRpZXNbaXRlbS5maWVsZC5uYW1lXVwiPjwvZGYtZHluYW1pYy12aWV3PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6UHVibGlzaFRpbWUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cInB1Ymxpc2hUaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxOTBcIiBbc29ydGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t2YWx1ZSB8IHNob3J0RGF0ZVRpbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbc29ydGFibGVdPVwiZmFsc2VcIiBbbmFtZV09XCInQWJwVWk6OkFjdGlvbnMnIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5MZWZ0XT1cInRydWVcIiBbd2lkdGhdPVwiMTEwXCIgW21heFdpZHRoXT1cIjExMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1lLTEgZmEgZmEtY29nXCI+PC9pPiB7eydBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvY21zL2FkbWluL2VudHJpZXMve3tyb3cuaWR9fS9lZGl0XCI+e3snQ21zOjpFZGl0JyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgocm93fGdldExvY2FsaXplZEVudHJpZXNCeVNsdWc6ZmlsdGVycy5zZWN0aW9uSWQ6c2VjdGlvbkxhbmd1YWdlc0xpc3QpfGFzeW5jKT09PWZhbHNlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gW3JvdXRlckxpbmtdPVwiWycvY21zL2FkbWluL2VudHJpZXMvY3JlYXRlJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7Y3VsdHVyZU5hbWU6IGZpbHRlcnMuY3VsdHVyZSxzZWN0aW9uSWQ6ZmlsdGVycy5zZWN0aW9uSWQsZW50cnlUeXBlSWQ6cm93LmVudHJ5VHlwZUlkLGVudHJ5VmVyc2lvbklkOnJvdy5pZCxpc090aGVyOjF9XCI+e3snQ21zOjpDcmVhdGVPdGhlckxhbmd1YWdlcydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX0gPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSAoY2xpY2spPVwiZGVsZXRlZmllbGQocm93KVwiPnt7J0Ntczo6RGVsZXRlJyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYoU2l0ZU9mU2VjdGlvblR5cGU9PT1TZWN0aW9uVHlwZS5TdHJ1Y3R1cmUpe1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgdGFibGUtZml4ZWQtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgb3ZlcmZsb3ctbm93cmFwIG1iLTBcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwic3RpY2t5LWxlZnQtY2FyZC1iZ1wiPiA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiaSBiaS1hcnJvd3MtbW92ZSBmcy01IGRyYWctaGFuZGxlIG1lLTIgb3BhY2l0eS0wXCI+PC9zcGFuPnt7J0FicFVpOjpBY3Rpb25zJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFicExvY2FsaXphdGlvbn19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snQ21zOjpTbHVnJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDx0aD57eydDbXM6OlRpdGxlJyB8IGFicExvY2FsaXphdGlvbn19PC90aD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J0Ntczo6U2VjdGlvblR5cGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydDbXM6OkVudHJ5VHlwZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J0Ntczo6U3RhdHVzJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHNob3dpbkZpZWxkTGlzdDsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J0Ntczo6JytpdGVtLmRpc3BsYXlOYW1lIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snQ21zOjpQdWJsaXNoVGltZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YS5pdGVtc1wiIGNka0RyYWc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwic3RpY2t5LWxlZnQtY2FyZC1iZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmkgYmktYXJyb3dzLW1vdmUgZnMtNSBkcmFnLWhhbmRsZSBtZS0yXCIgY2RrRHJhZ0hhbmRsZT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBuZ2JEcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1lLTEgZmEgZmEtY29nXCI+PC9pPiB7eydBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwiL2Ntcy9hZG1pbi9lbnRyaWVzL3t7aXRlbS5pZH19L2VkaXRcIj57eydBYnBVaTo6RWRpdCcgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGl0ZW18Z2V0TG9jYWxpemVkRW50cmllc0J5U2x1ZzpmaWx0ZXJzLnNlY3Rpb25JZDpzZWN0aW9uTGFuZ3VhZ2VzTGlzdCl8YXN5bmMpPT09ZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIFtyb3V0ZXJMaW5rXT1cIlsnL2Ntcy9hZG1pbi9lbnRyaWVzL2NyZWF0ZSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIntjdWx0dXJlTmFtZTogZmlsdGVycy5jdWx0dXJlLHNlY3Rpb25JZDpmaWx0ZXJzLnNlY3Rpb25JZCxlbnRyeVR5cGVJZDppdGVtLmVudHJ5VHlwZUlkLGVudHJ5VmVyc2lvbklkOml0ZW0uaWQsaXNPdGhlcjoxfVwiPnt7J0Ntczo6Q3JlYXRlT3RoZXJMYW5ndWFnZXMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBbcm91dGVyTGlua109XCJbJy9jbXMvYWRtaW4vZW50cmllcy9jcmVhdGUnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7Y3VsdHVyZU5hbWU6IGZpbHRlcnMuY3VsdHVyZSxzZWN0aW9uSWQ6ZmlsdGVycy5zZWN0aW9uSWQsZW50cnlUeXBlSWQ6cm93LmVudHJ5VHlwZUlkLGVudHJ5VmVyc2lvbklkOnJvdy5pZCxpc090aGVyOjF9XCI+e3snQ21zOjpDcmVhdGVPdGhlckxhbmd1YWdlcydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fSA8L2J1dHRvbj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkZWxldGVmaWVsZChpdGVtKVwiPnt7J0FicFVpOjpEZWxldGUnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRkIGNsYXNzPVwid2hpdGUtc3BhY2Utbm9ybWFsXCI+e3tpdGVtLnRpdGxlfX08L3RkPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ3aGl0ZS1zcGFjZS1ub3JtYWxcIj57e2l0ZW0uc2x1Z319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdDbXM6OkVudW06U2VjdGlvblR5cGU6JytTZWN0aW9uVHlwZVtpdGVtLnNlY3Rpb25UeXBlXSB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtMSBvZiBlbnRyeVR5cGVMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtMS5pZCA9PT0gaXRlbS5lbnRyeVR5cGVJZFwiPnt7aXRlbTEuZGlzcGxheU5hbWV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbTIgb2YgX2VudHJ5U3RhdHVzT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uc3RhdHVzPT09IGl0ZW0yLnZhbHVlXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ21zOjpFbnVtOkVudHJ5U3RhdHVzOicraXRlbTIua2V5IHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb24gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtMSBvZiBzaG93aW5GaWVsZExpc3Q7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRmLWR5bmFtaWMtdmlldyBbdHlwZV09XCJpdGVtMS5maWVsZC5mb3JtQ29udHJvbE5hbWVcIiBbc2hvd0luTGlzdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZHNdPVwiaXRlbTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0/LmV4dHJhUHJvcGVydGllc1tpdGVtMS5maWVsZC5uYW1lXVwiPjwvZGYtZHluYW1pYy12aWV3PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpdGVtLnB1Ymxpc2hUaW1lIHwgc2hvcnREYXRlVGltZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoZGF0YS5pdGVtcy5sZW5ndGggPT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdDbXM6Ok5vRGF0YUF2YWlsYWJsZUluRGF0YXRhYmxlJyB8IGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+IHt7ZGF0YS50b3RhbENvdW50fX0ge3sgJ0Ntczo6VG90YWwnIHwgYWJwTG9jYWxpemF0aW9ufX08L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIDwvZGl2PlxyXG48L2FicC1wYWdlPiJdfQ==
|
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZW50cmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZW50cmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsOENBQThDO0FBQzlDLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsV0FBVyxFQUNYLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBR3BCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLGlCQUFpQixHQUdsQixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFN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QUNGLDBCQy9DSCx5N21CQWlTVzs7MkZEaFBFLGdCQUFnQjtrQkFmNUIsU0FBUzsrQkFDRSxhQUFhLGFBR1o7d0JBQ1QsV0FBVzt3QkFDWCw0REFBNEQ7d0JBQzVELHVFQUF1RTt3QkFDdkUsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTt3QkFDcEQ7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxPQUFPO3lCQUNoQztxQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnN0YW50LWNvbmRpdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHtcbiAgTGlzdFNlcnZpY2UsXG4gIExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSxcbiAgQ29uZmlnU3RhdGVTZXJ2aWNlLFxuICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxuICBQYWdlZFJlc3VsdER0byxcbiAgQUJQLFxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UsIENvbmZpcm1hdGlvblNlcnZpY2UsIENvbmZpcm1hdGlvbiB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbHVtbk1vZGUgfSBmcm9tICdAc3dpbWxhbmUvbmd4LWRhdGF0YWJsZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRUNtc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IFVwZGF0ZUxpc3RTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xuaW1wb3J0IHtcbiAgRW50cnlBZG1pblNlcnZpY2UsXG4gIEVudHJ5RHRvLFxuICBHZXRFbnRyaWVzSW5wdXQsXG59IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgU2VjdGlvbkFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL3NlY3Rpb25zJztcbmltcG9ydCB7IGVudHJ5U3RhdHVzT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2VudHJpZXMnO1xuaW1wb3J0IHsgUmVnaW9uYWxpemF0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvYWJwL3JlZ2lvbmFsaXphdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IFNlY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvc2VjdGlvbnMnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBGb3JtQWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vZHluYW1pYy1mb3Jtcyc7XG5pbXBvcnQgeyBGaWVsZEFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2ZpZWxkcyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1jb250cm9scy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY21zLWVudHJpZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW50cmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VudHJpZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgTGlzdFNlcnZpY2UsXG4gICAgLy8gUHJvdmlkZSB0aGlzIHRva2VuIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IGRlYm91bmNlIHRpbWUuXG4gICAgLy8gRGVmYXVsdCBpcyAzMDAuIENhbm5vdCBiZSAwLiBBbnkgdmFsdWUgYmVsb3cgMTAwIGlzIG5vdCByZWNvbW1lbmRlZC5cbiAgICB7IHByb3ZpZGU6IExJU1RfUVVFUllfREVCT1VOQ0VfVElNRSwgdXNlVmFsdWU6IDUwMCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfSURFTlRJRklFUixcbiAgICAgIHVzZVZhbHVlOiBFQ21zQ29tcG9uZW50LkVudHJpZXMsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRW50cmllc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX0VudHJ5QWRtaW5TZXJ2aWNlOiBFbnRyeUFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIF9TZWN0aW9uQWRtaW5TZXJ2aWNlOiBTZWN0aW9uQWRtaW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9hc3RlcjogVG9hc3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTdGF0ZTogQ29uZmlnU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIF9Gb3JtQWRtaW5TZXJ2aWNlOiBGb3JtQWRtaW5TZXJ2aWNlLFxuICAgIHByaXZhdGUgX0ZpZWxkQWRtaW5TZXJ2aWNlOiBGaWVsZEFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9Gb3JtQ29udHJvbHNTZXJ2aWNlOiBGb3JtQ29udHJvbHNTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgX1VwZGF0ZUxpc3RTZXJ2aWNlID0gaW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGxpc3QgPSBpbmplY3QoTGlzdFNlcnZpY2U8R2V0RW50cmllc0lucHV0Pik7XG5cbiAgLyoq5p2/5Z2X57G75Z6LICovXG4gIFNlY3Rpb25UeXBlID0gU2VjdGlvblR5cGU7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRQYWdlRGF0ZSgpO1xuICAgIHRoaXMuX1VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3RFdmVudC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5kYXRhLml0ZW1zID0gW107XG4gICAgICB0aGlzLmRhdGEudG90YWxDb3VudCA9IDA7XG4gICAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gICAgfSk7XG4gIH1cblxuICAvKirnq5nngrnkuIvnmoTniYjlnZcgKi9cbiAgU2l0ZU9mU2VjdGlvbkxpc3Q6IGFueVthbnldID0gW107XG5cbiAgLyoq54mI5Z2X5LiL55qE6K+t6KiA5YiX6KGoICovXG4gIHNlY3Rpb25MYW5ndWFnZXNMaXN0OiBhbnlbYW55XSA9IFtdO1xuICAvKirniYjlnZfkuIvnmoTmnaHnm67nsbvlnovliJfooaggKi9cbiAgZW50cnlUeXBlTGlzdDogYW55W2FueV0gPSBbXTtcbiAgLyoq54q25oCB57yW56CBICovXG4gIF9lbnRyeVN0YXR1c09wdGlvbnMgPSBlbnRyeVN0YXR1c09wdGlvbnM7XG5cbiAgLyoq6I635Y+W6aG16Z2i5pWw5o2uICovXG4gIGFzeW5jIGdldFBhZ2VEYXRlKCkge1xuICAgIHRoaXMuZW5hYmxlU2VhcmNoVHlwZUxpc3QgPSBhd2FpdCB0aGlzLl9Gb3JtQ29udHJvbHNTZXJ2aWNlLmdldEVuYWJsZVNlYXJjaFR5cGVMaXN0KCk7XG4gICAgYXdhaXQgdGhpcy5nZXRTaXRlT2ZTZWN0aW9uTGlzdCgpO1xuICAgIGF3YWl0IHRoaXMuZ2V0U2VjdGlvbkxhbmd1YWdlc0xpc3QoKTtcbiAgICB0aGlzLmZpbHRlcnMuc29ydGluZyA9ICdjcmVhdGlvblRpbWUgZGVzYyc7XG4gICAgdGhpcy5ob29rVG9RdWVyeSgpO1xuICB9XG4gIC8qKumcgOimgeafpeivoueahOWKqOaAgeihqOWNleexu+WeiyAqL1xuICBlbmFibGVTZWFyY2hUeXBlTGlzdDogYW55W10gPSBbXTtcbiAgLyoq6ZyA6KaB5p+l6K+i55qE5Yqo5oCB6KGo5Y2V5a2X5q61ICovXG4gIGVuYWJsZVNlYXJjaEZpZWxkTGlzdDogYW55W10gPSBbXTtcbiAgLyoq5LiN6ZyA6KaB5bGV56S655qE5Yqo5oCB6KGo5Y2V57G75Z6LICovXG4gIGRpc2FibGVzaG93aW5UeXBlTGlzdDogYW55W10gPSBbXTtcbiAgLyoq6ZyA6KaB5bGV56S655qE5Yqo5oCB5YiX6KGo5a2X5q61ICovXG4gIHNob3dpbkZpZWxkTGlzdDogYW55W10gPSBbXTtcblxuXG4gIC8qKuWIh+aNouadv+WdlyAqL1xuICBhc3luYyBzZWN0aW9uSWRDaGFuZ2UoKSB7XG4gICAgdGhpcy5nZXRTZWN0aW9uT2ZFbnRyeVR5cGUoKTtcbiAgICBhd2FpdCB0aGlzLmdldFNlY3Rpb25MYW5ndWFnZXNMaXN0KCk7XG4gICAgdGhpcy5yZXNldERhdGEoKTtcbiAgfVxuICAvKirliIfmjaLor63oqIAgKi9cbiAgYXN5bmMgY3VsdHVyZUNoYW5nZSgpIHtcbiAgICB0aGlzLnJlc2V0RGF0YSgpO1xuICB9XG5cbiAgLyoq6I635Y+W56uZ54K55LiL55qE54mI5Z2XICovXG4gIGdldFNpdGVPZlNlY3Rpb25MaXN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZVxuICAgICAgICAuZ2V0TGlzdCh7XG4gICAgICAgICAgbWF4UmVzdWx0Q291bnQ6IDEwMDAsXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5TaXRlT2ZTZWN0aW9uTGlzdCA9IHJlcy5pdGVtcy5maWx0ZXIoZWwgPT4gZWwuaXNBY3RpdmUgKTtcbiAgICAgICAgICB0aGlzLmZpbHRlcnMuc2VjdGlvbklkID0gcmVzLml0ZW1zWzBdPy5pZCB8fCAnJztcbiAgICAgICAgICBhd2FpdCB0aGlzLmdldFNlY3Rpb25PZkVudHJ5VHlwZSgpO1xuICAgICAgICAgIHJlc29sdmUocmVzLml0ZW1zKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgLyoq6KGo5Y2VICovXG4gIGVuYWJsZWdlYXJjaEZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIGV4dHJhUHJvcGVydGllczogdGhpcy5mYi5ncm91cCh7fSksXG4gIH0pO1xuXG4gIGdldCBleHRyYVByb3BlcnRpZXNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVnZWFyY2hGb3JtRW50aXR5Py5nZXQoJ2V4dHJhUHJvcGVydGllcycpIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIC8qKuiuvue9ruetm+mAieadoeS7tiAqL1xuICBzZXRmaWx0ZXJzVmFsdWUoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICBjb25zdCBleHRyYVByb3BlcnRpZXMgPSB0aGlzLmV4dHJhUHJvcGVydGllc0lucHV0LnZhbHVlO1xuICAgICAgY29uc3QgaW5wdXRzOiBhbnlbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZXh0cmFQcm9wZXJ0aWVzKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBleHRyYVByb3BlcnRpZXNba2V5XTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudCkgPyAoZWxlbWVudC5sZW5ndGggPiAwID8gZWxlbWVudCA6IG51bGwpIDogZWxlbWVudCkge1xuICAgICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgICAgIHZhbHVlOiBlbGVtZW50ID09PSB0cnVlID8gJ1RydWUnIDogQXJyYXkuaXNBcnJheShlbGVtZW50KSA/IGVsZW1lbnQuam9pbignLCcpIDogZWxlbWVudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpbnB1dHMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgICAgICB2YWx1ZTogJ0ZhbHNlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJzLnF1ZXJ5aW5nQnlGaWVsZHNKc29uID0gaW5wdXRzLmxlbmd0aCA+IDAgPyBKU09OLnN0cmluZ2lmeShpbnB1dHMpIDogJyc7XG4gICAgICByZXNvbHZlKHRydWUpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdGdldCgpIHtcbiAgICBhd2FpdCB0aGlzLnNldGZpbHRlcnNWYWx1ZSgpO1xuICAgIHRoaXMubGlzdC5nZXQoKTtcbiAgICAvLyB0aGlzLmZpbHRlcnMuXG4gIH1cblxuICAvKirnq5nngrnkuIvmnb/lnZfnmoTnsbvlnosgKi9cbiAgU2l0ZU9mU2VjdGlvblR5cGU6IGFueSA9IFNlY3Rpb25UeXBlLlNpbmdsZTtcblxuICAvKirojrflj5bniYjlnZfkuIvnmoTmnaHnm67nsbvlnosgKi9cbiAgYXN5bmMgZ2V0U2VjdGlvbk9mRW50cnlUeXBlKCkge1xuICAgIC8vIGxldCBzZWN0aW9uSWQgPSB0aGlzLmZpbHRlcnNGb3JtLmdldCgnc2VjdGlvbklkJykudmFsdWU7XG4gICAgY29uc3Qgc2VjdGlvbklkID0gdGhpcy5maWx0ZXJzLnNlY3Rpb25JZDtcbiAgICBjb25zdCBTZWN0aW9uSW5mbzogYW55ID0gYXdhaXQgdGhpcy5nZXRTZWN0aW9uSW5mbyhzZWN0aW9uSWQpO1xuICAgIGNvbnN0IF9lbnRyeVR5cGVMaXN0ID0gU2VjdGlvbkluZm8/LmVudHJ5VHlwZXMgfHwgW107XG5cbiAgICAvLyBsZXQgX2VudHJ5VHlwZUxpc3QgPSB0aGlzLlNpdGVPZlNlY3Rpb25MaXN0LmZpbmQoZWwgPT4gZWwuaWQgPT0gc2VjdGlvbklkKT8uZW50cnlUeXBlcyB8fCBbXTtcbiAgICB0aGlzLmVudHJ5VHlwZUxpc3QgPSBfZW50cnlUeXBlTGlzdDtcbiAgICAvL+mAieaLqeadv+Wdl+eahOexu+Wei1NlY3Rpb25UeXBlXG4gICAgdGhpcy5TaXRlT2ZTZWN0aW9uVHlwZSA9IHRoaXMuU2l0ZU9mU2VjdGlvbkxpc3QuZmluZChlbCA9PiBlbC5pZCA9PSBzZWN0aW9uSWQpPy50eXBlO1xuICAgIGlmICh0aGlzLlNpdGVPZlNlY3Rpb25UeXBlID09IFNlY3Rpb25UeXBlLlN0cnVjdHVyZSkge1xuICAgICAgdGhpcy5tYXhSZXN1bHRDb3VudCA9IDEwMDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWF4UmVzdWx0Q291bnQgPSAxMDtcbiAgICB9XG4gICAgLy8g5Yid5aeL5YyW5pWw57uEXG4gICAgdGhpcy5lbmFibGVTZWFyY2hGaWVsZExpc3QgPSBbXTtcbiAgICB0aGlzLnNob3dpbkZpZWxkTGlzdCA9IFtdO1xuICAgIC8vIF9lbnRyeVR5cGVMaXN0Lmxlbmd0aCA9PT0gMVxuICAgIGlmICh0cnVlKSB7XG4gICAgICAvLyB0aGlzLmZpbHRlcnMuZW50cnlUeXBlSWQgPSB0aGlzLmVudHJ5VHlwZUxpc3RbMF0uaWQ7XG4gICAgICAvLyDkvb/nlKhmb3IuLi5vZuabv+S7o2ZvckVhY2jmnaXlpITnkIblvILmraVcbiAgICAgIGZvciAoY29uc3QgZWwgb2YgX2VudHJ5VHlwZUxpc3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbDEgb2YgZWwuZmllbGRUYWJzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBlbDIgb2YgZWwxLmZpZWxkcykge1xuICAgICAgICAgICAgLy8gZWwyLmZpZWxkID0gYXdhaXQgdGhpcy5nZXREeW5hbWljRm9ybUVudGl0eShlbDIuZmllbGRJZCk7XG4gICAgICAgICAgICBpZiAoZWwyLmVuYWJsZVNlYXJjaCAmJiB0aGlzLmVuYWJsZVNlYXJjaFR5cGVMaXN0LmluY2x1ZGVzKGVsMi5maWVsZC5mb3JtQ29udHJvbE5hbWUpKSB7XG4gICAgICAgICAgICAgIHRoaXMuZW5hYmxlU2VhcmNoRmllbGRMaXN0LnB1c2goe1xuICAgICAgICAgICAgICAgIC4uLmVsMixcbiAgICAgICAgICAgICAgICBmaWVsZDoge1xuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lOiBlbDIuZmllbGQuZm9ybUNvbnRyb2xOYW1lLFxuICAgICAgICAgICAgICAgICAgZm9ybUNvbmZpZ3VyYXRpb246IGVsMi5maWVsZC5mb3JtQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGVsMi5maWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVsMi5zaG93SW5MaXN0ICYmICF0aGlzLmRpc2FibGVzaG93aW5UeXBlTGlzdC5pbmNsdWRlcyhlbDIuZmllbGQuZm9ybUNvbnRyb2xOYW1lKSkge1xuICAgICAgICAgICAgICB0aGlzLnNob3dpbkZpZWxkTGlzdC5wdXNoKGVsMik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICB9XG4gIGFzeW5jIGFicEluaXRzcygpIHtcbiAgICBhd2FpdCB0aGlzLnNldGZpbHRlcnNWYWx1ZSgpO1xuICB9XG4gIC8qKuiOt+WPluadv+Wdl+ivpuaDhSAqL1xuICBnZXRTZWN0aW9uSW5mbyhpZHMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX1NlY3Rpb25BZG1pblNlcnZpY2UuZ2V0KGlkcykuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKuiOt+WPluWtl+auteivpuaDhSAqL1xuICBnZXREeW5hbWljRm9ybUVudGl0eShmaWVsZElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0ZpZWxkQWRtaW5TZXJ2aWNlLmdldChmaWVsZElkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChDb25maWdTdGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIF9SZWdpb25hbGl6YXRpb25TZXJ2aWNlID0gaW5qZWN0KFJlZ2lvbmFsaXphdGlvblNlcnZpY2UpO1xuICAvKirojrflj5bniYjlnZfkuIvnmoTor63oqIDliJfooaggKi9cbiAgZ2V0U2VjdGlvbkxhbmd1YWdlc0xpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICAvL+iOt+WPluaJgOacieivreiogCAqL1xuICAgICAgY29uc3QgbGFuZ3VhZ2VzU3lzdGVtID0gdGhpcy5jb25maWdTdGF0ZS5nZXREZWVwKCdsb2NhbGl6YXRpb24ubGFuZ3VhZ2VzJyk7XG4gICAgICAvL+iOt+WPluezu+e7n+m7mOiupOivreiogCAqL1xuICAgICAgbGV0IERlZmF1bHRMYW5ndWFnZSA9IHRoaXMuY29uZmlnLmdldFNldHRpbmcoJ0FicC5SZWdpb25hbGl6YXRpb24uRGVmYXVsdEN1bHR1cmVOYW1lJyk7XG4gICAgICBjb25zdCBjb25maWdDbXNTaXRlTGFuZ3VhZ2VzID0gdGhpcy5jb25maWcuZ2V0U2V0dGluZygnQ21zLlNpdGUuTGFuZ3VhZ2VzJyk7XG4gICAgICBpZiAoIWNvbmZpZ0Ntc1NpdGVMYW5ndWFnZXMpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRTaXRlU2V0dGluZ3NMYW5ndWFnZXMoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRlZmF1bHRDdWx0dXJlTmFtZSkge1xuICAgICAgICBEZWZhdWx0TGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRDdWx0dXJlTmFtZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IExhbmd1YWdlc1NpdGUgPVxuICAgICAgICAoY29uZmlnQ21zU2l0ZUxhbmd1YWdlcyA/IGNvbmZpZ0Ntc1NpdGVMYW5ndWFnZXMuc3BsaXQoJywnKSA6ICcnKSB8fFxuICAgICAgICB0aGlzLlNpdGVTZXR0aW5nc0FkbWluTGFuZ3VhZ2VzO1xuICAgICAgY29uc3QgTGFuZ3VhZ2VzQXJyYXkgPSBsYW5ndWFnZXNTeXN0ZW0uZmlsdGVyKGVsID0+IExhbmd1YWdlc1NpdGUuaW5jbHVkZXMoZWwuY3VsdHVyZU5hbWUpKTtcbiAgICAgIC8v6I635Y+W5b2T5YmN6YCJ5oup55qE6K+t6KiAXG4gICAgICBjb25zdCBub3djdWx0dXJlID0gdGhpcy5maWx0ZXJzLmN1bHR1cmU7XG4gICAgICAvLyBsZXQgbm93Y3VsdHVyZSA9IHRoaXMuZmlsdGVyc0Zvcm0uZ2V0KCdjdWx0dXJlJykudmFsdWU7XG4gICAgICAvL+W9k+WJjemAieaLqeeahOivreiogO+8jOaYr+WQpuWcqOeJiOWdl+eahOeahOivreiogOWIl+ihqOS4rVxuICAgICAgY29uc3QgaXNleGlzdCA9IExhbmd1YWdlc0FycmF5LmZpbmQoZWwgPT4gZWwuY3VsdHVyZU5hbWUgPT0gbm93Y3VsdHVyZSk7XG4gICAgICB0aGlzLmZpbHRlcnMuY3VsdHVyZSA9IG5vd2N1bHR1cmVcbiAgICAgICAgPyBpc2V4aXN0XG4gICAgICAgICAgPyBub3djdWx0dXJlXG4gICAgICAgICAgOiBEZWZhdWx0TGFuZ3VhZ2VcbiAgICAgICAgOiBEZWZhdWx0TGFuZ3VhZ2U7XG4gICAgICB0aGlzLnNlY3Rpb25MYW5ndWFnZXNMaXN0ID0gTGFuZ3VhZ2VzQXJyYXk7XG4gICAgICByZXNvbHZlKExhbmd1YWdlc0FycmF5KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKuermeeCueiuvue9ruivreiogCAqL1xuICBTaXRlU2V0dGluZ3NBZG1pbkxhbmd1YWdlczogYW55W10gPSBbXTtcbiAgLyoq56uZ54K56K6+572u55qE6buY6K6k6K+t6KiAICovXG4gIGRlZmF1bHRDdWx0dXJlTmFtZTogYW55ID0gJyc7XG4gIC8qKlxuICAgKiDojrflj5bnq5nngrnorr7nva7or63oqIBcbiAgICovXG4gIGdldFNpdGVTZXR0aW5nc0xhbmd1YWdlcygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX1JlZ2lvbmFsaXphdGlvblNlcnZpY2UuZ2V0KCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuU2l0ZVNldHRpbmdzQWRtaW5MYW5ndWFnZXMgPSByZXMuYXZhaWxhYmxlQ3VsdHVyZU5hbWVzO1xuICAgICAgICB0aGlzLmRlZmF1bHRDdWx0dXJlTmFtZSA9IHJlcy5kZWZhdWx0Q3VsdHVyZU5hbWU7XG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzZXREYXRhKCkge1xuICAgIHRoaXMuZmlsdGVycyA9IHtcbiAgICAgIHNlY3Rpb25JZDogdGhpcy5maWx0ZXJzLnNlY3Rpb25JZCxcbiAgICAgIGN1bHR1cmU6IHRoaXMuZmlsdGVycy5jdWx0dXJlLFxuICAgICBzb3J0aW5nIDogJ2NyZWF0aW9uVGltZSBkZXNjJyxcbiAgICB9IGFzIEdldEVudHJpZXNJbnB1dDtcbiAgICB0aGlzLmxpc3QuZmlsdGVyID0gJyc7XG4gICAgdGhpcy5saXN0Lm1heFJlc3VsdENvdW50ID0gdGhpcy5tYXhSZXN1bHRDb3VudDtcbiAgICB0aGlzLmxpc3QucGFnZSA9IDA7XG4gICAgdGhpcy5kYXRhLml0ZW1zID0gW107XG4gICAgdGhpcy5saXN0LmdldCgpO1xuICB9XG5cbiAgLyoq5paw5aKeLeWNleS4qiAqL1xuICBjcmVhdGVFbnRyaWVzQnRuKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Ntcy9hZG1pbi9lbnRyaWVzL2NyZWF0ZSddLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBjdWx0dXJlTmFtZTogdGhpcy5maWx0ZXJzLmN1bHR1cmUsXG4gICAgICAgIHNlY3Rpb25JZDogdGhpcy5maWx0ZXJzLnNlY3Rpb25JZCxcbiAgICAgICAgZW50cnlUeXBlSWQ6IHRoaXMuZW50cnlUeXBlTGlzdFswXS5pZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgY3JlYXRlQ29weUVudHJpZXNCdG4oKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY21zL2FkbWluL2VudHJpZXMvY3JlYXRlLWNvcHknXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgY3VsdHVyZU5hbWU6IHRoaXMuZmlsdGVycy5jdWx0dXJlLFxuICAgICAgICBzZWN0aW9uSWQ6IHRoaXMuZmlsdGVycy5zZWN0aW9uSWQsXG4gICAgICAgIGVudHJ5VHlwZUlkOiB0aGlzLmVudHJ5VHlwZUxpc3RbMF0uaWQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoq5YiX6KGo55u45YWzICovXG4gIENvbHVtbk1vZGUgPSBDb2x1bW5Nb2RlO1xuICBkYXRhOiBQYWdlZFJlc3VsdER0bzxFbnRyeUR0bz4gfCBhbnkgPSB7XG4gICAgaXRlbXM6IFtdLFxuICAgIHRvdGFsQ291bnQ6IDAsXG4gIH07XG5cbiAgZmlsdGVycyA9IHt9IGFzIEdldEVudHJpZXNJbnB1dDtcblxuICBtYXhSZXN1bHRDb3VudCA9IDEwO1xuXG4gIGhvb2tUb1F1ZXJ5KCkge1xuICAgIGNvbnN0IGdldERhdGEgPSAocXVlcnk6IEFCUC5QYWdlUXVlcnlQYXJhbXMpID0+XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXRMaXN0KHtcbiAgICAgICAgLi4ucXVlcnksXG4gICAgICAgIC4uLnRoaXMuZmlsdGVycyxcbiAgICAgICAgbWF4UmVzdWx0Q291bnQ6IHRoaXMubWF4UmVzdWx0Q291bnQsXG4gICAgICB9KTtcbiAgICBjb25zdCBzZXREYXRhID0gKGxpc3Q6IFBhZ2VkUmVzdWx0RHRvPEVudHJ5RHRvPiB8IGFueSkgPT4ge1xuICAgICAgdGhpcy5kYXRhLml0ZW1zID0gW107XG4gICAgICB0aGlzLmRhdGEudG90YWxDb3VudCA9IDA7XG4gICAgICBpZiAodGhpcy5TaXRlT2ZTZWN0aW9uVHlwZSA9PSBTZWN0aW9uVHlwZS5TdHJ1Y3R1cmUpIHtcbiAgICAgICAgbGlzdC5pdGVtcyA9IGxpc3QuaXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShiLmNyZWF0aW9uVGltZSkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYS5jcmVhdGlvblRpbWUpLmdldFRpbWUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgbGlzdC5pdGVtcykge1xuICAgICAgICBjb25zdCBzZWN0aW9uSXRlbT10aGlzLlNpdGVPZlNlY3Rpb25MaXN0LmZpbmQoZWw9PmVsLmlkPT1lbGVtZW50LnNlY3Rpb25JZCk7XG4gICAgICAgIGVsZW1lbnQuc2VjdGlvblR5cGU9c2VjdGlvbkl0ZW0udHlwZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YSA9IGxpc3Q7XG4gICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgfTtcbiAgICB0aGlzLmxpc3QuaG9va1RvUXVlcnkoZ2V0RGF0YSkuc3Vic2NyaWJlKHNldERhdGEpO1xuICB9XG4gIHNjcm9sbFRvVG9wKCkge1xuICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xweC1zY3JvbGwtY29udGFpbmVyJylbMF07XG4gICAgKHNjcm9sbENvbnRhaW5lciB8fCB3aW5kb3cpLnNjcm9sbFRvKDAsIDApO1xuICB9XG5cbiAgLyoq5Yik5pat5p+Q5Liq57G75Z6L55qE5p2h55uu5piv5ZCm5a2Y5ZyoICovXG4gIGlzRW50cnlUeXBlRXhpc3QoZW50cnlUeXBlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmRhdGE/Lml0ZW1zPy5zb21lKGVsID0+IGVsLmVudHJ5VHlwZUlkID09IGVudHJ5VHlwZUlkKTtcbiAgfVxuXG4gIC8qKuWIoOmZpOadoeebriAqL1xuICBkZWxldGVmaWVsZChyb3c6IGFueSkge1xuICAgIHRoaXMuY29uZmlybWF0aW9uXG4gICAgICAud2Fybihyb3cuZGlzcGxheU5hbWUsIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6Okl0ZW1XaWxsQmVEZWxldGVkTWVzc2FnZWApKVxuICAgICAgLnN1YnNjcmliZSgoc3RhdHVzOiBDb25maXJtYXRpb24uU3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChzdGF0dXMgPT0gJ2NvbmZpcm0nKSB7XG4gICAgICAgICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2VcbiAgICAgICAgICAgIC5kZWxldGUocm93LmlkKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4ge30pKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpEZWxldGVkU3VjY2Vzc2Z1bGx5YCkpO1xuICAgICAgICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBkcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBwcmV2aW91c0lkOiBhbnkgPSB0aGlzLmRhdGEuaXRlbXNbZXZlbnQucHJldmlvdXNJbmRleF0uaWQ7XG4gICAgY29uc3QgcHJldmlvdXNJbmRleE9yZGVyID0gdGhpcy5kYXRhLml0ZW1zW2V2ZW50LnByZXZpb3VzSW5kZXhdLm9yZGVyO1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleE9yZGVyID0gdGhpcy5kYXRhLml0ZW1zW2V2ZW50LmN1cnJlbnRJbmRleF0ub3JkZXI7XG4gICAgbGV0IG1vdmVvcmRlciA9IGN1cnJlbnRJbmRleE9yZGVyO1xuICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuXG4gICAgaWYgKHByZXZpb3VzSW5kZXhPcmRlciA8IGN1cnJlbnRJbmRleE9yZGVyKSB7XG4gICAgICBtb3Zlb3JkZXIgPSBjdXJyZW50SW5kZXhPcmRlciArIDE7XG4gICAgfVxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmRhdGEuaXRlbXMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2VcbiAgICAgIC5tb3ZlKHByZXZpb3VzSWQsIHtcbiAgICAgICAgb3JkZXI6IG1vdmVvcmRlcixcbiAgICAgICAgLy8gb3JkZXI6IGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdC5nZXQoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICByZXMgPT4ge30sXG4gICAgICAgIGVyciA9PiB7fSxcbiAgICAgICk7XG4gICAgLy8gbW92ZUl0ZW1JbkFycmF5KHRoaXMucm93cywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAvLyB0aGlzLnJvd3MgPSBbLi4udGhpcy5yb3dzXTtcbiAgfVxuXG4gIGlzZXhwYW5kZWQ6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgLyoq6auY57qn562b6YCJ5YiH5o2iICovXG4gIGV4cGFuZGVkQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5pc2V4cGFuZGVkID0gZXZlbnQ7XG4gIH1cbn1cbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6RW50cmllcycgfCBhYnBMb2NhbGl6YXRpb25cIiBbdG9vbGJhcl09XCJ0cnVlXCI+XHJcbiAgICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgKm5nSWY9XCJlbnRyeVR5cGVMaXN0Lmxlbmd0aCA8IDFcIiBjbGFzcz1cImNvbCBcIj5cclxuICAgIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcbiAgICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgKm5nSWY9XCJlbnRyeVR5cGVMaXN0Lmxlbmd0aCA9PT0gMVwiIGNsYXNzPVwiY29sIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWVuZCBteC0wIGdhcC0yXCIgKmFicFBlcm1pc3Npb249XCInQ21zQWRtaW4uRW50cnkuQ3JlYXRlJ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gcHgtMCBwdC0wXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVudHJ5VHlwZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRhLnRvdGFsQ291bnQ9PT0xJiZTaXRlT2ZTZWN0aW9uVHlwZT09PVNlY3Rpb25UeXBlLlNpbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL2Ntcy9hZG1pbi9lbnRyaWVzL2NyZWF0ZSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIntjdWx0dXJlTmFtZTogZmlsdGVycy5jdWx0dXJlLHNlY3Rpb25JZDpmaWx0ZXJzLnNlY3Rpb25JZCxlbnRyeVR5cGVJZDppdGVtLmlkfVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMlwiPjwvaT4ge3snQ21zOjpOZXdFbnRyeSd8YWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcbiAgICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgKm5nSWY9XCJlbnRyeVR5cGVMaXN0Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvbCBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbXgtMCBnYXAtMlwiICphYnBQZXJtaXNzaW9uPVwiJ0Ntc0FkbWluLkVudHJ5LkNyZWF0ZSdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvIHB4LTAgcHQtMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG1zLTJcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cyBwZS0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPnt7J0Ntczo6TmV3RW50cnknIHwgYWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVudHJ5VHlwZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIFtyb3V0ZXJMaW5rXT1cIlsnL2Ntcy9hZG1pbi9lbnRyaWVzL2NyZWF0ZSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGF0YS50b3RhbENvdW50PT09MSYmU2l0ZU9mU2VjdGlvblR5cGU9PT1TZWN0aW9uVHlwZS5TaW5nbGUmJmlzRW50cnlUeXBlRXhpc3QoaXRlbS5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7Y3VsdHVyZU5hbWU6IGZpbHRlcnMuY3VsdHVyZSxzZWN0aW9uSWQ6ZmlsdGVycy5zZWN0aW9uSWQsZW50cnlUeXBlSWQ6aXRlbS5pZH1cIj57e2l0ZW0uZGlzcGxheU5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcbiAgICA8ZGl2IGlkPVwic2l0ZXMtcGFnZVwiIGNsYXNzPVwic2l0ZXMtcGFnZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zICBjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQ21zOjpTZWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb259fe+8mjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdCBjb2wtYXV0b1wiIFsobmdNb2RlbCldPVwiZmlsdGVycy5zZWN0aW9uSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZWN0aW9uSWRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBTaXRlT2ZTZWN0aW9uTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRcIj57e2l0ZW0uZGlzcGxheU5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIGNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydBYnBVaTo6TGFuZ3VhZ2VzJyB8IGFicExvY2FsaXphdGlvbn1977yaPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0IGNvbC1hdXRvXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJzLmN1bHR1cmVcIiAoY2hhbmdlKT1cImN1bHR1cmVDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWN0aW9uTGFuZ3VhZ2VzTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0uY3VsdHVyZU5hbWVcIj57e2l0ZW0uZGlzcGxheU5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zICBjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImZpbHRlcnMuZmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Ntczo6UGFnZXJTZWFyY2gnfGFicExvY2FsaXphdGlvblwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJsaXN0Z2V0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXNlYXJjaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIEBpZihmaWx0ZXJzLmN1bHR1cmUmJmVuYWJsZWdlYXJjaEZvcm1FbnRpdHkmJmVuYWJsZVNlYXJjaEZpZWxkTGlzdC5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiZW50cmllcy1hZHZhbmNlZC1mb3JtXCIgY2xhc3M9XCJlbnRyaWVzLWFkdmFuY2VkLWZvcm0gXCIgW2hpZGRlbl09XCJpc2V4cGFuZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAoYWJwSW5pdCk9XCJhYnBJbml0c3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZW5hYmxlZ2VhcmNoRm9ybUVudGl0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWwgb2YgZW5hYmxlU2VhcmNoRmllbGRMaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsLmZpZWxkJiZlbmFibGVnZWFyY2hGb3JtRW50aXR5JiZlbC5lbmFibGVTZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYy1zZWFyY2ggW2ZpZWxkc109XCJlbFwiIFtwYXJlbnRGaWxlZE5hbWVdPVwiJ2V4dHJhUHJvcGVydGllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdWx0dXJlXT1cImZpbHRlcnMuY3VsdHVyZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VudGl0eV09XCJlbmFibGVnZWFyY2hGb3JtRW50aXR5XCI+PC9kZi1keW5hbWljLXNlYXJjaD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMyBtYi0zIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IFwiIChjbGljayk9XCJsaXN0Z2V0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ0FicFVpOjpSZWZyZXNoJyB8IGFicExvY2FsaXphdGlvbiB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbWItMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKFNpdGVPZlNlY3Rpb25UeXBlIT09U2VjdGlvblR5cGUuU3RydWN0dXJlKXtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHRhYmxlLWZpeGVkLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlIGNsYXNzPVwibWF0ZXJpYWwgXCIgW3Jvd3NdPVwiZGF0YS5pdGVtc1wiIFtsaXN0XT1cImxpc3RcIiBbY29sdW1uTW9kZV09XCJDb2x1bW5Nb2RlLmZvcmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlYWRlckhlaWdodF09XCI1MFwiIFtmb290ZXJIZWlnaHRdPVwiNTBcIiByb3dIZWlnaHQ9XCJhdXRvXCIgW3ZpcnR1YWxpemF0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2V4dGVybmFsUGFnaW5nXT1cInRydWVcIiBbY291bnRdPVwiZGF0YS50b3RhbENvdW50XCIgW3Njcm9sbGJhckhdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjpUaXRsZScgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwidGl0bGVcIiBbc29ydGFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBuZ3gtZGF0YXRhYmxlLWNlbGwtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6U2x1ZycgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwic2x1Z1wiIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OkVudHJ5VHlwZScgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwiZW50cnlUeXBlSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZW50cnlUeXBlTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pZCA9PT0gdmFsdWVcIj57e2l0ZW0uZGlzcGxheU5hbWV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6U2VjdGlvblR5cGUnIHwgYWJwTG9jYWxpemF0aW9uXCIgcHJvcD1cInNlY3Rpb25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQ21zOjpFbnVtOlNlY3Rpb25UeXBlOicrU2VjdGlvblR5cGVbdmFsdWVdIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OkVudHJ5VHlwZScgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwiZW50cnlUeXBlSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZW50cnlUeXBlTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pZCA9PT0gdmFsdWVcIj57e2l0ZW0uZGlzcGxheU5hbWV9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmd4LWRhdGF0YWJsZS1jb2x1bW4gW25hbWVdPVwiJ0Ntczo6U3RhdHVzJyB8IGFicExvY2FsaXphdGlvblwiIHByb3A9XCJzdGF0dXNcIiBbd2lkdGhdPVwiODBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgX2VudHJ5U3RhdHVzT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS52YWx1ZT09PSB2YWx1ZVwiPnt7ICdDbXM6OkVudW06RW50cnlTdGF0dXM6JytpdGVtLmtleSB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb24gfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2hvd2luRmllbGRMaXN0OyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtuYW1lXT1cIidDbXM6OicraXRlbS5kaXNwbGF5TmFtZSB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcF09XCJpdGVtPy5maWVsZD8ubmFtZVwiIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYy12aWV3IFt0eXBlXT1cIml0ZW0uZmllbGQuZm9ybUNvbnRyb2xOYW1lXCIgW3Nob3dJbkxpc3RdPVwidHJ1ZVwiIFtmaWVsZHNdPVwiaXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3c/LmV4dHJhUHJvcGVydGllc1tpdGVtLmZpZWxkLm5hbWVdXCI+PC9kZi1keW5hbWljLXZpZXc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25neC1kYXRhdGFibGUtY29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtZGF0YXRhYmxlLWNvbHVtbiBbbmFtZV09XCInQ21zOjpQdWJsaXNoVGltZScgfCBhYnBMb2NhbGl6YXRpb25cIiBwcm9wPVwicHVibGlzaFRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE5MFwiIFtzb3J0YWJsZV09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiIG5neC1kYXRhdGFibGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZhbHVlIHwgc2hvcnREYXRlVGltZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtZGF0YXRhYmxlLWNvbHVtbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1kYXRhdGFibGUtY29sdW1uIFtzb3J0YWJsZV09XCJmYWxzZVwiIFtuYW1lXT1cIidBYnBVaTo6QWN0aW9ucycgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbkxlZnRdPVwidHJ1ZVwiIFt3aWR0aF09XCIxMTBcIiBbbWF4V2lkdGhdPVwiMTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC12YWx1ZT1cInZhbHVlXCIgbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiBuZ2JEcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWUtMSBmYSBmYS1jb2dcIj48L2k+IHt7J0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluaz1cIi9jbXMvYWRtaW4vZW50cmllcy97e3Jvdy5pZH19L2VkaXRcIj57eydDbXM6OkVkaXQnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChyb3d8Z2V0TG9jYWxpemVkRW50cmllc0J5U2x1ZzpmaWx0ZXJzLnNlY3Rpb25JZDpzZWN0aW9uTGFuZ3VhZ2VzTGlzdCl8YXN5bmMpPT09ZmFsc2UpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBbcm91dGVyTGlua109XCJbJy9jbXMvYWRtaW4vZW50cmllcy9jcmVhdGUnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIntjdWx0dXJlTmFtZTogZmlsdGVycy5jdWx0dXJlLHNlY3Rpb25JZDpmaWx0ZXJzLnNlY3Rpb25JZCxlbnRyeVR5cGVJZDpyb3cuZW50cnlUeXBlSWQsZW50cnlWZXJzaW9uSWQ6cm93LmlkLGlzT3RoZXI6MX1cIj57eydDbXM6OkNyZWF0ZU90aGVyTGFuZ3VhZ2VzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fSA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJkZWxldGVmaWVsZChyb3cpXCI+e3snQ21zOjpEZWxldGUnIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZS1jb2x1bW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmd4LWRhdGF0YWJsZT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIEBpZihTaXRlT2ZTZWN0aW9uVHlwZT09PVNlY3Rpb25UeXBlLlN0cnVjdHVyZSl7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSB0YWJsZS1maXhlZC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBvdmVyZmxvdy1ub3dyYXAgbWItMFwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJzdGlja3ktbGVmdC1jYXJkLWJnXCI+IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJpIGJpLWFycm93cy1tb3ZlIGZzLTUgZHJhZy1oYW5kbGUgbWUtMiBvcGFjaXR5LTBcIj48L3NwYW4+e3snQWJwVWk6OkFjdGlvbnMnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydDbXM6OlNsdWcnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHRoPnt7J0Ntczo6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snQ21zOjpTZWN0aW9uVHlwZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J0Ntczo6RW50cnlUeXBlJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snQ21zOjpTdGF0dXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc2hvd2luRmllbGRMaXN0OyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snQ21zOjonK2l0ZW0uZGlzcGxheU5hbWUgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydDbXM6OlB1Ymxpc2hUaW1lJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhLml0ZW1zXCIgY2RrRHJhZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJzdGlja3ktbGVmdC1jYXJkLWJnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiaSBiaS1hcnJvd3MtbW92ZSBmcy01IGRyYWctaGFuZGxlIG1lLTJcIiBjZGtEcmFnSGFuZGxlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWUtMSBmYSBmYS1jb2dcIj48L2k+IHt7J0FicFVpOjpBY3Rpb25zJyB8IGFicExvY2FsaXphdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCIvY21zL2FkbWluL2VudHJpZXMve3tpdGVtLmlkfX0vZWRpdFwiPnt7J0FicFVpOjpFZGl0JyB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoaXRlbXxnZXRMb2NhbGl6ZWRFbnRyaWVzQnlTbHVnOmZpbHRlcnMuc2VjdGlvbklkOnNlY3Rpb25MYW5ndWFnZXNMaXN0KXxhc3luYyk9PT1mYWxzZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gW3JvdXRlckxpbmtdPVwiWycvY21zL2FkbWluL2VudHJpZXMvY3JlYXRlJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwie2N1bHR1cmVOYW1lOiBmaWx0ZXJzLmN1bHR1cmUsc2VjdGlvbklkOmZpbHRlcnMuc2VjdGlvbklkLGVudHJ5VHlwZUlkOml0ZW0uZW50cnlUeXBlSWQsZW50cnlWZXJzaW9uSWQ6aXRlbS5pZCxpc090aGVyOjF9XCI+e3snQ21zOjpDcmVhdGVPdGhlckxhbmd1YWdlcydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIFtyb3V0ZXJMaW5rXT1cIlsnL2Ntcy9hZG1pbi9lbnRyaWVzL2NyZWF0ZSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIntjdWx0dXJlTmFtZTogZmlsdGVycy5jdWx0dXJlLHNlY3Rpb25JZDpmaWx0ZXJzLnNlY3Rpb25JZCxlbnRyeVR5cGVJZDpyb3cuZW50cnlUeXBlSWQsZW50cnlWZXJzaW9uSWQ6cm93LmlkLGlzT3RoZXI6MX1cIj57eydDbXM6OkNyZWF0ZU90aGVyTGFuZ3VhZ2VzJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbn19IDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cImRlbGV0ZWZpZWxkKGl0ZW0pXCI+e3snQWJwVWk6OkRlbGV0ZScgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnBMb2NhbGl6YXRpb259fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8dGQgY2xhc3M9XCJ3aGl0ZS1zcGFjZS1ub3JtYWxcIj57e2l0ZW0udGl0bGV9fTwvdGQ+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIndoaXRlLXNwYWNlLW5vcm1hbFwiPnt7aXRlbS5zbHVnfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0Ntczo6RW51bTpTZWN0aW9uVHlwZTonK1NlY3Rpb25UeXBlW2l0ZW0uc2VjdGlvblR5cGVdIHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0xIG9mIGVudHJ5VHlwZUxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0xLmlkID09PSBpdGVtLmVudHJ5VHlwZUlkXCI+e3tpdGVtMS5kaXNwbGF5TmFtZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtMiBvZiBfZW50cnlTdGF0dXNPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5zdGF0dXM9PT0gaXRlbTIudmFsdWVcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDbXM6OkVudW06RW50cnlTdGF0dXM6JytpdGVtMi5rZXkgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicExvY2FsaXphdGlvbiB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0xIG9mIHNob3dpbkZpZWxkTGlzdDsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYy12aWV3IFt0eXBlXT1cIml0ZW0xLmZpZWxkLmZvcm1Db250cm9sTmFtZVwiIFtzaG93SW5MaXN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkc109XCJpdGVtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbT8uZXh0cmFQcm9wZXJ0aWVzW2l0ZW0xLmZpZWxkLm5hbWVdXCI+PC9kZi1keW5hbWljLXZpZXc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2l0ZW0ucHVibGlzaFRpbWUgfCBzaG9ydERhdGVUaW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihkYXRhLml0ZW1zLmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0Ntczo6Tm9EYXRhQXZhaWxhYmxlSW5EYXRhdGFibGUnIHwgYWJwTG9jYWxpemF0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj4ge3tkYXRhLnRvdGFsQ291bnR9fSB7eyAnQ21zOjpUb3RhbCcgfCBhYnBMb2NhbGl6YXRpb259fTwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+Il19
|
|
@@ -118,7 +118,6 @@ export class EditFieldComponent {
|
|
|
118
118
|
}
|
|
119
119
|
/**提交表单 */
|
|
120
120
|
save() {
|
|
121
|
-
console.log(this.formEntity.value, '提交表单', this.formEntity);
|
|
122
121
|
this.formValidation = true;
|
|
123
122
|
if (!this.formEntity.valid) {
|
|
124
123
|
this._DigniteValidatorsService.getErrorMessage({
|
|
@@ -127,6 +126,8 @@ export class EditFieldComponent {
|
|
|
127
126
|
});
|
|
128
127
|
return;
|
|
129
128
|
}
|
|
129
|
+
console.log(this.formEntity.value, '提交表单', this.formEntity);
|
|
130
|
+
// return
|
|
130
131
|
if (this.isSubmitted)
|
|
131
132
|
return;
|
|
132
133
|
this.isSubmitted = true;
|
|
@@ -170,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
170
171
|
type: ViewChild,
|
|
171
172
|
args: ['submitclick', { static: true }]
|
|
172
173
|
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2ZpZWxkcy9lZGl0LWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZmllbGRzL2VkaXQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDekIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFhN0UsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUNVLEVBQWUsRUFDaEIsUUFBMkIsRUFDMUIsT0FBdUIsRUFDeEIsb0JBQXlDLEVBQ3pDLG9CQUF5QyxFQUN4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QUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUM5RCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixvQ0FBb0M7Z0JBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7b0JBQy9CLEdBQUcsRUFBRSxtQkFBbUI7b0JBQ3hCLFNBQVMsRUFBRSxPQUFPO2lCQUNuQixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsVUFBVTtJQUNWLEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDOzhHQXZKVSxrQkFBa0I7a0dBQWxCLGtCQUFrQix5Q0FQbEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLFVBQVU7YUFDbkM7U0FDRixvSkN6Qkgsa2VBT1c7OzJGRG9CRSxrQkFBa0I7a0JBWDlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGFBR2Y7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxVQUFVO3lCQUNuQztxQkFDRjtxVEF5RDJDLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBMb2NhdGlvbkJhY2tTZXJ2aWNlLFxyXG4gIFVwZGF0ZUxpc3RTZXJ2aWNlLFxyXG4gIERpZ25pdGVWYWxpZGF0b3JzU2VydmljZSxcclxufSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkc0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmllbGRzLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpZWxkc0Zvcm1Db25maWcsIGZpZWxkVG9Gb3JtTGFiZWxNYXAgfSBmcm9tICcuL2ZpZWxkcy1mb3JtLWNvbmZpZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Ntcy1lZGl0LWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1maWVsZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2VkaXQtZmllbGQuY29tcG9uZW50LnNjc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXHJcbiAgICAgIHVzZVZhbHVlOiBFQ21zQ29tcG9uZW50LkZpZWxkc0VkaXQsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwdWJsaWMgX3NlcnZpY2U6IEZpZWxkc0RhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBfTG9jYXRpb25CYWNrU2VydmljZTogTG9jYXRpb25CYWNrU2VydmljZSxcclxuICAgIHB1YmxpYyBfTG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBfVXBkYXRlTGlzdFNlcnZpY2U6IFVwZGF0ZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlOiBEaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vQ2FsbGVkIGFmdGVyIHRoZSBjb25zdHJ1Y3RvciwgaW5pdGlhbGl6aW5nIGlucHV0IHByb3BlcnRpZXMsIGFuZCB0aGUgZmlyc3QgY2FsbCB0byBuZ09uQ2hhbmdlcy5cclxuICAgIC8vQWRkICdpbXBsZW1lbnRzIE9uSW5pdCcgdG8gdGhlIGNsYXNzLlxyXG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXM7XHJcbiAgICB0aGlzLmZvcm1FbnRpdHkgPSB0aGlzLmZiLmdyb3VwKG5ldyBGaWVsZHNGb3JtQ29uZmlnKCkpO1xyXG4gICAgYXdhaXQgdGhpcy5nZXRGaWVsZERldGFpbHMoaWQpO1xyXG4gICAgaWYgKHRoaXMuZmllbGREZXRhaWwpIHtcclxuICAgICAgdGhpcy5mb3JtRW50aXR5LnBhdGNoVmFsdWUoe1xyXG4gICAgICAgIC4uLnRoaXMuZmllbGREZXRhaWwsXHJcbiAgICAgICAgZ3JvdXBJZDogdGhpcy5maWVsZERldGFpbC5ncm91cElkIHx8ICcnLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKuiOt+WPluWtl+auteivpuaDhSAqL1xyXG4gIGdldEZpZWxkRGV0YWlscyhpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLl9zZXJ2aWNlLmdldEZpZWxkRGV0YWlsKGlkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgIHRoaXMuZmllbGREZXRhaWwgPSByZXM7XHJcbiAgICAgICAgICByZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgcmVzb2x2ZSgnJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoq5a2X5q616K+m5oOFICovXHJcbiAgZmllbGREZXRhaWw6IGFueSA9ICcnO1xyXG5cclxuICAvKlxyXG4gIC8qKuihqOWNleWunuS9kyAqL1xyXG4gIGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoq6KGo5Y2V5piv5ZCm6Kem5Y+R6aqM6K+BICovXHJcbiAgZm9ybVZhbGlkYXRpb24gPSBmYWxzZTtcclxuXHJcbiAgLyoq5piv5ZCm5o+Q5LqkICovXHJcbiAgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcclxuXHJcbiAgLyoq6I635Y+W5o+Q5Lqk5oyJ6ZKu5pu/6Lqr77yM55So5LqO55yf5a6e6Kem5Y+R6KGo5Y2V5o+Q5LqkICovXHJcbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcclxuXHJcbiAgLyoq5a2X5q615YiG57uE5o6n5Lu2ICovXHJcbiAgZ2V0IGdyb3VwSWRJbnB1dCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnZ3JvdXBJZCcpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuIFxyXG4gIC8vIOiOt+WPlumUmeivr+S/oeaBr1xyXG4gIGdldEVycm9yTWVzc2FnZShlcnJvcjogYW55LG1hcDphbnkpOiBzdHJpbmcge1xyXG4gICAgLy8g6I635Y+W5pys5Zyw5YyW5qCH562+XHJcbiAgICBjb25zdCBnZXRMb2NhbGl6ZWRMYWJlbCA9IChwYXRoOiBzdHJpbmcpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChtYXBbcGF0aCBhcyBrZXlvZiB0eXBlb2YgbWFwXSk7XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgLy8g5qC85byP5YyW5pWw57uE57Si5byVXHJcbiAgICBjb25zdCBmb3JtYXRBcnJheUluZGV4ID0gKGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICBjb25zdCByZWdleCA9IC9cXFtbMC05XStcXF0vZztcclxuICAgICAgY29uc3QgaW5kZXhNYXRjaCA9IGl0ZW0ubWF0Y2gocmVnZXgpO1xyXG4gICAgICBjb25zdCBbYmFzZVBhdGhdID0gaXRlbS5zcGxpdChyZWdleCk7XHJcbiAgICAgIHJldHVybiBnZXRMb2NhbGl6ZWRMYWJlbChiYXNlUGF0aCkgKyAoaW5kZXhNYXRjaCA/IGluZGV4TWF0Y2hbMF0gOiAnJyk7XHJcbiAgICB9O1xyXG4gIFxyXG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xyXG4gICAgLy8g5aaC5p6c6ZSZ6K+v6Lev5b6E5YyF5ZCrZm9ybUNvbmZpZ3VyYXRpb25cclxuICAgIGlmIChlcnJvci5wYXRoLmluY2x1ZGVzKCdmb3JtQ29uZmlndXJhdGlvbicpKSB7XHJcbiAgICAgIC8vIOWwhumUmeivr+i3r+W+hOS4reeahGZvcm1Db25maWd1cmF0aW9uLeabv+aNouaOie+8jOW5tuaMiS3liIblibJcclxuICAgICAgY29uc3QgcGF0aFBhcnRzID0gZXJyb3IucGF0aC5yZXBsYWNlQWxsKCdmb3JtQ29uZmlndXJhdGlvbi0nLCAnJykuc3BsaXQoJy0nKTtcclxuICAgICAgLy8g5a+55YiG5Ymy5ZCO55qE6Lev5b6E6L+b6KGM5qC85byP5YyWXHJcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFBhcnRzID0gcGF0aFBhcnRzLm1hcCgocGFydCwgaW5kZXgpID0+IHtcclxuICAgICAgICAvLyDlpoLmnpzmmK/mnIDlkI7kuIDkuKrot6/lvoTkuJTkuI3mmK/nrKzkuIDkuKrot6/lvoRcclxuICAgICAgICBpZiAoaW5kZXggPT09IHBhdGhQYXJ0cy5sZW5ndGggLSAxICYmIGluZGV4ID4gMCkge1xyXG4gICAgICAgICAgLy8g6I635Y+W5YmN5LiA5Liq6Lev5b6EXHJcbiAgICAgICAgICBjb25zdCBwcmV2UGFydCA9IHBhdGhQYXJ0c1tpbmRleCAtIDFdO1xyXG4gICAgICAgICAgLy8g5bCG5YmN5LiA5Liq6Lev5b6E5oyJ5pWw57uE57Si5byV5YiG5YmyXHJcbiAgICAgICAgICBjb25zdCBbcHJldkJhc2VQYXRoXSA9IHByZXZQYXJ0LnNwbGl0KC9cXFtbMC05XStcXF0vKTtcclxuICAgICAgICAgIC8vIOWwhuW9k+WJjei3r+W+hOaMieaVsOe7hOe0ouW8leWIhuWJslxyXG4gICAgICAgICAgY29uc3QgW2N1cnJlbnRCYXNlUGF0aF0gPSBwYXJ0LnNwbGl0KC9cXFtbMC05XStcXF0vKTtcclxuICAgICAgICAgIC8vIOe7hOWQiOWJjeS4gOS4qui3r+W+hOWSjOW9k+WJjei3r+W+hFxyXG4gICAgICAgICAgY29uc3QgY29tYmluZWRLZXkgPSBgJHtwcmV2QmFzZVBhdGh9LSR7Y3VycmVudEJhc2VQYXRofWA7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIOWmguaenG1hcOS4reWtmOWcqOe7hOWQiOWQjueahOi3r+W+hO+8jOWImei/lOWbnuacrOWcsOWMluagh+etvu+8jOWQpuWImei/lOWbnuagvOW8j+WMluWQjueahOaVsOe7hOe0ouW8lVxyXG4gICAgICAgICAgcmV0dXJuIG1hcFtjb21iaW5lZEtleSBhcyBrZXlvZiB0eXBlb2YgbWFwXVxyXG4gICAgICAgICAgICA/IGdldExvY2FsaXplZExhYmVsKGNvbWJpbmVkS2V5KVxyXG4gICAgICAgICAgICA6IGZvcm1hdEFycmF5SW5kZXgocGFydCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWQpuWImei/lOWbnuagvOW8j+WMluWQjueahOaVsOe7hOe0ouW8lVxyXG4gICAgICAgIHJldHVybiBmb3JtYXRBcnJheUluZGV4KHBhcnQpO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coZm9ybWF0dGVkUGFydHMsICdmb3JtYXR0ZWRQYXJ0cycscGF0aFBhcnRzKTtcclxuICAgICAgLy8g5bCG5qC85byP5YyW5ZCO55qE6Lev5b6E55SoLei/nuaOpei1t+adpVxyXG4gICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXR0ZWRQYXJ0cy5qb2luKCctJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyDlkKbliJnov5Tlm57mnKzlnLDljJbmoIfnrb5cclxuICAgICAgZXJyb3JNZXNzYWdlID0gZ2V0TG9jYWxpemVkTGFiZWwoZXJyb3IucGF0aCk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvLyDmt7vliqDplJnor6/kv6Hmga9cclxuICAgIGVycm9yTWVzc2FnZSA9IGAke2Vycm9yTWVzc2FnZX0gJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0FicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90VmFsaWQuJyl9YDtcclxuICAgIC8vIOaYvuekuuitpuWRiuS/oeaBr1xyXG4gICAgdGhpcy50b2FzdGVyLndhcm4oZXJyb3JNZXNzYWdlKTtcclxuICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICAvKirmj5DkuqTooajljZUgKi9cclxuICBzYXZlKCkge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5mb3JtRW50aXR5LnZhbHVlLCAn5o+Q5Lqk6KGo5Y2VJywgdGhpcy5mb3JtRW50aXR5KTtcclxuXHJcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgIGlmICghdGhpcy5mb3JtRW50aXR5LnZhbGlkKSB7XHJcbiAgICAgIHRoaXMuX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZS5nZXRFcnJvck1lc3NhZ2Uoe1xyXG4gICAgICAgIGZvcm06dGhpcy5mb3JtRW50aXR5LFxyXG4gICAgICAgIG1hcDpmaWVsZFRvRm9ybUxhYmVsTWFwXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc1N1Ym1pdHRlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc1N1Ym1pdHRlZCA9IHRydWU7XHJcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZm9ybUVudGl0eS52YWx1ZTtcclxuICAgIHRoaXMuX3NlcnZpY2UudXBkYXRlRmllbGQodGhpcy5maWVsZERldGFpbC5pZCwgaW5wdXQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcclxuICAgICAgICAvLyB0aGlzLl9Mb2NhdGlvbkJhY2tTZXJ2aWNlLmJhY2soKTtcclxuICAgICAgICB0aGlzLl9Mb2NhdGlvbkJhY2tTZXJ2aWNlLmJhY2tUbyh7XHJcbiAgICAgICAgICB1cmw6IGAvY21zL2FkbWluL2ZpZWxkc2AsXHJcbiAgICAgICAgICByZXBsZW5pc2g6ICcvZWRpdCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fVXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xyXG4gICAgICB9LFxyXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzZXQoKTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKirph43nva7ooajljZUgKi9cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFt0aXRsZV09XCInQ21zOjpFZGl0RmllbGQnIHwgYWJwTG9jYWxpemF0aW9uXCIgW3Rvb2xiYXJdPVwidHJ1ZVwiPlxyXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtRW50aXR5XCIgW2NsYXNzLndhcy12YWxpZGF0ZWRdPVwiZm9ybVZhbGlkYXRpb25cIiAoc3VibWl0KT1cInNhdmUoKVwiPlxyXG4gICAgICAgIDxidXR0b24gZm9ybS10eXBlPVwic3VibWl0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiICNzdWJtaXRjbGljaz48L2J1dHRvbj5cclxuICAgICAgICBAaWYoZmllbGREZXRhaWwpe1xyXG4gICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWZpZWxkICBbc2VsZWN0ZWRdPVwiZmllbGREZXRhaWxcIiBbc2VydmljZV09XCJfc2VydmljZVwiIFtmb3JtXT1cImZvcm1FbnRpdHlcIj48L2Ntcy1jcmVhdGUtb3ItZWRpdC1maWVsZD5cclxuICAgICAgICB9XHJcbiAgICA8L2Zvcm0+XHJcbjwvYWJwLXBhZ2U+Il19
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2ZpZWxkcy9lZGl0LWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZmllbGRzL2VkaXQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQix3QkFBd0IsR0FDekIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFhN0UsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUNVLEVBQWUsRUFDaEIsUUFBMkIsRUFDMUIsT0FBdUIsRUFDeEIsb0JBQXlDLEVBQ3pDLG9CQUF5QyxFQUN4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QUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUQsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztnQkFDcEYsb0NBQW9DO2dCQUNwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDO29CQUMvQixHQUFHLEVBQUUsbUJBQW1CO29CQUN4QixTQUFTLEVBQUUsT0FBTztpQkFDbkIsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsUUFBUSxFQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDZixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFVBQVU7SUFDVixLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQzs4R0F4SlUsa0JBQWtCO2tHQUFsQixrQkFBa0IseUNBUGxCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxVQUFVO2FBQ25DO1NBQ0Ysb0pDekJILGtlQU9XOzsyRkRvQkUsa0JBQWtCO2tCQVg5QixTQUFTOytCQUNFLGdCQUFnQixhQUdmO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxxQkFBcUI7NEJBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsVUFBVTt5QkFDbkM7cUJBQ0Y7cVRBeUQyQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFQ21zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7XHJcbiAgTG9jYXRpb25CYWNrU2VydmljZSxcclxuICBVcGRhdGVMaXN0U2VydmljZSxcclxuICBEaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UsXHJcbn0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZHNEYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWVsZHNGb3JtQ29uZmlnLCBmaWVsZFRvRm9ybUxhYmVsTWFwIH0gZnJvbSAnLi9maWVsZHMtZm9ybS1jb25maWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbXMtZWRpdC1maWVsZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9lZGl0LWZpZWxkLmNvbXBvbmVudC5zY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxyXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5GaWVsZHNFZGl0LFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdEZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHVibGljIF9zZXJ2aWNlOiBGaWVsZHNEYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RlcjogVG9hc3RlclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgX0xvY2F0aW9uQmFja1NlcnZpY2U6IExvY2F0aW9uQmFja1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgX0xvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgX1VwZGF0ZUxpc3RTZXJ2aWNlOiBVcGRhdGVMaXN0U2VydmljZSxcclxuICAgIHByaXZhdGUgX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZTogRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvL0NhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0b3IsIGluaXRpYWxpemluZyBpbnB1dCBwcm9wZXJ0aWVzLCBhbmQgdGhlIGZpcnN0IGNhbGwgdG8gbmdPbkNoYW5nZXMuXHJcbiAgICAvL0FkZCAnaW1wbGVtZW50cyBPbkluaXQnIHRvIHRoZSBjbGFzcy5cclxuICAgIGNvbnN0IHsgaWQgfSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtRW50aXR5ID0gdGhpcy5mYi5ncm91cChuZXcgRmllbGRzRm9ybUNvbmZpZygpKTtcclxuICAgIGF3YWl0IHRoaXMuZ2V0RmllbGREZXRhaWxzKGlkKTtcclxuICAgIGlmICh0aGlzLmZpZWxkRGV0YWlsKSB7XHJcbiAgICAgIHRoaXMuZm9ybUVudGl0eS5wYXRjaFZhbHVlKHtcclxuICAgICAgICAuLi50aGlzLmZpZWxkRGV0YWlsLFxyXG4gICAgICAgIGdyb3VwSWQ6IHRoaXMuZmllbGREZXRhaWwuZ3JvdXBJZCB8fCAnJyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKirojrflj5blrZfmrrXor6bmg4UgKi9cclxuICBnZXRGaWVsZERldGFpbHMoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5fc2VydmljZS5nZXRGaWVsZERldGFpbChpZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkRGV0YWlsID0gcmVzO1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgIHJlc29sdmUoJycpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKuWtl+auteivpuaDhSAqL1xyXG4gIGZpZWxkRGV0YWlsOiBhbnkgPSAnJztcclxuXHJcbiAgLypcclxuICAvKirooajljZXlrp7kvZMgKi9cclxuICBmb3JtRW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKuihqOWNleaYr+WQpuinpuWPkemqjOivgSAqL1xyXG4gIGZvcm1WYWxpZGF0aW9uID0gZmFsc2U7XHJcblxyXG4gIC8qKuaYr+WQpuaPkOS6pCAqL1xyXG4gIGlzU3VibWl0dGVkID0gZmFsc2U7XHJcblxyXG4gIC8qKuiOt+WPluaPkOS6pOaMiemSruabv+i6q++8jOeUqOS6juecn+WunuinpuWPkeihqOWNleaPkOS6pCAqL1xyXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XHJcblxyXG4gIC8qKuWtl+auteWIhue7hOaOp+S7tiAqL1xyXG4gIGdldCBncm91cElkSW5wdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2dyb3VwSWQnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcbiBcclxuICAvLyDojrflj5bplJnor6/kv6Hmga9cclxuICBnZXRFcnJvck1lc3NhZ2UoZXJyb3I6IGFueSxtYXA6YW55KTogc3RyaW5nIHtcclxuICAgIC8vIOiOt+WPluacrOWcsOWMluagh+etvlxyXG4gICAgY29uc3QgZ2V0TG9jYWxpemVkTGFiZWwgPSAocGF0aDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQobWFwW3BhdGggYXMga2V5b2YgdHlwZW9mIG1hcF0pO1xyXG4gICAgfTtcclxuICBcclxuICAgIC8vIOagvOW8j+WMluaVsOe7hOe0ouW8lVxyXG4gICAgY29uc3QgZm9ybWF0QXJyYXlJbmRleCA9IChpdGVtOiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgcmVnZXggPSAvXFxbWzAtOV0rXFxdL2c7XHJcbiAgICAgIGNvbnN0IGluZGV4TWF0Y2ggPSBpdGVtLm1hdGNoKHJlZ2V4KTtcclxuICAgICAgY29uc3QgW2Jhc2VQYXRoXSA9IGl0ZW0uc3BsaXQocmVnZXgpO1xyXG4gICAgICByZXR1cm4gZ2V0TG9jYWxpemVkTGFiZWwoYmFzZVBhdGgpICsgKGluZGV4TWF0Y2ggPyBpbmRleE1hdGNoWzBdIDogJycpO1xyXG4gICAgfTtcclxuICBcclxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcclxuICAgIC8vIOWmguaenOmUmeivr+i3r+W+hOWMheWQq2Zvcm1Db25maWd1cmF0aW9uXHJcbiAgICBpZiAoZXJyb3IucGF0aC5pbmNsdWRlcygnZm9ybUNvbmZpZ3VyYXRpb24nKSkge1xyXG4gICAgICAvLyDlsIbplJnor6/ot6/lvoTkuK3nmoRmb3JtQ29uZmlndXJhdGlvbi3mm7/mjaLmjonvvIzlubbmjIkt5YiG5YmyXHJcbiAgICAgIGNvbnN0IHBhdGhQYXJ0cyA9IGVycm9yLnBhdGgucmVwbGFjZUFsbCgnZm9ybUNvbmZpZ3VyYXRpb24tJywgJycpLnNwbGl0KCctJyk7XHJcbiAgICAgIC8vIOWvueWIhuWJsuWQjueahOi3r+W+hOi/m+ihjOagvOW8j+WMllxyXG4gICAgICBjb25zdCBmb3JtYXR0ZWRQYXJ0cyA9IHBhdGhQYXJ0cy5tYXAoKHBhcnQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgLy8g5aaC5p6c5piv5pyA5ZCO5LiA5Liq6Lev5b6E5LiU5LiN5piv56ys5LiA5Liq6Lev5b6EXHJcbiAgICAgICAgaWYgKGluZGV4ID09PSBwYXRoUGFydHMubGVuZ3RoIC0gMSAmJiBpbmRleCA+IDApIHtcclxuICAgICAgICAgIC8vIOiOt+WPluWJjeS4gOS4qui3r+W+hFxyXG4gICAgICAgICAgY29uc3QgcHJldlBhcnQgPSBwYXRoUGFydHNbaW5kZXggLSAxXTtcclxuICAgICAgICAgIC8vIOWwhuWJjeS4gOS4qui3r+W+hOaMieaVsOe7hOe0ouW8leWIhuWJslxyXG4gICAgICAgICAgY29uc3QgW3ByZXZCYXNlUGF0aF0gPSBwcmV2UGFydC5zcGxpdCgvXFxbWzAtOV0rXFxdLyk7XHJcbiAgICAgICAgICAvLyDlsIblvZPliY3ot6/lvoTmjInmlbDnu4TntKLlvJXliIblibJcclxuICAgICAgICAgIGNvbnN0IFtjdXJyZW50QmFzZVBhdGhdID0gcGFydC5zcGxpdCgvXFxbWzAtOV0rXFxdLyk7XHJcbiAgICAgICAgICAvLyDnu4TlkIjliY3kuIDkuKrot6/lvoTlkozlvZPliY3ot6/lvoRcclxuICAgICAgICAgIGNvbnN0IGNvbWJpbmVkS2V5ID0gYCR7cHJldkJhc2VQYXRofS0ke2N1cnJlbnRCYXNlUGF0aH1gO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyDlpoLmnpxtYXDkuK3lrZjlnKjnu4TlkIjlkI7nmoTot6/lvoTvvIzliJnov5Tlm57mnKzlnLDljJbmoIfnrb7vvIzlkKbliJnov5Tlm57moLzlvI/ljJblkI7nmoTmlbDnu4TntKLlvJVcclxuICAgICAgICAgIHJldHVybiBtYXBbY29tYmluZWRLZXkgYXMga2V5b2YgdHlwZW9mIG1hcF1cclxuICAgICAgICAgICAgPyBnZXRMb2NhbGl6ZWRMYWJlbChjb21iaW5lZEtleSlcclxuICAgICAgICAgICAgOiBmb3JtYXRBcnJheUluZGV4KHBhcnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlkKbliJnov5Tlm57moLzlvI/ljJblkI7nmoTmlbDnu4TntKLlvJVcclxuICAgICAgICByZXR1cm4gZm9ybWF0QXJyYXlJbmRleChwYXJ0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnNvbGUubG9nKGZvcm1hdHRlZFBhcnRzLCAnZm9ybWF0dGVkUGFydHMnLHBhdGhQYXJ0cyk7XHJcbiAgICAgIC8vIOWwhuagvOW8j+WMluWQjueahOi3r+W+hOeUqC3ov57mjqXotbfmnaVcclxuICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0dGVkUGFydHMuam9pbignLScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g5ZCm5YiZ6L+U5Zue5pys5Zyw5YyW5qCH562+XHJcbiAgICAgIGVycm9yTWVzc2FnZSA9IGdldExvY2FsaXplZExhYmVsKGVycm9yLnBhdGgpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgLy8g5re75Yqg6ZSZ6K+v5L+h5oGvXHJcbiAgICBlcnJvck1lc3NhZ2UgPSBgJHtlcnJvck1lc3NhZ2V9ICR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KCdBYnBWYWxpZGF0aW9uOjpUaGlzRmllbGRJc05vdFZhbGlkLicpfWA7XHJcbiAgICAvLyDmmL7npLrorablkYrkv6Hmga9cclxuICAgIHRoaXMudG9hc3Rlci53YXJuKGVycm9yTWVzc2FnZSk7XHJcbiAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgLyoq5o+Q5Lqk6KGo5Y2VICovXHJcbiAgc2F2ZSgpIHtcclxuICBcclxuICAgIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLmZvcm1FbnRpdHkudmFsaWQpIHtcclxuICAgICAgdGhpcy5fRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlLmdldEVycm9yTWVzc2FnZSh7XHJcbiAgICAgICAgZm9ybTp0aGlzLmZvcm1FbnRpdHksXHJcbiAgICAgICAgbWFwOmZpZWxkVG9Gb3JtTGFiZWxNYXBcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgICAgY29uc29sZS5sb2codGhpcy5mb3JtRW50aXR5LnZhbHVlLCAn5o+Q5Lqk6KGo5Y2VJywgdGhpcy5mb3JtRW50aXR5KTtcclxuICAgIC8vIHJldHVyblxyXG4gICAgaWYgKHRoaXMuaXNTdWJtaXR0ZWQpIHJldHVybjtcclxuICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmZvcm1FbnRpdHkudmFsdWU7XHJcbiAgICB0aGlzLl9zZXJ2aWNlLnVwZGF0ZUZpZWxkKHRoaXMuZmllbGREZXRhaWwuaWQsIGlucHV0KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XHJcbiAgICAgICAgLy8gdGhpcy5fTG9jYXRpb25CYWNrU2VydmljZS5iYWNrKCk7XHJcbiAgICAgICAgdGhpcy5fTG9jYXRpb25CYWNrU2VydmljZS5iYWNrVG8oe1xyXG4gICAgICAgICAgdXJsOiBgL2Ntcy9hZG1pbi9maWVsZHNgLFxyXG4gICAgICAgICAgcmVwbGVuaXNoOiAnL2VkaXQnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX1VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3QoKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnJlc2V0KCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoq6YeN572u6KGo5Y2VICovXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmlzU3VibWl0dGVkID0gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6RWRpdEZpZWxkJyB8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUVudGl0eVwiIFtjbGFzcy53YXMtdmFsaWRhdGVkXT1cImZvcm1WYWxpZGF0aW9uXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICAgICAgICA8YnV0dG9uIGZvcm0tdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XHJcbiAgICAgICAgQGlmKGZpZWxkRGV0YWlsKXtcclxuICAgICAgICAgICAgPGNtcy1jcmVhdGUtb3ItZWRpdC1maWVsZCAgW3NlbGVjdGVkXT1cImZpZWxkRGV0YWlsXCIgW3NlcnZpY2VdPVwiX3NlcnZpY2VcIiBbZm9ybV09XCJmb3JtRW50aXR5XCI+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZmllbGQ+XHJcbiAgICAgICAgfVxyXG4gICAgPC9mb3JtPlxyXG48L2FicC1wYWdlPiJdfQ==
|