@elderbyte/ngx-starter 15.6.3 → 15.6.5

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.
@@ -34,7 +34,7 @@ export class DataContextBase extends DataSource {
34
34
  this._reloadQueue = new Subject();
35
35
  this.unsubscribe$ = new Subject();
36
36
  this._dataSource = dataSource;
37
- this._data = new IndexedEntities(e => dataSource.getId(e), _localSort);
37
+ this._data = new IndexedEntities(e => dataSource.getId(e), _localSort, this._sort);
38
38
  this._loading = this._status.pipe(map(status => status.loading));
39
39
  this._filter.filters.pipe(filter(() => this.started), takeUntil(this.unsubscribe$)).subscribe(filters => this.onFiltersChanged(filters));
40
40
  this._sort.sorts.pipe(filter(() => this.started), takeUntil(this.unsubscribe$)).subscribe(sorts => this.onSortsChanged(sorts));
@@ -299,4 +299,4 @@ export class DataContextBase extends DataSource {
299
299
  this._customIndex.clear();
300
300
  }
301
301
  }
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250ZXh0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRzNELE9BQU8sRUFBbUIsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGVBQWUsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsbUJBQW1CLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsTUFBTSxPQUFnQixlQUE4QixTQUFRLFVBQWE7SUE4QnZFOzs7O2dGQUk0RTtJQUU1RSxZQUNFLFVBQTBCLEVBQ2xCLFFBQTRCLEVBQzVCLFdBQWlDLEVBQ2pDLFVBQStDO1FBRXZELEtBQUssRUFBRSxDQUFDO1FBSkEsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQXFDO1FBdEN6RDs7OztvRkFJNEU7UUFFM0QsWUFBTyxHQUFXLGFBQWEsQ0FB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QUU7WUFDcEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLGdCQUFnQixDQUFDLE9BQWlCO1FBQzFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRVMsT0FBTyxDQUFDLEdBQVE7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsTUFBTTtRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsU0FBUztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVTLFFBQVEsQ0FBQyxNQUF5QjtRQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBaUJEOzs7O2dGQUk0RTtJQUVwRSxVQUFVO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMb2dnZXIsIExvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge1NvcnR9IGZyb20gJy4uL3NvcnQnO1xuaW1wb3J0IHtDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHtEYXRhQ29udGV4dFN0YXR1c30gZnJvbSAnLi9kYXRhLWNvbnRleHQtc3RhdHVzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBFTVBUWSwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ZpbHRlckNvbnRleHR9IGZyb20gJy4uL2ZpbHRlcnMvZmlsdGVyLWNvbnRleHQnO1xuaW1wb3J0IHtEYXRhQ29udGV4dFNuYXBzaG90LCBJRGF0YUNvbnRleHR9IGZyb20gJy4vZGF0YS1jb250ZXh0JztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NvcnRDb250ZXh0fSBmcm9tICcuLi9zb3J0LWNvbnRleHQnO1xuaW1wb3J0IHtJRGF0YVNvdXJjZX0gZnJvbSAnLi4vZGF0YXNvdXJjZS9kYXRhLXNvdXJjZSc7XG5pbXBvcnQge0luZGV4ZWRFbnRpdGllc30gZnJvbSAnLi9pbmRleGVkLWVudGl0aWVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGFDb250ZXh0QmFzZTxULCBUSWQgPSBhbnk+IGV4dGVuZHMgRGF0YVNvdXJjZTxUPiBpbXBsZW1lbnRzIElEYXRhQ29udGV4dDxUPiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlbG9nOiBMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGF0YUNvbnRleHRCYXNlJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YVNvdXJjZTogSURhdGFTb3VyY2U8VD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyID0gbmV3IEZpbHRlckNvbnRleHQoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc29ydCA9IG5ldyBTb3J0Q29udGV4dCgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRpbmc6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YTogSW5kZXhlZEVudGl0aWVzPFQsIFRJZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RvdGFsID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXR1cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YUNvbnRleHRTdGF0dXM+KERhdGFDb250ZXh0U3RhdHVzLmlkbGUoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbG9zZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21JbmRleCA9IG5ldyBNYXA8YW55LCBUPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbG9hZFF1ZXVlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgZGF0YVNvdXJjZTogSURhdGFTb3VyY2U8VD4sXG4gICAgcHJpdmF0ZSBfaW5kZXhGbjogKChpdGVtOiBUKSA9PiBhbnkpLFxuICAgIHByaXZhdGUgX2xvY2FsQXBwbHk6ICgoZGF0YTogVFtdKSA9PiBUW10pLFxuICAgIHByaXZhdGUgX2xvY2FsU29ydDogKChkYXRhOiBUW10sIHNvcnRzOiBTb3J0W10pID0+IFRbXSksXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLl9kYXRhID0gbmV3IEluZGV4ZWRFbnRpdGllcyhlID0+IGRhdGFTb3VyY2UuZ2V0SWQoZSksIF9sb2NhbFNvcnQpO1xuXG4gICAgdGhpcy5fbG9hZGluZyA9IHRoaXMuX3N0YXR1cy5waXBlKFxuICAgICAgbWFwKHN0YXR1cyA9PiBzdGF0dXMubG9hZGluZylcbiAgICApO1xuXG4gICAgdGhpcy5fZmlsdGVyLmZpbHRlcnMucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnN0YXJ0ZWQpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKVxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgZmlsdGVycyA9PiB0aGlzLm9uRmlsdGVyc0NoYW5nZWQoZmlsdGVycylcbiAgICApO1xuXG4gICAgdGhpcy5fc29ydC5zb3J0cy5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMuc3RhcnRlZCksXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICBzb3J0cyA9PiB0aGlzLm9uU29ydHNDaGFuZ2VkKHNvcnRzKVxuICAgICk7XG5cbiAgICB0aGlzLl9yZWxvYWRRdWV1ZS5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMuc3RhcnRlZCksXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHsgIC8vIERvbnQgZGllIG9uIGVycm9yc1xuICAgICAgICB0aGlzLmJhc2Vsb2cuZXJyb3IoJ1JlbG9hZCBxdWV1ZSBkZXRlY3RlZCBlcnJvciwgYmFkIScsIGVycik7XG4gICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWxvYWROb3coKSk7XG4gICAgLy8gTWF5YmUgc2tpcE1hcCB0aGUgcmVhbCByZXF1ZXN0cyBmb3IgYXV0byBhYm9ydCBwZW5kaW5nIChleGNlcHQgZm9yIGNvbnRpbnVhdGlvbiAvIHBhZ2VkKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgTWF0ZXJpYWwgREMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcbiAgICAvLyB0aGlzLmNsb3NlKCk7IENsb3Npbmcgd2lsbCBkZXN0cm95IHRoZSBEQ1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IElEYXRhU291cmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc25hcHNob3QoKTogRGF0YUNvbnRleHRTbmFwc2hvdDxUPiB7XG4gICAgcmV0dXJuIG5ldyBEYXRhQ29udGV4dFNuYXBzaG90KFxuICAgICAgdGhpcy5kYXRhU25hcHNob3QsXG4gICAgICB0aGlzLmlzRW1wdHksXG4gICAgICB0aGlzLmxvYWRpbmdTbmFwc2hvdCxcbiAgICAgIHRoaXMudG90YWxTbmFwc2hvdCxcbiAgICAgIHRoaXMuc3RhdHVzU25hcHNob3RcbiAgICApO1xuICB9XG5cblxuICBwdWJsaWMgZ2V0IHRvdGFsKCk6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbFNuYXBzaG90KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNvcnQoKTogU29ydENvbnRleHQge1xuICAgIHJldHVybiB0aGlzLl9zb3J0O1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXIoKTogRmlsdGVyQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZGluZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZGluZ1NuYXBzaG90KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c1NuYXBzaG90Py5sb2FkaW5nO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZW50aXRpZXMkO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhU25hcHNob3QoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5lbnRpdGllc1NuYXBzaG90O1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0dXMoKTogT2JzZXJ2YWJsZTxEYXRhQ29udGV4dFN0YXR1cz4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXR1c1NuYXBzaG90KCk6IERhdGFDb250ZXh0U3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNuYXBzaG90Lmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdGFydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RhcnRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0ZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ2xvc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZWQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc3RhcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRlZC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldCBzdGFydGVkKHN0YXJ0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGFydGVkLm5leHQoc3RhcnRlZCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc3RhcnQoc29ydHM/OiBTb3J0W10sIGZpbHRlcnM/OiBGaWx0ZXJbXSk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBpZiAodGhpcy5pc0Nsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXN0YXJ0aW5nIGEgY2xvc2VkIERhdGFDb250ZXh0IGlzIG5vdCBwb3NzaWJsZSEnKTsgLy8gU2VlIHVuc3Vic2NyaWJlJFxuICAgIH1cblxuICAgIHRoaXMuYmFzZWxvZy5kZWJ1ZygnU3RhcnRpbmcgZnJlc2ggZGF0YUNvbnRleHQgLi4uJyk7XG5cbiAgICB0aGlzLnN0YXJ0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuX3NvcnQucmVwbGFjZVNvcnRzKHNvcnRzIHx8IHRoaXMuc29ydC5zb3J0c1NuYXBzaG90KTtcbiAgICB0aGlzLl9maWx0ZXIucmVwbGFjZUZpbHRlcnMoZmlsdGVycyB8fCB0aGlzLmZpbHRlci5maWx0ZXJzU25hcHNob3QpO1xuXG4gICAgdGhpcy5zdGFydGVkID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnJlbG9hZE5vdygpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2Vsb2cuZGVidWcoJ1JlcXVlc3RpbmcgYSByZWxvYWQgb2YgdGhlIERhdGFDb250ZXh0IGZyb20gdGhlIERhdGFTb3VyY2UuJylcbiAgICB0aGlzLl9yZWxvYWRRdWV1ZS5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgZmluZEJ5SW5kZXgoa2V5OiBhbnkpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMuX2luZGV4Rm4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmluZEJ5SW5kZXggcmVxdWlyZXMgeW91IHRvIHBhc3MgYSBpbmRleCBmdW5jdGlvbiEnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbUluZGV4LmdldChrZXkpO1xuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkKGlkOiBhbnkpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5nZXRCeUlkKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhpcyBEYXRhQ29udGV4dCBhbmQgY2xlYW5zIHVwIGFsbCB1c2VkIHJlc291cmNlcy5cbiAgICovXG4gIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcblxuICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Nsb3NlZC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5fZGF0YS5kZXN0cm95KCk7XG4gICAgdGhpcy5fdG90YWwuY29tcGxldGUoKTtcbiAgICB0aGlzLl9zdGF0dXMuY29tcGxldGUoKTtcblxuICAgIHRoaXMuY2xlYXJBbGwoKTtcbiAgICB0aGlzLmJhc2Vsb2cuZGVidWcoJ0RhdGFDb250ZXh0IGhhcyBiZWVuIGNsb3NlZCBhbmQgcmVzb3VyY2VzIGNsZWFuZWQgdXAhJyk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRhLm5vdGlmeSgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZShlbnRpdGllczogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5fZGF0YS51cGRhdGVTb21lKGVudGl0aWVzKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm90ZWN0ZWQgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCByZWxvYWROb3coKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZWxvYWRJbnRlcm5hbCgpOyAvLyBUT0RPIFRoaXMgc2hvdWxkIGFjdHVhbGx5IHJldHVybiB0aGUgcmVhbCAoaHR0cCkgcmVxdWVzdFxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZCB0aGUgZ2l2ZW4gcm93cyB0byB0aGUgZXhpc3Rpbmcgb25lcy5cbiAgICovXG4gIHByb3RlY3RlZCBhcHBlbmREYXRhKGFkZGl0aW9uYWxEYXRhOiBUW10pOiB2b2lkIHtcbiAgICBhZGRpdGlvbmFsRGF0YSA9IHRoaXMubG9jYWxBcHBseShhZGRpdGlvbmFsRGF0YSk7XG4gICAgdGhpcy5pbmRleEFsbChhZGRpdGlvbmFsRGF0YSk7XG4gICAgdGhpcy5fZGF0YS5hcHBlbmQoYWRkaXRpb25hbERhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCB0aGUgZ2l2ZW4gcm93cyBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5zZXJ0RGF0YShhZGRpdGlvbmFsRGF0YTogVFtdLCBvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIGFkZGl0aW9uYWxEYXRhID0gdGhpcy5sb2NhbEFwcGx5KGFkZGl0aW9uYWxEYXRhKTtcbiAgICB0aGlzLmluZGV4QWxsKGFkZGl0aW9uYWxEYXRhKTtcbiAgICB0aGlzLl9kYXRhLmluc2VydChhZGRpdGlvbmFsRGF0YSwgb2Zmc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgZXhpc3RpbmcgZGF0YSB3aXRoIHRoZSBuZXcgc2V0LlxuICAgKiBAcGFyYW0gbmV3RGF0YSBUaGUgbmV3IGRhdGEgc2V0LlxuICAgKiBAcGFyYW0gYWxyZWFkeUluZGV4ZWQgVGhlIHJvd3Mgd2lsbCBiZSBpbmRleGVkIHVubGVzcyB0aGV5IGFscmVhZHkgaGF2ZSBiZWVuLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldERhdGEobmV3RGF0YTogVFtdLCBhbHJlYWR5SW5kZXhlZCA9IGZhbHNlKTogdm9pZCB7XG4gICAgbmV3RGF0YSA9IHRoaXMubG9jYWxBcHBseShuZXdEYXRhKTtcbiAgICBpZiAoIWFscmVhZHlJbmRleGVkKSB7XG4gICAgICB0aGlzLmNsZWFySW5kZXgoKTtcbiAgICAgIHRoaXMuaW5kZXhBbGwobmV3RGF0YSk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGEucmVwbGFjZUFsbChuZXdEYXRhKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhckRhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRhKFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9jYWxBcHBseShkYXRhOiBUW10pOiBUW10ge1xuICAgIGlmICh0aGlzLl9sb2NhbEFwcGx5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbG9jYWxBcHBseShkYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldFRvdGFsKHRvdGFsOiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICB0aGlzLl90b3RhbC5uZXh0KHRvdGFsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGN1cnJlbnQgZGF0YS1jb250ZXh0IGNhY2hlZCBkYXRhLlxuICAgKiBTdGF0ZSBzdWNoIGFzIGN1cnJlbnQgc29ydGluZyBhbmQgZmlsdGVyc1NuYXBzaG90IGFyZSBrZXB0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGNsZWFyQWxsKHNpbGVudCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckluZGV4KCk7XG5cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdGhpcy5zZXRUb3RhbCgwKTtcbiAgICAgIHRoaXMuY2xlYXJEYXRhKCk7XG4gICAgfVxuXG4gICAgdGhpcy5vbklkbGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVJbmRleCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFySW5kZXgoKTtcbiAgICB0aGlzLmluZGV4QWxsKHRoaXMuZGF0YVNuYXBzaG90KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleGVzIHRoZSBnaXZlbiBpdGVtIGJ5IGtleSBpZiB0aGVyZSBpcyBhbiBpbmRleCBmdW5jdGlvbiBkZWZpbmVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGluZGV4SXRlbShpdGVtOiBUKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRJdGVtS2V5KGl0ZW0pO1xuICAgIGlmIChrZXkpIHtcbiAgICAgIHRoaXMuX2N1c3RvbUluZGV4LnNldChrZXksIGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleGVzIGFsbCB0aGUgZ2l2ZW4gaXRlbXMgYnkga2V5IGlmIHRoZXJlIGlzIGFuIGluZGV4IGZ1bmN0aW9uIGRlZmluZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5kZXhBbGwoaXRlbXM6IFRbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmRleEZuKSB7XG4gICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5pbmRleEl0ZW0oaXRlbSkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtS2V5KGl0ZW06IFQpOiBhbnkge1xuICAgIGlmICh0aGlzLl9pbmRleEZuKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5kZXhGbihpdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SXRlbUlkKGl0ZW06IFQpOiBUSWQge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UuZ2V0SWQoaXRlbSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRXZlbnQgaGFuZGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogT2NjdXJzIHdoZW4gdGhlIHNvcnQgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25Tb3J0c0NoYW5nZWQoc29ydHM6IFNvcnRbXSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fbG9jYWxTb3J0KSB7XG4gICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERhdGEodGhpcy5kYXRhU25hcHNob3QsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPY2N1cnMgd2hlbiB0aGUgZmlsdGVyIGhhcyBjaGFuZ2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIG9uRmlsdGVyc0NoYW5nZWQoZmlsdGVyczogRmlsdGVyW10pOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uRXJyb3IoZXJyOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uU3RhdHVzKERhdGFDb250ZXh0U3RhdHVzLmVycm9yKGVycikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uSWRsZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uU3RhdHVzKERhdGFDb250ZXh0U3RhdHVzLmlkbGUoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Mb2FkaW5nKCk6IHZvaWQge1xuICAgIHRoaXMub25TdGF0dXMoRGF0YUNvbnRleHRTdGF0dXMubG9hZGluZygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblN0YXR1cyhzdGF0dXM6IERhdGFDb250ZXh0U3RhdHVzKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdHVzLm5leHQoc3RhdHVzKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBBYnN0cmFjdCBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kIGFuZFxuICAgKiByZWxvYWQgdGhlIGN1cnJlbnRseSBoZWxkIGRhdGEuXG4gICAqIElmIHBvc3NpYmxlLCB0aGUgY3VycmVudCB2aWV3IHN0YXRlIHNob3VsZCBiZSBrZXB0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcmVsb2FkIGpvYi5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZWxvYWRJbnRlcm5hbCgpOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBjbGVhckluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuX2N1c3RvbUluZGV4LmNsZWFyKCk7XG4gIH1cbn1cbiJdfQ==
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250ZXh0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRzNELE9BQU8sRUFBbUIsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGVBQWUsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsbUJBQW1CLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsTUFBTSxPQUFnQixlQUE4QixTQUFRLFVBQWE7SUE4QnZFOzs7O2dGQUk0RTtJQUU1RSxZQUNFLFVBQTBCLEVBQ2xCLFFBQTRCLEVBQzVCLFdBQWlDLEVBQ2pDLFVBQStDO1FBRXZELEtBQUssRUFBRSxDQUFDO1FBSkEsYUFBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDNUIsZ0JBQVcsR0FBWCxXQUFXLENBQXNCO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQXFDO1FBdEN6RDs7OztvRkFJNEU7UUFFM0QsWUFBTyxHQUFXLGFBQWEsQ0FB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QUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sZ0JBQWdCLENBQUMsT0FBaUI7UUFDMUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFUyxPQUFPLENBQUMsR0FBUTtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFUyxNQUFNO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFUyxTQUFTO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRVMsUUFBUSxDQUFDLE1BQXlCO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFpQkQ7Ozs7Z0ZBSTRFO0lBRXBFLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvZ2dlciwgTG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gJy4uL2ZpbHRlcnMvZmlsdGVyJztcbmltcG9ydCB7U29ydH0gZnJvbSAnLi4vc29ydCc7XG5pbXBvcnQge0NvbGxlY3Rpb25WaWV3ZXIsIERhdGFTb3VyY2V9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge0RhdGFDb250ZXh0U3RhdHVzfSBmcm9tICcuL2RhdGEtY29udGV4dC1zdGF0dXMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIEVNUFRZLCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyQ29udGV4dH0gZnJvbSAnLi4vZmlsdGVycy9maWx0ZXItY29udGV4dCc7XG5pbXBvcnQge0RhdGFDb250ZXh0U25hcHNob3QsIElEYXRhQ29udGV4dH0gZnJvbSAnLi9kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7U29ydENvbnRleHR9IGZyb20gJy4uL3NvcnQtY29udGV4dCc7XG5pbXBvcnQge0lEYXRhU291cmNlfSBmcm9tICcuLi9kYXRhc291cmNlL2RhdGEtc291cmNlJztcbmltcG9ydCB7SW5kZXhlZEVudGl0aWVzfSBmcm9tICcuL2luZGV4ZWQtZW50aXRpZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0YUNvbnRleHRCYXNlPFQsIFRJZCA9IGFueT4gZXh0ZW5kcyBEYXRhU291cmNlPFQ+IGltcGxlbWVudHMgSURhdGFDb250ZXh0PFQ+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2Vsb2c6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEYXRhQ29udGV4dEJhc2UnKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlOiBJRGF0YVNvdXJjZTxUPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9maWx0ZXIgPSBuZXcgRmlsdGVyQ29udGV4dCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0ID0gbmV3IFNvcnRDb250ZXh0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZzogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhOiBJbmRleGVkRW50aXRpZXM8VCwgVElkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdHVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhQ29udGV4dFN0YXR1cz4oRGF0YUNvbnRleHRTdGF0dXMuaWRsZSgpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGFydGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nsb3NlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1c3RvbUluZGV4ID0gbmV3IE1hcDxhbnksIFQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVsb2FkUXVldWUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBJRGF0YVNvdXJjZTxUPixcbiAgICBwcml2YXRlIF9pbmRleEZuOiAoKGl0ZW06IFQpID0+IGFueSksXG4gICAgcHJpdmF0ZSBfbG9jYWxBcHBseTogKChkYXRhOiBUW10pID0+IFRbXSksXG4gICAgcHJpdmF0ZSBfbG9jYWxTb3J0OiAoKGRhdGE6IFRbXSwgc29ydHM6IFNvcnRbXSkgPT4gVFtdKSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMuX2RhdGEgPSBuZXcgSW5kZXhlZEVudGl0aWVzKGUgPT4gZGF0YVNvdXJjZS5nZXRJZChlKSwgX2xvY2FsU29ydCwgdGhpcy5fc29ydCk7XG5cbiAgICB0aGlzLl9sb2FkaW5nID0gdGhpcy5fc3RhdHVzLnBpcGUoXG4gICAgICBtYXAoc3RhdHVzID0+IHN0YXR1cy5sb2FkaW5nKVxuICAgICk7XG5cbiAgICB0aGlzLl9maWx0ZXIuZmlsdGVycy5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMuc3RhcnRlZCksXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpXG4gICAgKS5zdWJzY3JpYmUoXG4gICAgICBmaWx0ZXJzID0+IHRoaXMub25GaWx0ZXJzQ2hhbmdlZChmaWx0ZXJzKVxuICAgICk7XG5cbiAgICB0aGlzLl9zb3J0LnNvcnRzLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5zdGFydGVkKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJClcbiAgICApLnN1YnNjcmliZShcbiAgICAgIHNvcnRzID0+IHRoaXMub25Tb3J0c0NoYW5nZWQoc29ydHMpXG4gICAgKTtcblxuICAgIHRoaXMuX3JlbG9hZFF1ZXVlLnBpcGUoXG4gICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5zdGFydGVkKSxcbiAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4geyAgLy8gRG9udCBkaWUgb24gZXJyb3JzXG4gICAgICAgIHRoaXMuYmFzZWxvZy5lcnJvcignUmVsb2FkIHF1ZXVlIGRldGVjdGVkIGVycm9yLCBiYWQhJywgZXJyKTtcbiAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlbG9hZE5vdygpKTtcbiAgICAvLyBNYXliZSBza2lwTWFwIHRoZSByZWFsIHJlcXVlc3RzIGZvciBhdXRvIGFib3J0IHBlbmRpbmcgKGV4Y2VwdCBmb3IgY29udGludWF0aW9uIC8gcGFnZWQpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSBNYXRlcmlhbCBEQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhO1xuICB9XG5cbiAgcHVibGljIGRpc2Nvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IHZvaWQge1xuICAgIC8vIHRoaXMuY2xvc2UoKTsgQ2xvc2luZyB3aWxsIGRlc3Ryb3kgdGhlIERDXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogSURhdGFTb3VyY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlO1xuICB9XG5cbiAgcHVibGljIGdldCBzbmFwc2hvdCgpOiBEYXRhQ29udGV4dFNuYXBzaG90PFQ+IHtcbiAgICByZXR1cm4gbmV3IERhdGFDb250ZXh0U25hcHNob3QoXG4gICAgICB0aGlzLmRhdGFTbmFwc2hvdCxcbiAgICAgIHRoaXMuaXNFbXB0eSxcbiAgICAgIHRoaXMubG9hZGluZ1NuYXBzaG90LFxuICAgICAgdGhpcy50b3RhbFNuYXBzaG90LFxuICAgICAgdGhpcy5zdGF0dXNTbmFwc2hvdFxuICAgICk7XG4gIH1cblxuXG4gIHB1YmxpYyBnZXQgdG90YWwoKTogT2JzZXJ2YWJsZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWwuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsU25hcHNob3QoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWwuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc29ydCgpOiBTb3J0Q29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBGaWx0ZXJDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nU25hcHNob3QoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzU25hcHNob3Q/LmxvYWRpbmc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5lbnRpdGllcyQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFTbmFwc2hvdCgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmVudGl0aWVzU25hcHNob3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXR1cygpOiBPYnNlcnZhYmxlPERhdGFDb250ZXh0U3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdHVzU25hcHNob3QoKTogRGF0YUNvbnRleHRTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLl9zdGF0dXMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU25hcHNob3QubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1N0YXJ0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnRlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNTdGFydGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlZC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBzdGFydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGFydGVkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0IHN0YXJ0ZWQoc3RhcnRlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX3N0YXJ0ZWQubmV4dChzdGFydGVkKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdGFydChzb3J0cz86IFNvcnRbXSwgZmlsdGVycz86IEZpbHRlcltdKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGlmICh0aGlzLmlzQ2xvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jlc3RhcnRpbmcgYSBjbG9zZWQgRGF0YUNvbnRleHQgaXMgbm90IHBvc3NpYmxlIScpOyAvLyBTZWUgdW5zdWJzY3JpYmUkXG4gICAgfVxuXG4gICAgdGhpcy5iYXNlbG9nLmRlYnVnKCdTdGFydGluZyBmcmVzaCBkYXRhQ29udGV4dCAuLi4nKTtcblxuICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5fc29ydC5yZXBsYWNlU29ydHMoc29ydHMgfHwgdGhpcy5zb3J0LnNvcnRzU25hcHNob3QpO1xuICAgIHRoaXMuX2ZpbHRlci5yZXBsYWNlRmlsdGVycyhmaWx0ZXJzIHx8IHRoaXMuZmlsdGVyLmZpbHRlcnNTbmFwc2hvdCk7XG5cbiAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMucmVsb2FkTm93KCk7XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuYmFzZWxvZy5kZWJ1ZygnUmVxdWVzdGluZyBhIHJlbG9hZCBvZiB0aGUgRGF0YUNvbnRleHQgZnJvbSB0aGUgRGF0YVNvdXJjZS4nKVxuICAgIHRoaXMuX3JlbG9hZFF1ZXVlLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJbmRleChrZXk6IGFueSk6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faW5kZXhGbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdmaW5kQnlJbmRleCByZXF1aXJlcyB5b3UgdG8gcGFzcyBhIGluZGV4IGZ1bmN0aW9uIScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3VzdG9tSW5kZXguZ2V0KGtleSk7XG4gIH1cblxuICBwdWJsaWMgZmluZEJ5SWQoaWQ6IGFueSk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmdldEJ5SWQoaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGlzIERhdGFDb250ZXh0IGFuZCBjbGVhbnMgdXAgYWxsIHVzZWQgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuXG4gICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY2xvc2VkLm5leHQodHJ1ZSk7XG5cbiAgICB0aGlzLl9kYXRhLmRlc3Ryb3koKTtcbiAgICB0aGlzLl90b3RhbC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3N0YXR1cy5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5jbGVhckFsbCgpO1xuICAgIHRoaXMuYmFzZWxvZy5kZWJ1ZygnRGF0YUNvbnRleHQgaGFzIGJlZW4gY2xvc2VkIGFuZCByZXNvdXJjZXMgY2xlYW5lZCB1cCEnKTtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMuX2RhdGEubm90aWZ5KCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKGVudGl0aWVzOiBUW10pOiB2b2lkIHtcbiAgICB0aGlzLl9kYXRhLnVwZGF0ZVNvbWUoZW50aXRpZXMpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3RlY3RlZCBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIHJlbG9hZE5vdygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlbG9hZEludGVybmFsKCk7IC8vIFRPRE8gVGhpcyBzaG91bGQgYWN0dWFsbHkgcmV0dXJuIHRoZSByZWFsIChodHRwKSByZXF1ZXN0XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kIHRoZSBnaXZlbiByb3dzIHRvIHRoZSBleGlzdGluZyBvbmVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFwcGVuZERhdGEoYWRkaXRpb25hbERhdGE6IFRbXSk6IHZvaWQge1xuICAgIGFkZGl0aW9uYWxEYXRhID0gdGhpcy5sb2NhbEFwcGx5KGFkZGl0aW9uYWxEYXRhKTtcbiAgICB0aGlzLmluZGV4QWxsKGFkZGl0aW9uYWxEYXRhKTtcbiAgICB0aGlzLl9kYXRhLmFwcGVuZChhZGRpdGlvbmFsRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IHRoZSBnaXZlbiByb3dzIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBpbnNlcnREYXRhKGFkZGl0aW9uYWxEYXRhOiBUW10sIG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgYWRkaXRpb25hbERhdGEgPSB0aGlzLmxvY2FsQXBwbHkoYWRkaXRpb25hbERhdGEpO1xuICAgIHRoaXMuaW5kZXhBbGwoYWRkaXRpb25hbERhdGEpO1xuICAgIHRoaXMuX2RhdGEuaW5zZXJ0KGFkZGl0aW9uYWxEYXRhLCBvZmZzZXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSBleGlzdGluZyBkYXRhIHdpdGggdGhlIG5ldyBzZXQuXG4gICAqIEBwYXJhbSBuZXdEYXRhIFRoZSBuZXcgZGF0YSBzZXQuXG4gICAqIEBwYXJhbSBhbHJlYWR5SW5kZXhlZCBUaGUgcm93cyB3aWxsIGJlIGluZGV4ZWQgdW5sZXNzIHRoZXkgYWxyZWFkeSBoYXZlIGJlZW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0RGF0YShuZXdEYXRhOiBUW10sIGFscmVhZHlJbmRleGVkID0gZmFsc2UpOiB2b2lkIHtcbiAgICBuZXdEYXRhID0gdGhpcy5sb2NhbEFwcGx5KG5ld0RhdGEpO1xuICAgIGlmICghYWxyZWFkeUluZGV4ZWQpIHtcbiAgICAgIHRoaXMuY2xlYXJJbmRleCgpO1xuICAgICAgdGhpcy5pbmRleEFsbChuZXdEYXRhKTtcbiAgICB9XG4gICAgdGhpcy5fZGF0YS5yZXBsYWNlQWxsKG5ld0RhdGEpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFyRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldERhdGEoW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2NhbEFwcGx5KGRhdGE6IFRbXSk6IFRbXSB7XG4gICAgaWYgKHRoaXMuX2xvY2FsQXBwbHkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9sb2NhbEFwcGx5KGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0VG90YWwodG90YWw6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdGFsLm5leHQodG90YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgY3VycmVudCBkYXRhLWNvbnRleHQgY2FjaGVkIGRhdGEuXG4gICAqIFN0YXRlIHN1Y2ggYXMgY3VycmVudCBzb3J0aW5nIGFuZCBmaWx0ZXJzU25hcHNob3QgYXJlIGtlcHQuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2xlYXJBbGwoc2lsZW50ID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFySW5kZXgoKTtcblxuICAgIGlmICghc2lsZW50KSB7XG4gICAgICB0aGlzLnNldFRvdGFsKDApO1xuICAgICAgdGhpcy5jbGVhckRhdGEoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uSWRsZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJJbmRleCgpO1xuICAgIHRoaXMuaW5kZXhBbGwodGhpcy5kYXRhU25hcHNob3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGV4ZXMgdGhlIGdpdmVuIGl0ZW0gYnkga2V5IGlmIHRoZXJlIGlzIGFuIGluZGV4IGZ1bmN0aW9uIGRlZmluZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgaW5kZXhJdGVtKGl0ZW06IFQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEl0ZW1LZXkoaXRlbSk7XG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5fY3VzdG9tSW5kZXguc2V0KGtleSwgaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluZGV4ZXMgYWxsIHRoZSBnaXZlbiBpdGVtcyBieSBrZXkgaWYgdGhlcmUgaXMgYW4gaW5kZXggZnVuY3Rpb24gZGVmaW5lZC5cbiAgICovXG4gIHByb3RlY3RlZCBpbmRleEFsbChpdGVtczogVFtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2luZGV4Rm4pIHtcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB0aGlzLmluZGV4SXRlbShpdGVtKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1LZXkoaXRlbTogVCk6IGFueSB7XG4gICAgaWYgKHRoaXMuX2luZGV4Rm4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbmRleEZuKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtSWQoaXRlbTogVCk6IFRJZCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5nZXRJZChpdGVtKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBFdmVudCBoYW5kbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBPY2N1cnMgd2hlbiB0aGUgc29ydCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvblNvcnRzQ2hhbmdlZChzb3J0czogU29ydFtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9sb2NhbFNvcnQpIHtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RGF0YSh0aGlzLmRhdGFTbmFwc2hvdCwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9jY3VycyB3aGVuIHRoZSBmaWx0ZXIgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25GaWx0ZXJzQ2hhbmdlZChmaWx0ZXJzOiBGaWx0ZXJbXSk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25FcnJvcihlcnI6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25TdGF0dXMoRGF0YUNvbnRleHRTdGF0dXMuZXJyb3IoZXJyKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25JZGxlKCk6IHZvaWQge1xuICAgIHRoaXMub25TdGF0dXMoRGF0YUNvbnRleHRTdGF0dXMuaWRsZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkxvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5vblN0YXR1cyhEYXRhQ29udGV4dFN0YXR1cy5sb2FkaW5nKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uU3RhdHVzKHN0YXR1czogRGF0YUNvbnRleHRTdGF0dXMpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0dXMubmV4dChzdGF0dXMpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEFic3RyYWN0IG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QgYW5kXG4gICAqIHJlbG9hZCB0aGUgY3VycmVudGx5IGhlbGQgZGF0YS5cbiAgICogSWYgcG9zc2libGUsIHRoZSBjdXJyZW50IHZpZXcgc3RhdGUgc2hvdWxkIGJlIGtlcHQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSByZWxvYWQgam9iLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlbG9hZEludGVybmFsKCk6IE9ic2VydmFibGU8YW55PjtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGNsZWFySW5kZXgoKTogdm9pZCB7XG4gICAgdGhpcy5fY3VzdG9tSW5kZXguY2xlYXIoKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,4 @@
1
1
  import { BehaviorSubject } from 'rxjs';
2
- import { SortContext } from '../sort-context';
3
2
  import { LoggerFactory } from '@elderbyte/ts-logger';
4
3
  export class IndexedEntities {
5
4
  /***************************************************************************
@@ -7,7 +6,7 @@ export class IndexedEntities {
7
6
  * Constructor *
8
7
  * *
9
8
  **************************************************************************/
10
- constructor(idFn, localSortFn, sortContext = new SortContext()) {
9
+ constructor(idFn, localSortFn, sortContext) {
11
10
  this.idFn = idFn;
12
11
  this.localSortFn = localSortFn;
13
12
  this.sortContext = sortContext;
@@ -140,4 +139,4 @@ export class IndexedEntities {
140
139
  }
141
140
  }
142
141
  }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZC1lbnRpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9pbmRleGVkLWVudGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFakQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxNQUFNLE9BQU8sZUFBZTtJQWExQjs7OztnRkFJNEU7SUFFNUUsWUFDbUIsSUFBbUIsRUFDbkIsV0FBNEQsRUFDNUQsY0FBYyxJQUFJLFdBQVcsRUFBRTtRQUYvQixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFpRDtRQUM1RCxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFwQmxEOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUMxQyxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7SUFZdEQsQ0FBQztJQUVMOzs7O2dGQUk0RTtJQUU1RSxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7O09BR0c7SUFDSSxVQUFVLENBQUMsY0FBbUIsRUFBRTtRQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDN0U7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsT0FBWTtRQUM1QixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLE9BQU8sQ0FDYixNQUFNLENBQUMsRUFBRTtZQUNQLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFHTSxNQUFNLENBQUMsTUFBVztRQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxRQUFhLEVBQUUsTUFBYztRQUN6QyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDdkMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBRTlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN4QyxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNuQztZQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsb0NBQW9DO2dCQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFCO2lCQUFNO2dCQUNMLDJDQUEyQztnQkFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksT0FBTyxDQUFDLEVBQU87UUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDZixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQzNCLENBQUM7SUFDSixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLFlBQVksQ0FBQyxRQUFhO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxRQUFhLEVBQUUsVUFBa0I7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDckQ7U0FDRjtJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsRUFBTztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxTQUFTLENBQUMsSUFBTztRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxRQUFhO1FBQy9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7U29ydH0gZnJvbSAnLi4vc29ydCc7XG5pbXBvcnQge1NvcnRDb250ZXh0fSBmcm9tICcuLi9zb3J0LWNvbnRleHQnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5cbmV4cG9ydCBjbGFzcyBJbmRleGVkRW50aXRpZXM8VCwgVElkPWFueT4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0luZGV4ZWRFbnRpdGllcycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VudGl0aWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lkVG9BcnJheUluZGV4ID0gbmV3IE1hcDxUSWQsIG51bWJlcj4oKTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlkRm46IChlOiBUKSA9PiBUSWQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFNvcnRGbjogKChkYXRhOiBUW10sIHNvcnRzOiBTb3J0W10pID0+IFRbXSkgfCB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzb3J0Q29udGV4dCA9IG5ldyBTb3J0Q29udGV4dCgpXG4gICkgeyB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGdldCBlbnRpdGllcyQoKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXRpZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbnRpdGllc1NuYXBzaG90KCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0aWVzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBleGlzdGluZyBlbnRpdGllcyB3aXRoIHRoZSBuZXcgb25lcy5cbiAgICogVGhlIGluZGV4IGlzIHJlYnVpbHQuIE8obilcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlQWxsKG5ld0VudGl0aWVzOiBUW10gPSBbXSkge1xuICAgIGlmICh0aGlzLmxvY2FsU29ydEZuKSB7XG4gICAgICBuZXdFbnRpdGllcyA9IHRoaXMubG9jYWxTb3J0Rm4obmV3RW50aXRpZXMsIHRoaXMuc29ydENvbnRleHQuc29ydHNTbmFwc2hvdCk7XG4gICAgfVxuICAgIHRoaXMucmVidWlsZEluZGV4KG5ld0VudGl0aWVzKTtcbiAgICB0aGlzLnNldEVudGl0aWVzKG5ld0VudGl0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLZWVwcyBhbGwgZXhpc3RpbmcgZW50aXRpZXMsIGJ1dCByZXBsYWNlcyB0aG9zZSB3aGljaCBhcmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgZGF0YS5cbiAgICogUHJvdmlkZWQgdXBkYXRlZCBlbnRpdGllcyB3aGljaCBhcmUgY3VycmVudGx5IG5vdCBpbiB0aGlzIGluZGV4IGFyZSBpZ25vcmVkLlxuICAgKiBAcGFyYW0gdXBkYXRlZFxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVNvbWUodXBkYXRlZDogVFtdKSB7XG4gICAgY29uc3QgbmV3RGF0YSA9IFsuLi50aGlzLmVudGl0aWVzU25hcHNob3RdO1xuICAgIHVwZGF0ZWQuZm9yRWFjaChcbiAgICAgIHVwZGF0ZSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRJdGVtSWQodXBkYXRlKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4QnlJZChpZCk7XG4gICAgICAgIGlmIChpbmRleCAhPSAtMSkge1xuICAgICAgICAgIG5ld0RhdGFbaW5kZXhdID0gdXBkYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnNldEVudGl0aWVzKG5ld0RhdGEpO1xuICB9XG5cblxuICBwdWJsaWMgYXBwZW5kKGFwcGVuZDogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5pbnNlcnQoYXBwZW5kLCB0aGlzLmVudGl0aWVzU25hcHNob3QubGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBnaXZlbiBlbnRpdGllcyB0byB0aGlzIGluZGV4LlxuICAgKiBUaGUgbmV3IGFwcGVuZGVkIGVudGl0aWVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgaW5kZXguXG4gICAqIE8obikgd2hlcmUgbiA9IG51bWJlciBvZiBhcHBlbmRlZCBlbnRpdGllc1xuICAgKiBAcGFyYW0gaW5zZXJ0ZWRcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKi9cbiAgcHVibGljIGluc2VydChpbnNlcnRlZDogVFtdLCBvZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIGlmIChpbnNlcnRlZCAmJiBpbnNlcnRlZC5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBlbnRpdGllcyA9IHRoaXMuZW50aXRpZXNTbmFwc2hvdDtcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4uZW50aXRpZXNdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluc2VydGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5ld0RhdGFbaSArIG9mZnNldF0gPSBpbnNlcnRlZFtpXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubG9jYWxTb3J0Rm4pIHtcbiAgICAgICAgLy8gbG9jYWwgc29ydCBjYW4gcmUtb3JkZXIgYWxsIGl0ZW1zXG4gICAgICAgIHRoaXMucmVwbGFjZUFsbChuZXdEYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdpdGhvdXQgYSBzb3J0LCB3ZSBjYW4gb3B0aW1pemUgaW5kZXhpbmdcbiAgICAgICAgdGhpcy5yZUluZGV4RnJvbShuZXdEYXRhLCBvZmZzZXQpO1xuICAgICAgICB0aGlzLnNldEVudGl0aWVzKG5ld0RhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rdXAgYW4gZW50aXR5IGJ5IGl0cyBpZC5cbiAgICogVGhpcyB3aWxsIHVzZSBhbiBpbmRleCBPKDEpXG4gICAqIEBwYXJhbSBpZFxuICAgKi9cbiAgcHVibGljIGdldEJ5SWQoaWQ6IFRJZCk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGVudGl0aWVzID0gdGhpcy5lbnRpdGllc1NuYXBzaG90O1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbmRleEJ5SWQoaWQpO1xuICAgIGlmIChpbmRleCAhPSAtMSkge1xuICAgICAgcmV0dXJuIGVudGl0aWVzW2luZGV4XTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbm90aWZ5KCk6IHZvaWQge1xuICAgIHRoaXMuX2VudGl0aWVzJC5uZXh0KFxuICAgICAgdGhpcy5fZW50aXRpZXMkLmdldFZhbHVlKClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZW50aXRpZXMkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5faWRUb0FycmF5SW5kZXguY2xlYXIoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVidWlsZEluZGV4KGVudGl0aWVzOiBUW10pOiB2b2lkIHtcbiAgICB0aGlzLl9pZFRvQXJyYXlJbmRleC5jbGVhcigpO1xuICAgIHRoaXMucmVJbmRleEZyb20oZW50aXRpZXMsIDApO1xuICB9XG5cbiAgcHJpdmF0ZSByZUluZGV4RnJvbShlbnRpdGllczogVFtdLCBzdGFydEluZGV4OiBudW1iZXIpIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllc1tpXTtcbiAgICAgIGlmIChlbnRpdHkpIHtcbiAgICAgICAgdGhpcy5faWRUb0FycmF5SW5kZXguc2V0KHRoaXMuZ2V0SXRlbUlkKGVudGl0eSksIGkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5kZXhCeUlkKGlkOiBUSWQpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pZFRvQXJyYXlJbmRleC5nZXQoaWQpID8/IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJdGVtSWQoaXRlbTogVCk6IFRJZCB7XG4gICAgcmV0dXJuIHRoaXMuaWRGbihpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RW50aXRpZXMoZW50aXRpZXM6IFRbXSk6IHZvaWQge1xuICAgIGlmICghKHRoaXMuZW50aXRpZXNTbmFwc2hvdC5sZW5ndGggPT09IDAgJiYgZW50aXRpZXMubGVuZ3RoID09PSAwKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ0VudGl0aWVzIGNoYW5nZWQ6ICcgKyBlbnRpdGllcy5sZW5ndGgsIGVudGl0aWVzKTtcbiAgICAgIHRoaXMuX2VudGl0aWVzJC5uZXh0KGVudGl0aWVzKTtcbiAgICB9XG4gIH1cblxufVxuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZC1lbnRpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9kYXRhL2RhdGEtY29udGV4dC9pbmRleGVkLWVudGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFHakQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE1BQU0sT0FBTyxlQUFlO0lBYTFCOzs7O2dGQUk0RTtJQUU1RSxZQUNtQixJQUFtQixFQUNuQixXQUE0RCxFQUM1RCxXQUF3QjtRQUZ4QixTQUFJLEdBQUosSUFBSSxDQUFlO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFpRDtRQUM1RCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXBCM0M7Ozs7b0ZBSTRFO1FBRTNELFFBQUcsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFakQsZUFBVSxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztJQVl0RCxDQUFDO0lBRUw7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFOzs7T0FHRztJQUNJLFVBQVUsQ0FBQyxjQUFtQixFQUFFO1FBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVB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LElBQUksQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyRDtTQUNGO0lBQ0gsQ0FBQztJQUVPLFNBQVMsQ0FBQyxFQUFPO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUFPO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU8sV0FBVyxDQUFDLFFBQWE7UUFDL0IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtTb3J0fSBmcm9tICcuLi9zb3J0JztcbmltcG9ydCB7U29ydENvbnRleHR9IGZyb20gJy4uL3NvcnQtY29udGV4dCc7XG5pbXBvcnQge0xvZ2dlckZhY3Rvcnl9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJztcblxuZXhwb3J0IGNsYXNzIEluZGV4ZWRFbnRpdGllczxULCBUSWQ9YW55PiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignSW5kZXhlZEVudGl0aWVzJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZW50aXRpZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaWRUb0FycmF5SW5kZXggPSBuZXcgTWFwPFRJZCwgbnVtYmVyPigpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWRGbjogKGU6IFQpID0+IFRJZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU29ydEZuOiAoKGRhdGE6IFRbXSwgc29ydHM6IFNvcnRbXSkgPT4gVFtdKSB8IHVuZGVmaW5lZCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvcnRDb250ZXh0OiBTb3J0Q29udGV4dFxuICApIHsgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgZW50aXRpZXMkKCk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0aWVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW50aXRpZXNTbmFwc2hvdCgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9lbnRpdGllcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgZXhpc3RpbmcgZW50aXRpZXMgd2l0aCB0aGUgbmV3IG9uZXMuXG4gICAqIFRoZSBpbmRleCBpcyByZWJ1aWx0LiBPKG4pXG4gICAqL1xuICBwdWJsaWMgcmVwbGFjZUFsbChuZXdFbnRpdGllczogVFtdID0gW10pIHtcbiAgICBpZiAodGhpcy5sb2NhbFNvcnRGbikge1xuICAgICAgbmV3RW50aXRpZXMgPSB0aGlzLmxvY2FsU29ydEZuKG5ld0VudGl0aWVzLCB0aGlzLnNvcnRDb250ZXh0LnNvcnRzU25hcHNob3QpO1xuICAgIH1cbiAgICB0aGlzLnJlYnVpbGRJbmRleChuZXdFbnRpdGllcyk7XG4gICAgdGhpcy5zZXRFbnRpdGllcyhuZXdFbnRpdGllcyk7XG4gIH1cblxuICAvKipcbiAgICogS2VlcHMgYWxsIGV4aXN0aW5nIGVudGl0aWVzLCBidXQgcmVwbGFjZXMgdGhvc2Ugd2hpY2ggYXJlIHVwZGF0ZWQgd2l0aCB0aGUgbmV3IGRhdGEuXG4gICAqIFByb3ZpZGVkIHVwZGF0ZWQgZW50aXRpZXMgd2hpY2ggYXJlIGN1cnJlbnRseSBub3QgaW4gdGhpcyBpbmRleCBhcmUgaWdub3JlZC5cbiAgICogQHBhcmFtIHVwZGF0ZWRcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVTb21lKHVwZGF0ZWQ6IFRbXSkge1xuICAgIGNvbnN0IG5ld0RhdGEgPSBbLi4udGhpcy5lbnRpdGllc1NuYXBzaG90XTtcbiAgICB1cGRhdGVkLmZvckVhY2goXG4gICAgICB1cGRhdGUgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuZ2V0SXRlbUlkKHVwZGF0ZSk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5pbmRleEJ5SWQoaWQpO1xuICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHtcbiAgICAgICAgICBuZXdEYXRhW2luZGV4XSA9IHVwZGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5zZXRFbnRpdGllcyhuZXdEYXRhKTtcbiAgfVxuXG5cbiAgcHVibGljIGFwcGVuZChhcHBlbmQ6IFRbXSk6IHZvaWQge1xuICAgIHRoaXMuaW5zZXJ0KGFwcGVuZCwgdGhpcy5lbnRpdGllc1NuYXBzaG90Lmxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyB0aGUgZ2l2ZW4gZW50aXRpZXMgdG8gdGhpcyBpbmRleC5cbiAgICogVGhlIG5ldyBhcHBlbmRlZCBlbnRpdGllcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGluZGV4LlxuICAgKiBPKG4pIHdoZXJlIG4gPSBudW1iZXIgb2YgYXBwZW5kZWQgZW50aXRpZXNcbiAgICogQHBhcmFtIGluc2VydGVkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICovXG4gIHB1YmxpYyBpbnNlcnQoaW5zZXJ0ZWQ6IFRbXSwgb2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaW5zZXJ0ZWQgJiYgaW5zZXJ0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLmVudGl0aWVzU25hcHNob3Q7XG4gICAgICBjb25zdCBuZXdEYXRhID0gWy4uLmVudGl0aWVzXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnNlcnRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICBuZXdEYXRhW2kgKyBvZmZzZXRdID0gaW5zZXJ0ZWRbaV07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmxvY2FsU29ydEZuKSB7XG4gICAgICAgIC8vIGxvY2FsIHNvcnQgY2FuIHJlLW9yZGVyIGFsbCBpdGVtc1xuICAgICAgICB0aGlzLnJlcGxhY2VBbGwobmV3RGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXaXRob3V0IGEgc29ydCwgd2UgY2FuIG9wdGltaXplIGluZGV4aW5nXG4gICAgICAgIHRoaXMucmVJbmRleEZyb20obmV3RGF0YSwgb2Zmc2V0KTtcbiAgICAgICAgdGhpcy5zZXRFbnRpdGllcyhuZXdEYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9va3VwIGFuIGVudGl0eSBieSBpdHMgaWQuXG4gICAqIFRoaXMgd2lsbCB1c2UgYW4gaW5kZXggTygxKVxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIHB1YmxpYyBnZXRCeUlkKGlkOiBUSWQpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlbnRpdGllcyA9IHRoaXMuZW50aXRpZXNTbmFwc2hvdDtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuaW5kZXhCeUlkKGlkKTtcbiAgICBpZiAoaW5kZXggIT0gLTEpIHtcbiAgICAgIHJldHVybiBlbnRpdGllc1tpbmRleF07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5vdGlmeSgpOiB2b2lkIHtcbiAgICB0aGlzLl9lbnRpdGllcyQubmV4dChcbiAgICAgIHRoaXMuX2VudGl0aWVzJC5nZXRWYWx1ZSgpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuX2VudGl0aWVzJC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2lkVG9BcnJheUluZGV4LmNsZWFyKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYnVpbGRJbmRleChlbnRpdGllczogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5faWRUb0FycmF5SW5kZXguY2xlYXIoKTtcbiAgICB0aGlzLnJlSW5kZXhGcm9tKGVudGl0aWVzLCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVJbmRleEZyb20oZW50aXRpZXM6IFRbXSwgc3RhcnRJbmRleDogbnVtYmVyKSB7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbnRpdGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZW50aXR5ID0gZW50aXRpZXNbaV07XG4gICAgICBpZiAoZW50aXR5KSB7XG4gICAgICAgIHRoaXMuX2lkVG9BcnJheUluZGV4LnNldCh0aGlzLmdldEl0ZW1JZChlbnRpdHkpLCBpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluZGV4QnlJZChpZDogVElkKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faWRUb0FycmF5SW5kZXguZ2V0KGlkKSA/PyAtMTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbUlkKGl0ZW06IFQpOiBUSWQge1xuICAgIHJldHVybiB0aGlzLmlkRm4oaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIHNldEVudGl0aWVzKGVudGl0aWVzOiBUW10pOiB2b2lkIHtcbiAgICBpZiAoISh0aGlzLmVudGl0aWVzU25hcHNob3QubGVuZ3RoID09PSAwICYmIGVudGl0aWVzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdFbnRpdGllcyBjaGFuZ2VkOiAnICsgZW50aXRpZXMubGVuZ3RoLCBlbnRpdGllcyk7XG4gICAgICB0aGlzLl9lbnRpdGllcyQubmV4dChlbnRpdGllcyk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
@@ -154,7 +154,7 @@ export class RestClient extends DataSourceBase {
154
154
  params: builder.build(),
155
155
  responseType: 'text'
156
156
  })
157
- .pipe(tap(() => DataSourceChangeEvent.deleted(ids)));
157
+ .pipe(tap(() => this.publishChangeEvent(DataSourceChangeEvent.deleted(ids))));
158
158
  }
159
159
  }
160
160
  export class RestClientList extends RestClient {
@@ -276,4 +276,4 @@ export class RestClientContinuable extends RestClient {
276
276
  }, []));
277
277
  }
278
278
  }
279
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhc291cmNlL3Jlc3QvcmVzdC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFVLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFPLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHNUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxNQUFNLE9BQU8sd0JBQXdCO0lBS25DLFlBQVksVUFBNkI7UUFIbEMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHdEIsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQzthQUNuQztZQUNELElBQUksVUFBVSxDQUFDLFFBQVEs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RUFDM0MsTUFBTSxDQUNQLENBQUMsSUFBSSxDQUNKLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pCLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixDQUFDLHdGQUF3RjtnQkFDM0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FDdkIsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUNwRSxNQUFNLENBQ1A7Z0JBQ0QsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNaLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDL0IsTUFBTSxDQUNKLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNJLEVBQUUsQ0FDUixDQUNGLENBQUM7SUFDSixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnQsIEh0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RU1QVFksIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2V4cGFuZCwgbWFwLCBtZXJnZUFsbCwgcmVkdWNlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SHR0cFBhcmFtc0J1aWxkZXJ9IGZyb20gJy4uLy4uL2h0dHAtcGFyYW1zLWJ1aWxkZXInO1xuaW1wb3J0IHtTb3J0fSBmcm9tICcuLi8uLi9zb3J0JztcbmltcG9ydCB7RmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXJzL2ZpbHRlcic7XG5pbXBvcnQge1BhZ2UsIFBhZ2VhYmxlfSBmcm9tICcuLi8uLi9wYWdlJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuaW1wb3J0IHtDb250aW51YWJsZUxpc3Rpbmd9IGZyb20gJy4uLy4uL2NvbnRpbnVhYmxlLWxpc3RpbmcnO1xuaW1wb3J0IHtUb2tlbkNodW5rUmVxdWVzdH0gZnJvbSAnLi4vLi4vdG9rZW4tY2h1bmstcmVxdWVzdCc7XG5pbXBvcnQge0lDb250aW51YWJsZURhdGFTb3VyY2UsIElEYXRhU291cmNlLCBJTGlzdERhdGFTb3VyY2UsIElQYWdlZERhdGFTb3VyY2V9IGZyb20gJy4uL2RhdGEtc291cmNlJztcbmltcG9ydCB7RW50aXR5SWRVdGlsfSBmcm9tICcuLi9lbnRpdHktaWQtdXRpbCc7XG5pbXBvcnQge0JhdGNoZXJ9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2JhdGNoZXInO1xuaW1wb3J0IHtEYXRhU291cmNlQ2hhbmdlRXZlbnR9IGZyb20gJy4uL2RhdGEtc291cmNlLWNoYW5nZS1ldmVudCc7XG5pbXBvcnQge0RhdGFTb3VyY2VCYXNlfSBmcm9tICcuLi9kYXRhLXNvdXJjZS1iYXNlJztcblxuZXhwb3J0IGNsYXNzIEludGVybmFsUmVzdENsaWVudENvbmZpZyB7XG5cbiAgcHVibGljIGlkRmllbGQgPSAnaWQnO1xuICBwdWJsaWMgaWRzUGFyYW0gPSAnaWRzJztcblxuICBjb25zdHJ1Y3Rvcih1c2VyQ29uZmlnPzogUmVzdENsaWVudENvbmZpZykge1xuICAgIGlmICh1c2VyQ29uZmlnKSB7XG4gICAgICBpZiAodXNlckNvbmZpZy5pZEZpZWxkKSB7XG4gICAgICAgIHRoaXMuaWRGaWVsZCA9IHVzZXJDb25maWcuaWRGaWVsZDtcbiAgICAgIH1cbiAgICAgIGlmICh1c2VyQ29uZmlnLmlkc1BhcmFtKSB7XG4gICAgICAgIHRoaXMuaWRzUGFyYW0gPSB1c2VyQ29uZmlnLmlkc1BhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFsbG93cyB0byBjdXN0b21pemUgdGhlIHJlc3QgY2xpZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50Q29uZmlnIHtcblxuICAvKipcbiAgICogVGhlIGZpZWxkIHRvIHVzZSBhcyBpZC4gRGVmYXVsdHMgdG8gJ2lkJy5cbiAgICovXG4gIHB1YmxpYyBpZEZpZWxkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVlcnkgcGFyYW0gdG8gdXNlIGZvciBtdWx0aXBsZSBpZHMuIERlZmF1bHRzIHRvICdpZHMnXG4gICAqL1xuICBwdWJsaWMgaWRzUGFyYW0/OiBzdHJpbmc7XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnQ8VCwgVElEPiBleHRlbmRzIERhdGFTb3VyY2VCYXNlPFQ+IGltcGxlbWVudHMgSURhdGFTb3VyY2U8VD4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZzogSW50ZXJuYWxSZXN0Q2xpZW50Q29uZmlnO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXN0RW5kcG9pbnQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnXG4gICkge1xuICAgIHN1cGVyKG5ldyBJbnRlcm5hbFJlc3RDbGllbnRDb25maWcoY29uZmlnKS5pZEZpZWxkKTtcbiAgICB0aGlzLmNvbmZpZyA9IG5ldyBJbnRlcm5hbFJlc3RDbGllbnRDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBmaW5kQnlJZChpZDogVElELCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcGFyYW1zID0gSHR0cFBhcmFtc0J1aWxkZXIuc3RhcnQocGFyYW1zKS5idWlsZCgpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHRoaXMuZ2V0RW50aXR5VXJsKGlkKSwge3BhcmFtczogcGFyYW1zfSk7XG4gIH1cblxuICBwdWJsaWMgZmluZEJ5SWRzKGlkczogYW55W10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHRoaXMuX2xvZ2dlci53YXJuKCdWZXJ5IGluZWZmaWNpZW50IGZpbmRCeUlkcyBoYW5kbGluZyAnICsgaWRzLmxlbmd0aCk7XG4gICAgcmV0dXJuIGZvcmtKb2luKFxuICAgICAgaWRzLm1hcChpZCA9PiB0aGlzLmZpbmRCeUlkKGlkLCBwYXJhbXMpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBvciBVcGRhdGVzIHRoZSBnaXZlbiBlbnRpdHkgZGVwZW5kaW5nIGlmIGl0IGFscmVhZHkgaGFzIGEgdmFsaWQgaWQuXG4gICAqL1xuICBwdWJsaWMgc2F2ZShlbnRpdHk6IFQsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0SWQoZW50aXR5KTtcbiAgICByZXR1cm4gKCghIWlkKSA/IHRoaXMudXBkYXRlKGVudGl0eSwgcGFyYW1zKSA6IHRoaXMuY3JlYXRlKGVudGl0eSwgcGFyYW1zKSk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlPFRDID0gVD4obmV3RW50aXR5OiBUQywgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLnJlc3RFbmRwb2ludCwgbmV3RW50aXR5LCB7XG4gICAgICBwYXJhbXM6IHBhcmFtc1xuICAgIH0pLnBpcGUoXG4gICAgICAgIHRhcChlID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KFxuICAgICAgICAgIERhdGFTb3VyY2VDaGFuZ2VFdmVudC5jcmVhdGVkKFtlXSlcbiAgICAgICAgKSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlPFRFbnRpdHlVcGRhdGU+KHVwZGF0ZTogVEVudGl0eVVwZGF0ZSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KFxuICAgICAgdGhpcy5nZXRFbnRpdHlVcmxCeSg8VD48dW5rbm93bj51cGRhdGUpLFxuICAgICAgdXBkYXRlLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfVxuICAgICkucGlwZShcbiAgICAgICAgdGFwKGUgPT4gdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoXG4gICAgICAgICAgRGF0YVNvdXJjZUNoYW5nZUV2ZW50Lm1vZGlmaWVkKFtlXSlcbiAgICAgICAgKSlcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWxsPFRFbnRpdHlVcGRhdGU+KHVwZGF0ZWRFbnRpdGllczogVEVudGl0eVVwZGF0ZVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFRbXT4oXG4gICAgICB0aGlzLnJlc3RFbmRwb2ludCwgdXBkYXRlZEVudGl0aWVzLCB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChlbnRpdGllcyA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChcbiAgICAgICAgICBEYXRhU291cmNlQ2hhbmdlRXZlbnQubW9kaWZpZWQoZW50aXRpZXMpXG4gICAgICAgICkpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShlbnRpdHk6IFQsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKFxuICAgICAgdGhpcy5nZXRFbnRpdHlVcmxCeShlbnRpdHkpLFxuICAgICAge1xuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgIH1cbiAgICApLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoXG4gICAgICAgIERhdGFTb3VyY2VDaGFuZ2VFdmVudC5kZWxldGVkKFt0aGlzLmdldElkKGVudGl0eSldKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUFsbChlbnRpdGllczogVFtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcy5tYXAoZSA9PiBTdHJpbmcodGhpcy5nZXRJZChlKSkpO1xuXG4gICAgY29uc3QgbWF4QmF0Y2hTaXplID0gMTAwO1xuICAgIGNvbnN0IGRlbGV0ZVJlcXVlc3RzID0gQmF0Y2hlci5iYXRjaE1hcChcbiAgICAgIGlkcyxcbiAgICAgIG1heEJhdGNoU2l6ZSxcbiAgICAgIGJhdGNoID0+IHRoaXMuZGVsZXRlSWRCYXRjaChiYXRjaCwgcGFyYW1zKVxuICAgICk7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdEZWxldGluZyAnICsgZW50aXRpZXMubGVuZ3RoICsgJyBpbiAnICsgZGVsZXRlUmVxdWVzdHMubGVuZ3RoICsgJyBiYXRjaGVzOiAnLCBkZWxldGVSZXF1ZXN0cyk7XG4gICAgcmV0dXJuIGZvcmtKb2luKGRlbGV0ZVJlcXVlc3RzKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdWIgUmVzb3VyY2UgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdWJSZXNvdXJjZUxpc3Q8VFMsIFRTSUQ+KHBhcmVudDogVCwgc3ViUGF0aDogc3RyaW5nLCBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnKTogUmVzdENsaWVudExpc3Q8VFMsIFRTSUQ+IHtcbiAgICByZXR1cm4gbmV3IFJlc3RDbGllbnRMaXN0KFxuICAgICAgdGhpcy5nZXRFbnRpdHlVcmxCeShwYXJlbnQpICsgJy8nICsgc3ViUGF0aCxcbiAgICAgIHRoaXMuaHR0cCxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3ViUmVzb3VyY2VQYWdlZDxUUywgVFNJRD4ocGFyZW50OiBULCBzdWJQYXRoOiBzdHJpbmcsIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWcpOiBSZXN0Q2xpZW50UGFnZWQ8VFMsIFRTSUQ+IHtcbiAgICByZXR1cm4gbmV3IFJlc3RDbGllbnRQYWdlZChcbiAgICAgIHRoaXMuZ2V0RW50aXR5VXJsQnkocGFyZW50KSArICcvJyArIHN1YlBhdGgsXG4gICAgICB0aGlzLmh0dHAsXG4gICAgICBjb25maWdcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN1YlJlc291cmNlQ29udGludWFibGU8VFMsIFRTSUQ+KHBhcmVudDogVCwgc3ViUGF0aDogc3RyaW5nLCBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnKTogUmVzdENsaWVudENvbnRpbnVhYmxlPFRTLCBUU0lEPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN0Q2xpZW50Q29udGludWFibGUoXG4gICAgICB0aGlzLmdldEVudGl0eVVybEJ5KHBhcmVudCkgKyAnLycgKyBzdWJQYXRoLFxuICAgICAgdGhpcy5odHRwLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm90ZWN0ZWQgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBwYXRjaEludGVybmFsPFA+KGlkOiBUSUQsIGVudGl0eVBhdGNoOiBQLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxUPihcbiAgICAgIHRoaXMuZ2V0RW50aXR5VXJsKGlkKSxcbiAgICAgIGVudGl0eVBhdGNoLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfVxuICAgICkucGlwZShcbiAgICAgIHRhcChlID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KFxuICAgICAgICBEYXRhU291cmNlQ2hhbmdlRXZlbnQubW9kaWZpZWQoW2VdKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhdGNoQWxsSW50ZXJuYWw8UD4oZW50aXR5UGF0Y2hlczogUFtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPFRbXT4oXG4gICAgICB0aGlzLnJlc3RFbmRwb2ludCxcbiAgICAgIGVudGl0eVBhdGNoZXMsXG4gICAgICB7XG4gICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICB9XG4gICAgKS5waXBlKFxuICAgICAgdGFwKGUgPT4gdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50Lm1vZGlmaWVkKGUpKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFN3aXRjaCB0byBwdWJsaXNoQ2hhbmdlRXZlbnRcbiAgICovXG4gIHByb3RlY3RlZCBvbkxvY2FsQ2hhbmdlZChlbnRpdHk/OiBUKTogdm9pZCB7XG4gICAgdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50LnVua25vd25DaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVudGl0eVVybEJ5KGVudGl0eTogVCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXR5VXJsKHRoaXMuZ2V0SWQoZW50aXR5KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RW50aXR5VXJsKGlkOiBUSUQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc3RFbmRwb2ludCArICcvJyArIGlkO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgdGhlIGdpdmVuIGlkcyBpbiBhIGJhdGNoIGNhbGwuXG4gICAqIE5vdGUgdGhhdCBkdWUgSFRUUCBSZXF1ZXN0IFVSSSBsaW1pdGF0aW9ucyxcbiAgICogdGhlIG51bWJlciBvZiBpZHMgdGhhdCBjYW4gYmUgZGVsZXRlZCBpbiBhIHNpbmdsZSBiYXRjaCBpc1xuICAgKiBsaW1pdGVkIChhcm91bmQgMTUwLCBkZXBlbmRpbmcgb24gaWQgbGVuZ3RoLCBzaW5jZSB0aGV5IGFyZVxuICAgKiBwYXJ0IG9mIHRoZSByZXF1ZXN0IHVyaSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBkZWxldGVJZEJhdGNoKGlkczogc3RyaW5nW10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBIdHRwUGFyYW1zQnVpbGRlci5zdGFydChwYXJhbXMpO1xuICAgIGJ1aWxkZXIuYXBwZW5kRmlsdGVyKG5ldyBGaWx0ZXIodGhpcy5jb25maWcuaWRzUGFyYW0sIGlkcykpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMucmVzdEVuZHBvaW50LFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IGJ1aWxkZXIuYnVpbGQoKSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCdcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+ICBEYXRhU291cmNlQ2hhbmdlRXZlbnQuZGVsZXRlZChpZHMpKVxuICAgICAgKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50TGlzdDxULCBUSUQ+IGV4dGVuZHMgUmVzdENsaWVudDxULCBUSUQ+IGltcGxlbWVudHMgSUxpc3REYXRhU291cmNlPFQ+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXN0RW5kcG9pbnQ6IHN0cmluZyxcbiAgICBodHRwOiBIdHRwQ2xpZW50LFxuICAgIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWdcbiAgKSB7XG4gICAgc3VwZXIocmVzdEVuZHBvaW50LCBodHRwLCBjb25maWcpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGZpbmRBbGxGaWx0ZXJlZChcbiAgICBmaWx0ZXJzPzogRmlsdGVyW10sXG4gICAgc29ydHM/OiBTb3J0W10sXG4gICAgcGFyYW1zPzogSHR0cFBhcmFtc1xuICApOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRBbGwoXG4gICAgICBIdHRwUGFyYW1zQnVpbGRlci5zdGFydChwYXJhbXMpXG4gICAgICAgIC5hcHBlbmRGaWx0ZXJzKGZpbHRlcnMpXG4gICAgICAgIC5hcHBlbmRTb3J0cyhzb3J0cylcbiAgICAgICAgLmJ1aWxkKClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkcyhpZHM6IGFueVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAoaWRzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kQWxsRmlsdGVyZWQoXG4gICAgICAgIFtuZXcgRmlsdGVyKHRoaXMuY29uZmlnLmlkc1BhcmFtLCBpZHMpXSxcbiAgICAgICAgW10sXG4gICAgICAgIHBhcmFtc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmluZEFsbChwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUW10+KHRoaXMucmVzdEVuZHBvaW50LCB7XG4gICAgICBwYXJhbXM6IHBhcmFtc1xuICAgIH0pO1xuICB9XG5cblxufVxuXG5leHBvcnQgY2xhc3MgUmVzdENsaWVudFBhZ2VkPFQsIFRJRD4gZXh0ZW5kcyBSZXN0Q2xpZW50PFQsIFRJRD4gaW1wbGVtZW50cyBJUGFnZWREYXRhU291cmNlPFQ+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXN0RW5kcG9pbnQ6IHN0cmluZyxcbiAgICBodHRwOiBIdHRwQ2xpZW50LFxuICAgIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWdcbiAgKSB7XG4gICAgc3VwZXIocmVzdEVuZHBvaW50LCBodHRwLCBjb25maWcpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGZpbmRBbGxQYWdlZChwYWdlYWJsZTogUGFnZWFibGUsIGZpbHRlcnM/OiBGaWx0ZXJbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8UGFnZTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmdldFBhZ2VkKHRoaXMucmVzdEVuZHBvaW50LCBwYWdlYWJsZSwgZmlsdGVycywgcGFyYW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJZHMoaWRzOiBhbnlbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbFBhZ2VkKFxuICAgICAgICBuZXcgUGFnZWFibGUoMCwgaWRzLmxlbmd0aCksXG4gICAgICAgIFtuZXcgRmlsdGVyKHRoaXMuY29uZmlnLmlkc1BhcmFtLCBpZHMpXSxcbiAgICAgICAgcGFyYW1zXG4gICAgICApLnBpcGUoXG4gICAgICAgIG1hcChwYWdlID0+IHBhZ2UuY29udGVudClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblxuICAvKipcbiAgICogR2V0cyB0aGUgcmVxdWVzdGVkIGRhdGEgcGFnZSBhcyBQYWdlPFQ+XG4gICAqIEBwYXJhbSB1cmwgVGhlIHJlc291cmNlIHVybFxuICAgKiBAcGFyYW0gcGFnZWFibGUgVGhlIHBhZ2UgcmVxdWVzdFxuICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVyc1NuYXBzaG90IHJlcXVlc3RcbiAgICogQHBhcmFtIHBhcmFtcyBBZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICovXG4gIHByaXZhdGUgZ2V0UGFnZWQodXJsOiBzdHJpbmcsIHBhZ2VhYmxlOiBQYWdlYWJsZSwgZmlsdGVycz86IEZpbHRlcltdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlPFQ+PiB7XG4gICAgcGFyYW1zID0gSHR0cFBhcmFtc0J1aWxkZXIuc3RhcnQocGFyYW1zKVxuICAgICAgLmFwcGVuZFBhZ2VhYmxlKHBhZ2VhYmxlKVxuICAgICAgLmFwcGVuZEZpbHRlcnMoZmlsdGVycylcbiAgICAgIC5idWlsZCgpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFBhZ2U8VD4+KHVybCwge3BhcmFtczogcGFyYW1zfSk7XG4gIH1cblxufVxuXG5leHBvcnQgY2xhc3MgUmVzdENsaWVudENvbnRpbnVhYmxlPFQsIFRJRD4gZXh0ZW5kcyBSZXN0Q2xpZW50PFQsIFRJRD4gaW1wbGVtZW50cyBJQ29udGludWFibGVEYXRhU291cmNlPFQ+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICByZXN0RW5kcG9pbnQ6IHN0cmluZyxcbiAgICBodHRwOiBIdHRwQ2xpZW50LFxuICAgIGNvbmZpZz86IFJlc3RDbGllbnRDb25maWdcbiAgKSB7XG4gICAgc3VwZXIocmVzdEVuZHBvaW50LCBodHRwLCBjb25maWcpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIGZpbmRBbGxDb250aW51YWJsZShyZXF1ZXN0OiBUb2tlbkNodW5rUmVxdWVzdCwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8Q29udGludWFibGVMaXN0aW5nPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q29udGludWFibGVMaXN0aW5nPFQ+Pih0aGlzLnJlc3RFbmRwb2ludCxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zOiBIdHRwUGFyYW1zQnVpbGRlci5zdGFydChwYXJhbXMpXG4gICAgICAgICAgLmFwcGVuZENvbnRpbnVhdGlvblJlcXVlc3QocmVxdWVzdClcbiAgICAgICAgICAuYnVpbGQoKVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluZEJ5SWRzKGlkczogYW55W10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIGlmIChpZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmxvYWRBbGwoXG4gICAgICAgIFtuZXcgRmlsdGVyKHRoaXMuY29uZmlnLmlkc1BhcmFtLCBpZHMpXSxcbiAgICAgICAgW10sXG4gICAgICAgIHBhcmFtc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRBbGwoXG4gICAgZmlsdGVycz86IEZpbHRlcltdLFxuICAgIHNvcnRzPzogU29ydFtdLFxuICAgIHBhcmFtcz86IEh0dHBQYXJhbXNcbiAgKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5maW5kQWxsQ29udGludWFibGUoXG4gICAgICBuZXcgVG9rZW5DaHVua1JlcXVlc3QobnVsbCwgZmlsdGVycywgc29ydHMpLFxuICAgICAgcGFyYW1zXG4gICAgKS5waXBlKFxuICAgICAgZXhwYW5kKChsaXN0aW5nKSA9PiB7IC8vIHRoZSBwcmV2aW91cyBcImxpc3RpbmdcIiAtPiBUaGlzIGlzIHJlY3Vyc2l2ZVxuICAgICAgICByZXR1cm4gbGlzdGluZy5uZXh0Q29udGludWF0aW9uVG9rZW4gLy8gaWYgdGhlcmUncyBcIm5leHRDb250aW51YXRpb25Ub2tlblwiLCB3ZSByZWZldGNoIG9yIHdlIEVNUFRZIHRvIGNvbXBsZXRlIHRoZSBcImV4cGFuZCgpXCJcbiAgICAgICAgICA/IHRoaXMuZmluZEFsbENvbnRpbnVhYmxlKFxuICAgICAgICAgICAgbmV3IFRva2VuQ2h1bmtSZXF1ZXN0KGxpc3RpbmcubmV4dENvbnRpbnVhdGlvblRva2VuLCBmaWx0ZXJzLCBzb3J0cyksXG4gICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICApXG4gICAgICAgICAgOiBFTVBUWTtcbiAgICAgIH0pLFxuICAgICAgbWFwKGxpc3RpbmcgPT4gbGlzdGluZy5jb250ZW50KSxcbiAgICAgIHJlZHVjZShcbiAgICAgICAgKGFnZywgbGlzdGluZykgPT4ge1xuICAgICAgICAgIGFnZy5wdXNoKC4uLmxpc3RpbmcpO1xuICAgICAgICAgIHJldHVybiBhZ2c7XG4gICAgICAgIH0sXG4gICAgICAgIDxUW10+W11cbiAgICAgIClcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhc291cmNlL3Jlc3QvcmVzdC1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFPLFFBQVEsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUMxQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRCxNQUFNLE9BQU8sd0JBQXdCO0lBS25DLFlBQVksVUFBNkI7UUFIbEMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHdEIsSUFBSSxVQUFVLEVBQUU7WUFDZCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQzthQUNuQztZQUNELElBQUksVUFBVSxDQUFDLFFBQVEs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SSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFDM0MsTUFBTSxDQUNQLENBQUMsSUFBSSxDQUNKLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pCLE9BQU8sT0FBTyxDQUFDLHFCQUFxQixDQUFDLHdGQUF3RjtnQkFDM0gsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FDdkIsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUNwRSxNQUFNLENBQ1A7Z0JBQ0QsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNaLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDL0IsTUFBTSxDQUNKLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2YsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNJLEVBQUUsQ0FDUixDQUNGLENBQUM7SUFDSixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnQsIEh0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7RU1QVFksIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2V4cGFuZCwgbWFwLCByZWR1Y2UsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtIdHRwUGFyYW1zQnVpbGRlcn0gZnJvbSAnLi4vLi4vaHR0cC1wYXJhbXMtYnVpbGRlcic7XG5pbXBvcnQge1NvcnR9IGZyb20gJy4uLy4uL3NvcnQnO1xuaW1wb3J0IHtGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlcnMvZmlsdGVyJztcbmltcG9ydCB7UGFnZSwgUGFnZWFibGV9IGZyb20gJy4uLy4uL3BhZ2UnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0NvbnRpbnVhYmxlTGlzdGluZ30gZnJvbSAnLi4vLi4vY29udGludWFibGUtbGlzdGluZyc7XG5pbXBvcnQge1Rva2VuQ2h1bmtSZXF1ZXN0fSBmcm9tICcuLi8uLi90b2tlbi1jaHVuay1yZXF1ZXN0JztcbmltcG9ydCB7SUNvbnRpbnVhYmxlRGF0YVNvdXJjZSwgSURhdGFTb3VyY2UsIElMaXN0RGF0YVNvdXJjZSwgSVBhZ2VkRGF0YVNvdXJjZX0gZnJvbSAnLi4vZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtCYXRjaGVyfSBmcm9tICcuLi8uLi8uLi91dGlscy9iYXRjaGVyJztcbmltcG9ydCB7RGF0YVNvdXJjZUNoYW5nZUV2ZW50fSBmcm9tICcuLi9kYXRhLXNvdXJjZS1jaGFuZ2UtZXZlbnQnO1xuaW1wb3J0IHtEYXRhU291cmNlQmFzZX0gZnJvbSAnLi4vZGF0YS1zb3VyY2UtYmFzZSc7XG5cbmV4cG9ydCBjbGFzcyBJbnRlcm5hbFJlc3RDbGllbnRDb25maWcge1xuXG4gIHB1YmxpYyBpZEZpZWxkID0gJ2lkJztcbiAgcHVibGljIGlkc1BhcmFtID0gJ2lkcyc7XG5cbiAgY29uc3RydWN0b3IodXNlckNvbmZpZz86IFJlc3RDbGllbnRDb25maWcpIHtcbiAgICBpZiAodXNlckNvbmZpZykge1xuICAgICAgaWYgKHVzZXJDb25maWcuaWRGaWVsZCkge1xuICAgICAgICB0aGlzLmlkRmllbGQgPSB1c2VyQ29uZmlnLmlkRmllbGQ7XG4gICAgICB9XG4gICAgICBpZiAodXNlckNvbmZpZy5pZHNQYXJhbSkge1xuICAgICAgICB0aGlzLmlkc1BhcmFtID0gdXNlckNvbmZpZy5pZHNQYXJhbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBBbGxvd3MgdG8gY3VzdG9taXplIHRoZSByZXN0IGNsaWVudFxuICovXG5leHBvcnQgY2xhc3MgUmVzdENsaWVudENvbmZpZyB7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWVsZCB0byB1c2UgYXMgaWQuIERlZmF1bHRzIHRvICdpZCcuXG4gICAqL1xuICBwdWJsaWMgaWRGaWVsZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHF1ZXJ5IHBhcmFtIHRvIHVzZSBmb3IgbXVsdGlwbGUgaWRzLiBEZWZhdWx0cyB0byAnaWRzJ1xuICAgKi9cbiAgcHVibGljIGlkc1BhcmFtPzogc3RyaW5nO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50PFQsIFRJRD4gZXh0ZW5kcyBEYXRhU291cmNlQmFzZTxUPiBpbXBsZW1lbnRzIElEYXRhU291cmNlPFQ+IHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWc6IEludGVybmFsUmVzdENsaWVudENvbmZpZztcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzdEVuZHBvaW50OiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgY29uZmlnPzogUmVzdENsaWVudENvbmZpZ1xuICApIHtcbiAgICBzdXBlcihuZXcgSW50ZXJuYWxSZXN0Q2xpZW50Q29uZmlnKGNvbmZpZykuaWRGaWVsZCk7XG4gICAgdGhpcy5jb25maWcgPSBuZXcgSW50ZXJuYWxSZXN0Q2xpZW50Q29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEJ5SWQoaWQ6IFRJRCwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHBhcmFtcyA9IEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcykuYnVpbGQoKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih0aGlzLmdldEVudGl0eVVybChpZCksIHtwYXJhbXM6IHBhcmFtc30pO1xuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkcyhpZHM6IGFueVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICB0aGlzLl9sb2dnZXIud2FybignVmVyeSBpbmVmZmljaWVudCBmaW5kQnlJZHMgaGFuZGxpbmcgJyArIGlkcy5sZW5ndGgpO1xuICAgIHJldHVybiBmb3JrSm9pbihcbiAgICAgIGlkcy5tYXAoaWQgPT4gdGhpcy5maW5kQnlJZChpZCwgcGFyYW1zKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgb3IgVXBkYXRlcyB0aGUgZ2l2ZW4gZW50aXR5IGRlcGVuZGluZyBpZiBpdCBhbHJlYWR5IGhhcyBhIHZhbGlkIGlkLlxuICAgKi9cbiAgcHVibGljIHNhdmUoZW50aXR5OiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldElkKGVudGl0eSk7XG4gICAgcmV0dXJuICgoISFpZCkgPyB0aGlzLnVwZGF0ZShlbnRpdHksIHBhcmFtcykgOiB0aGlzLmNyZWF0ZShlbnRpdHksIHBhcmFtcykpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZTxUQyA9IFQ+KG5ld0VudGl0eTogVEMsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4odGhpcy5yZXN0RW5kcG9pbnQsIG5ld0VudGl0eSwge1xuICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICB9KS5waXBlKFxuICAgICAgICB0YXAoZSA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChcbiAgICAgICAgICBEYXRhU291cmNlQ2hhbmdlRXZlbnQuY3JlYXRlZChbZV0pXG4gICAgICAgICkpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZTxURW50aXR5VXBkYXRlPih1cGRhdGU6IFRFbnRpdHlVcGRhdGUsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPihcbiAgICAgIHRoaXMuZ2V0RW50aXR5VXJsQnkoPFQ+PHVua25vd24+dXBkYXRlKSxcbiAgICAgIHVwZGF0ZSxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgIH1cbiAgICApLnBpcGUoXG4gICAgICAgIHRhcChlID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KFxuICAgICAgICAgIERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChbZV0pXG4gICAgICAgICkpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUFsbDxURW50aXR5VXBkYXRlPih1cGRhdGVkRW50aXRpZXM6IFRFbnRpdHlVcGRhdGVbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUW10+KFxuICAgICAgdGhpcy5yZXN0RW5kcG9pbnQsIHVwZGF0ZWRFbnRpdGllcywge1xuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoZW50aXRpZXMgPT4gdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoXG4gICAgICAgICAgRGF0YVNvdXJjZUNoYW5nZUV2ZW50Lm1vZGlmaWVkKGVudGl0aWVzKVxuICAgICAgICApKVxuICAgICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoZW50aXR5OiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShcbiAgICAgIHRoaXMuZ2V0RW50aXR5VXJsQnkoZW50aXR5KSxcbiAgICAgIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICB9XG4gICAgKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KFxuICAgICAgICBEYXRhU291cmNlQ2hhbmdlRXZlbnQuZGVsZXRlZChbdGhpcy5nZXRJZChlbnRpdHkpXSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGVBbGwoZW50aXRpZXM6IFRbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaWRzID0gZW50aXRpZXMubWFwKGUgPT4gU3RyaW5nKHRoaXMuZ2V0SWQoZSkpKTtcblxuICAgIGNvbnN0IG1heEJhdGNoU2l6ZSA9IDEwMDtcbiAgICBjb25zdCBkZWxldGVSZXF1ZXN0cyA9IEJhdGNoZXIuYmF0Y2hNYXAoXG4gICAgICBpZHMsXG4gICAgICBtYXhCYXRjaFNpemUsXG4gICAgICBiYXRjaCA9PiB0aGlzLmRlbGV0ZUlkQmF0Y2goYmF0Y2gsIHBhcmFtcylcbiAgICApO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnRGVsZXRpbmcgJyArIGVudGl0aWVzLmxlbmd0aCArICcgaW4gJyArIGRlbGV0ZVJlcXVlc3RzLmxlbmd0aCArICcgYmF0Y2hlczogJywgZGVsZXRlUmVxdWVzdHMpO1xuICAgIHJldHVybiBmb3JrSm9pbihkZWxldGVSZXF1ZXN0cyk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogU3ViIFJlc291cmNlIEJ1aWxkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgc3ViUmVzb3VyY2VMaXN0PFRTLCBUU0lEPihwYXJlbnQ6IFQsIHN1YlBhdGg6IHN0cmluZywgY29uZmlnPzogUmVzdENsaWVudENvbmZpZyk6IFJlc3RDbGllbnRMaXN0PFRTLCBUU0lEPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN0Q2xpZW50TGlzdChcbiAgICAgIHRoaXMuZ2V0RW50aXR5VXJsQnkocGFyZW50KSArICcvJyArIHN1YlBhdGgsXG4gICAgICB0aGlzLmh0dHAsXG4gICAgICBjb25maWdcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN1YlJlc291cmNlUGFnZWQ8VFMsIFRTSUQ+KHBhcmVudDogVCwgc3ViUGF0aDogc3RyaW5nLCBjb25maWc/OiBSZXN0Q2xpZW50Q29uZmlnKTogUmVzdENsaWVudFBhZ2VkPFRTLCBUU0lEPiB7XG4gICAgcmV0dXJuIG5ldyBSZXN0Q2xpZW50UGFnZWQoXG4gICAgICB0aGlzLmdldEVudGl0eVVybEJ5KHBhcmVudCkgKyAnLycgKyBzdWJQYXRoLFxuICAgICAgdGhpcy5odHRwLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJSZXNvdXJjZUNvbnRpbnVhYmxlPFRTLCBUU0lEPihwYXJlbnQ6IFQsIHN1YlBhdGg6IHN0cmluZywgY29uZmlnPzogUmVzdENsaWVudENvbmZpZyk6IFJlc3RDbGllbnRDb250aW51YWJsZTxUUywgVFNJRD4ge1xuICAgIHJldHVybiBuZXcgUmVzdENsaWVudENvbnRpbnVhYmxlKFxuICAgICAgdGhpcy5nZXRFbnRpdHlVcmxCeShwYXJlbnQpICsgJy8nICsgc3ViUGF0aCxcbiAgICAgIHRoaXMuaHR0cCxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvdGVjdGVkIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcm90ZWN0ZWQgcGF0Y2hJbnRlcm5hbDxQPihpZDogVElELCBlbnRpdHlQYXRjaDogUCwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4oXG4gICAgICB0aGlzLmdldEVudGl0eVVybChpZCksXG4gICAgICBlbnRpdHlQYXRjaCxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zOiBwYXJhbXNcbiAgICAgIH1cbiAgICApLnBpcGUoXG4gICAgICB0YXAoZSA9PiB0aGlzLnB1Ymxpc2hDaGFuZ2VFdmVudChcbiAgICAgICAgRGF0YVNvdXJjZUNoYW5nZUV2ZW50Lm1vZGlmaWVkKFtlXSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXRjaEFsbEludGVybmFsPFA+KGVudGl0eVBhdGNoZXM6IFBbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaDxUW10+KFxuICAgICAgdGhpcy5yZXN0RW5kcG9pbnQsXG4gICAgICBlbnRpdHlQYXRjaGVzLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfVxuICAgICkucGlwZShcbiAgICAgIHRhcChlID0+IHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC5tb2RpZmllZChlKSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTd2l0Y2ggdG8gcHVibGlzaENoYW5nZUV2ZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgb25Mb2NhbENoYW5nZWQoZW50aXR5PzogVCk6IHZvaWQge1xuICAgIHRoaXMucHVibGlzaENoYW5nZUV2ZW50KERhdGFTb3VyY2VDaGFuZ2VFdmVudC51bmtub3duQ2hhbmdlcygpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRFbnRpdHlVcmxCeShlbnRpdHk6IFQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldEVudGl0eVVybCh0aGlzLmdldElkKGVudGl0eSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEVudGl0eVVybChpZDogVElEKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXN0RW5kcG9pbnQgKyAnLycgKyBpZDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBEZWxldGVzIHRoZSBnaXZlbiBpZHMgaW4gYSBiYXRjaCBjYWxsLlxuICAgKiBOb3RlIHRoYXQgZHVlIEhUVFAgUmVxdWVzdCBVUkkgbGltaXRhdGlvbnMsXG4gICAqIHRoZSBudW1iZXIgb2YgaWRzIHRoYXQgY2FuIGJlIGRlbGV0ZWQgaW4gYSBzaW5nbGUgYmF0Y2ggaXNcbiAgICogbGltaXRlZCAoYXJvdW5kIDE1MCwgZGVwZW5kaW5nIG9uIGlkIGxlbmd0aCwgc2luY2UgdGhleSBhcmVcbiAgICogcGFydCBvZiB0aGUgcmVxdWVzdCB1cmkgcGFyYW1ldGVycy5cbiAgICovXG4gIHByaXZhdGUgZGVsZXRlSWRCYXRjaChpZHM6IHN0cmluZ1tdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBidWlsZGVyID0gSHR0cFBhcmFtc0J1aWxkZXIuc3RhcnQocGFyYW1zKTtcbiAgICBidWlsZGVyLmFwcGVuZEZpbHRlcihuZXcgRmlsdGVyKHRoaXMuY29uZmlnLmlkc1BhcmFtLCBpZHMpKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh0aGlzLnJlc3RFbmRwb2ludCxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zOiBidWlsZGVyLmJ1aWxkKCksXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiAgdGhpcy5wdWJsaXNoQ2hhbmdlRXZlbnQoRGF0YVNvdXJjZUNoYW5nZUV2ZW50LmRlbGV0ZWQoaWRzKSkpXG4gICAgICApO1xuICB9XG59XG5cblxuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnRMaXN0PFQsIFRJRD4gZXh0ZW5kcyBSZXN0Q2xpZW50PFQsIFRJRD4gaW1wbGVtZW50cyBJTGlzdERhdGFTb3VyY2U8VD4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlc3RFbmRwb2ludDogc3RyaW5nLFxuICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgY29uZmlnPzogUmVzdENsaWVudENvbmZpZ1xuICApIHtcbiAgICBzdXBlcihyZXN0RW5kcG9pbnQsIGh0dHAsIGNvbmZpZyk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEFsbEZpbHRlcmVkKFxuICAgIGZpbHRlcnM/OiBGaWx0ZXJbXSxcbiAgICBzb3J0cz86IFNvcnRbXSxcbiAgICBwYXJhbXM/OiBIdHRwUGFyYW1zXG4gICk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFsbChcbiAgICAgIEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcylcbiAgICAgICAgLmFwcGVuZEZpbHRlcnMoZmlsdGVycylcbiAgICAgICAgLmFwcGVuZFNvcnRzKHNvcnRzKVxuICAgICAgICAuYnVpbGQoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmluZEJ5SWRzKGlkczogYW55W10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIGlmIChpZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbmRBbGxGaWx0ZXJlZChcbiAgICAgICAgW25ldyBGaWx0ZXIodGhpcy5jb25maWcuaWRzUGFyYW0sIGlkcyldLFxuICAgICAgICBbXSxcbiAgICAgICAgcGFyYW1zXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kQWxsKHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFRbXT4odGhpcy5yZXN0RW5kcG9pbnQsIHtcbiAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgfSk7XG4gIH1cblxuXG59XG5cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50UGFnZWQ8VCwgVElEPiBleHRlbmRzIFJlc3RDbGllbnQ8VCwgVElEPiBpbXBsZW1lbnRzIElQYWdlZERhdGFTb3VyY2U8VD4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlc3RFbmRwb2ludDogc3RyaW5nLFxuICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgY29uZmlnPzogUmVzdENsaWVudENvbmZpZ1xuICApIHtcbiAgICBzdXBlcihyZXN0RW5kcG9pbnQsIGh0dHAsIGNvbmZpZyk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEFsbFBhZ2VkKHBhZ2VhYmxlOiBQYWdlYWJsZSwgZmlsdGVycz86IEZpbHRlcltdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UGFnZWQodGhpcy5yZXN0RW5kcG9pbnQsIHBhZ2VhYmxlLCBmaWx0ZXJzLCBwYXJhbXMpO1xuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkcyhpZHM6IGFueVtdLCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBpZiAoaWRzPy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kQWxsUGFnZWQoXG4gICAgICAgIG5ldyBQYWdlYWJsZSgwLCBpZHMubGVuZ3RoKSxcbiAgICAgICAgW25ldyBGaWx0ZXIodGhpcy5jb25maWcuaWRzUGFyYW0sIGlkcyldLFxuICAgICAgICBwYXJhbXNcbiAgICAgICkucGlwZShcbiAgICAgICAgbWFwKHBhZ2UgPT4gcGFnZS5jb250ZW50KVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByZXF1ZXN0ZWQgZGF0YSBwYWdlIGFzIFBhZ2U8VD5cbiAgICogQHBhcmFtIHVybCBUaGUgcmVzb3VyY2UgdXJsXG4gICAqIEBwYXJhbSBwYWdlYWJsZSBUaGUgcGFnZSByZXF1ZXN0XG4gICAqIEBwYXJhbSBmaWx0ZXJzIFRoZSBmaWx0ZXJzU25hcHNob3QgcmVxdWVzdFxuICAgKiBAcGFyYW0gcGFyYW1zIEFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRQYWdlZCh1cmw6IHN0cmluZywgcGFnZWFibGU6IFBhZ2VhYmxlLCBmaWx0ZXJzPzogRmlsdGVyW10sIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFBhZ2U8VD4+IHtcbiAgICBwYXJhbXMgPSBIdHRwUGFyYW1zQnVpbGRlci5zdGFydChwYXJhbXMpXG4gICAgICAuYXBwZW5kUGFnZWFibGUocGFnZWFibGUpXG4gICAgICAuYXBwZW5kRmlsdGVycyhmaWx0ZXJzKVxuICAgICAgLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UGFnZTxUPj4odXJsLCB7cGFyYW1zOiBwYXJhbXN9KTtcbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50Q29udGludWFibGU8VCwgVElEPiBleHRlbmRzIFJlc3RDbGllbnQ8VCwgVElEPiBpbXBsZW1lbnRzIElDb250aW51YWJsZURhdGFTb3VyY2U8VD4ge1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlc3RFbmRwb2ludDogc3RyaW5nLFxuICAgIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgY29uZmlnPzogUmVzdENsaWVudENvbmZpZ1xuICApIHtcbiAgICBzdXBlcihyZXN0RW5kcG9pbnQsIGh0dHAsIGNvbmZpZyk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZmluZEFsbENvbnRpbnVhYmxlKHJlcXVlc3Q6IFRva2VuQ2h1bmtSZXF1ZXN0LCBwYXJhbXM/OiBIdHRwUGFyYW1zKTogT2JzZXJ2YWJsZTxDb250aW51YWJsZUxpc3Rpbmc8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb250aW51YWJsZUxpc3Rpbmc8VD4+KHRoaXMucmVzdEVuZHBvaW50LFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IEh0dHBQYXJhbXNCdWlsZGVyLnN0YXJ0KHBhcmFtcylcbiAgICAgICAgICAuYXBwZW5kQ29udGludWF0aW9uUmVxdWVzdChyZXF1ZXN0KVxuICAgICAgICAgIC5idWlsZCgpXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJZHMoaWRzOiBhbnlbXSwgcGFyYW1zPzogSHR0cFBhcmFtcyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgaWYgKGlkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZEFsbChcbiAgICAgICAgW25ldyBGaWx0ZXIodGhpcy5jb25maWcuaWRzUGFyYW0sIGlkcyldLFxuICAgICAgICBbXSxcbiAgICAgICAgcGFyYW1zXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFsbChcbiAgICBmaWx0ZXJzPzogRmlsdGVyW10sXG4gICAgc29ydHM/OiBTb3J0W10sXG4gICAgcGFyYW1zPzogSHR0cFBhcmFtc1xuICApOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLmZpbmRBbGxDb250aW51YWJsZShcbiAgICAgIG5ldyBUb2tlbkNodW5rUmVxdWVzdChudWxsLCBmaWx0ZXJzLCBzb3J0cyksXG4gICAgICBwYXJhbXNcbiAgICApLnBpcGUoXG4gICAgICBleHBhbmQoKGxpc3RpbmcpID0+IHsgLy8gdGhlIHByZXZpb3VzIFwibGlzdGluZ1wiIC0+IFRoaXMgaXMgcmVjdXJzaXZlXG4gICAgICAgIHJldHVybiBsaXN0aW5nLm5leHRDb250aW51YXRpb25Ub2tlbiAvLyBpZiB0aGVyZSdzIFwibmV4dENvbnRpbnVhdGlvblRva2VuXCIsIHdlIHJlZmV0Y2ggb3Igd2UgRU1QVFkgdG8gY29tcGxldGUgdGhlIFwiZXhwYW5kKClcIlxuICAgICAgICAgID8gdGhpcy5maW5kQWxsQ29udGludWFibGUoXG4gICAgICAgICAgICBuZXcgVG9rZW5DaHVua1JlcXVlc3QobGlzdGluZy5uZXh0Q29udGludWF0aW9uVG9rZW4sIGZpbHRlcnMsIHNvcnRzKSxcbiAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgIClcbiAgICAgICAgICA6IEVNUFRZO1xuICAgICAgfSksXG4gICAgICBtYXAobGlzdGluZyA9PiBsaXN0aW5nLmNvbnRlbnQpLFxuICAgICAgcmVkdWNlKFxuICAgICAgICAoYWdnLCBsaXN0aW5nKSA9PiB7XG4gICAgICAgICAgYWdnLnB1c2goLi4ubGlzdGluZyk7XG4gICAgICAgICAgcmV0dXJuIGFnZztcbiAgICAgICAgfSxcbiAgICAgICAgPFRbXT5bXVxuICAgICAgKVxuICAgICk7XG4gIH1cblxufVxuIl19
@@ -3035,87 +3035,13 @@ class TokenChunkRequest {
3035
3035
  }
3036
3036
  }
3037
3037
 
3038
- class SortContext {
3039
- constructor() {
3040
- /***************************************************************************
3041
- * *
3042
- * Fields *
3043
- * *
3044
- **************************************************************************/
3045
- this._sorts = new BehaviorSubject([]);
3046
- /***************************************************************************
3047
- * *
3048
- * Private methods *
3049
- * *
3050
- **************************************************************************/
3051
- }
3052
- /***************************************************************************
3053
- * *
3054
- * Read API *
3055
- * *
3056
- **************************************************************************/
3057
- get sorts() {
3058
- return this._sorts.asObservable();
3059
- }
3060
- get sortsSnapshot() {
3061
- return this._sorts.getValue();
3062
- }
3063
- findSortDirection(prop) {
3064
- const f = this.findSort(prop);
3065
- return f ? f.dir : undefined;
3066
- }
3067
- findSort(prop) {
3068
- return this.sortsSnapshot
3069
- .filter(f => f.prop === prop)
3070
- .find(first => true);
3071
- }
3072
- /***************************************************************************
3073
- * *
3074
- * Public API *
3075
- * *
3076
- **************************************************************************/
3077
- /**
3078
- * This method updatees / adds the given sort, leaving
3079
- * existing ones untouched.
3080
- * @param updatedSort
3081
- */
3082
- updateSort(updatedSort) {
3083
- if (updatedSort) {
3084
- this.updateSorts([updatedSort]);
3085
- }
3086
- }
3087
- /**
3088
- * This method updates / adds the given filters, leaving
3089
- * existing ones untouched.
3090
- * @param updatedSorts
3091
- */
3092
- updateSorts(updatedSorts) {
3093
- if (updatedSorts && updatedSorts.length > 0) {
3094
- const sortMap = new Map();
3095
- this.sortsSnapshot.forEach(s => sortMap.set(s.prop, s));
3096
- updatedSorts.forEach(s => sortMap.set(s.prop, s));
3097
- this.replaceSorts(Array.from(updatedSorts.values()));
3098
- }
3099
- }
3100
- /**
3101
- * Replace all existing filters with the given new ones.
3102
- * @param newSorts
3103
- */
3104
- replaceSorts(newSorts) {
3105
- this._sorts.next(newSorts || []);
3106
- }
3107
- clear() {
3108
- this.replaceSorts([]);
3109
- }
3110
- }
3111
-
3112
3038
  class IndexedEntities {
3113
3039
  /***************************************************************************
3114
3040
  * *
3115
3041
  * Constructor *
3116
3042
  * *
3117
3043
  **************************************************************************/
3118
- constructor(idFn, localSortFn, sortContext = new SortContext()) {
3044
+ constructor(idFn, localSortFn, sortContext) {
3119
3045
  this.idFn = idFn;
3120
3046
  this.localSortFn = localSortFn;
3121
3047
  this.sortContext = sortContext;
@@ -3326,6 +3252,80 @@ function isActivePagedDataContext(object) {
3326
3252
  return object.setActivePage !== undefined;
3327
3253
  }
3328
3254
 
3255
+ class SortContext {
3256
+ constructor() {
3257
+ /***************************************************************************
3258
+ * *
3259
+ * Fields *
3260
+ * *
3261
+ **************************************************************************/
3262
+ this._sorts = new BehaviorSubject([]);
3263
+ /***************************************************************************
3264
+ * *
3265
+ * Private methods *
3266
+ * *
3267
+ **************************************************************************/
3268
+ }
3269
+ /***************************************************************************
3270
+ * *
3271
+ * Read API *
3272
+ * *
3273
+ **************************************************************************/
3274
+ get sorts() {
3275
+ return this._sorts.asObservable();
3276
+ }
3277
+ get sortsSnapshot() {
3278
+ return this._sorts.getValue();
3279
+ }
3280
+ findSortDirection(prop) {
3281
+ const f = this.findSort(prop);
3282
+ return f ? f.dir : undefined;
3283
+ }
3284
+ findSort(prop) {
3285
+ return this.sortsSnapshot
3286
+ .filter(f => f.prop === prop)
3287
+ .find(first => true);
3288
+ }
3289
+ /***************************************************************************
3290
+ * *
3291
+ * Public API *
3292
+ * *
3293
+ **************************************************************************/
3294
+ /**
3295
+ * This method updatees / adds the given sort, leaving
3296
+ * existing ones untouched.
3297
+ * @param updatedSort
3298
+ */
3299
+ updateSort(updatedSort) {
3300
+ if (updatedSort) {
3301
+ this.updateSorts([updatedSort]);
3302
+ }
3303
+ }
3304
+ /**
3305
+ * This method updates / adds the given filters, leaving
3306
+ * existing ones untouched.
3307
+ * @param updatedSorts
3308
+ */
3309
+ updateSorts(updatedSorts) {
3310
+ if (updatedSorts && updatedSorts.length > 0) {
3311
+ const sortMap = new Map();
3312
+ this.sortsSnapshot.forEach(s => sortMap.set(s.prop, s));
3313
+ updatedSorts.forEach(s => sortMap.set(s.prop, s));
3314
+ this.replaceSorts(Array.from(updatedSorts.values()));
3315
+ }
3316
+ }
3317
+ /**
3318
+ * Replace all existing filters with the given new ones.
3319
+ * @param newSorts
3320
+ */
3321
+ replaceSorts(newSorts) {
3322
+ this._sorts.next(newSorts || []);
3323
+ }
3324
+ clear() {
3325
+ this.replaceSorts([]);
3326
+ }
3327
+ }
3328
+
3329
3329
  class DataContextBase extends DataSource {
3330
3330
  /***************************************************************************
3331
3331
  * *
@@ -3353,7 +3353,7 @@ class DataContextBase extends DataSource {
3353
3353
  this._reloadQueue = new Subject();
3354
3354
  this.unsubscribe$ = new Subject();
3355
3355
  this._dataSource = dataSource;
3356
- this._data = new IndexedEntities(e => dataSource.getId(e), _localSort);
3356
+ this._data = new IndexedEntities(e => dataSource.getId(e), _localSort, this._sort);
3357
3357
  this._loading = this._status.pipe(map(status => status.loading));
3358
3358
  this._filter.filters.pipe(filter(() => this.started), takeUntil(this.unsubscribe$)).subscribe(filters => this.onFiltersChanged(filters));
3359
3359
  this._sort.sorts.pipe(filter(() => this.started), takeUntil(this.unsubscribe$)).subscribe(sorts => this.onSortsChanged(sorts));
@@ -5602,7 +5602,7 @@ class RestClient extends DataSourceBase {
5602
5602
  params: builder.build(),
5603
5603
  responseType: 'text'
5604
5604
  })
5605
- .pipe(tap(() => DataSourceChangeEvent.deleted(ids)));
5605
+ .pipe(tap(() => this.publishChangeEvent(DataSourceChangeEvent.deleted(ids))));
5606
5606
  }
5607
5607
  }
5608
5608
  class RestClientList extends RestClient {