barsa-tiles 1.0.339 → 1.0.340
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.
|
@@ -50,7 +50,7 @@ export class TilesService {
|
|
|
50
50
|
const appTiles = [];
|
|
51
51
|
if (allApps) {
|
|
52
52
|
appTilesTitle.forEach((c) => {
|
|
53
|
-
const selectedTile = this.findAppTileWithKey(allApps, '
|
|
53
|
+
const selectedTile = this.findAppTileWithKey(allApps, 'A_App_AppKey', c);
|
|
54
54
|
if (selectedTile) {
|
|
55
55
|
appTiles.push(selectedTile);
|
|
56
56
|
}
|
|
@@ -64,7 +64,7 @@ export class TilesService {
|
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
66
|
BarsaApi.Bw.RunBlMethodAsync({
|
|
67
|
-
Parameters: [appTiles.map((c) => c.AppTile.Id)],
|
|
67
|
+
Parameters: [appTiles.map((c) => (c.AppTile?.Id ? c.AppTile?.Id : c.Id))],
|
|
68
68
|
Method: 'RefreshAppTiles',
|
|
69
69
|
SuccessFn: (result) => {
|
|
70
70
|
result.MoDataList.forEach((c) => this.updateAppTile(allApps, c));
|
|
@@ -474,14 +474,11 @@ export class TilesService {
|
|
|
474
474
|
return;
|
|
475
475
|
}
|
|
476
476
|
selectedTile = appGroup.navigatorTiles.find((c) => BarsaApi.Common.Util.TryGetValue(c, key, null) === value);
|
|
477
|
-
if (selectedTile) {
|
|
478
|
-
return;
|
|
479
|
-
}
|
|
480
477
|
appGroup.$Children?.forEach((subGroup) => {
|
|
481
|
-
selectedTile = subGroup.navigatorTiles.find((c) => BarsaApi.Common.Util.TryGetValue(c, key, null) === value);
|
|
482
478
|
if (selectedTile) {
|
|
483
479
|
return;
|
|
484
480
|
}
|
|
481
|
+
selectedTile = subGroup.navigatorTiles.find((c) => BarsaApi.Common.Util.TryGetValue(c, key, null) === value);
|
|
485
482
|
});
|
|
486
483
|
});
|
|
487
484
|
return selectedTile;
|
|
@@ -579,4 +576,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
579
576
|
providedIn: 'root'
|
|
580
577
|
}]
|
|
581
578
|
}], ctorParameters: function () { return [{ type: i1.PortalService }, { type: i2.RtlService }, { type: i1.BbbTranslatePipe }]; } });
|
|
582
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakgsT0FBTyxFQUFFLFFBQVEsRUFBMEUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQU14SCxNQUFNLE9BQU8sWUFBWTtJQWVyQixZQUNZLGNBQTZCLEVBQzdCLFdBQXVCLEVBQ3ZCLGlCQUFtQztRQUZuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBZC9DLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFLNUMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2xDLDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUMxRSxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDNUMseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQzFFLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEQsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFNN0QsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxD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ZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7IEJhcnNhQXBpLCBCYmJUcmFuc2xhdGVQaXBlLCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBNb0ZvclJlcG9ydE1vZGVsLCBQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgQXBwVGlsZUdyb3VwUGluLCBVc2VyUG9ydGFsU2V0dGluZ3MgfSBmcm9tICcuL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGlsZXNTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcbiAgICBob21lQXBwVGlsZUdyb3VwcyQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcbiAgICBwaW5UaWxlcyQ6IE9ic2VydmFibGU8UGluVGlsZUluZm8gfCBudWxsPjtcbiAgICBzaGVsbGJhclNvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgc2hlbGxiYXIkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xuICAgIGFwcFRpbGVHcm91cHMkOiBPYnNlcnZhYmxlPE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsPjtcbiAgICBlZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByaXZhdGUgX09uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX2hvbWVBcHBUaWxlR3JvdXBzU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcbiAgICBwcml2YXRlIHBpblRpbGVzU291cmNlID0gbmV3IFN1YmplY3Q8UGluVGlsZUluZm8+KCk7XG4gICAgcHJpdmF0ZSBfYXBwVGlsZUdyb3Vwc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TW9Gb3JSZXBvcnRNb2RlbCB8IG51bGw+KG51bGwpO1xuICAgIHByaXZhdGUgX2VkaXRob21lU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dGluZ3MkID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfYmJiVHJhbnNsYXRlUGlwZTogQmJiVHJhbnNsYXRlUGlwZVxuICAgICkge1xuICAgICAgICBCYXJzYUFwaS5Cdy5UaWxlc1NlcnZpY2UgPSB0aGlzO1xuICAgICAgICB0aGlzLmhvbWVBcHBUaWxlR3JvdXBzJCA9IHRoaXMuX2hvbWVBcHBUaWxlR3JvdXBzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLnBpblRpbGVzJCA9IHRoaXMucGluVGlsZXNTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgobnVsbCkpO1xuICAgICAgICB0aGlzLnNoZWxsYmFyU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICAgICAgdGhpcy5zaGVsbGJhciQgPSB0aGlzLnNoZWxsYmFyU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMkID0gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcblxuICAgICAgICB0aGlzLmVkaXQkID0gdGhpcy5fZWRpdGhvbWVTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fT25EZXN0cm95JCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgICAgICB0aGlzLmRldmljZVNpemUkID0gdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJDtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZS5ydGwubmV4dChCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzUnRsKTtcbiAgICAgICAgdGhpcy5sb2FkQWxsQXBwVGlsZUdyb3VwcygpO1xuICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG1vRm9yUmVwb3J0TW9kZWwpID0+IG1vRm9yUmVwb3J0TW9kZWwgIT09IG51bGwpLFxuICAgICAgICAgICAgICAgIHRhcCgobW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9Gb3JSZXBvcnRNb2RlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsQXBwc0xvYWRlZChtb0ZvclJlcG9ydE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIEJhcnNhQXBpLlVsLkFwcGxpY2F0aW9uQ3RybHIub24oJ0dsb2JhbFJlZnJlc2hUaWxlJywgdGhpcy5fb25BcHBsaWNhdGlvbl9HbG9iYWxSZWZyZXNoVGlsZS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgZ2V0IGNvbXBvbmVudFNldHRpbmdzJCgpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFNldHRpbmdzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGFwcFRpbGVHcm91cHMoKTogTW9Gb3JSZXBvcnRNb2RlbCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fT25EZXN0cm95JC5uZXh0KCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfb25BcHBsaWNhdGlvbl9HbG9iYWxSZWZyZXNoVGlsZShzZW5kZXIsIGFwcFRpbGVzVGl0bGU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGFwcFRpbGVzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSBbXTtcbiAgICAgICAgaWYgKGFsbEFwcHMpIHtcbiAgICAgICAgICAgIGFwcFRpbGVzVGl0bGUuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVGlsZSA9IHRoaXMuZmluZEFwcFRpbGVXaXRoS2V5KGFsbEFwcHMsICdBcHBUaWxlLiRDYXB0aW9uJywgYyk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGlsZSkge1xuICAgICAgICAgICAgICAgICAgICBhcHBUaWxlcy5wdXNoKHNlbGVjdGVkVGlsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlRnJvbU5vdGlmaWNhdGlvbihhbGxBcHBzLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoYWxsQXBwcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZUFwcFRpbGVGcm9tTm90aWZpY2F0aW9uKGFsbEFwcHM6IE1vRm9yUmVwb3J0TW9kZWwsIGFwcFRpbGVzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFhcHBUaWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwVGlsZXMubWFwKChjKSA9PiBjLkFwcFRpbGUuSWQpXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1JlZnJlc2hBcHBUaWxlcycsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChyZXN1bHQ6IE1vRm9yUmVwb3J0TW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICByZXN1bHQuTW9EYXRhTGlzdC5mb3JFYWNoKChjKSA9PiB0aGlzLnVwZGF0ZUFwcFRpbGUoYWxsQXBwcywgYykpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UubmV4dCh7IC4uLmFsbEFwcHMgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7fVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbG9hZEFwcFRpbGVHcm91cHMoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmICghYXBwVGlsZUdyb3VwIHx8IGFwcFRpbGVHcm91cC4kVGlsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgICAgICBpZiAoYWxsQXBwcykge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRBcHBUaWxlZ3JvdXAgPSBhbGxBcHBzPy5Nb0RhdGFMaXN0LmZpbmQoKGMpID0+IGMuSWQgPT09IGFwcFRpbGVHcm91cC5JZCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkQXBwVGlsZXNPZkFwcFRpbGVHcm91cChzZWxlY3RlZEFwcFRpbGVncm91cCwgYWxsQXBwcyk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRBcHBUaWxlZ3JvdXAuJENoaWxkcmVuPy5mb3JFYWNoKChzdWJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2FkQXBwVGlsZXNPZkFwcFRpbGVHcm91cChzdWJHcm91cCwgYWxsQXBwcyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2F2ZVRpbGVzU3RhY2tDb250ZW50KHRpbGVzU3RhY2tDb250ZW50OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHVzZXJQb3J0YWxTZXR0aW5ncyA9IHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlclBvcnRhbFNldHRpbmdzO1xuICAgICAgICBpZiAodXNlclBvcnRhbFNldHRpbmdzID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB1c2VyUG9ydGFsU2V0dGluZ3MuVGlsZXNTdGFja0NvbnRlbnQgPSB0aWxlc1N0YWNrQ29udGVudDtcbiAgICAgICAgdXNlclBvcnRhbFNldHRpbmdzLiRTdGF0ZSA9ICdNb2RpZmllZCc7XG4gICAgICAgIHJldHVybiB0aGlzLl9zYXZlVXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5ncykudGhlbigoKSA9PlxuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGxvYWRVc2VyUG9ydGFsU2V0dGluZ3MoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BvcnRhbFNlcnZpY2UuZ2V0RGF0YSgnVXNlclBvcnRhbFNldHRpbmcnKS5waXBlKFxuICAgICAgICAgICAgY29uY2F0TWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRGcm9tU2VydmVyVXNlclBvcnRhbFNldHRpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICByZWZyZXNoVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwVGlsZS5JZF0sXG4gICAgICAgICAgICAgICAgTWV0aG9kOiAnUmVmcmVzaFRpbGUnLFxuICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKG5ld0FwcFRpbGU6IE1vRm9yUmVwb3J0TW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0FwcFRpbGUuTW9EYXRhTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG5ld0FwcFRpbGUuTW9EYXRhTGlzdFswXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGByZWZyZXNoIHRpbGUgbm90IGZvdW5kIGFwcHRpbGUgd2lkdGggdGl0bGU6ICR7YXBwVGlsZS5UaXRsZX1gKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsb2FkRnJvbVNlcnZlclVzZXJQb3J0YWxTZXR0aW5nKCk6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPFVzZXJQb3J0YWxTZXR0aW5ncz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnR2V0VXNlclBvcnRhbFNldHRpbmdzJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAodXNlclBvcnRhbFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uuc2V0RGF0YSgnVXNlclBvcnRhbFNldHRpbmcnLCB1c2VyUG9ydGFsU2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHVzZXJQb3J0YWxTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRvZ2dsZUFwcEdyb3VwU2V0dGluZ1Zpc2libGUoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ1RvZ2dsZUFwcFRpbGVHcm91cFNldHRpbmdWaXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwR3JvdXBTZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhhcHBHcm91cCwgYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcCgoYXBwR3JvdXBTZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwR3JvdXBTZXR0aW5nKGFwcEdyb3VwLCBhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmVzZXRBcHBHcm91cFNldHRpbmcoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ1Jlc2V0QXBwVGlsZUdyb3VwU2V0dGluZ1Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChhcHBHcm91cFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcFRpbGVHcm91cFNldHRpbmdzKGFwcEdyb3VwLCBhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhcHBHcm91cFNldHRpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBHcm91cFNldHRpbmcoYXBwR3JvdXAsIGFwcEdyb3VwU2V0dGluZyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZUFwcEdyb3VwKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcEdyb3VwLklkXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnRGVsZXRlQXBwR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwR3JvdXAuSWQpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgICAgdGFwKChhcHBHcm91cElkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgICAgICAgICBpZiAoYWxsQXBwcykge1xuICAgICAgICAgICAgICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QgPSBhbGxBcHBzLk1vRGF0YUxpc3QuZmlsdGVyKChjKSA9PiBjLklkICE9PSBhcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KGFsbEFwcHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIGNoYW5nZUFwcFRpbGVTZXR0aW5nKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsPiB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLmFwcFRpbGVHcm91cHM7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkR3JvdXAgPSB0aGlzLmZpbmRHcm91cFdpdGhBcHBUaWxlSWQoYWxsQXBwcywgYXBwVGlsZS5JZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEdyb3VwID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtzZWxlY3RlZEdyb3VwLklkLCBhcHBUaWxlLklkLCBhcHBUaWxlLlRpdGxlLCBhcHBUaWxlLlN1YnRpdGxlXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnQ2hhbmdlQXBwVGlsZVNldHRpbmcnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25leHRBbGxBcHBUaWxlR3JvdXBzKGFsbEFwcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShzZWxlY3RlZEdyb3VwKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZSh0YXAoKGFwcEdyb3VwU2V0dGluZykgPT4gdGhpcy51cGRhdGFBcHBUaWxlU2V0dGluZyhzZWxlY3RlZEdyb3VwLCBhcHBHcm91cFNldHRpbmcpKSk7XG4gICAgfVxuXG4gICAgc2F2ZUFwcEdyb3VwT3JkZXJzKGFwcEdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGdyb3VwT3JkZXJzID0gYXBwR3JvdXBzLm1hcCgoYykgPT4gYy5JZCk7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbZ3JvdXBPcmRlcnNdLFxuICAgICAgICAgICAgICAgICAgICBNZXRob2Q6ICdDaGFuZ2VPcmRlckFwcFRpbGVHcm91cHMnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZSgpO1xuICAgIH1cblxuICAgIGNyZWF0ZUFwcEdyb3VwKHRpdGxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxNZXRhb2JqZWN0RGF0YU1vZGVsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFt0aXRsZV0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0NyZWF0ZUFwcFRpbGVHcm91cCcsXG4gICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG1vKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZSh0YXAoKG1vKSA9PiB0aGlzLmFkZEFwcEdyb3VwKG1vKSkpO1xuICAgIH1cblxuICAgIHNhdmVPcmRlckFwcFRpbGVzKFxuICAgICAgICBhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICAgICAgYXBwVGlsZXM6IG51bWJlcltdLFxuICAgICAgICBpc0FjdGlvbkxpbmsgPSBmYWxzZSxcbiAgICAgICAgYXBwVGlsZUlkVHJhbnNmZXJlZElkOiBzdHJpbmcgPSAnMCdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwR3JvdXAuSWQsIGFwcFRpbGVzLCBpc0FjdGlvbkxpbmssIGFwcFRpbGVJZFRyYW5zZmVyZWRJZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdDaGFuZ2VPcmRlckFwcFRpbGVzJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge30sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHt9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZUFwcFRpbGUoYWxsQXBwczogTW9Gb3JSZXBvcnRNb2RlbCwgYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEFwcFRpbGUgPSB0aGlzLmZpbmRBcHBUaWxlV2l0aEtleShcbiAgICAgICAgICAgIGFsbEFwcHMsXG4gICAgICAgICAgICAnQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzLklkJyxcbiAgICAgICAgICAgIGFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzLklkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzZWxlY3RlZEFwcFRpbGUpIHtcbiAgICAgICAgICAgIEJhcnNhQXBpLkNvbW1vbi5NZXJnZXIuRmFzdE1lcmdlKFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZS5BX0FwcF9Db21wb25lbnQuU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgYXBwVGlsZS5BX0FwcF9Db21wb25lbnQuU2V0dGluZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRTZXR0aW5ncyQubmV4dChzZWxlY3RlZEFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGFBcHBUaWxlU2V0dGluZyhzZWxlY3RlZEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBHcm91cFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgYWxsQXBwcz8uTW9EYXRhTGlzdC5mb3JFYWNoKChhcHBHcm91cCkgPT4ge1xuICAgICAgICAgICAgaWYgKGFwcEdyb3VwLklkID09PSBzZWxlY3RlZEdyb3VwLklkKSB7XG4gICAgICAgICAgICAgICAgYXBwR3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcgPSBhcHBHcm91cFNldHRpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoYWxsQXBwcyk7XG4gICAgfVxuXG4gICAgYWRkQXBwR3JvdXAobW86IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgaWYgKGFsbEFwcHMpIHtcbiAgICAgICAgICAgIGFsbEFwcHMuTW9EYXRhTGlzdC5wdXNoKG1vKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UubmV4dChhbGxBcHBzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNpbmdsZVBpblRpbGVDaGFuZ2VkKGFwcFRpbGVJZCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5hcHBUaWxlR3JvdXBzO1xuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwV2l0aEFwcFRpbGVJZChhbGxBcHBzLCBhcHBUaWxlSWQpO1xuICAgICAgICBpZiAoZ3JvdXAgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtncm91cC5JZCwgYXBwVGlsZUlkXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnUmVtb3ZlQXBwVGlsZUZyb21UaWxlR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChzZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhncm91cCwgc2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcGluVGlsZUNoYW5nZWQoYXBwVGlsZUdyb3Vwc1BpbjogQXBwVGlsZUdyb3VwUGluW10sIGFwcDogTWV0YW9iamVjdERhdGFNb2RlbCwgY2FsbGJhY2spOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgY29uc3QgdmlzaWJsZSA9IGFwcFRpbGVHcm91cHNQaW4ubWFwKChjKSA9PiBjLnZpc2libGUpO1xuICAgICAgICBjb25zdCBncm91cENoYW5nZXMgPSBhcHBUaWxlR3JvdXBzUGluLm1hcChcbiAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgIG5ldyBCYXJzYUFwaS5Db21tb24uTWV0YU9iamVjdFdlYih7XG4gICAgICAgICAgICAgICAgICAgIElkOiBjLmFwcFRpbGVHcm91cC5JZCxcbiAgICAgICAgICAgICAgICAgICAgVHlwZURlZklkOiBhbGxBcHBzPy5UeXBlRGVmSWRcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2dyb3VwQ2hhbmdlcywgdmlzaWJsZSwgYXBwLklkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ1RpbGVQaW5DaGFuZ2VkJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGlsZVBpbkNoYW5nZShhcHBUaWxlR3JvdXBzUGluLCBhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhzZXR0aW5ncyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBzaG93IGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfdGlsZVBpbkNoYW5nZShhcHBUaWxlR3JvdXBzUGluLCBhbGxBcHBzKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgYXBwVGlsZUdyb3VwUGluIG9mIGFwcFRpbGVHcm91cHNQaW4pIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEFwcEdyb3VwO1xuICAgICAgICAgICAgY29uc3QgYXBwR3JvdXBJZCA9IGFwcFRpbGVHcm91cFBpbi5hcHBUaWxlR3JvdXAuSWQ7XG4gICAgICAgICAgICBhbGxBcHBzPy5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYy5JZCA9PT0gYXBwR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFwcEdyb3VwID0gYztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzZWxlY3RlZEFwcEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQXBwR3JvdXAgPSBjLiRDaGlsZHJlbj8uZmluZCgoY2hpbGQpID0+IGNoaWxkLklkID09PSBhcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEFwcEdyb3VwICYmIHNlbGVjdGVkQXBwR3JvdXAuJFRpbGVzTG9hZGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gbGV0IG1vRGF0YUxpc3QgPSBzZWxlY3RlZEFwcEdyb3VwLkFwcFRpbGVzLk1vRGF0YUxpc3Q7XG4gICAgICAgICAgICAgICAgLy8gaWYgKGFwcFRpbGVHcm91cHNbaV0udmlzaWJsZSlcbiAgICAgICAgICAgICAgICAvLyAgIHNlbGVjdGVkQXBwR3JvdXAuQXBwVGlsZXMuTW9EYXRhTGlzdCA9IFsuLi5tb0RhdGFMaXN0LCBzZXR0aW5nc1tpXV07XG4gICAgICAgICAgICAgICAgLy8gZWxzZVxuICAgICAgICAgICAgICAgIC8vICAgc2VsZWN0ZWRBcHBHcm91cC5BcHBUaWxlcy5Nb0RhdGFMaXN0ID0gbW9EYXRhTGlzdC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgLy8gICAgIChjKSA9PiBjLkFwcC5JZCAhPT0gYXBwLklkXG4gICAgICAgICAgICAgICAgLy8gICApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwR3JvdXAsIGFsbEFwcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX25leHRBbGxBcHBUaWxlR3JvdXBzKGFsbEFwcHMpO1xuICAgIH1cblxuICAgIGxvYWRTaGVsbGJhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZVxuICAgICAgICAgICAgLlJlcG9ydEV4ZWN1dGVQcm9taXNlKCdTaGVsbGJhcicpXG4gICAgICAgICAgICAudGhlbigobW9Gb3JSZXBvcnRNb2RlbCkgPT4gdGhpcy5zaGVsbGJhclNvdXJjZS5uZXh0KG1vRm9yUmVwb3J0TW9kZWwuTW9EYXRhTGlzdFswXSkpO1xuICAgIH1cblxuICAgIGxvYWRBbGxBcHBUaWxlR3JvdXBzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlXG4gICAgICAgICAgICAuUmVwb3J0RXhlY3V0ZSgnQWxsQXBwVGlsZUdyb3VwcycpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChhbGxBcHBzKSA9PiB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKSk7XG4gICAgfVxuICAgIF9zZXRUaWxlSW5mbyhhcHBUaWxlKTogdm9pZCB7XG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZSwgJ0NvbXBvbmVudC5TZXR0aW5ncy5UaWxlU2V0dGluZy5UaXRsZScsIG51bGwpO1xuICAgICAgICAgICAgYXBwVGlsZS5UaWxlVGl0bGUgPSAhYXBwVGlsZS5UaXRsZSA/IHRpdGxlIDogYXBwVGlsZS5UaXRsZTtcbiAgICAgICAgICAgIGNvbnN0IHN1YnRpdGxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZSwgJ0NvbXBvbmVudC5TZXR0aW5ncy5UaWxlU2V0dGluZy5TdWJ0aXRsZScsIG51bGwpO1xuICAgICAgICAgICAgYXBwVGlsZS5TdWJ0aXRsZSA9ICFhcHBUaWxlLlN1YnRpdGxlID8gc3VidGl0bGUgOiBhcHBUaWxlLlN1YnRpdGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VGlsZUdyb3VwcygpOiBNb0ZvclJlcG9ydE1vZGVsIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgc2V0RWRpdEhvbWUoZWRpdDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9lZGl0aG9tZVNvdXJjZS5uZXh0KGVkaXQpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hbGxBcHBzTG9hZGVkKG1vRm9yUmVwb3J0TW9kZWw6IE1vRm9yUmVwb3J0TW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9Gb3JSZXBvcnRNb2RlbC5Nb0RhdGFMaXN0LmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVOYXZpZ2F0b3IoYyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRIb21lQXBwVGlsZUdyb3Vwcyhtb0ZvclJlcG9ydE1vZGVsLk1vRGF0YUxpc3QpO1xuICAgIH1cbiAgICBwcml2YXRlIF9sb2FkQXBwVGlsZXNPZkFwcFRpbGVHcm91cChzZWxlY3RlZEFwcFRpbGVncm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgYWxsQXBwczogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcyk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2VsZWN0ZWRBcHBUaWxlZ3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRBcHBUaWxlc0J5QXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwVGlsZWdyb3VwLCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cFNldHRpbmcoc2VsZWN0ZWRBcHBUaWxlZ3JvdXAsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cChhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwR3JvdXAuSWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnTG9hZEFsbEFwcFRpbGVzQnlBcHBUaWxlR3JvdXAnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwVGlsZXM6IE1vRm9yUmVwb3J0TW9kZWwpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlc09mQXBwVGlsZUdyb3VwKGFwcEdyb3VwLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3VwZGF0ZUFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcFRpbGVzOiBNb0ZvclJlcG9ydE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcFRpbGVHcm91cHMpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZWdyb3VwID0geyAuLi5zZWxlY3RlZEFwcFRpbGVncm91cCwgJFRpbGVzTG9hZGVkOiB0cnVlIH07XG4gICAgICAgICAgICBhcHBUaWxlcy5Nb0RhdGFMaXN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LkNvbXBvbmVudCA9IGVsZW1lbnQuQV9BcHBfQ29tcG9uZW50ID8/IGVsZW1lbnQuQV9BcHBUaWxlX0FwcF9Db21wb25lbnQ7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5EeW5hbWljQ29tbWFuZCA9IGVsZW1lbnQuQV9BcHBfRHluYW1pY0NvbW1hbmQgPz8gZWxlbWVudC5BX0FwcFRpbGVfQXBwX0R5bmFtaWNDb21tYW5kO1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuUHJlZGVmaW5lZCA9IGVsZW1lbnQuUHJlZGVmaW5lZCA/PyBlbGVtZW50LkFfQXBwVGlsZV9QcmVkZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBhcHB0aWxlR3JvdXBJbmRleCA9IHRoaXMuYXBwVGlsZUdyb3Vwcz8uTW9EYXRhTGlzdC5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKGMpID0+IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLklkIHx8IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLiRQYXJlbnRJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZWdyb3VwLkFwcFRpbGVzID0gYXBwVGlsZXM7XG4gICAgICAgICAgICBjb25zdCB0aWxlR3JvdXAgPSB0aGlzLmFwcFRpbGVHcm91cHMuTW9EYXRhTGlzdFthcHB0aWxlR3JvdXBJbmRleF07XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXAuJFBhcmVudElkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRpbGVHcm91cC4kQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWRPZlN1Ykdyb3VwID0gdGlsZUdyb3VwLiRDaGlsZHJlbi5maW5kSW5kZXgoKGMpID0+IGMuSWQgPT09IHNlbGVjdGVkQXBwVGlsZWdyb3VwLklkKTtcbiAgICAgICAgICAgICAgICAgICAgdGlsZUdyb3VwLiRDaGlsZHJlbltpZE9mU3ViR3JvdXBdID0gc2VsZWN0ZWRBcHBUaWxlZ3JvdXA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuYXBwVGlsZUdyb3Vwcy5Nb0RhdGFMaXN0W2FwcHRpbGVHcm91cEluZGV4XSA9IHsgLi4udGlsZUdyb3VwIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwVGlsZUdyb3Vwcy5Nb0RhdGFMaXN0W2FwcHRpbGVHcm91cEluZGV4XSA9IHNlbGVjdGVkQXBwVGlsZWdyb3VwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX2xvYWRBcHBUaWxlc0J5QXBwVGlsZUdyb3VwU2V0dGluZyhhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcFRpbGVHcm91cC5JZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdMb2FkQWxsQXBwVGlsZXNCeVVzZXJBcHBUaWxlR3JvdXBTZXR0aW5ncycsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChhcHBUaWxlczogTW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoYXBwVGlsZUdyb3VwLCBhcHBUaWxlcyk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBUT0RPIHNob3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbmV4dEFsbEFwcFRpbGVHcm91cHMobmV3QWxsQXBwczogTW9Gb3JSZXBvcnRNb2RlbCB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSBuZXdBbGxBcHBzID8/IHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KGFsbEFwcHMgPyB7IC4uLmFsbEFwcHMgfSA6IG51bGwpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRIb21lQXBwVGlsZUdyb3VwcyhhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBsZXQgbmV3QXBwR3JvdXBzID0gWy4uLmFwcEdyb3Vwc107XG4gICAgICAgIG5ld0FwcEdyb3VwcyA9IG5ld0FwcEdyb3Vwc1xuICAgICAgICAgICAgLmZpbHRlcigoYykgPT4gYy5WaXNpYmxlKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLm5hdmlnYXRvck9yZGVySXRlbSkgLSBOdW1iZXIoYi5uYXZpZ2F0b3JPcmRlckl0ZW0pKTtcbiAgICAgICAgdGhpcy5faG9tZUFwcFRpbGVHcm91cHNTb3VyY2UubmV4dChuZXdBcHBHcm91cHMpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zYXZlVXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5nczogVXNlclBvcnRhbFNldHRpbmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbbmV3IEJhcnNhQXBpLkNvbW1vbi5NZXRhT2JqZWN0V2ViKHVzZXJQb3J0YWxTZXR0aW5ncyldLFxuICAgICAgICAgICAgICAgIE1ldGhvZDogJ1NhdmVVc2VyUG9ydGFsU2V0dGluZ3MnLFxuICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVBcHBHcm91cFNldHRpbmcoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcEdyb3VwU2V0dGluZzogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5hcHBUaWxlR3JvdXBzO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEFwcEdyb3VwID0gYWxsQXBwcz8uTW9EYXRhTGlzdC5maW5kKChjKSA9PiBjLklkID09PSBhcHBHcm91cC5JZCk7XG4gICAgICAgIGlmIChzZWxlY3RlZEFwcEdyb3VwICYmIGFsbEFwcHMpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkQXBwR3JvdXAuVXNlckFwcFRpbGVHcm91cFNldHRpbmcgPSBhcHBHcm91cFNldHRpbmc7XG4gICAgICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIGZpbmRBcHBUaWxlV2l0aEtleShhbGxBcHBzOiBNb0ZvclJlcG9ydE1vZGVsLCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVGlsZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuUmVwbGFjZUFyYWJpY0NoYXJjaHRlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhbGxBcHBzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RlZFRpbGUgPSBhcHBHcm91cC5uYXZpZ2F0b3JUaWxlcy5maW5kKFxuICAgICAgICAgICAgICAgIChjKSA9PiBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjLCBrZXksIG51bGwpID09PSB2YWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhcHBHcm91cC4kQ2hpbGRyZW4/LmZvckVhY2goKHN1Ykdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUaWxlID0gc3ViR3JvdXAubmF2aWdhdG9yVGlsZXMuZmluZChcbiAgICAgICAgICAgICAgICAgICAgKGMpID0+IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGMsIGtleSwgbnVsbCkgPT09IHZhbHVlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFRpbGU7XG4gICAgfVxuICAgIHByaXZhdGUgZmluZEdyb3VwV2l0aEFwcFRpbGVJZChhbGxBcHBzLCBhcHBUaWxlSWQ6IHN0cmluZyk6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkR3JvdXA7XG5cbiAgICAgICAgaWYgKCFhbGxBcHBzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFwcEdyb3VwLm5hdmlnYXRvclRpbGVzLnNvbWUoKGFwcFRpbGUpID0+IGFwcFRpbGUuSWQgPT09IGFwcFRpbGVJZCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEdyb3VwID0gYXBwR3JvdXA7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXBwR3JvdXAuJENoaWxkcmVuPy5mb3JFYWNoKChzdWJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJHcm91cC5uYXZpZ2F0b3JUaWxlcy5zb21lKChhcHBUaWxlKSA9PiBhcHBUaWxlLklkID09PSBhcHBUaWxlSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXAgPSBzdWJHcm91cDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkR3JvdXA7XG4gICAgfVxuICAgIHByaXZhdGUgX2ZpbmRHcm91cFdpdGhBcHBHcm91cElkKGFsbEFwcHMsIGFwcEdyb3VwSWQ6IHN0cmluZyk6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkR3JvdXA7XG5cbiAgICAgICAgaWYgKCFhbGxBcHBzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFwcEdyb3VwLklkID09PSBhcHBHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cCA9IGFwcEdyb3VwO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcEdyb3VwLiRDaGlsZHJlbj8uZm9yRWFjaCgoc3ViR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3ViR3JvdXAuSWQgPT09IGFwcEdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cCA9IHN1Ykdyb3VwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRHcm91cDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhcbiAgICAgICAgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgICAgICBzZXR0aW5nOiBNZXRhb2JqZWN0RGF0YU1vZGVsXG4gICAgKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIGFwcFRpbGVHcm91cC5Vc2VyQXBwVGlsZUdyb3VwU2V0dGluZyA9IHNldHRpbmc7XG4gICAgICAgIGFwcFRpbGVHcm91cCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXBwVGlsZUdyb3VwKSk7XG4gICAgICAgIHRoaXMuX25leHRBbGxBcHBUaWxlR3JvdXBzKCk7XG4gICAgICAgIHJldHVybiBhcHBUaWxlR3JvdXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZU5hdmlnYXRvcihhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgYXBwVGlsZUdyb3VwLiRUaWxlU2V0dGluZ0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLiREaXNhYmxlZHBpbiA9IGZhbHNlO1xuICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cCxcbiAgICAgICAgICAgICdVc2VyQXBwVGlsZUdyb3VwU2V0dGluZy5UaXRsZScsXG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAuVGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlID0gYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlID1cbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9PT0gJycgPyBhcHBUaWxlR3JvdXAuVGl0bGUgOiBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGU7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9IHRoaXMuX2JiYlRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSk7XG4gICAgICAgIGNvbnN0IG9yZGVySXRlbSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGFwcFRpbGVHcm91cCwgJ1VzZXJBcHBUaWxlR3JvdXBTZXR0aW5nLk9yZGVySXRlbScsIG51bGwpO1xuICAgICAgICBpZiAob3JkZXJJdGVtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yT3JkZXJJdGVtID0gb3JkZXJJdGVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvck9yZGVySXRlbSA9IGFwcFRpbGVHcm91cC5PcmRlckl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2aXNpYmxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZUdyb3VwLCAnVXNlckFwcFRpbGVHcm91cFNldHRpbmcuVmlzaWJsZScsIG51bGwpO1xuICAgICAgICBpZiAodmlzaWJsZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclZpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclZpc2libGUgPSBhcHBUaWxlR3JvdXAuVmlzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcFRpbGVzID0gYXBwVGlsZUdyb3VwLkFwcFRpbGVzPy5Nb0RhdGFMaXN0ID8/IFtdO1xuXG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcyA9IGFwcFRpbGVzXG4gICAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLlZpc2libGUgJiYgIWMuSXNBY3Rpb25MaW5rKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLk9yZGVySXRlbSkgLSBOdW1iZXIoYi5PcmRlckl0ZW0pKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzID0gYXBwVGlsZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IGMuVmlzaWJsZSAmJiBjLklzQWN0aW9uTGluaylcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYS5PcmRlckl0ZW1BY3Rpb25MaW5rKSAtIE51bWJlcihiLk9yZGVySXRlbUFjdGlvbkxpbmspKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpbGVzLmZvckVhY2goKGFwcFRpbGUpID0+IHRoaXMuX3NldFRpbGVJbmZvKGFwcFRpbGUpKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzLmZvckVhY2goKGFwcFRpbGUpID0+IHRoaXMuX3NldFRpbGVJbmZvKGFwcFRpbGUpKTtcblxuICAgICAgICBhcHBUaWxlR3JvdXAuJENoaWxkcmVuPy5mb3JFYWNoKChzdWJBcHBUaWxlR3JvdXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVOYXZpZ2F0b3Ioc3ViQXBwVGlsZUdyb3VwKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuaW50ZXJmYWNlIFBpblRpbGVJbmZvIHtcbiAgICBncm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICB2aXNpYmxlOiBib29sZWFuW107XG4gICAgdGlsZUlkOiBzdHJpbmc7XG59XG4iXX0=
|
|
579
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHakgsT0FBTyxFQUFFLFFBQVEsRUFBMEUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQU14SCxNQUFNLE9BQU8sWUFBWTtJQWVyQixZQUNZLGNBQTZCLEVBQzdCLFdBQXVCLEVBQ3ZCLGlCQUFtQztRQUZuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUM3QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBZC9DLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFLNUMsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2xDLDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUF3QixFQUFFLENBQUMsQ0FBQztRQUMxRSxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUM7UUFDNUMseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQzFFLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdEQsd0JBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFNN0QsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBQ3pELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQztRQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsY0FBYzthQUNkLElBQUksQ0FDRCxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEVBQ3ZELEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDckIsSUFBSSxnQkFBZ0IsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2FBQ3pDO1FBQ0wsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUNqQixRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUNELElBQUksa0JBQWtCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsV0FBVztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNTLGdDQUFnQyxDQUFDLE1BQU0sRUFBRSxhQUF1QjtRQUN0RSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQTBCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLE9BQU8sRUFBRTtZQUNULGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDeEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLElBQUksWUFBWSxFQUFFO29CQUNkLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQy9CO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDM0M7SUFDTCxDQUFDO0lBRVMsOEJBQThCLENBQUMsT0FBeUIsRUFBRSxRQUErQjtRQUMvRixJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RSxNQUFNLEVBQUUsaUJBQWlCO1lBQ3pCLFNBQVMsRUFBRSxDQUFDLE1BQXdCLEVBQUUsRUFBRTtnQkFDcEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDbkQsQ0FBQztZQUNELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxZQUFpQztRQUMvQyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxZQUFZLEVBQUU7WUFDNUMsT0FBTztTQUNWO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JELElBQUksT0FBTyxFQUFFO1lBQ1QsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkYsSUFBSSxvQkFBb0IsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2pELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3hELENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDSjtJQUNMLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxpQkFBMEI7UUFDNUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1FBQ2xFLElBQUksa0JBQWtCLElBQUksSUFBSSxFQUFFO1lBQzVCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzVCO1FBQ0Qsa0JBQWtCLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDekQsa0JBQWtCLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDOUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUNoRSxDQUFDO0lBQ04sQ0FBQztJQUVELHNCQUFzQjtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUN4RCxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNmLElBQUksSUFBSSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ25CO2lCQUFNO2dCQUNILE9BQU8sSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7YUFDakQ7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUE0QjtRQUNwQyxPQUFPLElBQUksT0FBTyxDQUFzQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN4RCxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUN6QixVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN4QixNQUFNLEVBQUUsYUFBYTtnQkFDckIsU0FBUyxFQUFFLENBQUMsVUFBNEIsRUFBRSxFQUFFO29CQUN4QyxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFO3dCQUMvQixPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNyQztvQkFDRCxNQUFNLENBQUMsK0NBQStDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDO2dCQUNELE1BQU0sRUFBRSxHQUFHLEVBQUU7b0JBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQixDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsK0JBQStCO1FBQzNCLE9BQU8sSUFBSSxDQUNQLElBQUksT0FBTyxDQUFxQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNoRCxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUN6QixVQUFVLEVBQUUsRUFBRTtnQkFDZCxNQUFNLEVBQUUsdUJBQXVCO2dCQUMvQixTQUFTLEVBQUUsQ0FBQyxpQkFBc0MsRUFBRSxFQUFFO29CQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO29CQUNwRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFO29CQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakIsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBQ0QsNEJBQTRCLENBQUMsUUFBNkI7UUFDdEQsT0FBTyxJQUFJLENBQ1AsSUFBSSxPQUFPLENBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pELFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3pCLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sRUFBRSxrQ0FBa0M7Z0JBQzFDLFNBQVMsRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFFO29CQUMzQixJQUFJLENBQUMsMkJBQTJCLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO29CQUM1RCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdCLENBQUM7Z0JBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRTtvQkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FDTCxDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsUUFBNkI7UUFDOUMsT0FBTyxJQUFJLENBQ1AsSUFBSSxPQUFPLENBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pELFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3pCLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sRUFBRSxpQ0FBaUM7Z0JBQ3pDLFNBQVMsRUFBRSxDQUFDLGVBQW9DLEVBQUUsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztvQkFDNUQsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QixDQUFDO2dCQUNELE1BQU0sRUFBRSxHQUFHLEVBQUU7b0JBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQixDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQyxJQUFJLENBQ0YsR0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUE2QjtRQUN4QyxPQUFPLElBQUksQ0FDUCxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUN6QixVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLEVBQUUsZ0JBQWdCO2dCQUN4QixTQUFTLEVBQUUsR0FBRyxFQUFFO29CQUNaLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRTtvQkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FDTCxDQUFDLElBQUksQ0FDRixHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUNmLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDbkMsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMzQztRQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsT0FBNEI7UUFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNuQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDeEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7UUFDRCxPQUFPLElBQUksQ0FDUCxJQUFJLE9BQU8sQ0FBc0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDakQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDekIsVUFBVSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFDM0UsTUFBTSxFQUFFLHNCQUFzQjtnQkFDOUIsU0FBUyxFQUFFLEdBQUcsRUFBRTtvQkFDWixJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3BDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztnQkFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFO29CQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakIsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUNMLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQWdDO1FBQy9DLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FDUCxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUN6QixVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBQ3pCLE1BQU0sRUFBRSwwQkFBMEI7Z0JBQ2xDLFNBQVMsRUFBRSxHQUFHLEVBQUU7b0JBQ1osT0FBTyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFO29CQUNULE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDakIsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUNMLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDeEIsT0FBTyxJQUFJLENBQ1AsSUFBSSxPQUFPLENBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2pELFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3pCLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztnQkFDbkIsTUFBTSxFQUFFLG9CQUFvQjtnQkFDNUIsU0FBUyxFQUFFLENBQUMsRUFBdUIsRUFBRSxFQUFFO29CQUNuQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRTtvQkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FDTCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxpQkFBaUIsQ0FDYixRQUE2QixFQUM3QixRQUFrQixFQUNsQixZQUFZLEdBQUcsS0FBSyxFQUNwQix3QkFBZ0MsR0FBRztRQUVuQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxxQkFBcUIsQ0FBQztZQUN4RSxNQUFNLEVBQUUscUJBQXFCO1lBQzdCLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO1NBQ25CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBeUIsRUFBRSxPQUE0QjtRQUNqRSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQzNDLE9BQU8sRUFDUCw2QkFBNkIsRUFDN0IsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUN0QyxDQUFDO1FBQ0YsSUFBSSxlQUFlLEVBQUU7WUFDakIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUM1QixlQUFlLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFDeEMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQ25DLENBQUM7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0U7SUFDTCxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsYUFBa0MsRUFBRSxlQUFvQztRQUN6RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ25DLE9BQU8sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDckMsSUFBSSxRQUFRLENBQUMsRUFBRSxLQUFLLGFBQWEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xDLFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxlQUFlLENBQUM7YUFDdEQ7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUF1QjtRQUMvQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ25DLElBQUksT0FBTyxFQUFFO1lBQ1QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFTO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5RCxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDaEIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLElBQUksQ0FDUCxJQUFJLE9BQU8sQ0FBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2dCQUN6QixVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQztnQkFDakMsTUFBTSxFQUFFLDRCQUE0QjtnQkFDcEMsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ25CLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ2pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQixDQUFDO2dCQUNELE1BQU0sRUFBRSxHQUFHLEVBQUU7b0JBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFDRCxjQUFjLENBQUMsZ0JBQW1DLEVBQUUsR0FBd0IsRUFBRSxRQUFRO1FBQ2xGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0YsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUM5QixFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JCLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUztTQUNoQyxDQUFDLENBQ1QsQ0FBQztRQUVGLFFBQVEsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsVUFBVSxFQUFFLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQy9DLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QixDQUFDO1lBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxrQkFBa0I7WUFDdEIsQ0FBQztTQUNKLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsT0FBTztRQUNwQyxLQUFLLE1BQU0sZUFBZSxJQUFJLGdCQUFnQixFQUFFO1lBQzVDLElBQUksZ0JBQWdCLENBQUM7WUFDckIsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDbkQsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRTtvQkFDckIsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO2lCQUN4QjtxQkFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzFCLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO2lCQUM1RTtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUU7Z0JBQ25ELHlEQUF5RDtnQkFDekQsZ0NBQWdDO2dCQUNoQyx5RUFBeUU7Z0JBQ3pFLE9BQU87Z0JBQ1AsOERBQThEO2dCQUM5RCxpQ0FBaUM7Z0JBQ2pDLE9BQU87Z0JBQ1AsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQy9EO1NBQ0o7UUFDRCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLENBQUMsY0FBYzthQUNkLG9CQUFvQixDQUFDLFVBQVUsQ0FBQzthQUNoQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLElBQUksQ0FBQyxjQUFjO2FBQ2QsYUFBYSxDQUFDLGtCQUFrQixDQUFDO2FBQ2pDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELFlBQVksQ0FBQyxPQUFPO1FBQ2hCO1lBQ0ksTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0RyxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzNELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUseUNBQXlDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDNUcsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztTQUN0RTtJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFhO1FBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDTyxjQUFjLENBQUMsZ0JBQWtDO1FBQ3JELGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNPLDJCQUEyQixDQUFDLG9CQUF5QyxFQUFFLE9BQVk7UUFDdkYsTUFBTSxRQUFRLEdBQUcsR0FBUyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLEVBQUU7WUFDL0MsSUFBSSxDQUFDLDJCQUEyQixDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3BFO2FBQU07WUFDSCxJQUFJLENBQUMsa0NBQWtDLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDM0U7SUFDTCxDQUFDO0lBQ08sMkJBQTJCLENBQUMsUUFBNkIsRUFBRSxRQUFvQjtRQUNuRixRQUFRLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxFQUFFLCtCQUErQjtZQUN2QyxTQUFTLEVBQUUsQ0FBQyxRQUEwQixFQUFRLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3ZELFFBQVEsRUFBRSxDQUFDO1lBQ2YsQ0FBQztZQUNELE1BQU0sRUFBRSxHQUFTLEVBQUU7Z0JBQ2Ysa0JBQWtCO1lBQ3RCLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ08sNkJBQTZCLENBQUMsb0JBQXlDLEVBQUUsUUFBMEI7UUFDdkcsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLG9CQUFvQixHQUFHLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDdkUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDcEMsT0FBTyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztnQkFDL0UsT0FBTyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsb0JBQW9CLElBQUksT0FBTyxDQUFDLDRCQUE0QixDQUFDO2dCQUM5RixPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLG9CQUFvQixDQUFDO1lBQzVFLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQzlELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxLQUFLLG9CQUFvQixDQUFDLFNBQVMsQ0FDckYsQ0FBQztZQUNGLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNuRSxJQUFJLG9CQUFvQixDQUFDLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO29CQUNyQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDNUYsU0FBUyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxvQkFBb0IsQ0FBQztpQkFDNUQ7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7YUFDdkU7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsR0FBRyxvQkFBb0IsQ0FBQzthQUMzRTtTQUNKO0lBQ0wsQ0FBQztJQUNPLGtDQUFrQyxDQUFDLFlBQWlDLEVBQUUsUUFBb0I7UUFDOUYsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN6QixVQUFVLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQzdCLE1BQU0sRUFBRSwyQ0FBMkM7WUFDbkQsU0FBUyxFQUFFLENBQUMsUUFBMEIsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsNkJBQTZCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMzRCxRQUFRLEVBQUUsQ0FBQztZQUNmLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUNULGtCQUFrQjtZQUN0QixDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLHFCQUFxQixDQUFDLGFBQXNDLElBQUk7UUFDcEUsTUFBTSxPQUFPLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ08scUJBQXFCLENBQUMsU0FBZ0M7UUFDMUQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLFlBQVksR0FBRyxZQUFZO2FBQ3RCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBQ08sdUJBQXVCLENBQUMsa0JBQXNDO1FBQ2xFLE9BQU8sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDekMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDekIsVUFBVSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLEVBQUUsd0JBQXdCO2dCQUNoQyxTQUFTLEVBQUUsR0FBRyxFQUFFO29CQUNaLE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRTtvQkFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxRQUE2QixFQUFFLGVBQW9DO1FBQzlGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0UsSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUU7WUFDN0IsZ0JBQWdCLENBQUMsdUJBQXVCLEdBQUcsZUFBZSxDQUFDO1lBQzNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFDTyxrQkFBa0IsQ0FBQyxPQUF5QixFQUFFLEdBQVcsRUFBRSxLQUFVO1FBQ3pFLElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzNCLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNwQyxJQUFJLFlBQVksRUFBRTtnQkFDZCxPQUFPO2FBQ1Y7WUFDRCxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3ZDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLENBQ2xFLENBQUM7WUFDRixRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLFlBQVksRUFBRTtvQkFDZCxPQUFPO2lCQUNWO2dCQUNELFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdkMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FDbEUsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBQ08sc0JBQXNCLENBQUMsT0FBTyxFQUFFLFNBQWlCO1FBQ3JELElBQUksYUFBYSxDQUFDO1FBRWxCLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNwQyxJQUFJLGFBQWEsRUFBRTtnQkFDZixPQUFPO2FBQ1Y7WUFDRCxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFO2dCQUNyRSxhQUFhLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixPQUFPO2FBQ1Y7WUFDRCxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNyQyxJQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFO29CQUNyRSxhQUFhLEdBQUcsUUFBUSxDQUFDO29CQUN6QixPQUFPO2lCQUNWO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFDTyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUUsVUFBa0I7UUFDeEQsSUFBSSxhQUFhLENBQUM7UUFFbEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BDLElBQUksYUFBYSxFQUFFO2dCQUNmLE9BQU87YUFDVjtZQUNELElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUU7Z0JBQzVCLGFBQWEsR0FBRyxRQUFRLENBQUM7Z0JBQ3pCLE9BQU87YUFDVjtZQUNELFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksUUFBUSxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUU7b0JBQzVCLGFBQWEsR0FBRyxRQUFRLENBQUM7b0JBQ3pCLE9BQU87aUJBQ1Y7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxhQUFhLENBQUM7SUFDekIsQ0FBQztJQUVPLDJCQUEyQixDQUMvQixZQUFpQyxFQUNqQyxPQUE0QjtRQUU1QixZQUFZLENBQUMsdUJBQXVCLEdBQUcsT0FBTyxDQUFDO1FBQy9DLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8saUJBQWlCLENBQUMsWUFBaUM7UUFDdkQsWUFBWSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztRQUN6QyxZQUFZLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUNsQyxZQUFZLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDMUQsWUFBWSxFQUNaLCtCQUErQixFQUMvQixZQUFZLENBQUMsS0FBSyxDQUNyQixDQUFDO1FBQ0YsWUFBWSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsY0FBYztZQUNyRCxZQUFZLENBQUMsY0FBYyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUMxRixZQUFZLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsbUNBQW1DLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUcsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQ3BCLFlBQVksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7U0FDL0M7YUFBTTtZQUNILFlBQVksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1NBQzVEO1FBRUQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RyxJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDbEIsWUFBWSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztTQUMzQzthQUFNO1lBQ0gsWUFBWSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7U0FDeEQ7UUFFRCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFFekQsWUFBWSxDQUFDLGNBQWMsR0FBRyxRQUFRO2FBQ2pDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7YUFDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsWUFBWSxDQUFDLG9CQUFvQixHQUFHLFFBQVE7YUFDdkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUM7YUFDMUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ25GLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDN0UsWUFBWSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRW5GLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7eUdBcm9CUSxZQUFZOzZHQUFaLFlBQVksY0FGVCxNQUFNOzJGQUVULFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb25jYXRNYXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcbmltcG9ydCB7IEJhcnNhQXBpLCBCYmJUcmFuc2xhdGVQaXBlLCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBNb0ZvclJlcG9ydE1vZGVsLCBQb3J0YWxTZXJ2aWNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgQXBwVGlsZUdyb3VwUGluLCBVc2VyUG9ydGFsU2V0dGluZ3MgfSBmcm9tICcuL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVGlsZXNTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTwncycgfCAnbScgfCAnbCcgfCAneGwnPjtcbiAgICBob21lQXBwVGlsZUdyb3VwcyQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcbiAgICBwaW5UaWxlcyQ6IE9ic2VydmFibGU8UGluVGlsZUluZm8gfCBudWxsPjtcbiAgICBzaGVsbGJhclNvdXJjZSA9IG5ldyBTdWJqZWN0PE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgc2hlbGxiYXIkOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+O1xuICAgIGFwcFRpbGVHcm91cHMkOiBPYnNlcnZhYmxlPE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsPjtcbiAgICBlZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByaXZhdGUgX09uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgX2hvbWVBcHBUaWxlR3JvdXBzU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+KFtdKTtcbiAgICBwcml2YXRlIHBpblRpbGVzU291cmNlID0gbmV3IFN1YmplY3Q8UGluVGlsZUluZm8+KCk7XG4gICAgcHJpdmF0ZSBfYXBwVGlsZUdyb3Vwc1NvdXJjZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TW9Gb3JSZXBvcnRNb2RlbCB8IG51bGw+KG51bGwpO1xuICAgIHByaXZhdGUgX2VkaXRob21lU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfY29tcG9uZW50U2V0dGluZ3MkID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfcG9ydGFsU2VydmljZTogUG9ydGFsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfYmJiVHJhbnNsYXRlUGlwZTogQmJiVHJhbnNsYXRlUGlwZVxuICAgICkge1xuICAgICAgICBCYXJzYUFwaS5Cdy5UaWxlc1NlcnZpY2UgPSB0aGlzO1xuICAgICAgICB0aGlzLmhvbWVBcHBUaWxlR3JvdXBzJCA9IHRoaXMuX2hvbWVBcHBUaWxlR3JvdXBzU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLnBpblRpbGVzJCA9IHRoaXMucGluVGlsZXNTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgobnVsbCkpO1xuICAgICAgICB0aGlzLnNoZWxsYmFyU291cmNlID0gbmV3IFN1YmplY3Q8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcbiAgICAgICAgdGhpcy5zaGVsbGJhciQgPSB0aGlzLnNoZWxsYmFyU291cmNlLmFzT2JzZXJ2YWJsZSgpLnBpcGUoc2hhcmVSZXBsYXkoMSkpO1xuICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMkID0gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcblxuICAgICAgICB0aGlzLmVkaXQkID0gdGhpcy5fZWRpdGhvbWVTb3VyY2UuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fT25EZXN0cm95JCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICAgICAgICB0aGlzLmRldmljZVNpemUkID0gdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJDtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZS5ydGwubmV4dChCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzUnRsKTtcbiAgICAgICAgdGhpcy5sb2FkQWxsQXBwVGlsZUdyb3VwcygpO1xuICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKG1vRm9yUmVwb3J0TW9kZWwpID0+IG1vRm9yUmVwb3J0TW9kZWwgIT09IG51bGwpLFxuICAgICAgICAgICAgICAgIHRhcCgobW9Gb3JSZXBvcnRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9Gb3JSZXBvcnRNb2RlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsQXBwc0xvYWRlZChtb0ZvclJlcG9ydE1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgICAgIEJhcnNhQXBpLlVsLkFwcGxpY2F0aW9uQ3RybHIub24oJ0dsb2JhbFJlZnJlc2hUaWxlJywgdGhpcy5fb25BcHBsaWNhdGlvbl9HbG9iYWxSZWZyZXNoVGlsZS5iaW5kKHRoaXMpKTtcbiAgICB9XG4gICAgZ2V0IGNvbXBvbmVudFNldHRpbmdzJCgpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudFNldHRpbmdzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGFwcFRpbGVHcm91cHMoKTogTW9Gb3JSZXBvcnRNb2RlbCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fT25EZXN0cm95JC5uZXh0KCk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfb25BcHBsaWNhdGlvbl9HbG9iYWxSZWZyZXNoVGlsZShzZW5kZXIsIGFwcFRpbGVzVGl0bGU6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGFwcFRpbGVzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gPSBbXTtcbiAgICAgICAgaWYgKGFsbEFwcHMpIHtcbiAgICAgICAgICAgIGFwcFRpbGVzVGl0bGUuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVGlsZSA9IHRoaXMuZmluZEFwcFRpbGVXaXRoS2V5KGFsbEFwcHMsICdBX0FwcF9BcHBLZXknLCBjKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcFRpbGVzLnB1c2goc2VsZWN0ZWRUaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcFRpbGVGcm9tTm90aWZpY2F0aW9uKGFsbEFwcHMsIGFwcFRpbGVzKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UubmV4dChhbGxBcHBzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfdXBkYXRlQXBwVGlsZUZyb21Ob3RpZmljYXRpb24oYWxsQXBwczogTW9Gb3JSZXBvcnRNb2RlbCwgYXBwVGlsZXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBpZiAoIWFwcFRpbGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBUaWxlcy5tYXAoKGMpID0+IChjLkFwcFRpbGU/LklkID8gYy5BcHBUaWxlPy5JZCA6IGMuSWQpKV0sXG4gICAgICAgICAgICBNZXRob2Q6ICdSZWZyZXNoQXBwVGlsZXMnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAocmVzdWx0OiBNb0ZvclJlcG9ydE1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lk1vRGF0YUxpc3QuZm9yRWFjaCgoYykgPT4gdGhpcy51cGRhdGVBcHBUaWxlKGFsbEFwcHMsIGMpKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoeyAuLi5hbGxBcHBzIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge31cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGxvYWRBcHBUaWxlR3JvdXBzKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAoIWFwcFRpbGVHcm91cCB8fCBhcHBUaWxlR3JvdXAuJFRpbGVzTG9hZGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKGFsbEFwcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQXBwVGlsZWdyb3VwID0gYWxsQXBwcz8uTW9EYXRhTGlzdC5maW5kKChjKSA9PiBjLklkID09PSBhcHBUaWxlR3JvdXAuSWQpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQXBwVGlsZWdyb3VwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZEFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXAsIGFsbEFwcHMpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQXBwVGlsZWdyb3VwLiRDaGlsZHJlbj8uZm9yRWFjaCgoc3ViR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZEFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoc3ViR3JvdXAsIGFsbEFwcHMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNhdmVUaWxlc1N0YWNrQ29udGVudCh0aWxlc1N0YWNrQ29udGVudDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB1c2VyUG9ydGFsU2V0dGluZ3MgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLnVzZXJQb3J0YWxTZXR0aW5ncztcbiAgICAgICAgaWYgKHVzZXJQb3J0YWxTZXR0aW5ncyA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdXNlclBvcnRhbFNldHRpbmdzLlRpbGVzU3RhY2tDb250ZW50ID0gdGlsZXNTdGFja0NvbnRlbnQ7XG4gICAgICAgIHVzZXJQb3J0YWxTZXR0aW5ncy4kU3RhdGUgPSAnTW9kaWZpZWQnO1xuICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZVVzZXJQb3J0YWxTZXR0aW5ncyh1c2VyUG9ydGFsU2V0dGluZ3MpLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uuc2V0VXNlclBvcnRhbFNldHRpbmdzKHVzZXJQb3J0YWxTZXR0aW5ncylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBsb2FkVXNlclBvcnRhbFNldHRpbmdzKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3J0YWxTZXJ2aWNlLmdldERhdGEoJ1VzZXJQb3J0YWxTZXR0aW5nJykucGlwZShcbiAgICAgICAgICAgIGNvbmNhdE1hcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihkYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRnJvbVNlcnZlclVzZXJQb3J0YWxTZXR0aW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmVmcmVzaFRpbGUoYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IFByb21pc2U8TWV0YW9iamVjdERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8TWV0YW9iamVjdERhdGFNb2RlbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcFRpbGUuSWRdLFxuICAgICAgICAgICAgICAgIE1ldGhvZDogJ1JlZnJlc2hUaWxlJyxcbiAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChuZXdBcHBUaWxlOiBNb0ZvclJlcG9ydE1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdBcHBUaWxlLk1vRGF0YUxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShuZXdBcHBUaWxlLk1vRGF0YUxpc3RbMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChgcmVmcmVzaCB0aWxlIG5vdCBmb3VuZCBhcHB0aWxlIHdpZHRoIHRpdGxlOiAke2FwcFRpbGUuVGl0bGV9YCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgbG9hZEZyb21TZXJ2ZXJVc2VyUG9ydGFsU2V0dGluZygpOiBPYnNlcnZhYmxlPE1ldGFvYmplY3REYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICBuZXcgUHJvbWlzZTxVc2VyUG9ydGFsU2V0dGluZ3M+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW10sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0dldFVzZXJQb3J0YWxTZXR0aW5ncycsXG4gICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKHVzZXJQb3J0YWxTZXR0aW5nOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3J0YWxTZXJ2aWNlLnNldERhdGEoJ1VzZXJQb3J0YWxTZXR0aW5nJywgdXNlclBvcnRhbFNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh1c2VyUG9ydGFsU2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICB0b2dnbGVBcHBHcm91cFNldHRpbmdWaXNpYmxlKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8TWV0YW9iamVjdERhdGFNb2RlbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwR3JvdXAuSWRdLFxuICAgICAgICAgICAgICAgICAgICBNZXRob2Q6ICdUb2dnbGVBcHBUaWxlR3JvdXBTZXR0aW5nVmlzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGFwcEdyb3VwU2V0dGluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZUdyb3VwU2V0dGluZ3MoYXBwR3JvdXAsIGFwcEdyb3VwU2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGFwcEdyb3VwU2V0dGluZyk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGFwcEdyb3VwU2V0dGluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUFwcEdyb3VwU2V0dGluZyhhcHBHcm91cCwgYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJlc2V0QXBwR3JvdXBTZXR0aW5nKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8TWV0YW9iamVjdERhdGFNb2RlbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbYXBwR3JvdXAuSWRdLFxuICAgICAgICAgICAgICAgICAgICBNZXRob2Q6ICdSZXNldEFwcFRpbGVHcm91cFNldHRpbmdWaXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwR3JvdXBTZXR0aW5nOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhhcHBHcm91cCwgYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwR3JvdXBTZXR0aW5nKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcCgoYXBwR3JvdXBTZXR0aW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwR3JvdXBTZXR0aW5nKGFwcEdyb3VwLCBhcHBHcm91cFNldHRpbmcpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGVBcHBHcm91cChhcHBHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBHcm91cC5JZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0RlbGV0ZUFwcEdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGFwcEdyb3VwLklkKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHRhcCgoYXBwR3JvdXBJZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLmFwcFRpbGVHcm91cHM7XG4gICAgICAgICAgICAgICAgaWYgKGFsbEFwcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsQXBwcy5Nb0RhdGFMaXN0ID0gYWxsQXBwcy5Nb0RhdGFMaXN0LmZpbHRlcigoYykgPT4gYy5JZCAhPT0gYXBwR3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UubmV4dChhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgICBjaGFuZ2VBcHBUaWxlU2V0dGluZyhhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gdGhpcy5hcHBUaWxlR3JvdXBzO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEdyb3VwID0gdGhpcy5maW5kR3JvdXBXaXRoQXBwVGlsZUlkKGFsbEFwcHMsIGFwcFRpbGUuSWQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRHcm91cCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8TWV0YW9iamVjdERhdGFNb2RlbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbc2VsZWN0ZWRHcm91cC5JZCwgYXBwVGlsZS5JZCwgYXBwVGlsZS5UaXRsZSwgYXBwVGlsZS5TdWJ0aXRsZV0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ0NoYW5nZUFwcFRpbGVTZXR0aW5nJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc2VsZWN0ZWRHcm91cCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnBpcGUodGFwKChhcHBHcm91cFNldHRpbmcpID0+IHRoaXMudXBkYXRhQXBwVGlsZVNldHRpbmcoc2VsZWN0ZWRHcm91cCwgYXBwR3JvdXBTZXR0aW5nKSkpO1xuICAgIH1cblxuICAgIHNhdmVBcHBHcm91cE9yZGVycyhhcHBHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICBjb25zdCBncm91cE9yZGVycyA9IGFwcEdyb3Vwcy5tYXAoKGMpID0+IGMuSWQpO1xuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW2dyb3VwT3JkZXJzXSxcbiAgICAgICAgICAgICAgICAgICAgTWV0aG9kOiAnQ2hhbmdlT3JkZXJBcHBUaWxlR3JvdXBzJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnBpcGUoKTtcbiAgICB9XG5cbiAgICBjcmVhdGVBcHBHcm91cCh0aXRsZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8TWV0YW9iamVjdERhdGFNb2RlbD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbdGl0bGVdLFxuICAgICAgICAgICAgICAgICAgICBNZXRob2Q6ICdDcmVhdGVBcHBUaWxlR3JvdXAnLFxuICAgICAgICAgICAgICAgICAgICBTdWNjZXNzRm46IChtbzogTWV0YW9iamVjdERhdGFNb2RlbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShtbyk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApLnBpcGUodGFwKChtbykgPT4gdGhpcy5hZGRBcHBHcm91cChtbykpKTtcbiAgICB9XG5cbiAgICBzYXZlT3JkZXJBcHBUaWxlcyhcbiAgICAgICAgYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgICAgIGFwcFRpbGVzOiBudW1iZXJbXSxcbiAgICAgICAgaXNBY3Rpb25MaW5rID0gZmFsc2UsXG4gICAgICAgIGFwcFRpbGVJZFRyYW5zZmVyZWRJZDogc3RyaW5nID0gJzAnXG4gICAgKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcEdyb3VwLklkLCBhcHBUaWxlcywgaXNBY3Rpb25MaW5rLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnQ2hhbmdlT3JkZXJBcHBUaWxlcycsXG4gICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHt9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7fVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVBcHBUaWxlKGFsbEFwcHM6IE1vRm9yUmVwb3J0TW9kZWwsIGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRBcHBUaWxlID0gdGhpcy5maW5kQXBwVGlsZVdpdGhLZXkoXG4gICAgICAgICAgICBhbGxBcHBzLFxuICAgICAgICAgICAgJ0FfQXBwX0NvbXBvbmVudC5TZXR0aW5ncy5JZCcsXG4gICAgICAgICAgICBhcHBUaWxlLkFfQXBwX0NvbXBvbmVudC5TZXR0aW5ncy5JZFxuICAgICAgICApO1xuICAgICAgICBpZiAoc2VsZWN0ZWRBcHBUaWxlKSB7XG4gICAgICAgICAgICBCYXJzYUFwaS5Db21tb24uTWVyZ2VyLkZhc3RNZXJnZShcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzLFxuICAgICAgICAgICAgICAgIGFwcFRpbGUuQV9BcHBfQ29tcG9uZW50LlNldHRpbmdzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fY29tcG9uZW50U2V0dGluZ3MkLm5leHQoc2VsZWN0ZWRBcHBUaWxlLkFfQXBwX0NvbXBvbmVudC5TZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXBkYXRhQXBwVGlsZVNldHRpbmcoc2VsZWN0ZWRHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgYXBwR3JvdXBTZXR0aW5nOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLmFwcFRpbGVHcm91cHM7XG4gICAgICAgIGFsbEFwcHM/Lk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChhcHBHcm91cC5JZCA9PT0gc2VsZWN0ZWRHcm91cC5JZCkge1xuICAgICAgICAgICAgICAgIGFwcEdyb3VwLlVzZXJBcHBUaWxlR3JvdXBTZXR0aW5nID0gYXBwR3JvdXBTZXR0aW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5uZXh0KGFsbEFwcHMpO1xuICAgIH1cblxuICAgIGFkZEFwcEdyb3VwKG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLmFwcFRpbGVHcm91cHM7XG4gICAgICAgIGlmIChhbGxBcHBzKSB7XG4gICAgICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QucHVzaChtbyk7XG4gICAgICAgICAgICB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLm5leHQoYWxsQXBwcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaW5nbGVQaW5UaWxlQ2hhbmdlZChhcHBUaWxlSWQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmZpbmRHcm91cFdpdGhBcHBUaWxlSWQoYWxsQXBwcywgYXBwVGlsZUlkKTtcbiAgICAgICAgaWYgKGdyb3VwID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmcm9tKFxuICAgICAgICAgICAgbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJzOiBbZ3JvdXAuSWQsIGFwcFRpbGVJZF0sXG4gICAgICAgICAgICAgICAgICAgIE1ldGhvZDogJ1JlbW92ZUFwcFRpbGVGcm9tVGlsZUdyb3VwJyxcbiAgICAgICAgICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoc2V0dGluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZUdyb3VwU2V0dGluZ3MoZ3JvdXAsIHNldHRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBGYWlsRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHBpblRpbGVDaGFuZ2VkKGFwcFRpbGVHcm91cHNQaW46IEFwcFRpbGVHcm91cFBpbltdLCBhcHA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGNhbGxiYWNrKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEFwcHMgPSB0aGlzLmFwcFRpbGVHcm91cHM7XG4gICAgICAgIGNvbnN0IHZpc2libGUgPSBhcHBUaWxlR3JvdXBzUGluLm1hcCgoYykgPT4gYy52aXNpYmxlKTtcbiAgICAgICAgY29uc3QgZ3JvdXBDaGFuZ2VzID0gYXBwVGlsZUdyb3Vwc1Bpbi5tYXAoXG4gICAgICAgICAgICAoYykgPT5cbiAgICAgICAgICAgICAgICBuZXcgQmFyc2FBcGkuQ29tbW9uLk1ldGFPYmplY3RXZWIoe1xuICAgICAgICAgICAgICAgICAgICBJZDogYy5hcHBUaWxlR3JvdXAuSWQsXG4gICAgICAgICAgICAgICAgICAgIFR5cGVEZWZJZDogYWxsQXBwcz8uVHlwZURlZklkXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFtncm91cENoYW5nZXMsIHZpc2libGUsIGFwcC5JZF0sXG4gICAgICAgICAgICBNZXRob2Q6ICdUaWxlUGluQ2hhbmdlZCcsXG4gICAgICAgICAgICBTdWNjZXNzRm46IChzZXR0aW5ncykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RpbGVQaW5DaGFuZ2UoYXBwVGlsZUdyb3Vwc1BpbiwgYWxsQXBwcyk7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soc2V0dGluZ3MpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEZhaWxGbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFRPRE8gc2hvdyBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgX3RpbGVQaW5DaGFuZ2UoYXBwVGlsZUdyb3Vwc1BpbiwgYWxsQXBwcyk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IGFwcFRpbGVHcm91cFBpbiBvZiBhcHBUaWxlR3JvdXBzUGluKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRBcHBHcm91cDtcbiAgICAgICAgICAgIGNvbnN0IGFwcEdyb3VwSWQgPSBhcHBUaWxlR3JvdXBQaW4uYXBwVGlsZUdyb3VwLklkO1xuICAgICAgICAgICAgYWxsQXBwcz8uTW9EYXRhTGlzdC5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGMuSWQgPT09IGFwcEdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRBcHBHcm91cCA9IGM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc2VsZWN0ZWRBcHBHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEFwcEdyb3VwID0gYy4kQ2hpbGRyZW4/LmZpbmQoKGNoaWxkKSA9PiBjaGlsZC5JZCA9PT0gYXBwR3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRBcHBHcm91cCAmJiBzZWxlY3RlZEFwcEdyb3VwLiRUaWxlc0xvYWRlZCkge1xuICAgICAgICAgICAgICAgIC8vIGxldCBtb0RhdGFMaXN0ID0gc2VsZWN0ZWRBcHBHcm91cC5BcHBUaWxlcy5Nb0RhdGFMaXN0O1xuICAgICAgICAgICAgICAgIC8vIGlmIChhcHBUaWxlR3JvdXBzW2ldLnZpc2libGUpXG4gICAgICAgICAgICAgICAgLy8gICBzZWxlY3RlZEFwcEdyb3VwLkFwcFRpbGVzLk1vRGF0YUxpc3QgPSBbLi4ubW9EYXRhTGlzdCwgc2V0dGluZ3NbaV1dO1xuICAgICAgICAgICAgICAgIC8vIGVsc2VcbiAgICAgICAgICAgICAgICAvLyAgIHNlbGVjdGVkQXBwR3JvdXAuQXBwVGlsZXMuTW9EYXRhTGlzdCA9IG1vRGF0YUxpc3QuZmlsdGVyKFxuICAgICAgICAgICAgICAgIC8vICAgICAoYykgPT4gYy5BcHAuSWQgIT09IGFwcC5JZFxuICAgICAgICAgICAgICAgIC8vICAgKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkQXBwVGlsZXNPZkFwcFRpbGVHcm91cChzZWxlY3RlZEFwcEdyb3VwLCBhbGxBcHBzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9uZXh0QWxsQXBwVGlsZUdyb3VwcyhhbGxBcHBzKTtcbiAgICB9XG5cbiAgICBsb2FkU2hlbGxiYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2VcbiAgICAgICAgICAgIC5SZXBvcnRFeGVjdXRlUHJvbWlzZSgnU2hlbGxiYXInKVxuICAgICAgICAgICAgLnRoZW4oKG1vRm9yUmVwb3J0TW9kZWwpID0+IHRoaXMuc2hlbGxiYXJTb3VyY2UubmV4dChtb0ZvclJlcG9ydE1vZGVsLk1vRGF0YUxpc3RbMF0pKTtcbiAgICB9XG5cbiAgICBsb2FkQWxsQXBwVGlsZUdyb3VwcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZVxuICAgICAgICAgICAgLlJlcG9ydEV4ZWN1dGUoJ0FsbEFwcFRpbGVHcm91cHMnKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYWxsQXBwcykgPT4gdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcykpO1xuICAgIH1cbiAgICBfc2V0VGlsZUluZm8oYXBwVGlsZSk6IHZvaWQge1xuICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCB0aXRsZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGFwcFRpbGUsICdDb21wb25lbnQuU2V0dGluZ3MuVGlsZVNldHRpbmcuVGl0bGUnLCBudWxsKTtcbiAgICAgICAgICAgIGFwcFRpbGUuVGlsZVRpdGxlID0gIWFwcFRpbGUuVGl0bGUgPyB0aXRsZSA6IGFwcFRpbGUuVGl0bGU7XG4gICAgICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGFwcFRpbGUsICdDb21wb25lbnQuU2V0dGluZ3MuVGlsZVNldHRpbmcuU3VidGl0bGUnLCBudWxsKTtcbiAgICAgICAgICAgIGFwcFRpbGUuU3VidGl0bGUgPSAhYXBwVGlsZS5TdWJ0aXRsZSA/IHN1YnRpdGxlIDogYXBwVGlsZS5TdWJ0aXRsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFRpbGVHcm91cHMoKTogTW9Gb3JSZXBvcnRNb2RlbCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwVGlsZUdyb3Vwc1NvdXJjZS5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHNldEVkaXRIb21lKGVkaXQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWRpdGhvbWVTb3VyY2UubmV4dChlZGl0KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYWxsQXBwc0xvYWRlZChtb0ZvclJlcG9ydE1vZGVsOiBNb0ZvclJlcG9ydE1vZGVsKTogdm9pZCB7XG4gICAgICAgIG1vRm9yUmVwb3J0TW9kZWwuTW9EYXRhTGlzdC5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9wcmVwYXJlTmF2aWdhdG9yKGMpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc2V0SG9tZUFwcFRpbGVHcm91cHMobW9Gb3JSZXBvcnRNb2RlbC5Nb0RhdGFMaXN0KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbG9hZEFwcFRpbGVzT2ZBcHBUaWxlR3JvdXAoc2VsZWN0ZWRBcHBUaWxlZ3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFsbEFwcHM6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIHRoaXMuX25leHRBbGxBcHBUaWxlR3JvdXBzKGFsbEFwcHMpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoIXNlbGVjdGVkQXBwVGlsZWdyb3VwLlVzZXJBcHBUaWxlR3JvdXBTZXR0aW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cChzZWxlY3RlZEFwcFRpbGVncm91cCwgY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9hZEFwcFRpbGVzQnlBcHBUaWxlR3JvdXBTZXR0aW5nKHNlbGVjdGVkQXBwVGlsZWdyb3VwLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfbG9hZEFwcFRpbGVzQnlBcHBUaWxlR3JvdXAoYXBwR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlJ1bkJsTWV0aG9kQXN5bmMoe1xuICAgICAgICAgICAgUGFyYW1ldGVyczogW2FwcEdyb3VwLklkXSxcbiAgICAgICAgICAgIE1ldGhvZDogJ0xvYWRBbGxBcHBUaWxlc0J5QXBwVGlsZUdyb3VwJyxcbiAgICAgICAgICAgIFN1Y2Nlc3NGbjogKGFwcFRpbGVzOiBNb0ZvclJlcG9ydE1vZGVsKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQXBwVGlsZXNPZkFwcFRpbGVHcm91cChhcHBHcm91cCwgYXBwVGlsZXMpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBzaG93IGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcml2YXRlIF91cGRhdGVBcHBUaWxlc09mQXBwVGlsZUdyb3VwKHNlbGVjdGVkQXBwVGlsZWdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBUaWxlczogTW9Gb3JSZXBvcnRNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBUaWxlR3JvdXBzKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEFwcFRpbGVncm91cCA9IHsgLi4uc2VsZWN0ZWRBcHBUaWxlZ3JvdXAsICRUaWxlc0xvYWRlZDogdHJ1ZSB9O1xuICAgICAgICAgICAgYXBwVGlsZXMuTW9EYXRhTGlzdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5Db21wb25lbnQgPSBlbGVtZW50LkFfQXBwX0NvbXBvbmVudCA/PyBlbGVtZW50LkFfQXBwVGlsZV9BcHBfQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuRHluYW1pY0NvbW1hbmQgPSBlbGVtZW50LkFfQXBwX0R5bmFtaWNDb21tYW5kID8/IGVsZW1lbnQuQV9BcHBUaWxlX0FwcF9EeW5hbWljQ29tbWFuZDtcbiAgICAgICAgICAgICAgICBlbGVtZW50LlByZWRlZmluZWQgPSBlbGVtZW50LlByZWRlZmluZWQgPz8gZWxlbWVudC5BX0FwcFRpbGVfUHJlZGVmaW5lZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgYXBwdGlsZUdyb3VwSW5kZXggPSB0aGlzLmFwcFRpbGVHcm91cHM/Lk1vRGF0YUxpc3QuZmluZEluZGV4KFxuICAgICAgICAgICAgICAgIChjKSA9PiBjLklkID09PSBzZWxlY3RlZEFwcFRpbGVncm91cC5JZCB8fCBjLklkID09PSBzZWxlY3RlZEFwcFRpbGVncm91cC4kUGFyZW50SWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzZWxlY3RlZEFwcFRpbGVncm91cC5BcHBUaWxlcyA9IGFwcFRpbGVzO1xuICAgICAgICAgICAgY29uc3QgdGlsZUdyb3VwID0gdGhpcy5hcHBUaWxlR3JvdXBzLk1vRGF0YUxpc3RbYXBwdGlsZUdyb3VwSW5kZXhdO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkQXBwVGlsZWdyb3VwLiRQYXJlbnRJZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aWxlR3JvdXAuJENoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkT2ZTdWJHcm91cCA9IHRpbGVHcm91cC4kQ2hpbGRyZW4uZmluZEluZGV4KChjKSA9PiBjLklkID09PSBzZWxlY3RlZEFwcFRpbGVncm91cC5JZCk7XG4gICAgICAgICAgICAgICAgICAgIHRpbGVHcm91cC4kQ2hpbGRyZW5baWRPZlN1Ykdyb3VwXSA9IHNlbGVjdGVkQXBwVGlsZWdyb3VwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMuTW9EYXRhTGlzdFthcHB0aWxlR3JvdXBJbmRleF0gPSB7IC4uLnRpbGVHcm91cCB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMuTW9EYXRhTGlzdFthcHB0aWxlR3JvdXBJbmRleF0gPSBzZWxlY3RlZEFwcFRpbGVncm91cDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9sb2FkQXBwVGlsZXNCeUFwcFRpbGVHcm91cFNldHRpbmcoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBCYXJzYUFwaS5Cdy5SdW5CbE1ldGhvZEFzeW5jKHtcbiAgICAgICAgICAgIFBhcmFtZXRlcnM6IFthcHBUaWxlR3JvdXAuSWRdLFxuICAgICAgICAgICAgTWV0aG9kOiAnTG9hZEFsbEFwcFRpbGVzQnlVc2VyQXBwVGlsZUdyb3VwU2V0dGluZ3MnLFxuICAgICAgICAgICAgU3VjY2Vzc0ZuOiAoYXBwVGlsZXM6IE1vRm9yUmVwb3J0TW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVBcHBUaWxlc09mQXBwVGlsZUdyb3VwKGFwcFRpbGVHcm91cCwgYXBwVGlsZXMpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBzaG93IGVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX25leHRBbGxBcHBUaWxlR3JvdXBzKG5ld0FsbEFwcHM6IE1vRm9yUmVwb3J0TW9kZWwgfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxBcHBzID0gbmV3QWxsQXBwcyA/PyB0aGlzLl9hcHBUaWxlR3JvdXBzU291cmNlLmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuX2FwcFRpbGVHcm91cHNTb3VyY2UubmV4dChhbGxBcHBzID8geyAuLi5hbGxBcHBzIH0gOiBudWxsKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0SG9tZUFwcFRpbGVHcm91cHMoYXBwR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgbGV0IG5ld0FwcEdyb3VwcyA9IFsuLi5hcHBHcm91cHNdO1xuICAgICAgICBuZXdBcHBHcm91cHMgPSBuZXdBcHBHcm91cHNcbiAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IGMuVmlzaWJsZSlcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYS5uYXZpZ2F0b3JPcmRlckl0ZW0pIC0gTnVtYmVyKGIubmF2aWdhdG9yT3JkZXJJdGVtKSk7XG4gICAgICAgIHRoaXMuX2hvbWVBcHBUaWxlR3JvdXBzU291cmNlLm5leHQobmV3QXBwR3JvdXBzKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2F2ZVVzZXJQb3J0YWxTZXR0aW5ncyh1c2VyUG9ydGFsU2V0dGluZ3M6IFVzZXJQb3J0YWxTZXR0aW5ncyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgQmFyc2FBcGkuQncuUnVuQmxNZXRob2RBc3luYyh7XG4gICAgICAgICAgICAgICAgUGFyYW1ldGVyczogW25ldyBCYXJzYUFwaS5Db21tb24uTWV0YU9iamVjdFdlYih1c2VyUG9ydGFsU2V0dGluZ3MpXSxcbiAgICAgICAgICAgICAgICBNZXRob2Q6ICdTYXZlVXNlclBvcnRhbFNldHRpbmdzJyxcbiAgICAgICAgICAgICAgICBTdWNjZXNzRm46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgRmFpbEZuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdXBkYXRlQXBwR3JvdXBTZXR0aW5nKGFwcEdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBHcm91cFNldHRpbmc6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsQXBwcyA9IHRoaXMuYXBwVGlsZUdyb3VwcztcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRBcHBHcm91cCA9IGFsbEFwcHM/Lk1vRGF0YUxpc3QuZmluZCgoYykgPT4gYy5JZCA9PT0gYXBwR3JvdXAuSWQpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRBcHBHcm91cCAmJiBhbGxBcHBzKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEFwcEdyb3VwLlVzZXJBcHBUaWxlR3JvdXBTZXR0aW5nID0gYXBwR3JvdXBTZXR0aW5nO1xuICAgICAgICAgICAgdGhpcy5fbmV4dEFsbEFwcFRpbGVHcm91cHMoYWxsQXBwcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBmaW5kQXBwVGlsZVdpdGhLZXkoYWxsQXBwczogTW9Gb3JSZXBvcnRNb2RlbCwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgbnVsbCB7XG4gICAgICAgIGxldCBzZWxlY3RlZFRpbGU7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlJlcGxhY2VBcmFiaWNDaGFyY2h0ZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghYWxsQXBwcykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgYWxsQXBwcy5Nb0RhdGFMaXN0LmZvckVhY2goKGFwcEdyb3VwKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRUaWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0ZWRUaWxlID0gYXBwR3JvdXAubmF2aWdhdG9yVGlsZXMuZmluZChcbiAgICAgICAgICAgICAgICAoYykgPT4gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYywga2V5LCBudWxsKSA9PT0gdmFsdWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcHBHcm91cC4kQ2hpbGRyZW4/LmZvckVhY2goKHN1Ykdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVGlsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVGlsZSA9IHN1Ykdyb3VwLm5hdmlnYXRvclRpbGVzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgIChjKSA9PiBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShjLCBrZXksIG51bGwpID09PSB2YWx1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFRpbGU7XG4gICAgfVxuICAgIHByaXZhdGUgZmluZEdyb3VwV2l0aEFwcFRpbGVJZChhbGxBcHBzLCBhcHBUaWxlSWQ6IHN0cmluZyk6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkR3JvdXA7XG5cbiAgICAgICAgaWYgKCFhbGxBcHBzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFwcEdyb3VwLm5hdmlnYXRvclRpbGVzLnNvbWUoKGFwcFRpbGUpID0+IGFwcFRpbGUuSWQgPT09IGFwcFRpbGVJZCkpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEdyb3VwID0gYXBwR3JvdXA7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXBwR3JvdXAuJENoaWxkcmVuPy5mb3JFYWNoKChzdWJHcm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJHcm91cC5uYXZpZ2F0b3JUaWxlcy5zb21lKChhcHBUaWxlKSA9PiBhcHBUaWxlLklkID09PSBhcHBUaWxlSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXAgPSBzdWJHcm91cDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkR3JvdXA7XG4gICAgfVxuICAgIHByaXZhdGUgX2ZpbmRHcm91cFdpdGhBcHBHcm91cElkKGFsbEFwcHMsIGFwcEdyb3VwSWQ6IHN0cmluZyk6IE1ldGFvYmplY3REYXRhTW9kZWwgfCBudWxsIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkR3JvdXA7XG5cbiAgICAgICAgaWYgKCFhbGxBcHBzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBhbGxBcHBzLk1vRGF0YUxpc3QuZm9yRWFjaCgoYXBwR3JvdXApID0+IHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFwcEdyb3VwLklkID09PSBhcHBHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cCA9IGFwcEdyb3VwO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcEdyb3VwLiRDaGlsZHJlbj8uZm9yRWFjaCgoc3ViR3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3ViR3JvdXAuSWQgPT09IGFwcEdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cCA9IHN1Ykdyb3VwO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRHcm91cDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF91cGRhdGVBcHBUaWxlR3JvdXBTZXR0aW5ncyhcbiAgICAgICAgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgICAgICBzZXR0aW5nOiBNZXRhb2JqZWN0RGF0YU1vZGVsXG4gICAgKTogTWV0YW9iamVjdERhdGFNb2RlbCB7XG4gICAgICAgIGFwcFRpbGVHcm91cC5Vc2VyQXBwVGlsZUdyb3VwU2V0dGluZyA9IHNldHRpbmc7XG4gICAgICAgIGFwcFRpbGVHcm91cCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYXBwVGlsZUdyb3VwKSk7XG4gICAgICAgIHRoaXMuX25leHRBbGxBcHBUaWxlR3JvdXBzKCk7XG4gICAgICAgIHJldHVybiBhcHBUaWxlR3JvdXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcHJlcGFyZU5hdmlnYXRvcihhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgYXBwVGlsZUdyb3VwLiRUaWxlU2V0dGluZ0NoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLiREaXNhYmxlZHBpbiA9IGZhbHNlO1xuICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cCxcbiAgICAgICAgICAgICdVc2VyQXBwVGlsZUdyb3VwU2V0dGluZy5UaXRsZScsXG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAuVGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlID0gYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlID1cbiAgICAgICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9PT0gJycgPyBhcHBUaWxlR3JvdXAuVGl0bGUgOiBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGU7XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSA9IHRoaXMuX2JiYlRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSk7XG4gICAgICAgIGNvbnN0IG9yZGVySXRlbSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKGFwcFRpbGVHcm91cCwgJ1VzZXJBcHBUaWxlR3JvdXBTZXR0aW5nLk9yZGVySXRlbScsIG51bGwpO1xuICAgICAgICBpZiAob3JkZXJJdGVtICE9PSBudWxsKSB7XG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAubmF2aWdhdG9yT3JkZXJJdGVtID0gb3JkZXJJdGVtO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvck9yZGVySXRlbSA9IGFwcFRpbGVHcm91cC5PcmRlckl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2aXNpYmxlID0gQmFyc2FBcGkuQ29tbW9uLlV0aWwuVHJ5R2V0VmFsdWUoYXBwVGlsZUdyb3VwLCAnVXNlckFwcFRpbGVHcm91cFNldHRpbmcuVmlzaWJsZScsIG51bGwpO1xuICAgICAgICBpZiAodmlzaWJsZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclZpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclZpc2libGUgPSBhcHBUaWxlR3JvdXAuVmlzaWJsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcFRpbGVzID0gYXBwVGlsZUdyb3VwLkFwcFRpbGVzPy5Nb0RhdGFMaXN0ID8/IFtdO1xuXG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcyA9IGFwcFRpbGVzXG4gICAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLlZpc2libGUgJiYgIWMuSXNBY3Rpb25MaW5rKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IE51bWJlcihhLk9yZGVySXRlbSkgLSBOdW1iZXIoYi5PcmRlckl0ZW0pKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzID0gYXBwVGlsZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKGMpID0+IGMuVmlzaWJsZSAmJiBjLklzQWN0aW9uTGluaylcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYS5PcmRlckl0ZW1BY3Rpb25MaW5rKSAtIE51bWJlcihiLk9yZGVySXRlbUFjdGlvbkxpbmspKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpbGVzLmZvckVhY2goKGFwcFRpbGUpID0+IHRoaXMuX3NldFRpbGVJbmZvKGFwcFRpbGUpKTtcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzLmZvckVhY2goKGFwcFRpbGUpID0+IHRoaXMuX3NldFRpbGVJbmZvKGFwcFRpbGUpKTtcblxuICAgICAgICBhcHBUaWxlR3JvdXAuJENoaWxkcmVuPy5mb3JFYWNoKChzdWJBcHBUaWxlR3JvdXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ByZXBhcmVOYXZpZ2F0b3Ioc3ViQXBwVGlsZUdyb3VwKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuaW50ZXJmYWNlIFBpblRpbGVJbmZvIHtcbiAgICBncm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICB2aXNpYmxlOiBib29sZWFuW107XG4gICAgdGlsZUlkOiBzdHJpbmc7XG59XG4iXX0=
|
package/fesm2015/barsa-tiles.mjs
CHANGED
|
@@ -95,7 +95,7 @@ class TilesService {
|
|
|
95
95
|
const appTiles = [];
|
|
96
96
|
if (allApps) {
|
|
97
97
|
appTilesTitle.forEach((c) => {
|
|
98
|
-
const selectedTile = this.findAppTileWithKey(allApps, '
|
|
98
|
+
const selectedTile = this.findAppTileWithKey(allApps, 'A_App_AppKey', c);
|
|
99
99
|
if (selectedTile) {
|
|
100
100
|
appTiles.push(selectedTile);
|
|
101
101
|
}
|
|
@@ -109,7 +109,7 @@ class TilesService {
|
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
111
|
BarsaApi.Bw.RunBlMethodAsync({
|
|
112
|
-
Parameters: [appTiles.map((c) => c.AppTile.Id)],
|
|
112
|
+
Parameters: [appTiles.map((c) => { var _a, _b; return (((_a = c.AppTile) === null || _a === void 0 ? void 0 : _a.Id) ? (_b = c.AppTile) === null || _b === void 0 ? void 0 : _b.Id : c.Id); })],
|
|
113
113
|
Method: 'RefreshAppTiles',
|
|
114
114
|
SuccessFn: (result) => {
|
|
115
115
|
result.MoDataList.forEach((c) => this.updateAppTile(allApps, c));
|
|
@@ -525,14 +525,11 @@ class TilesService {
|
|
|
525
525
|
return;
|
|
526
526
|
}
|
|
527
527
|
selectedTile = appGroup.navigatorTiles.find((c) => BarsaApi.Common.Util.TryGetValue(c, key, null) === value);
|
|
528
|
-
if (selectedTile) {
|
|
529
|
-
return;
|
|
530
|
-
}
|
|
531
528
|
(_a = appGroup.$Children) === null || _a === void 0 ? void 0 : _a.forEach((subGroup) => {
|
|
532
|
-
selectedTile = subGroup.navigatorTiles.find((c) => BarsaApi.Common.Util.TryGetValue(c, key, null) === value);
|
|
533
529
|
if (selectedTile) {
|
|
534
530
|
return;
|
|
535
531
|
}
|
|
532
|
+
selectedTile = subGroup.navigatorTiles.find((c) => BarsaApi.Common.Util.TryGetValue(c, key, null) === value);
|
|
536
533
|
});
|
|
537
534
|
});
|
|
538
535
|
return selectedTile;
|