barsa-tiles 2.0.135 → 2.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/action-item/action-item.component.mjs +4 -4
- package/esm2022/lib/action-links.pipe.mjs +4 -4
- package/esm2022/lib/actions-link/actions-link.component.mjs +4 -4
- package/esm2022/lib/app-finder/app-finder.component.mjs +4 -4
- package/esm2022/lib/app-finder-app-list/app-finder-app-list.component.mjs +4 -4
- package/esm2022/lib/app-finder-group/app-finder-group.component.mjs +4 -4
- package/esm2022/lib/app-finder.service.mjs +4 -4
- package/esm2022/lib/barsa-pin-app/barsa-pin-app.component.mjs +4 -4
- package/esm2022/lib/barsa-shellbar/barsa-shellbar.component.mjs +4 -4
- package/esm2022/lib/barsa-tile-group-page/barsa-tile-group-page.component.mjs +4 -4
- package/esm2022/lib/barsa-tile-sidebar-page/barsa-tile-sidebar-page.component.mjs +4 -4
- package/esm2022/lib/barsa-tiles-routing.module.mjs +5 -5
- package/esm2022/lib/barsa-tiles.module.mjs +5 -5
- package/esm2022/lib/change-app-tile/change-app-tile.component.mjs +4 -4
- package/esm2022/lib/create-app-group/create-app-group.component.mjs +4 -4
- package/esm2022/lib/directives/emptylist.directive.mjs +4 -4
- package/esm2022/lib/feed-tile/feed-tile.component.mjs +4 -4
- package/esm2022/lib/footer-edit-tile/footer-edit-tile.component.mjs +4 -4
- package/esm2022/lib/footer-tile/footer-tile.component.mjs +4 -4
- package/esm2022/lib/form-app-finder/form-app-finder.component.mjs +4 -4
- package/esm2022/lib/form-tile/form-tile.component.mjs +4 -4
- package/esm2022/lib/logo-tile/logo-tile.component.mjs +4 -4
- package/esm2022/lib/micro-tile-chart-area/micro-tile-chart-area.component.mjs +4 -4
- package/esm2022/lib/micro-tile-chart-bar/micro-tile-chart-bar.component.mjs +4 -4
- package/esm2022/lib/micro-tile-chart-bullet/micro-tile-chart-bullet.component.mjs +4 -4
- package/esm2022/lib/micro-tile-chart-circular/micro-tile-chart-circular.component.mjs +4 -4
- package/esm2022/lib/micro-tile-chart-comparison/micro-tile-chart-comparison.component.mjs +4 -4
- package/esm2022/lib/micro-tile-chart-line/micro-tile-chart-line.component.mjs +4 -4
- package/esm2022/lib/micro-tile-chart-stackbar/micro-tile-chart-stackbar.component.mjs +4 -4
- package/esm2022/lib/models/base-bt-tile-component.mjs +4 -4
- package/esm2022/lib/models/base-tile-component.mjs +4 -4
- package/esm2022/lib/news-tile/news-tile.component.mjs +4 -4
- package/esm2022/lib/notification-group/notification-group.component.mjs +4 -4
- package/esm2022/lib/notification-group-header/notification-group-header.component.mjs +4 -4
- package/esm2022/lib/numeric-tile/numeric-tile.component.mjs +4 -4
- package/esm2022/lib/pin-tile/pin-tile.component.mjs +4 -4
- package/esm2022/lib/pipes/group-tiles.pipe.mjs +4 -4
- package/esm2022/lib/pipes/home-group.pipe.mjs +4 -4
- package/esm2022/lib/pipes/tile-home-filter.pipe.mjs +4 -4
- package/esm2022/lib/pipes/tile-prop.pipe.mjs +4 -4
- package/esm2022/lib/popover-app-finder/filter-apps-grouped.pipe.mjs +7 -7
- package/esm2022/lib/popover-app-finder/popover-app-finder.component.mjs +4 -4
- package/esm2022/lib/profile-tile/profile-tile.component.mjs +4 -4
- package/esm2022/lib/shellbar/shellbar.component.mjs +4 -4
- package/esm2022/lib/simple-tile/simple-tile.component.mjs +4 -4
- package/esm2022/lib/tile/tile.component.mjs +4 -4
- package/esm2022/lib/tile-renderer.directive.mjs +4 -4
- package/esm2022/lib/tile-size.directive.mjs +4 -4
- package/esm2022/lib/tile-style.directive.mjs +4 -4
- package/esm2022/lib/tiles-viewer/tiles-viewer.component.mjs +4 -4
- package/esm2022/lib/tiles-viewer-container/tiles-viewer-container.component.mjs +4 -4
- package/esm2022/lib/tiles-viewer-group/tiles-viewer-group.component.mjs +4 -4
- package/esm2022/lib/tiles-viewer.service.mjs +4 -4
- package/esm2022/lib/tiles.service.mjs +4 -4
- package/fesm2022/barsa-tiles.mjs +167 -167
- package/fesm2022/barsa-tiles.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -121,10 +121,10 @@ export class TilesViewerService {
|
|
|
121
121
|
setLoading() {
|
|
122
122
|
this._viewLoadingSource.next(true);
|
|
123
123
|
}
|
|
124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
125
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
124
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerService, deps: [{ token: i1.DialogService }, { token: i2.TilesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
125
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerService }); }
|
|
126
126
|
}
|
|
127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
127
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesViewerService, decorators: [{
|
|
128
128
|
type: Injectable
|
|
129
129
|
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.TilesService }] });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1wRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdyRixNQUFNLE9BQU8sa0JBQWtCO0lBb0IzQixZQUFvQixhQUE0QixFQUFVLFlBQTBCO1FBQWhFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFkakUsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3JELGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ2pFLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3hELHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3pELDhCQUF5QixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQ2pFLHdCQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRSx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUMxRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxRCx3QkFBbUIsR0FBRyxJQUFJLE9BQU8s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c0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGV4aGF1c3RNYXAsIGZpbmFsaXplLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi90aWxlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhbmdlQXBwVGlsZUNvbXBvbmVudCB9IGZyb20gJy4vY2hhbmdlLWFwcC10aWxlL2NoYW5nZS1hcHAtdGlsZS5jb21wb25lbnQnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGlsZXNWaWV3ZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIHZpZXdMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGhpZGVUaWxlJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuICAgIHVwZGF0ZUFwcFRpbGVTZXR0aW5nJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuICAgIGRlbGV0ZUFwcEdyb3VwJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2hpZGVUaWxlU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVTZXR0aW5nU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX2RlbGV0ZUdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX2xvYWRBcHBHcm91cFNvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBwcml2YXRlIF9zYXZlQXBwR3JvdXBPcmRlcnNTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KCk7XHJcbiAgICBwcml2YXRlIHNhdmVBcHBHcm91cE9yZGVycyQgPSB0aGlzLl9zYXZlQXBwR3JvdXBPcmRlcnNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF9yZXNldEFwcEdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgcmVzZXRBcHBHcm91cCQgPSB0aGlzLl9yZXNldEFwcEdyb3VwU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfaGlkZUFwcEdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgaGlkZUFwcEdyb3VwJCA9IHRoaXMuX2hpZGVBcHBHcm91cFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3ZpZXdMb2FkaW5nU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIHRpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy52aWV3TG9hZGluZyQgPSB0aGlzLl92aWV3TG9hZGluZ1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSgyMDApKTtcclxuICAgICAgICB0aGlzLmhpZGVUaWxlJCA9IHRoaXMuX2hpZGVUaWxlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXBwVGlsZVNldHRpbmckID0gdGhpcy5fdXBkYXRlQXBwVGlsZVNldHRpbmdTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5kZWxldGVBcHBHcm91cCQgPSB0aGlzLl9kZWxldGVHcm91cFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgICAgICB0aGlzLl9sb2FkQXBwR3JvdXBTb3VyY2VcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZ3JvdXApID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlLmxvYWRBcHBUaWxlR3JvdXBzKGdyb3VwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5oaWRlVGlsZSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwVGlsZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2luZ2xlUGluVGlsZUNoYW5nZWQoYXBwVGlsZS5BcHBUaWxlID8gYXBwVGlsZS5BcHBUaWxlLklkIDogYXBwVGlsZS5JZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5zZXRMb2FkZWQoKSkpXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5zZXRMb2FkZWQoKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQXBwVGlsZVNldHRpbmckXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcFRpbGUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UuY2hhbmdlQXBwVGlsZVNldHRpbmcoYXBwVGlsZSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWxldGVBcHBHcm91cCRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwR3JvdXApID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UuZGVsZXRlQXBwR3JvdXAoYXBwR3JvdXApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZXNldEFwcEdyb3VwJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBHcm91cCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZS5yZXNldEFwcEdyb3VwU2V0dGluZyhhcHBHcm91cCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5oaWRlQXBwR3JvdXAkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcEdyb3VwKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlLnRvZ2dsZUFwcEdyb3VwU2V0dGluZ1Zpc2libGUoYXBwR3JvdXApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZUFwcEdyb3VwT3JkZXJzJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBHcm91cHMpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2Uuc2F2ZUFwcEdyb3VwT3JkZXJzKGFwcEdyb3VwcykucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGdldCBzZWxlY3RlZEFwcEdyb3VwSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkVGFiJykgPz8gJyc7XHJcbiAgICB9XHJcbiAgICBzZXQgc2VsZWN0ZWRBcHBHcm91cElkKGdyb3VwSWQ6IHN0cmluZykge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzZWxlY3RlZFRhYicsIGdyb3VwSWQpO1xyXG4gICAgfVxyXG4gICAgc2V0U2VsZWN0ZWRUYWIoZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXBwR3JvdXBJZCA9IGdyb3VwLklkO1xyXG4gICAgfVxyXG4gICAgbG9hZEFwcEdyb3VwKGdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbG9hZEFwcEdyb3VwU291cmNlLm5leHQoZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJlbmFtZUZvcm0oYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwRGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2hhbmdlQXBwVGlsZUNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBkYXRhOiBhcHBUaWxlLFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpdmVQYWRkaW5nOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG5ld0dyb3VwRGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoc2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2V0dGluZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3QXBwVGlsZSA9IHsgLi4uYXBwVGlsZSB9O1xyXG4gICAgICAgICAgICAgICAgbmV3QXBwVGlsZS5UaXRsZSA9IG5ld0FwcFRpbGUuVGlsZVRpdGxlID0gc2V0dGluZy50aXRsZTtcclxuICAgICAgICAgICAgICAgIG5ld0FwcFRpbGUuU3VidGl0bGUgPSBzZXR0aW5nLnN1YnRpdGxlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZVNldHRpbmdTb3VyY2UubmV4dChuZXdBcHBUaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXRBcHBHcm91cChhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0QXBwR3JvdXBTb3VyY2UubmV4dChhcHBHcm91cCk7XHJcbiAgICB9XHJcbiAgICB0b2dnbGVBcHBHcm91cFNldHRpbmdWaXNpYmxlKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGlkZUFwcEdyb3VwU291cmNlLm5leHQoYXBwR3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUFwcEdyb3VwKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGVsZXRlR3JvdXBTb3VyY2UubmV4dChhcHBHcm91cCk7XHJcbiAgICB9XHJcbiAgICBoaWRlVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGlkZVRpbGVTb3VyY2UubmV4dChhcHBUaWxlKTtcclxuICAgIH1cclxuICAgIHNhdmVBcHBHcm91cE9yZGVycyhhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NhdmVBcHBHcm91cE9yZGVyc1NvdXJjZS5uZXh0KGFwcEdyb3Vwcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TG9hZGVkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ZpZXdMb2FkaW5nU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgc2V0TG9hZGluZygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl92aWV3TG9hZGluZ1NvdXJjZS5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1wRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdyRixNQUFNLE9BQU8sa0JBQWtCO0lBb0IzQixZQUFvQixhQUE0QixFQUFVLFlBQTBCO1FBQWhFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFkakUsZ0JBQVcsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU1RCxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3JELGdDQUEyQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ2pFLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3hELHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3pELDhCQUF5QixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBQ2pFLHdCQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRSx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUMxRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxRCx3QkFBbUIsR0FBRyxJQUFJLE9BQU8s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c0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGV4aGF1c3RNYXAsIGZpbmFsaXplLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTWV0YW9iamVjdERhdGFNb2RlbCB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgVGlsZXNTZXJ2aWNlIH0gZnJvbSAnLi90aWxlcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhbmdlQXBwVGlsZUNvbXBvbmVudCB9IGZyb20gJy4vY2hhbmdlLWFwcC10aWxlL2NoYW5nZS1hcHAtdGlsZS5jb21wb25lbnQnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGlsZXNWaWV3ZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAgIHZpZXdMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIGhpZGVUaWxlJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuICAgIHVwZGF0ZUFwcFRpbGVTZXR0aW5nJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuICAgIGRlbGV0ZUFwcEdyb3VwJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICAgIHByaXZhdGUgX2hpZGVUaWxlU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVTZXR0aW5nU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX2RlbGV0ZUdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgX2xvYWRBcHBHcm91cFNvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBwcml2YXRlIF9zYXZlQXBwR3JvdXBPcmRlcnNTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KCk7XHJcbiAgICBwcml2YXRlIHNhdmVBcHBHcm91cE9yZGVycyQgPSB0aGlzLl9zYXZlQXBwR3JvdXBPcmRlcnNTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICBwcml2YXRlIF9yZXNldEFwcEdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgcmVzZXRBcHBHcm91cCQgPSB0aGlzLl9yZXNldEFwcEdyb3VwU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHJpdmF0ZSBfaGlkZUFwcEdyb3VwU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIHByaXZhdGUgaGlkZUFwcEdyb3VwJCA9IHRoaXMuX2hpZGVBcHBHcm91cFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgIHByaXZhdGUgX3ZpZXdMb2FkaW5nU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLCBwcml2YXRlIHRpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlKSB7XHJcbiAgICAgICAgdGhpcy52aWV3TG9hZGluZyQgPSB0aGlzLl92aWV3TG9hZGluZ1NvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSgyMDApKTtcclxuICAgICAgICB0aGlzLmhpZGVUaWxlJCA9IHRoaXMuX2hpZGVUaWxlU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQXBwVGlsZVNldHRpbmckID0gdGhpcy5fdXBkYXRlQXBwVGlsZVNldHRpbmdTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XHJcbiAgICAgICAgdGhpcy5kZWxldGVBcHBHcm91cCQgPSB0aGlzLl9kZWxldGVHcm91cFNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICAgICAgICB0aGlzLl9sb2FkQXBwR3JvdXBTb3VyY2VcclxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZ3JvdXApID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlLmxvYWRBcHBUaWxlR3JvdXBzKGdyb3VwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5oaWRlVGlsZSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwVGlsZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2luZ2xlUGluVGlsZUNoYW5nZWQoYXBwVGlsZS5BcHBUaWxlID8gYXBwVGlsZS5BcHBUaWxlLklkIDogYXBwVGlsZS5JZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5zZXRMb2FkZWQoKSkpXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5zZXRMb2FkZWQoKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQXBwVGlsZVNldHRpbmckXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcFRpbGUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UuY2hhbmdlQXBwVGlsZVNldHRpbmcoYXBwVGlsZSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWxldGVBcHBHcm91cCRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5zZXRMb2FkaW5nKCkpLFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgZXhoYXVzdE1hcCgoYXBwR3JvdXApID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2UuZGVsZXRlQXBwR3JvdXAoYXBwR3JvdXApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZXNldEFwcEdyb3VwJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBHcm91cCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbGVzU2VydmljZS5yZXNldEFwcEdyb3VwU2V0dGluZyhhcHBHcm91cCkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAgICAgdGhpcy5oaWRlQXBwR3JvdXAkXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuc2V0TG9hZGluZygpKSxcclxuICAgICAgICAgICAgICAgIGV4aGF1c3RNYXAoKGFwcEdyb3VwKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlsZXNTZXJ2aWNlLnRvZ2dsZUFwcEdyb3VwU2V0dGluZ1Zpc2libGUoYXBwR3JvdXApLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExvYWRlZCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZUFwcEdyb3VwT3JkZXJzJFxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcclxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnNldExvYWRpbmcoKSksXHJcbiAgICAgICAgICAgICAgICBleGhhdXN0TWFwKChhcHBHcm91cHMpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWxlc1NlcnZpY2Uuc2F2ZUFwcEdyb3VwT3JkZXJzKGFwcEdyb3VwcykucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGVkKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGdldCBzZWxlY3RlZEFwcEdyb3VwSWQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3NlbGVjdGVkVGFiJykgPz8gJyc7XHJcbiAgICB9XHJcbiAgICBzZXQgc2VsZWN0ZWRBcHBHcm91cElkKGdyb3VwSWQ6IHN0cmluZykge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzZWxlY3RlZFRhYicsIGdyb3VwSWQpO1xyXG4gICAgfVxyXG4gICAgc2V0U2VsZWN0ZWRUYWIoZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXBwR3JvdXBJZCA9IGdyb3VwLklkO1xyXG4gICAgfVxyXG4gICAgbG9hZEFwcEdyb3VwKGdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbG9hZEFwcEdyb3VwU291cmNlLm5leHQoZ3JvdXApO1xyXG4gICAgfVxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJlbmFtZUZvcm0oYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwRGlhbG9nUmVmID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2hhbmdlQXBwVGlsZUNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICBkYXRhOiBhcHBUaWxlLFxyXG4gICAgICAgICAgICB2ZXJ0aWNhbFBhZGRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHJlc3BvbnNpdmVQYWRkaW5nOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIG5ld0dyb3VwRGlhbG9nUmVmLmFmdGVyQ2xvc2VkLnN1YnNjcmliZSgoc2V0dGluZykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoc2V0dGluZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3QXBwVGlsZSA9IHsgLi4uYXBwVGlsZSB9O1xyXG4gICAgICAgICAgICAgICAgbmV3QXBwVGlsZS5UaXRsZSA9IG5ld0FwcFRpbGUuVGlsZVRpdGxlID0gc2V0dGluZy50aXRsZTtcclxuICAgICAgICAgICAgICAgIG5ld0FwcFRpbGUuU3VidGl0bGUgPSBzZXR0aW5nLnN1YnRpdGxlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZVNldHRpbmdTb3VyY2UubmV4dChuZXdBcHBUaWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmVzZXRBcHBHcm91cChhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0QXBwR3JvdXBTb3VyY2UubmV4dChhcHBHcm91cCk7XHJcbiAgICB9XHJcbiAgICB0b2dnbGVBcHBHcm91cFNldHRpbmdWaXNpYmxlKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGlkZUFwcEdyb3VwU291cmNlLm5leHQoYXBwR3JvdXApO1xyXG4gICAgfVxyXG5cclxuICAgIGRlbGV0ZUFwcEdyb3VwKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGVsZXRlR3JvdXBTb3VyY2UubmV4dChhcHBHcm91cCk7XHJcbiAgICB9XHJcbiAgICBoaWRlVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGlkZVRpbGVTb3VyY2UubmV4dChhcHBUaWxlKTtcclxuICAgIH1cclxuICAgIHNhdmVBcHBHcm91cE9yZGVycyhhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3NhdmVBcHBHcm91cE9yZGVyc1NvdXJjZS5uZXh0KGFwcEdyb3Vwcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TG9hZGVkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3ZpZXdMb2FkaW5nU291cmNlLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgc2V0TG9hZGluZygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl92aWV3TG9hZGluZ1NvdXJjZS5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -602,13 +602,13 @@ export class TilesService {
|
|
|
602
602
|
this._prepareNavigator(subAppTileGroup);
|
|
603
603
|
});
|
|
604
604
|
}
|
|
605
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
606
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
605
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesService, deps: [{ token: i1.PortalService }, { token: i2.RtlService }, { token: i1.BbbTranslatePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
606
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesService, providedIn: 'root' }); }
|
|
607
607
|
}
|
|
608
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
608
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TilesService, decorators: [{
|
|
609
609
|
type: Injectable,
|
|
610
610
|
args: [{
|
|
611
611
|
providedIn: 'root'
|
|
612
612
|
}]
|
|
613
613
|
}], ctorParameters: () => [{ type: i1.PortalService }, { type: i2.RtlService }, { type: i1.BbbTranslatePipe }] });
|
|
614
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakgsT0FBTyxFQUFFLFFBQVEsRUFBMEUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQU14SCxNQUFNLE9BQU8sWUFBWTtJQWlCckIsWUFDWSxjQUE2QixFQUM3QixXQUF1QixFQUN2QixpQkFBbUM7UUFGbkMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQWhCL0MsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQU01QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEMsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUM1Qyx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBMEIsSUFBSSxDQUFDLENBQUM7UUFDMUUsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ2pFLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEQsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVB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LE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNuRixZQUFZLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdFLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVuRixZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBM3FCUSxZQUFZO2tIQUFaLFlBQVksY0FGVCxNQUFNOzsyRkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBCYXJzYUFwaSwgQmJiVHJhbnNsYXRlUGlwZSwgTWV0YW9iamVjdERhdGFNb2RlbCwgTW9Gb3JSZXBvcnRNb2RlbCwgUG9ydGFsU2VydmljZSB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IEFwcFRpbGVHcm91cFBpbiwgVXNlclBvcnRhbFNldHRpbmdzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRpbGVzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgZGV2aWNlU2l6ZSQ6IE9ic2VydmFibGU8J3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJz47XG4gICAgaG9tZUFwcFRpbGVHcm91cHMkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT47XG4gICAgcGluVGlsZXMkOiBPYnNlcnZhYmxlPFBpblRpbGVJbmZvIHwgbnVsbD47XG4gICAgc2hlbGxiYXJTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIHNoZWxsYmFyJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcbiAgICBhcHBUaWxlR3JvdXBzJDogT2JzZXJ2YWJsZTxNb0ZvclJlcG9ydE1vZGVsIHwgbnVsbD47XG4gICAgZWRpdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgdXNlclByb2ZpbGVJbWFnZVVybCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICBwcml2YXRlIF9PbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9ob21lQXBwVGlsZUdyb3Vwc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbFtdPihbXSk7XG4gICAgcHJpdmF0ZSBwaW5UaWxlc1NvdXJjZSA9IG5ldyBTdWJqZWN0PFBpblRpbGVJbmZvPigpO1xuICAgIHByaXZhdGUgX2FwcFRpbGVHcm91cHNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIF91c2VyUHJvZmlsZUltYWdlVXJsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBfZWRpdGhvbWVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9jb21wb25lbnRTZXR0aW5ncyQgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGVQaXBlOiBCYmJUcmFuc2xhdGVQaXBlXG4gICAgKSB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlRpbGVzU2VydmljZSA9IHRoaXM7XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVJbWFnZVVybCQgPSB0aGlzLl91c2VyUHJvZmlsZUltYWdlVXJsJC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5ob21lQXBwVGlsZUdyb3VwcyQgPSB0aGlzLl9ob21lQXBwVGlsZUdyb3Vwc1NvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5waW5UaWxlcyQgPSB0aGlzLnBpblRpbGVzU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc3RhcnRXaXRoKG51bGwpKTtcbiAgICAgICAgdGhpcy5zaGVsbGJhclNvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgICAgIHRoaXMuc2hlbGxiYXIkID0gdGhpcy5zaGVsbGJhclNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICAgICAgdGhpcy5hcHBUaWxlR3JvdXBzJCA9IHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UucGlwZShzaGFyZVJlcGxheSgxKSk7XG5cbiAgICAgICAgdGhpcy5lZGl0JCA9IHRoaXMuX2VkaXRob21lU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX09uRGVzdHJveSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQ7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLm5leHQoQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1J0bCk7XG4gICAgICAgIHRoaXMubG9hZEFsbEFwcFRpbGVHcm91cHMoKTtcbiAgICAgICAgdGhpcy5hcHBUaWxlR3JvdXBzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChtb0ZvclJlcG9ydE1vZGVsKSA9PiBtb0ZvclJlcG9ydE1vZGVsICE9PSBudWxsKSxcbiAgICAgICAgICAgICAgICB0YXAoKG1vRm9yUmVwb3J0TW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vRm9yUmVwb3J0TW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsbEFwcHNMb2FkZWQobW9Gb3JSZXBvcnRNb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICBCYXJzYUFwaS5VbC5BcHBsaWNhdGlvbkN0cmxyLm9uKCdHbG9iYWxSZWZyZXNoVGlsZScsIHRoaXMuX29uQXBwbGljYXRpb25fR2xvYmFsUmVmcmVzaFRpbGUuYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIGdldCBjb21wb25lbnRTZXR0aW5ncyQoKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRTZXR0aW5ncyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBhcHBUaWxlR3JvdXBzKCk6IE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX09uRGVzdHJveSQubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX29uQXBwbGljYXRpb25fR2xvYmFsUmVmcmVzaFRpbGUoc2VuZGVyLCBhcHBUaWxlc1RpdGxlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhcHBUaWxlczogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gW107XG4gICAgICAgIGlmIChhbGxBcHBzKSB7XG4gICAgICAgICAgICBhcHBUaWxlc1RpdGxlLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFRpbGUgPSB0aGlzLmZpbmRBcHBUaWxlV2l0aEtleShhbGxBcHBzLCAnQV9BcHBfQXBwS2V5JywgYyk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGlsZSkge1xuICAgICAgICAgICAgICAgICAgICBhcHBUaWxlcy5wdXNoKHNlbGVjdGVkVGlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlRnJvbU5vdGlmaWNhdGlvbihhbGxBcHBzLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoYWxsQXBwcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZUFwcFRpbGVGcm9tTm90aWZpY2F0aW9uKGFsbEFwcHM6IE1vRm9yUmVwb3J0TW9kZWwsIGFwcFRpbGVzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhcHBUaWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwVGlsZXMubWFwKChjKSA9PiAoYy5BcHBUaWxlPy5JZCA/IGMuQXBwVGlsZT8uSWQgOiBjLklkKSldLFxuICAgICAgICAgICAgTWV0aG9kOiAnUmVmcmVzaEFwcFRpbGVzJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHJlc3VsdDogTW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHRoaXMudXBkYXRlQXBwVGlsZShhbGxBcHBzLCBjKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KHsgLi4uYWxsQXBwcyB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkVXNlclByb2ZpbGVJbWFnZShyZXBJZFByb2ZpbGVJbWFnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghcmVwSWRQcm9maWxlSW1hZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtyZXBJZFByb2ZpbGVJbWFnZV0sXG4gICAgICAgICAgICBNZXRob2Q6ICdCYXJzYVBvcnRhbEdldFByb2ZpbGVJbWFnZScsXG4gICAgICAgICAgICBTdWNjZXNzRm46ICh1cmw6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXJQcm9maWxlSW1hZ2VVcmwkLm5leHQodXJsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkQXBwVGlsZUdyb3VwcyhhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhcHBUaWxlR3JvdXAgfHwgYXBwVGlsZUdyb3VwLiRUaWxlc0xvYWRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChhbGxBcHBzKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEFwcFRpbGVncm91cCA9IGFsbEFwcHM/Lk1vRGF0YUxpc3QuZmluZCgoYykgPT4gYy5JZCA9PT0gYXBwVGlsZUdyb3VwLklkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFwcFRpbGVncm91cCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwVGlsZWdyb3VwLCBhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEFwcFRpbGVncm91cC4kQ2hpbGRyZW4/LmZvckVhY2goKHN1Ykdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHN1Ykdyb3VwLCBhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzYXZlVGlsZXNTdGFja0NvbnRlbnQodGlsZXNTdGFja0NvbnRlbnQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgdXNlclBvcnRhbFNldHRpbmdzID0gdGhpcy5fcG9ydGFsU2VydmljZS51c2VyUG9ydGFsU2V0dGluZ3NbJ1VzZXJQb3J0YWxTZXR0aW5ncyddO1xuICAgICAgICBpZiAodXNlclBvcnRhbFNldHRpbmdzID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB1c2VyUG9ydGFsU2V0dGluZ3MuVGlsZXNTdGFja0NvbnRlbnQgPSB0aWxlc1N0YWNrQ29udGVudDtcbiAgICAgICAgdXNlclBvcnRhbFNldHRpbmdzLiRTdGF0ZSA9ICdNb2RpZmllZCc7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYXZlVXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5ncykudGhlbigoKSA9PlxuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxvYWRVc2VyUG9ydGFsU2V0dGluZ3MoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcnRhbFNlcnZpY2UuZ2V0RGF0YSgnVXNlclBvcnRhbFNldHRpbmcnKS5waXBlKFxuICAgICAgICAgICAgY29uY2F0TWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRGcm9tU2VydmVyVXNlclBvcnRhbFNldHRpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICByZWZyZXNoVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwVGlsZS5JZF0sXG4gICAgICAgICAgICAgICAgTWV0aG9kOiAnUmVmcmVzaFRpbGUnLFxuICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKG5ld0FwcFRpbGU6IE1vRm9yUmVwb3J0TW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0FwcFRpbGUuTW9EYXRhTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG5ld0FwcFRpbGUuTW9EYXRhTGlzdFswXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGByZWZyZXNoIHRpbGUgbm90IGZvdW5kIGFwcHRpbGUgd2lkdGggdGl0bGU6ICR7YXBwVGlsZS5UaXRsZX1gKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkRnJvbVNlcnZlclVzZXJQb3J0YWxTZXR0aW5nKCk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPFVzZXJQb3J0YWxTZXR0aW5ncz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnR2V0VXNlclBvcnRhbFNldHRpbmdzJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAodXNlclBvcnRhbFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uuc2V0RGF0YSgnVXNlclBvcnRhbFNldHRpbmcnLCB1c2VyUG9ydGFsU2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHVzZXJQb3J0YWxTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRvZ2dsZUFwcEdyb3VwU2V0dGluZ1Zpc2libGUoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ1RvZ2dsZUFwcFRpbGVHcm91cFNldHRpbmdWaXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwR3JvdXBTZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhhcHBHcm91cCwgYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcCgoYXBwR3JvdXBTZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwR3JvdXBTZXR0aW5nKGFwcEdyb3VwLCBhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmVzZXRBcHBHcm91cFNldHRpbmcoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ1Jlc2V0QXBwVGlsZUdyb3VwU2V0dGluZ1Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChhcHBHcm91cFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcFRpbGVHcm91cFNldHRpbmdzKGFwcEdyb3VwLCBhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhcHBHcm91cFNldHRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBHcm91cFNldHRpbmcoYXBwR3JvdXAsIGFwcEdyb3VwU2V0dGluZyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZUFwcEdyb3VwKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcEdyb3VwLklkXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnRGVsZXRlQXBwR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwR3JvdXAuSWQpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhcHBHcm91cElkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgICAgICAgICBpZiAoYWxsQXBwcykge1xuICAgICAgICAgICAgICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QgPSBhbGxBcHBzLk1vRGF0YUxpc3QuZmlsdGVyKChjKSA9PiBjLklkICE9PSBhcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KGFsbEFwcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIGNoYW5nZUFwcFRpbGVTZXR0aW5nKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLmFwcFRpbGVHcm91cHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXAgPSB0aGlzLmZpbmRHcm91cFdpdGhBcHBUaWxlSWQoYWxsQXBwcywgYXBwVGlsZS5JZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEdyb3VwID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtzZWxlY3RlZEdyb3VwLklkLCBhcHBUaWxlLklkLCBhcHBUaWxlLlRpdGxlLCBhcHBUaWxlLlN1YnRpdGxlXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnQ2hhbmdlQXBwVGlsZVNldHRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZUdyb3VwU2V0dGluZ3Moc2VsZWN0ZWRHcm91cCwgc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHNlbGVjdGVkR3JvdXApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzYXZlQXBwR3JvdXBPcmRlcnMoYXBwR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBPcmRlcnMgPSBhcHBHcm91cHMubWFwKChjKSA9PiBjLklkKTtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtncm91cE9yZGVyc10sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0NoYW5nZU9yZGVyQXBwVGlsZUdyb3VwcycsXG4gICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKCk7XG4gICAgfVxuXG4gICAgY3JlYXRlQXBwR3JvdXAodGl0bGU6IHN0cmluZyk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPE1ldGFvYmplY3REYXRhTW9kZWw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW3RpdGxlXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnQ3JlYXRlQXBwVGlsZUdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAobW86IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobW8pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKHRhcCgobW8pID0+IHRoaXMuYWRkQXBwR3JvdXAobW8pKSk7XG4gICAgfVxuXG4gICAgc2F2ZU9yZGVyQXBwVGlsZXMoXG4gICAgICAgIGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgICAgICBhcHBUaWxlczogbnVtYmVyW10sXG4gICAgICAgIGlzQWN0aW9uTGluayA9IGZhbHNlLFxuICAgICAgICBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQ6IHN0cmluZyA9ICcwJ1xuICAgICk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZCwgYXBwVGlsZXMsIGlzQWN0aW9uTGluaywgYXBwVGlsZUlkVHJhbnNmZXJlZElkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ0NoYW5nZU9yZGVyQXBwVGlsZXMnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoKSA9PiB7fSxcbiAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXBwVGlsZShhbGxBcHBzOiBNb0ZvclJlcG9ydE1vZGVsIHwgbnVsbCwgYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoIWFsbEFwcHMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZEFwcFRpbGUgPSB0aGlzLmZpbmRBcHBUaWxlV2l0aEtleShcbiAgICAgICAgICAgIGFsbEFwcHMsXG4gICAgICAgICAgICAnQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzLklkJyxcbiAgICAgICAgICAgIGFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzLklkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzZWxlY3RlZEFwcFRpbGUpIHtcbiAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5NZXJnZXIuRmFzdE1lcmdlKFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZS5BX0FwcF9Db21wb25lbnQuU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgYXBwVGlsZS5BX0FwcF9Db21wb25lbnQuU2V0dGluZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRTZXR0aW5ncyQubmV4dChzZWxlY3RlZEFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGFBcHBUaWxlU2V0dGluZyhzZWxlY3RlZEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBHcm91cFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgYWxsQXBwcz8uTW9EYXRhTGlzdC5mb3JFYWNoKChhcHBHcm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFwcEdyb3VwLklkID09PSBzZWxlY3RlZEdyb3VwLklkKSB7XG4gICAgICAgICAgICAgICAgYXBwR3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcgPSBhcHBHcm91cFNldHRpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoYWxsQXBwcyk7XG4gICAgfVxuXG4gICAgYWRkQXBwR3JvdXAobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgaWYgKGFsbEFwcHMpIHtcbiAgICAgICAgICAgIGFsbEFwcHMuTW9EYXRhTGlzdC5wdXNoKG1vKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UubmV4dChhbGxBcHBzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNpbmdsZVBpblRpbGVDaGFuZ2VkKGFwcFRpbGVJZCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5hcHBUaWxlR3JvdXBzO1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwV2l0aEFwcFRpbGVJZChhbGxBcHBzLCBhcHBUaWxlSWQpO1xuICAgICAgICBpZiAoZ3JvdXAgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtncm91cC5JZCwgYXBwVGlsZUlkXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnUmVtb3ZlQXBwVGlsZUZyb21UaWxlR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChzZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhncm91cCwgc2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcGluVGlsZUNoYW5nZWQoYXBwVGlsZUdyb3Vwc1BpbjogQXBwVGlsZUdyb3VwUGluW10sIGFwcDogTWV0YW9iamVjdERhdGFNb2RlbCwgY2FsbGJhY2spOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgY29uc3QgdmlzaWJsZSA9IGFwcFRpbGVHcm91cHNQaW4ubWFwKChjKSA9PiBjLnZpc2libGUpO1xuICAgICAgICBjb25zdCBncm91cENoYW5nZXMgPSBhcHBUaWxlR3JvdXBzUGluLm1hcChcbiAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgIG5ldyBCYXJzYUFwaS5Db21tb24uTWV0YU9iamVjdFdlYih7XG4gICAgICAgICAgICAgICAgICAgIElkOiBjLmFwcFRpbGVHcm91cC5JZCxcbiAgICAgICAgICAgICAgICAgICAgVHlwZURlZklkOiBhbGxBcHBzPy5UeXBlRGVmSWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2dyb3VwQ2hhbmdlcywgdmlzaWJsZSwgYXBwLklkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1RpbGVQaW5DaGFuZ2VkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGlsZVBpbkNoYW5nZShhcHBUaWxlR3JvdXBzUGluLCBhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhzZXR0aW5ncyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBzaG93IGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdGlsZVBpbkNoYW5nZShhcHBUaWxlR3JvdXBzUGluLCBhbGxBcHBzKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgYXBwVGlsZUdyb3VwUGluIG9mIGFwcFRpbGVHcm91cHNQaW4pIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEFwcEdyb3VwO1xuICAgICAgICAgICAgY29uc3QgYXBwR3JvdXBJZCA9IGFwcFRpbGVHcm91cFBpbi5hcHBUaWxlR3JvdXAuSWQ7XG4gICAgICAgICAgICBhbGxBcHBzPy5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYy5JZCA9PT0gYXBwR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFwcEdyb3VwID0gYztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3RlZEFwcEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQXBwR3JvdXAgPSBjLiRDaGlsZHJlbj8uZmluZCgoY2hpbGQpID0+IGNoaWxkLklkID09PSBhcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFwcEdyb3VwICYmIHNlbGVjdGVkQXBwR3JvdXAuJFRpbGVzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gbGV0IG1vRGF0YUxpc3QgPSBzZWxlY3RlZEFwcEdyb3VwLkFwcFRpbGVzLk1vRGF0YUxpc3Q7XG4gICAgICAgICAgICAgICAgLy8gaWYgKGFwcFRpbGVHcm91cHNbaV0udmlzaWJsZSlcbiAgICAgICAgICAgICAgICAvLyAgIHNlbGVjdGVkQXBwR3JvdXAuQXBwVGlsZXMuTW9EYXRhTGlzdCA9IFsuLi5tb0RhdGFMaXN0LCBzZXR0aW5nc1tpXV07XG4gICAgICAgICAgICAgICAgLy8gZWxzZVxuICAgICAgICAgICAgICAgIC8vICAgc2VsZWN0ZWRBcHBHcm91cC5BcHBUaWxlcy5Nb0RhdGFMaXN0ID0gbW9EYXRhTGlzdC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgLy8gICAgIChjKSA9PiBjLkFwcC5JZCAhPT0gYXBwLklkXG4gICAgICAgICAgICAgICAgLy8gICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwR3JvdXAsIGFsbEFwcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25leHRBbGxBcHBUaWxlR3JvdXBzKGFsbEFwcHMpO1xuICAgIH1cblxuICAgIGxvYWRTaGVsbGJhcigpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Qb3J0YWxJZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdMb2FkU2hlbGxiYXJCeVBvcnRhbElkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHNoZWxsYmFyOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGVsbGJhclNvdXJjZS5uZXh0KHNoZWxsYmFyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gdGhpcy5fcG9ydGFsU2VydmljZVxuICAgICAgICAvLyAgICAgLlJlcG9ydEV4ZWN1dGVQcm9taXNlKCdTaGVsbGJhcicpXG4gICAgICAgIC8vICAgICAudGhlbigobW9Gb3JSZXBvcnRNb2RlbCkgPT4gdGhpcy5zaGVsbGJhclNvdXJjZS5uZXh0KG1vRm9yUmVwb3J0TW9kZWwuTW9EYXRhTGlzdFswXSkpO1xuICAgIH1cblxuICAgIGxvYWRBbGxBcHBUaWxlR3JvdXBzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlXG4gICAgICAgICAgICAuUmVwb3J0RXhlY3V0ZSgnQWxsQXBwVGlsZUdyb3VwcycpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChhbGxBcHBzKSA9PiB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKSk7XG4gICAgfVxuICAgIF9zZXRUaWxlSW5mbyhhcHBUaWxlKTogdm9pZCB7XG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZSwgJ0NvbXBvbmVudC5TZXR0aW5ncy5UaWxlU2V0dGluZy5UaXRsZScsIG51bGwpO1xuICAgICAgICAgICAgYXBwVGlsZS5UaWxlVGl0bGUgPSAhYXBwVGlsZS5UaXRsZSA/IHRpdGxlIDogYXBwVGlsZS5UaXRsZTtcbiAgICAgICAgICAgIGNvbnN0IHN1YnRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZSwgJ0NvbXBvbmVudC5TZXR0aW5ncy5UaWxlU2V0dGluZy5TdWJ0aXRsZScsIG51bGwpO1xuICAgICAgICAgICAgYXBwVGlsZS5TdWJ0aXRsZSA9ICFhcHBUaWxlLlN1YnRpdGxlID8gc3VidGl0bGUgOiBhcHBUaWxlLlN1YnRpdGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VGlsZUdyb3VwcygpOiBNb0ZvclJlcG9ydE1vZGVsIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgc2V0RWRpdEhvbWUoZWRpdDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0aG9tZVNvdXJjZS5uZXh0KGVkaXQpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hbGxBcHBzTG9hZGVkKG1vRm9yUmVwb3J0TW9kZWw6IE1vRm9yUmVwb3J0TW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9Gb3JSZXBvcnRNb2RlbC5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVOYXZpZ2F0b3IoYyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRIb21lQXBwVGlsZUdyb3Vwcyhtb0ZvclJlcG9ydE1vZGVsLk1vRGF0YUxpc3QpO1xuICAgIH1cbiAgICBwcml2YXRlIF9sb2FkQXBwVGlsZXNPZkFwcFRpbGVHcm91cChzZWxlY3RlZEFwcFRpbGVncm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgYWxsQXBwczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcyk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2VsZWN0ZWRBcHBUaWxlZ3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc0J5QXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwVGlsZWdyb3VwLCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cFNldHRpbmcoc2VsZWN0ZWRBcHBUaWxlZ3JvdXAsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cChhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwR3JvdXAuSWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnTG9hZEFsbEFwcFRpbGVzQnlBcHBUaWxlR3JvdXAnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwVGlsZXM6IE1vRm9yUmVwb3J0TW9kZWwpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlc09mQXBwVGlsZUdyb3VwKGFwcEdyb3VwLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcFRpbGVzOiBNb0ZvclJlcG9ydE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcFRpbGVHcm91cHMpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZWdyb3VwID0geyAuLi5zZWxlY3RlZEFwcFRpbGVncm91cCwgJFRpbGVzTG9hZGVkOiB0cnVlIH07XG4gICAgICAgICAgICBhcHBUaWxlcy5Nb0RhdGFMaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LkNvbXBvbmVudCA9IGVsZW1lbnQuQV9BcHBfQ29tcG9uZW50ID8/IGVsZW1lbnQuQV9BcHBUaWxlX0FwcF9Db21wb25lbnQ7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5EeW5hbWljQ29tbWFuZCA9IGVsZW1lbnQuQV9BcHBfRHluYW1pY0NvbW1hbmQgPz8gZWxlbWVudC5BX0FwcFRpbGVfQXBwX0R5bmFtaWNDb21tYW5kO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuUHJlZGVmaW5lZCA9IGVsZW1lbnQuUHJlZGVmaW5lZCA/PyBlbGVtZW50LkFfQXBwVGlsZV9QcmVkZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBhcHB0aWxlR3JvdXBJbmRleCA9IHRoaXMuYXBwVGlsZUdyb3Vwcz8uTW9EYXRhTGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKGMpID0+IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLklkIHx8IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLiRQYXJlbnRJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZWdyb3VwLkFwcFRpbGVzID0gYXBwVGlsZXM7XG4gICAgICAgICAgICBjb25zdCB0aWxlR3JvdXAgPSB0aGlzLmFwcFRpbGVHcm91cHMuTW9EYXRhTGlzdFthcHB0aWxlR3JvdXBJbmRleF07XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXAuJFBhcmVudElkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRpbGVHcm91cC4kQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRPZlN1Ykdyb3VwID0gdGlsZUdyb3VwLiRDaGlsZHJlbi5maW5kSW5kZXgoKGMpID0+IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLklkKTtcbiAgICAgICAgICAgICAgICAgICAgdGlsZUdyb3VwLiRDaGlsZHJlbltpZE9mU3ViR3JvdXBdID0gc2VsZWN0ZWRBcHBUaWxlZ3JvdXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYXBwVGlsZUdyb3Vwcy5Nb0RhdGFMaXN0W2FwcHRpbGVHcm91cEluZGV4XSA9IHsgLi4udGlsZUdyb3VwIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwVGlsZUdyb3Vwcy5Nb0RhdGFMaXN0W2FwcHRpbGVHcm91cEluZGV4XSA9IHNlbGVjdGVkQXBwVGlsZWdyb3VwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2xvYWRBcHBUaWxlc0J5QXBwVGlsZUdyb3VwU2V0dGluZyhhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcFRpbGVHcm91cC5JZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdMb2FkQWxsQXBwVGlsZXNCeVVzZXJBcHBUaWxlR3JvdXBTZXR0aW5ncycsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChhcHBUaWxlczogTW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoYXBwVGlsZUdyb3VwLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbmV4dEFsbEFwcFRpbGVHcm91cHMobmV3QWxsQXBwczogTW9Gb3JSZXBvcnRNb2RlbCB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSBuZXdBbGxBcHBzID8/IHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KGFsbEFwcHMgPyB7IC4uLmFsbEFwcHMgfSA6IG51bGwpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRIb21lQXBwVGlsZUdyb3VwcyhhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBsZXQgbmV3QXBwR3JvdXBzID0gWy4uLmFwcEdyb3Vwc107XG4gICAgICAgIG5ld0FwcEdyb3VwcyA9IG5ld0FwcEdyb3Vwc1xuICAgICAgICAgICAgLmZpbHRlcigoYykgPT4gYy5WaXNpYmxlKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLm5hdmlnYXRvck9yZGVySXRlbSkgLSBOdW1iZXIoYi5uYXZpZ2F0b3JPcmRlckl0ZW0pKTtcbiAgICAgICAgdGhpcy5faG9tZUFwcFRpbGVHcm91cHNTb3VyY2UubmV4dChuZXdBcHBHcm91cHMpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zYXZlVXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5nczogVXNlclBvcnRhbFNldHRpbmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbbmV3IEJhcnNhQXBpLkNvbW1vbi5NZXRhT2JqZWN0V2ViKHVzZXJQb3J0YWxTZXR0aW5ncyldLFxuICAgICAgICAgICAgICAgIE1ldGhvZDogJ1NhdmVVc2VyUG9ydGFsU2V0dGluZ3MnLFxuICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVBcHBHcm91cFNldHRpbmcoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcEdyb3VwU2V0dGluZzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5hcHBUaWxlR3JvdXBzO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEFwcEdyb3VwID0gYWxsQXBwcz8uTW9EYXRhTGlzdC5maW5kKChjKSA9PiBjLklkID09PSBhcHBHcm91cC5JZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEFwcEdyb3VwICYmIGFsbEFwcHMpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwR3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcgPSBhcHBHcm91cFNldHRpbmc7XG4gICAgICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGZpbmRBcHBUaWxlV2l0aEtleShhbGxBcHBzOiBNb0ZvclJlcG9ydE1vZGVsLCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVGlsZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuUmVwbGFjZUFyYWJpY0NoYXJjaHRlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhbGxBcHBzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZFRpbGUgPSBhcHBHcm91cC5uYXZpZ2F0b3JUaWxlcy5maW5kKFxuICAgICAgICAgICAgICAgIChjKSA9PiBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjLCBrZXksIG51bGwpID09PSB2YWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFwcEdyb3VwLiRDaGlsZHJlbj8uZm9yRWFjaCgoc3ViR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlID0gc3ViR3JvdXAubmF2aWdhdG9yVGlsZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGMpID0+IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGMsIGtleSwgbnVsbCkgPT09IHZhbHVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkVGlsZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBmaW5kR3JvdXBXaXRoQXBwVGlsZUlkKGFsbEFwcHMsIGFwcFRpbGVJZDogc3RyaW5nKTogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwge1xuICAgICAgICBsZXQgc2VsZWN0ZWRHcm91cDtcblxuICAgICAgICBpZiAoIWFsbEFwcHMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGFsbEFwcHMuTW9EYXRhTGlzdC5mb3JFYWNoKChhcHBHcm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXBwR3JvdXAubmF2aWdhdG9yVGlsZXMuc29tZSgoYXBwVGlsZSkgPT4gYXBwVGlsZS5JZCA9PT0gYXBwVGlsZUlkKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXAgPSBhcHBHcm91cDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhcHBHcm91cC4kQ2hpbGRyZW4/LmZvckVhY2goKHN1Ykdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Ykdyb3VwLm5hdmlnYXRvclRpbGVzLnNvbWUoKGFwcFRpbGUpID0+IGFwcFRpbGUuSWQgPT09IGFwcFRpbGVJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cCA9IHN1Ykdyb3VwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRHcm91cDtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZmluZEdyb3VwV2l0aEFwcEdyb3VwSWQoYWxsQXBwcywgYXBwR3JvdXBJZDogc3RyaW5nKTogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwge1xuICAgICAgICBsZXQgc2VsZWN0ZWRHcm91cDtcblxuICAgICAgICBpZiAoIWFsbEFwcHMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGFsbEFwcHMuTW9EYXRhTGlzdC5mb3JFYWNoKChhcHBHcm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXBwR3JvdXAuSWQgPT09IGFwcEdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEdyb3VwID0gYXBwR3JvdXA7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXBwR3JvdXAuJENoaWxkcmVuPy5mb3JFYWNoKChzdWJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJHcm91cC5JZCA9PT0gYXBwR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEdyb3VwID0gc3ViR3JvdXA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEdyb3VwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVHcm91cFNldHRpbmdzKFxuICAgICAgICBhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgICAgIHNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWxcbiAgICApOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICAgICAgYXBwVGlsZUdyb3VwLlVzZXJBcHBUaWxlR3JvdXBTZXR0aW5nID0gc2V0dGluZztcblxuICAgICAgICBhcHBUaWxlR3JvdXAuQXBwVGlsZXMuTW9EYXRhTGlzdC5mb3JFYWNoKChlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleCA9IHNldHRpbmcuVXNlckFwcFRpbGVzU2V0dGluZy5Nb0RhdGFMaXN0LmZpbmQoKGMpID0+IGMuSWQgPT09IGUuSWQpO1xuICAgICAgICAgICAgaWYgKGV4KSB7XG4gICAgICAgICAgICAgICAgYXBwVGlsZUdyb3VwLkFwcFRpbGVzLk1vRGF0YUxpc3RbaV0gPSB7IC4uLmFwcFRpbGVHcm91cC5BcHBUaWxlcy5Nb0RhdGFMaXN0W2ldLCAuLi5leCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZU5hdmlnYXRvcihhcHBUaWxlR3JvdXApO1xuICAgICAgICAvLyB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcygpO1xuICAgICAgICByZXR1cm4gYXBwVGlsZUdyb3VwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVOYXZpZ2F0b3IoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGFwcFRpbGVHcm91cC4kVGlsZVNldHRpbmdDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGFwcFRpbGVHcm91cC4kRGlzYWJsZWRwaW4gPSBmYWxzZTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAsXG4gICAgICAgICAgICAnVXNlckFwcFRpbGVHcm91cFNldHRpbmcuVGl0bGUnLFxuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLlRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9XG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgPT09ICcnID8gYXBwVGlsZUdyb3VwLlRpdGxlIDogYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlO1xuICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgPSB0aGlzLl9iYmJUcmFuc2xhdGVQaXBlLnRyYW5zZm9ybShhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUpO1xuICAgICAgICBjb25zdCBvcmRlckl0ZW0gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShhcHBUaWxlR3JvdXAsICdVc2VyQXBwVGlsZUdyb3VwU2V0dGluZy5PcmRlckl0ZW0nLCBudWxsKTtcbiAgICAgICAgaWYgKG9yZGVySXRlbSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvck9yZGVySXRlbSA9IG9yZGVySXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JPcmRlckl0ZW0gPSBhcHBUaWxlR3JvdXAuT3JkZXJJdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGFwcFRpbGVHcm91cCwgJ1VzZXJBcHBUaWxlR3JvdXBTZXR0aW5nLlZpc2libGUnLCBudWxsKTtcbiAgICAgICAgaWYgKHZpc2libGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JWaXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JWaXNpYmxlID0gYXBwVGlsZUdyb3VwLlZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBUaWxlcyA9IGFwcFRpbGVHcm91cC5BcHBUaWxlcz8uTW9EYXRhTGlzdCA/PyBbXTtcblxuICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGlsZXMgPSBhcHBUaWxlc1xuICAgICAgICAgICAgLmZpbHRlcigoYykgPT4gYy5WaXNpYmxlICYmICFjLklzQWN0aW9uTGluaylcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYS5PcmRlckl0ZW0pIC0gTnVtYmVyKGIuT3JkZXJJdGVtKSk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JBY3Rpb25MaW5rcyA9IGFwcFRpbGVzXG4gICAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLlZpc2libGUgJiYgYy5Jc0FjdGlvbkxpbmspXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gTnVtYmVyKGEuT3JkZXJJdGVtQWN0aW9uTGluaykgLSBOdW1iZXIoYi5PcmRlckl0ZW1BY3Rpb25MaW5rKSk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcy5mb3JFYWNoKChhcHBUaWxlKSA9PiB0aGlzLl9zZXRUaWxlSW5mbyhhcHBUaWxlKSk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JBY3Rpb25MaW5rcy5mb3JFYWNoKChhcHBUaWxlKSA9PiB0aGlzLl9zZXRUaWxlSW5mbyhhcHBUaWxlKSk7XG5cbiAgICAgICAgYXBwVGlsZUdyb3VwLiRDaGlsZHJlbj8uZm9yRWFjaCgoc3ViQXBwVGlsZUdyb3VwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlTmF2aWdhdG9yKHN1YkFwcFRpbGVHcm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmludGVyZmFjZSBQaW5UaWxlSW5mbyB7XG4gICAgZ3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgdmlzaWJsZTogYm9vbGVhbltdO1xuICAgIHRpbGVJZDogc3RyaW5nO1xufVxuIl19
|
|
614
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakgsT0FBTyxFQUFFLFFBQVEsRUFBMEUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQU14SCxNQUFNLE9BQU8sWUFBWTtJQWlCckIsWUFDWSxjQUE2QixFQUM3QixXQUF1QixFQUN2QixpQkFBbUM7UUFGbkMsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQWhCL0MsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQU01QyxnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEMsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWUsQ0FBQztRQUM1Qyx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBMEIsSUFBSSxDQUFDLENBQUM7UUFDMUUsMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ2pFLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEQsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVB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LE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNuRixZQUFZLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdFLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVuRixZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBM3FCUSxZQUFZO21IQUFaLFlBQVksY0FGVCxNQUFNOzs0RkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29uY2F0TWFwLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBCYXJzYUFwaSwgQmJiVHJhbnNsYXRlUGlwZSwgTWV0YW9iamVjdERhdGFNb2RlbCwgTW9Gb3JSZXBvcnRNb2RlbCwgUG9ydGFsU2VydmljZSB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IEFwcFRpbGVHcm91cFBpbiwgVXNlclBvcnRhbFNldHRpbmdzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRpbGVzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgZGV2aWNlU2l6ZSQ6IE9ic2VydmFibGU8J3MnIHwgJ20nIHwgJ2wnIHwgJ3hsJz47XG4gICAgaG9tZUFwcFRpbGVHcm91cHMkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWxbXT47XG4gICAgcGluVGlsZXMkOiBPYnNlcnZhYmxlPFBpblRpbGVJbmZvIHwgbnVsbD47XG4gICAgc2hlbGxiYXJTb3VyY2UgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIHNoZWxsYmFyJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPjtcbiAgICBhcHBUaWxlR3JvdXBzJDogT2JzZXJ2YWJsZTxNb0ZvclJlcG9ydE1vZGVsIHwgbnVsbD47XG4gICAgZWRpdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgdXNlclByb2ZpbGVJbWFnZVVybCQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICBwcml2YXRlIF9PbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwcml2YXRlIF9ob21lQXBwVGlsZUdyb3Vwc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbFtdPihbXSk7XG4gICAgcHJpdmF0ZSBwaW5UaWxlc1NvdXJjZSA9IG5ldyBTdWJqZWN0PFBpblRpbGVJbmZvPigpO1xuICAgIHByaXZhdGUgX2FwcFRpbGVHcm91cHNTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIF91c2VyUHJvZmlsZUltYWdlVXJsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBfZWRpdGhvbWVTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9jb21wb25lbnRTZXR0aW5ncyQgPSBuZXcgU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9ydGxTZXJ2aWNlOiBSdGxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGVQaXBlOiBCYmJUcmFuc2xhdGVQaXBlXG4gICAgKSB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlRpbGVzU2VydmljZSA9IHRoaXM7XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVJbWFnZVVybCQgPSB0aGlzLl91c2VyUHJvZmlsZUltYWdlVXJsJC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5ob21lQXBwVGlsZUdyb3VwcyQgPSB0aGlzLl9ob21lQXBwVGlsZUdyb3Vwc1NvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5waW5UaWxlcyQgPSB0aGlzLnBpblRpbGVzU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc3RhcnRXaXRoKG51bGwpKTtcbiAgICAgICAgdGhpcy5zaGVsbGJhclNvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgICAgIHRoaXMuc2hlbGxiYXIkID0gdGhpcy5zaGVsbGJhclNvdXJjZS5hc09ic2VydmFibGUoKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgICAgICAgdGhpcy5hcHBUaWxlR3JvdXBzJCA9IHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UucGlwZShzaGFyZVJlcGxheSgxKSk7XG5cbiAgICAgICAgdGhpcy5lZGl0JCA9IHRoaXMuX2VkaXRob21lU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUodGFrZVVudGlsKHRoaXMuX09uRGVzdHJveSQpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQ7XG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLm5leHQoQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Jc1J0bCk7XG4gICAgICAgIHRoaXMubG9hZEFsbEFwcFRpbGVHcm91cHMoKTtcbiAgICAgICAgdGhpcy5hcHBUaWxlR3JvdXBzJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChtb0ZvclJlcG9ydE1vZGVsKSA9PiBtb0ZvclJlcG9ydE1vZGVsICE9PSBudWxsKSxcbiAgICAgICAgICAgICAgICB0YXAoKG1vRm9yUmVwb3J0TW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vRm9yUmVwb3J0TW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsbEFwcHNMb2FkZWQobW9Gb3JSZXBvcnRNb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICBCYXJzYUFwaS5VbC5BcHBsaWNhdGlvbkN0cmxyLm9uKCdHbG9iYWxSZWZyZXNoVGlsZScsIHRoaXMuX29uQXBwbGljYXRpb25fR2xvYmFsUmVmcmVzaFRpbGUuYmluZCh0aGlzKSk7XG4gICAgfVxuICAgIGdldCBjb21wb25lbnRTZXR0aW5ncyQoKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRTZXR0aW5ncyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIGdldCBhcHBUaWxlR3JvdXBzKCk6IE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX09uRGVzdHJveSQubmV4dCgpO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX29uQXBwbGljYXRpb25fR2xvYmFsUmVmcmVzaFRpbGUoc2VuZGVyLCBhcHBUaWxlc1RpdGxlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCBhcHBUaWxlczogTWV0YW9iamVjdERhdGFNb2RlbFtdID0gW107XG4gICAgICAgIGlmIChhbGxBcHBzKSB7XG4gICAgICAgICAgICBhcHBUaWxlc1RpdGxlLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFRpbGUgPSB0aGlzLmZpbmRBcHBUaWxlV2l0aEtleShhbGxBcHBzLCAnQV9BcHBfQXBwS2V5JywgYyk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGlsZSkge1xuICAgICAgICAgICAgICAgICAgICBhcHBUaWxlcy5wdXNoKHNlbGVjdGVkVGlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlRnJvbU5vdGlmaWNhdGlvbihhbGxBcHBzLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoYWxsQXBwcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZUFwcFRpbGVGcm9tTm90aWZpY2F0aW9uKGFsbEFwcHM6IE1vRm9yUmVwb3J0TW9kZWwsIGFwcFRpbGVzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhcHBUaWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwVGlsZXMubWFwKChjKSA9PiAoYy5BcHBUaWxlPy5JZCA/IGMuQXBwVGlsZT8uSWQgOiBjLklkKSldLFxuICAgICAgICAgICAgTWV0aG9kOiAnUmVmcmVzaEFwcFRpbGVzJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHJlc3VsdDogTW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHRoaXMudXBkYXRlQXBwVGlsZShhbGxBcHBzLCBjKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KHsgLi4uYWxsQXBwcyB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkVXNlclByb2ZpbGVJbWFnZShyZXBJZFByb2ZpbGVJbWFnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghcmVwSWRQcm9maWxlSW1hZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtyZXBJZFByb2ZpbGVJbWFnZV0sXG4gICAgICAgICAgICBNZXRob2Q6ICdCYXJzYVBvcnRhbEdldFByb2ZpbGVJbWFnZScsXG4gICAgICAgICAgICBTdWNjZXNzRm46ICh1cmw6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VzZXJQcm9maWxlSW1hZ2VVcmwkLm5leHQodXJsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkQXBwVGlsZUdyb3VwcyhhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhcHBUaWxlR3JvdXAgfHwgYXBwVGlsZUdyb3VwLiRUaWxlc0xvYWRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGlmIChhbGxBcHBzKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEFwcFRpbGVncm91cCA9IGFsbEFwcHM/Lk1vRGF0YUxpc3QuZmluZCgoYykgPT4gYy5JZCA9PT0gYXBwVGlsZUdyb3VwLklkKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFwcFRpbGVncm91cCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwVGlsZWdyb3VwLCBhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEFwcFRpbGVncm91cC4kQ2hpbGRyZW4/LmZvckVhY2goKHN1Ykdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHN1Ykdyb3VwLCBhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzYXZlVGlsZXNTdGFja0NvbnRlbnQodGlsZXNTdGFja0NvbnRlbnQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgdXNlclBvcnRhbFNldHRpbmdzID0gdGhpcy5fcG9ydGFsU2VydmljZS51c2VyUG9ydGFsU2V0dGluZ3NbJ1VzZXJQb3J0YWxTZXR0aW5ncyddO1xuICAgICAgICBpZiAodXNlclBvcnRhbFNldHRpbmdzID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB1c2VyUG9ydGFsU2V0dGluZ3MuVGlsZXNTdGFja0NvbnRlbnQgPSB0aWxlc1N0YWNrQ29udGVudDtcbiAgICAgICAgdXNlclBvcnRhbFNldHRpbmdzLiRTdGF0ZSA9ICdNb2RpZmllZCc7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYXZlVXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5ncykudGhlbigoKSA9PlxuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxvYWRVc2VyUG9ydGFsU2V0dGluZ3MoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcnRhbFNlcnZpY2UuZ2V0RGF0YSgnVXNlclBvcnRhbFNldHRpbmcnKS5waXBlKFxuICAgICAgICAgICAgY29uY2F0TWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRGcm9tU2VydmVyVXNlclBvcnRhbFNldHRpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICByZWZyZXNoVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwVGlsZS5JZF0sXG4gICAgICAgICAgICAgICAgTWV0aG9kOiAnUmVmcmVzaFRpbGUnLFxuICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKG5ld0FwcFRpbGU6IE1vRm9yUmVwb3J0TW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0FwcFRpbGUuTW9EYXRhTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG5ld0FwcFRpbGUuTW9EYXRhTGlzdFswXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGByZWZyZXNoIHRpbGUgbm90IGZvdW5kIGFwcHRpbGUgd2lkdGggdGl0bGU6ICR7YXBwVGlsZS5UaXRsZX1gKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkRnJvbVNlcnZlclVzZXJQb3J0YWxTZXR0aW5nKCk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPFVzZXJQb3J0YWxTZXR0aW5ncz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnR2V0VXNlclBvcnRhbFNldHRpbmdzJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAodXNlclBvcnRhbFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uuc2V0RGF0YSgnVXNlclBvcnRhbFNldHRpbmcnLCB1c2VyUG9ydGFsU2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHVzZXJQb3J0YWxTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRvZ2dsZUFwcEdyb3VwU2V0dGluZ1Zpc2libGUoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ1RvZ2dsZUFwcFRpbGVHcm91cFNldHRpbmdWaXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwR3JvdXBTZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhhcHBHcm91cCwgYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcCgoYXBwR3JvdXBTZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwR3JvdXBTZXR0aW5nKGFwcEdyb3VwLCBhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmVzZXRBcHBHcm91cFNldHRpbmcoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ1Jlc2V0QXBwVGlsZUdyb3VwU2V0dGluZ1Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChhcHBHcm91cFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcFRpbGVHcm91cFNldHRpbmdzKGFwcEdyb3VwLCBhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhcHBHcm91cFNldHRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBHcm91cFNldHRpbmcoYXBwR3JvdXAsIGFwcEdyb3VwU2V0dGluZyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZUFwcEdyb3VwKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcEdyb3VwLklkXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnRGVsZXRlQXBwR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwR3JvdXAuSWQpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhcHBHcm91cElkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgICAgICAgICBpZiAoYWxsQXBwcykge1xuICAgICAgICAgICAgICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QgPSBhbGxBcHBzLk1vRGF0YUxpc3QuZmlsdGVyKChjKSA9PiBjLklkICE9PSBhcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KGFsbEFwcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIGNoYW5nZUFwcFRpbGVTZXR0aW5nKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLmFwcFRpbGVHcm91cHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXAgPSB0aGlzLmZpbmRHcm91cFdpdGhBcHBUaWxlSWQoYWxsQXBwcywgYXBwVGlsZS5JZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEdyb3VwID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtzZWxlY3RlZEdyb3VwLklkLCBhcHBUaWxlLklkLCBhcHBUaWxlLlRpdGxlLCBhcHBUaWxlLlN1YnRpdGxlXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnQ2hhbmdlQXBwVGlsZVNldHRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZUdyb3VwU2V0dGluZ3Moc2VsZWN0ZWRHcm91cCwgc2V0dGluZ3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHNlbGVjdGVkR3JvdXApO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzYXZlQXBwR3JvdXBPcmRlcnMoYXBwR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgZ3JvdXBPcmRlcnMgPSBhcHBHcm91cHMubWFwKChjKSA9PiBjLklkKTtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtncm91cE9yZGVyc10sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0NoYW5nZU9yZGVyQXBwVGlsZUdyb3VwcycsXG4gICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKCk7XG4gICAgfVxuXG4gICAgY3JlYXRlQXBwR3JvdXAodGl0bGU6IHN0cmluZyk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPE1ldGFvYmplY3REYXRhTW9kZWw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW3RpdGxlXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnQ3JlYXRlQXBwVGlsZUdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAobW86IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobW8pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKHRhcCgobW8pID0+IHRoaXMuYWRkQXBwR3JvdXAobW8pKSk7XG4gICAgfVxuXG4gICAgc2F2ZU9yZGVyQXBwVGlsZXMoXG4gICAgICAgIGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgICAgICBhcHBUaWxlczogbnVtYmVyW10sXG4gICAgICAgIGlzQWN0aW9uTGluayA9IGZhbHNlLFxuICAgICAgICBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQ6IHN0cmluZyA9ICcwJ1xuICAgICk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZCwgYXBwVGlsZXMsIGlzQWN0aW9uTGluaywgYXBwVGlsZUlkVHJhbnNmZXJlZElkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ0NoYW5nZU9yZGVyQXBwVGlsZXMnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoKSA9PiB7fSxcbiAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXBwVGlsZShhbGxBcHBzOiBNb0ZvclJlcG9ydE1vZGVsIHwgbnVsbCwgYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoIWFsbEFwcHMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZEFwcFRpbGUgPSB0aGlzLmZpbmRBcHBUaWxlV2l0aEtleShcbiAgICAgICAgICAgIGFsbEFwcHMsXG4gICAgICAgICAgICAnQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzLklkJyxcbiAgICAgICAgICAgIGFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzLklkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzZWxlY3RlZEFwcFRpbGUpIHtcbiAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5NZXJnZXIuRmFzdE1lcmdlKFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZS5BX0FwcF9Db21wb25lbnQuU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgYXBwVGlsZS5BX0FwcF9Db21wb25lbnQuU2V0dGluZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRTZXR0aW5ncyQubmV4dChzZWxlY3RlZEFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGFBcHBUaWxlU2V0dGluZyhzZWxlY3RlZEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBHcm91cFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgYWxsQXBwcz8uTW9EYXRhTGlzdC5mb3JFYWNoKChhcHBHcm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFwcEdyb3VwLklkID09PSBzZWxlY3RlZEdyb3VwLklkKSB7XG4gICAgICAgICAgICAgICAgYXBwR3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcgPSBhcHBHcm91cFNldHRpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoYWxsQXBwcyk7XG4gICAgfVxuXG4gICAgYWRkQXBwR3JvdXAobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgaWYgKGFsbEFwcHMpIHtcbiAgICAgICAgICAgIGFsbEFwcHMuTW9EYXRhTGlzdC5wdXNoKG1vKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UubmV4dChhbGxBcHBzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNpbmdsZVBpblRpbGVDaGFuZ2VkKGFwcFRpbGVJZCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5hcHBUaWxlR3JvdXBzO1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwV2l0aEFwcFRpbGVJZChhbGxBcHBzLCBhcHBUaWxlSWQpO1xuICAgICAgICBpZiAoZ3JvdXAgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtncm91cC5JZCwgYXBwVGlsZUlkXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnUmVtb3ZlQXBwVGlsZUZyb21UaWxlR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChzZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhncm91cCwgc2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcGluVGlsZUNoYW5nZWQoYXBwVGlsZUdyb3Vwc1BpbjogQXBwVGlsZUdyb3VwUGluW10sIGFwcDogTWV0YW9iamVjdERhdGFNb2RlbCwgY2FsbGJhY2spOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgY29uc3QgdmlzaWJsZSA9IGFwcFRpbGVHcm91cHNQaW4ubWFwKChjKSA9PiBjLnZpc2libGUpO1xuICAgICAgICBjb25zdCBncm91cENoYW5nZXMgPSBhcHBUaWxlR3JvdXBzUGluLm1hcChcbiAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgIG5ldyBCYXJzYUFwaS5Db21tb24uTWV0YU9iamVjdFdlYih7XG4gICAgICAgICAgICAgICAgICAgIElkOiBjLmFwcFRpbGVHcm91cC5JZCxcbiAgICAgICAgICAgICAgICAgICAgVHlwZURlZklkOiBhbGxBcHBzPy5UeXBlRGVmSWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2dyb3VwQ2hhbmdlcywgdmlzaWJsZSwgYXBwLklkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1RpbGVQaW5DaGFuZ2VkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGlsZVBpbkNoYW5nZShhcHBUaWxlR3JvdXBzUGluLCBhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhzZXR0aW5ncyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBzaG93IGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdGlsZVBpbkNoYW5nZShhcHBUaWxlR3JvdXBzUGluLCBhbGxBcHBzKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgYXBwVGlsZUdyb3VwUGluIG9mIGFwcFRpbGVHcm91cHNQaW4pIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEFwcEdyb3VwO1xuICAgICAgICAgICAgY29uc3QgYXBwR3JvdXBJZCA9IGFwcFRpbGVHcm91cFBpbi5hcHBUaWxlR3JvdXAuSWQ7XG4gICAgICAgICAgICBhbGxBcHBzPy5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYy5JZCA9PT0gYXBwR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFwcEdyb3VwID0gYztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3RlZEFwcEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQXBwR3JvdXAgPSBjLiRDaGlsZHJlbj8uZmluZCgoY2hpbGQpID0+IGNoaWxkLklkID09PSBhcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFwcEdyb3VwICYmIHNlbGVjdGVkQXBwR3JvdXAuJFRpbGVzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gbGV0IG1vRGF0YUxpc3QgPSBzZWxlY3RlZEFwcEdyb3VwLkFwcFRpbGVzLk1vRGF0YUxpc3Q7XG4gICAgICAgICAgICAgICAgLy8gaWYgKGFwcFRpbGVHcm91cHNbaV0udmlzaWJsZSlcbiAgICAgICAgICAgICAgICAvLyAgIHNlbGVjdGVkQXBwR3JvdXAuQXBwVGlsZXMuTW9EYXRhTGlzdCA9IFsuLi5tb0RhdGFMaXN0LCBzZXR0aW5nc1tpXV07XG4gICAgICAgICAgICAgICAgLy8gZWxzZVxuICAgICAgICAgICAgICAgIC8vICAgc2VsZWN0ZWRBcHBHcm91cC5BcHBUaWxlcy5Nb0RhdGFMaXN0ID0gbW9EYXRhTGlzdC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgLy8gICAgIChjKSA9PiBjLkFwcC5JZCAhPT0gYXBwLklkXG4gICAgICAgICAgICAgICAgLy8gICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwR3JvdXAsIGFsbEFwcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25leHRBbGxBcHBUaWxlR3JvdXBzKGFsbEFwcHMpO1xuICAgIH1cblxuICAgIGxvYWRTaGVsbGJhcigpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Qb3J0YWxJZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdMb2FkU2hlbGxiYXJCeVBvcnRhbElkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHNoZWxsYmFyOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGVsbGJhclNvdXJjZS5uZXh0KHNoZWxsYmFyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gdGhpcy5fcG9ydGFsU2VydmljZVxuICAgICAgICAvLyAgICAgLlJlcG9ydEV4ZWN1dGVQcm9taXNlKCdTaGVsbGJhcicpXG4gICAgICAgIC8vICAgICAudGhlbigobW9Gb3JSZXBvcnRNb2RlbCkgPT4gdGhpcy5zaGVsbGJhclNvdXJjZS5uZXh0KG1vRm9yUmVwb3J0TW9kZWwuTW9EYXRhTGlzdFswXSkpO1xuICAgIH1cblxuICAgIGxvYWRBbGxBcHBUaWxlR3JvdXBzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlXG4gICAgICAgICAgICAuUmVwb3J0RXhlY3V0ZSgnQWxsQXBwVGlsZUdyb3VwcycpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChhbGxBcHBzKSA9PiB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKSk7XG4gICAgfVxuICAgIF9zZXRUaWxlSW5mbyhhcHBUaWxlKTogdm9pZCB7XG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZSwgJ0NvbXBvbmVudC5TZXR0aW5ncy5UaWxlU2V0dGluZy5UaXRsZScsIG51bGwpO1xuICAgICAgICAgICAgYXBwVGlsZS5UaWxlVGl0bGUgPSAhYXBwVGlsZS5UaXRsZSA/IHRpdGxlIDogYXBwVGlsZS5UaXRsZTtcbiAgICAgICAgICAgIGNvbnN0IHN1YnRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZSwgJ0NvbXBvbmVudC5TZXR0aW5ncy5UaWxlU2V0dGluZy5TdWJ0aXRsZScsIG51bGwpO1xuICAgICAgICAgICAgYXBwVGlsZS5TdWJ0aXRsZSA9ICFhcHBUaWxlLlN1YnRpdGxlID8gc3VidGl0bGUgOiBhcHBUaWxlLlN1YnRpdGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VGlsZUdyb3VwcygpOiBNb0ZvclJlcG9ydE1vZGVsIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgc2V0RWRpdEhvbWUoZWRpdDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0aG9tZVNvdXJjZS5uZXh0KGVkaXQpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hbGxBcHBzTG9hZGVkKG1vRm9yUmVwb3J0TW9kZWw6IE1vRm9yUmVwb3J0TW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9Gb3JSZXBvcnRNb2RlbC5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVOYXZpZ2F0b3IoYyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRIb21lQXBwVGlsZUdyb3Vwcyhtb0ZvclJlcG9ydE1vZGVsLk1vRGF0YUxpc3QpO1xuICAgIH1cbiAgICBwcml2YXRlIF9sb2FkQXBwVGlsZXNPZkFwcFRpbGVHcm91cChzZWxlY3RlZEFwcFRpbGVncm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgYWxsQXBwczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcyk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2VsZWN0ZWRBcHBUaWxlZ3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc0J5QXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwVGlsZWdyb3VwLCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cFNldHRpbmcoc2VsZWN0ZWRBcHBUaWxlZ3JvdXAsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cChhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwR3JvdXAuSWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnTG9hZEFsbEFwcFRpbGVzQnlBcHBUaWxlR3JvdXAnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwVGlsZXM6IE1vRm9yUmVwb3J0TW9kZWwpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlc09mQXBwVGlsZUdyb3VwKGFwcEdyb3VwLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcFRpbGVzOiBNb0ZvclJlcG9ydE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcFRpbGVHcm91cHMpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZWdyb3VwID0geyAuLi5zZWxlY3RlZEFwcFRpbGVncm91cCwgJFRpbGVzTG9hZGVkOiB0cnVlIH07XG4gICAgICAgICAgICBhcHBUaWxlcy5Nb0RhdGFMaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LkNvbXBvbmVudCA9IGVsZW1lbnQuQV9BcHBfQ29tcG9uZW50ID8/IGVsZW1lbnQuQV9BcHBUaWxlX0FwcF9Db21wb25lbnQ7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5EeW5hbWljQ29tbWFuZCA9IGVsZW1lbnQuQV9BcHBfRHluYW1pY0NvbW1hbmQgPz8gZWxlbWVudC5BX0FwcFRpbGVfQXBwX0R5bmFtaWNDb21tYW5kO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuUHJlZGVmaW5lZCA9IGVsZW1lbnQuUHJlZGVmaW5lZCA/PyBlbGVtZW50LkFfQXBwVGlsZV9QcmVkZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBhcHB0aWxlR3JvdXBJbmRleCA9IHRoaXMuYXBwVGlsZUdyb3Vwcz8uTW9EYXRhTGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKGMpID0+IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLklkIHx8IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLiRQYXJlbnRJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZWdyb3VwLkFwcFRpbGVzID0gYXBwVGlsZXM7XG4gICAgICAgICAgICBjb25zdCB0aWxlR3JvdXAgPSB0aGlzLmFwcFRpbGVHcm91cHMuTW9EYXRhTGlzdFthcHB0aWxlR3JvdXBJbmRleF07XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXAuJFBhcmVudElkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRpbGVHcm91cC4kQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRPZlN1Ykdyb3VwID0gdGlsZUdyb3VwLiRDaGlsZHJlbi5maW5kSW5kZXgoKGMpID0+IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLklkKTtcbiAgICAgICAgICAgICAgICAgICAgdGlsZUdyb3VwLiRDaGlsZHJlbltpZE9mU3ViR3JvdXBdID0gc2VsZWN0ZWRBcHBUaWxlZ3JvdXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYXBwVGlsZUdyb3Vwcy5Nb0RhdGFMaXN0W2FwcHRpbGVHcm91cEluZGV4XSA9IHsgLi4udGlsZUdyb3VwIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwVGlsZUdyb3Vwcy5Nb0RhdGFMaXN0W2FwcHRpbGVHcm91cEluZGV4XSA9IHNlbGVjdGVkQXBwVGlsZWdyb3VwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2xvYWRBcHBUaWxlc0J5QXBwVGlsZUdyb3VwU2V0dGluZyhhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcFRpbGVHcm91cC5JZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdMb2FkQWxsQXBwVGlsZXNCeVVzZXJBcHBUaWxlR3JvdXBTZXR0aW5ncycsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChhcHBUaWxlczogTW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoYXBwVGlsZUdyb3VwLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbmV4dEFsbEFwcFRpbGVHcm91cHMobmV3QWxsQXBwczogTW9Gb3JSZXBvcnRNb2RlbCB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSBuZXdBbGxBcHBzID8/IHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KGFsbEFwcHMgPyB7IC4uLmFsbEFwcHMgfSA6IG51bGwpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRIb21lQXBwVGlsZUdyb3VwcyhhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBsZXQgbmV3QXBwR3JvdXBzID0gWy4uLmFwcEdyb3Vwc107XG4gICAgICAgIG5ld0FwcEdyb3VwcyA9IG5ld0FwcEdyb3Vwc1xuICAgICAgICAgICAgLmZpbHRlcigoYykgPT4gYy5WaXNpYmxlKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLm5hdmlnYXRvck9yZGVySXRlbSkgLSBOdW1iZXIoYi5uYXZpZ2F0b3JPcmRlckl0ZW0pKTtcbiAgICAgICAgdGhpcy5faG9tZUFwcFRpbGVHcm91cHNTb3VyY2UubmV4dChuZXdBcHBHcm91cHMpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zYXZlVXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5nczogVXNlclBvcnRhbFNldHRpbmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbbmV3IEJhcnNhQXBpLkNvbW1vbi5NZXRhT2JqZWN0V2ViKHVzZXJQb3J0YWxTZXR0aW5ncyldLFxuICAgICAgICAgICAgICAgIE1ldGhvZDogJ1NhdmVVc2VyUG9ydGFsU2V0dGluZ3MnLFxuICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVBcHBHcm91cFNldHRpbmcoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcEdyb3VwU2V0dGluZzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5hcHBUaWxlR3JvdXBzO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEFwcEdyb3VwID0gYWxsQXBwcz8uTW9EYXRhTGlzdC5maW5kKChjKSA9PiBjLklkID09PSBhcHBHcm91cC5JZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEFwcEdyb3VwICYmIGFsbEFwcHMpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwR3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcgPSBhcHBHcm91cFNldHRpbmc7XG4gICAgICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGZpbmRBcHBUaWxlV2l0aEtleShhbGxBcHBzOiBNb0ZvclJlcG9ydE1vZGVsLCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVGlsZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuUmVwbGFjZUFyYWJpY0NoYXJjaHRlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhbGxBcHBzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZFRpbGUgPSBhcHBHcm91cC5uYXZpZ2F0b3JUaWxlcy5maW5kKFxuICAgICAgICAgICAgICAgIChjKSA9PiBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjLCBrZXksIG51bGwpID09PSB2YWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFwcEdyb3VwLiRDaGlsZHJlbj8uZm9yRWFjaCgoc3ViR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlID0gc3ViR3JvdXAubmF2aWdhdG9yVGlsZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGMpID0+IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGMsIGtleSwgbnVsbCkgPT09IHZhbHVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkVGlsZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBmaW5kR3JvdXBXaXRoQXBwVGlsZUlkKGFsbEFwcHMsIGFwcFRpbGVJZDogc3RyaW5nKTogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwge1xuICAgICAgICBsZXQgc2VsZWN0ZWRHcm91cDtcblxuICAgICAgICBpZiAoIWFsbEFwcHMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGFsbEFwcHMuTW9EYXRhTGlzdC5mb3JFYWNoKChhcHBHcm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXBwR3JvdXAubmF2aWdhdG9yVGlsZXMuc29tZSgoYXBwVGlsZSkgPT4gYXBwVGlsZS5JZCA9PT0gYXBwVGlsZUlkKSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXAgPSBhcHBHcm91cDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhcHBHcm91cC4kQ2hpbGRyZW4/LmZvckVhY2goKHN1Ykdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN1Ykdyb3VwLm5hdmlnYXRvclRpbGVzLnNvbWUoKGFwcFRpbGUpID0+IGFwcFRpbGUuSWQgPT09IGFwcFRpbGVJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cCA9IHN1Ykdyb3VwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRHcm91cDtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZmluZEdyb3VwV2l0aEFwcEdyb3VwSWQoYWxsQXBwcywgYXBwR3JvdXBJZDogc3RyaW5nKTogTWV0YW9iamVjdERhdGFNb2RlbCB8IG51bGwge1xuICAgICAgICBsZXQgc2VsZWN0ZWRHcm91cDtcblxuICAgICAgICBpZiAoIWFsbEFwcHMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGFsbEFwcHMuTW9EYXRhTGlzdC5mb3JFYWNoKChhcHBHcm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkR3JvdXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYXBwR3JvdXAuSWQgPT09IGFwcEdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEdyb3VwID0gYXBwR3JvdXA7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXBwR3JvdXAuJENoaWxkcmVuPy5mb3JFYWNoKChzdWJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJHcm91cC5JZCA9PT0gYXBwR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEdyb3VwID0gc3ViR3JvdXA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZEdyb3VwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVHcm91cFNldHRpbmdzKFxuICAgICAgICBhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgICAgIHNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWxcbiAgICApOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHtcbiAgICAgICAgYXBwVGlsZUdyb3VwLlVzZXJBcHBUaWxlR3JvdXBTZXR0aW5nID0gc2V0dGluZztcblxuICAgICAgICBhcHBUaWxlR3JvdXAuQXBwVGlsZXMuTW9EYXRhTGlzdC5mb3JFYWNoKChlLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleCA9IHNldHRpbmcuVXNlckFwcFRpbGVzU2V0dGluZy5Nb0RhdGFMaXN0LmZpbmQoKGMpID0+IGMuSWQgPT09IGUuSWQpO1xuICAgICAgICAgICAgaWYgKGV4KSB7XG4gICAgICAgICAgICAgICAgYXBwVGlsZUdyb3VwLkFwcFRpbGVzLk1vRGF0YUxpc3RbaV0gPSB7IC4uLmFwcFRpbGVHcm91cC5BcHBUaWxlcy5Nb0RhdGFMaXN0W2ldLCAuLi5leCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fcHJlcGFyZU5hdmlnYXRvcihhcHBUaWxlR3JvdXApO1xuICAgICAgICAvLyB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcygpO1xuICAgICAgICByZXR1cm4gYXBwVGlsZUdyb3VwO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ByZXBhcmVOYXZpZ2F0b3IoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGFwcFRpbGVHcm91cC4kVGlsZVNldHRpbmdDaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgIGFwcFRpbGVHcm91cC4kRGlzYWJsZWRwaW4gPSBmYWxzZTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoXG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAsXG4gICAgICAgICAgICAnVXNlckFwcFRpbGVHcm91cFNldHRpbmcuVGl0bGUnLFxuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLlRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9XG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgPT09ICcnID8gYXBwVGlsZUdyb3VwLlRpdGxlIDogYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlO1xuICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgPSB0aGlzLl9iYmJUcmFuc2xhdGVQaXBlLnRyYW5zZm9ybShhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUpO1xuICAgICAgICBjb25zdCBvcmRlckl0ZW0gPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShhcHBUaWxlR3JvdXAsICdVc2VyQXBwVGlsZUdyb3VwU2V0dGluZy5PcmRlckl0ZW0nLCBudWxsKTtcbiAgICAgICAgaWYgKG9yZGVySXRlbSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvck9yZGVySXRlbSA9IG9yZGVySXRlbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JPcmRlckl0ZW0gPSBhcHBUaWxlR3JvdXAuT3JkZXJJdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGFwcFRpbGVHcm91cCwgJ1VzZXJBcHBUaWxlR3JvdXBTZXR0aW5nLlZpc2libGUnLCBudWxsKTtcbiAgICAgICAgaWYgKHZpc2libGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JWaXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JWaXNpYmxlID0gYXBwVGlsZUdyb3VwLlZpc2libGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBUaWxlcyA9IGFwcFRpbGVHcm91cC5BcHBUaWxlcz8uTW9EYXRhTGlzdCA/PyBbXTtcblxuICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGlsZXMgPSBhcHBUaWxlc1xuICAgICAgICAgICAgLmZpbHRlcigoYykgPT4gYy5WaXNpYmxlICYmICFjLklzQWN0aW9uTGluaylcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYS5PcmRlckl0ZW0pIC0gTnVtYmVyKGIuT3JkZXJJdGVtKSk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JBY3Rpb25MaW5rcyA9IGFwcFRpbGVzXG4gICAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLlZpc2libGUgJiYgYy5Jc0FjdGlvbkxpbmspXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gTnVtYmVyKGEuT3JkZXJJdGVtQWN0aW9uTGluaykgLSBOdW1iZXIoYi5PcmRlckl0ZW1BY3Rpb25MaW5rKSk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcy5mb3JFYWNoKChhcHBUaWxlKSA9PiB0aGlzLl9zZXRUaWxlSW5mbyhhcHBUaWxlKSk7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JBY3Rpb25MaW5rcy5mb3JFYWNoKChhcHBUaWxlKSA9PiB0aGlzLl9zZXRUaWxlSW5mbyhhcHBUaWxlKSk7XG5cbiAgICAgICAgYXBwVGlsZUdyb3VwLiRDaGlsZHJlbj8uZm9yRWFjaCgoc3ViQXBwVGlsZUdyb3VwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlTmF2aWdhdG9yKHN1YkFwcFRpbGVHcm91cCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmludGVyZmFjZSBQaW5UaWxlSW5mbyB7XG4gICAgZ3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgdmlzaWJsZTogYm9vbGVhbltdO1xuICAgIHRpbGVJZDogc3RyaW5nO1xufVxuIl19
|