@talrace/ngx-noder 0.0.16 → 0.0.17

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.
@@ -52,6 +52,8 @@ export class EditorService {
52
52
  this._insertText$ = new Subject();
53
53
  this._removeLeft$ = new Subject();
54
54
  this._removeCustomElementsData$ = new Subject();
55
+ this._currentPage$ = new BehaviorSubject(1);
56
+ this._lastPageNumber$ = new BehaviorSubject(1);
55
57
  }
56
58
  set styles(value) {
57
59
  this._styles$.next({ ...value });
@@ -218,6 +220,30 @@ export class EditorService {
218
220
  get removeCustomElementsData$() {
219
221
  return this._removeCustomElementsData$.asObservable();
220
222
  }
223
+ get currentPage() {
224
+ return this._currentPage$.value;
225
+ }
226
+ get currentPage$() {
227
+ return this._currentPage$.asObservable();
228
+ }
229
+ get lastPageNumber() {
230
+ return this._lastPageNumber$.value;
231
+ }
232
+ get lastPageNumber$() {
233
+ return this._lastPageNumber$.asObservable();
234
+ }
235
+ setLastPageNumber(value) {
236
+ if (this.lastPageNumber === value) {
237
+ return;
238
+ }
239
+ this._lastPageNumber$.next(value);
240
+ }
241
+ setCurrentPage(value) {
242
+ if (this.currentPage === value) {
243
+ return;
244
+ }
245
+ this._currentPage$.next(value);
246
+ }
221
247
  receiveTextStyle(component) {
222
248
  this._receiveTextStyle$.next(component);
223
249
  }
@@ -357,4 +383,4 @@ export class EditorService {
357
383
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditorService, decorators: [{
358
384
  type: Injectable
359
385
  }] });
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQVlqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7QUFVeEcsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFXWSxhQUFRLEdBQW9DLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUtwRix1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQVF2RCxpQkFBWSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM3RSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUtwQixvQkFBZSxHQUE0QixJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUszRSxtQkFBYyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQVEvRSxrQkFBYSxHQUFnRCxJQUFJLGVBQWUsQ0FDcEYsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN6QyxDQUFDO1FBS00sb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBMEQsQ0FBQztRQVF4Rix1QkFBa0IsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVE5RCxvQkFBZSxHQUEyQixJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQVF2RSxzQkFBaUIsR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFRN0UsY0FBUyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBS3JELG9CQUFlLEdBQTRCLElB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QUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQW9CO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsU0FBaUI7UUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsUUFBd0I7UUFDN0MsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDOytHQW5kUSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmFzZU5vZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9zaGFyZWQvYWJzdHJhY3QvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJlYWtUeXBlcyB9IGZyb20gJy4uL2dhZGdldHMvcGFnZS1icmVhay9icmVhay10eXBlcy5lbnVtJztcbmltcG9ydCB7IEVkZ2VUeXBlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lZGdlcy9lZGdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBFbGVtZW50RGF0YU1vZGVsIH0gZnJvbSAnLi4vY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L21vZGVscy9lbGVtZW50LWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgRWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEV4dGVybmFsU2lkZW5hdkludGVyZmFjZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZXh0ZXJuYWwtZWxlbWVudC9leHRlcm5hbC1zaWRlbmF2LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbWFnZURhdGFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW1hZ2UtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBJbWFnZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbWFnZS5tb2RlbCc7XG5pbXBvcnQgeyBJVG9vbGJhclN0eWxlcyB9IGZyb20gJy4uL2NvbnRlbnQvZGlzcGxheS1kYXRhL3Rvb2xiYXItc3R5bGVzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBOdW1iZXJpbmdMZXZlbE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9udW1iZXJpbmctbGV2ZWwubW9kZWwnO1xuaW1wb3J0IHsgT3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWwgfSBmcm9tICcuLi8uLi9lZGl0b3IvZ2FkZ2V0cy9oaXN0b3J5L29wZXJhdGlvbnMtaGlzdG9yeS1pbmZvLm1vZGVsJztcbmltcG9ydCB7IFBhZ2VUeXBlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lZGdlcy9wYWdlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgUmVwbGFjZSB9IGZyb20gJy4uL2dhZGdldHMvc2VhcmNoL3JlcGxhY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXNpemUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBTZWFyY2hJdGVyYXRpb24gfSBmcm9tICcuLi9nYWRnZXRzL3NlYXJjaC9zZWFyY2gtaXRlcmF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTZWFyY2hPcHRpb25zIH0gZnJvbSAnLi4vZ2FkZ2V0cy9zZWFyY2gvc2VhcmNoJztcbmltcG9ydCB7IFRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVkaXRvclNlcnZpY2Uge1xuICAgIHNldCBzdHlsZXModmFsdWU6IElUb29sYmFyU3R5bGVzKSB7XG4gICAgICAgIHRoaXMuX3N0eWxlcyQubmV4dCh7IC4uLnZhbHVlIH0pO1xuICAgIH1cbiAgICBnZXQgc3R5bGVzKCk6IElUb29sYmFyU3R5bGVzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlcyQudmFsdWU7XG4gICAgfVxuICAgIGdldCBzdHlsZXMkKCk6IE9ic2VydmFibGU8SVRvb2xiYXJTdHlsZXM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3N0eWxlcyQ6IEJlaGF2aW9yU3ViamVjdDxJVG9vbGJhclN0eWxlcz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElUb29sYmFyU3R5bGVzPih7fSk7XG5cbiAgICBnZXQgcmVjZWl2ZVRleHRTdHlsZSQoKTogT2JzZXJ2YWJsZTxCYXNlTm9kZXJDb21wb25lbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlY2VpdmVUZXh0U3R5bGUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZWNlaXZlVGV4dFN0eWxlJCA9IG5ldyBTdWJqZWN0PEJhc2VOb2RlckNvbXBvbmVudD4oKTtcblxuICAgIGdldCBpc1ZpZXdPbmx5JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlld09ubHkkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBnZXQgaXNWaWV3T25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlld09ubHk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzVmlld09ubHkkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIF9pc1ZpZXdPbmx5ID0gZmFsc2U7XG5cbiAgICBnZXQgY2xpcGJvYXJkRGF0YSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsaXBib2FyZERhdGEkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jbGlwYm9hcmREYXRhJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gICAgZ2V0IGhhc1NlbGVjdGlvbiQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNTZWxlY3Rpb24kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNTZWxlY3Rpb24kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHNldCBoaXN0b3J5SW5mbyh2YWx1ZTogT3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWwpIHtcbiAgICAgICAgdGhpcy5faGlzdG9yeUluZm8kLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgaGlzdG9yeUluZm8kKCk6IE9ic2VydmFibGU8T3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpc3RvcnlJbmZvJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGlzdG9yeUluZm8kOiBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbD4oXG4gICAgICAgIG5ldyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCgtMSwgLTEpXG4gICAgKTtcblxuICAgIGdldCB0b2dnbGVTaWRlbmF2JCgpOiBPYnNlcnZhYmxlPHsgb3BlbjogYm9vbGVhbjsgY29tcG9uZW50OiBUeXBlPGFueT47IGRhdGE/OiBvYmplY3QgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9nZ2xlU2lkZW5hdiQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3RvZ2dsZVNpZGVuYXYkID0gbmV3IFN1YmplY3Q8eyBvcGVuOiBib29sZWFuOyBjb21wb25lbnQ6IFR5cGU8YW55PjsgZGF0YT86IG9iamVjdCB9PigpO1xuXG4gICAgc2V0IG9wZW5TZWFyY2hEaWFsb2codmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fb3BlblNlYXJjaERpYWxvZyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBvcGVuU2VhcmNoRGlhbG9nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wZW5TZWFyY2hEaWFsb2ckLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9vcGVuU2VhcmNoRGlhbG9nJDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBzZXQgc2VhcmNoT3B0aW9ucyh2YWx1ZTogU2VhcmNoT3B0aW9ucykge1xuICAgICAgICB0aGlzLl9zZWFyY2hPcHRpb25zJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHNlYXJjaE9wdGlvbnMkKCk6IE9ic2VydmFibGU8U2VhcmNoT3B0aW9ucz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoT3B0aW9ucyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NlYXJjaE9wdGlvbnMkOiBTdWJqZWN0PFNlYXJjaE9wdGlvbnM+ID0gbmV3IFN1YmplY3Q8U2VhcmNoT3B0aW9ucz4oKTtcblxuICAgIHNldCBzZWFyY2hJdGVyYXRpb24odmFsdWU6IFNlYXJjaEl0ZXJhdGlvbikge1xuICAgICAgICB0aGlzLl9zZWFyY2hJdGVyYXRpb24kLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgc2VhcmNoSXRlcmF0aW9uJCgpOiBPYnNlcnZhYmxlPFNlYXJjaEl0ZXJhdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoSXRlcmF0aW9uJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2VhcmNoSXRlcmF0aW9uJDogU3ViamVjdDxTZWFyY2hJdGVyYXRpb24+ID0gbmV3IFN1YmplY3Q8U2VhcmNoSXRlcmF0aW9uPigpO1xuXG4gICAgc2V0IHJlcGxhY2UodmFsdWU6IFJlcGxhY2UpIHtcbiAgICAgICAgdGhpcy5fcmVwbGFjZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCByZXBsYWNlJCgpOiBPYnNlcnZhYmxlPFJlcGxhY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcGxhY2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZXBsYWNlJDogU3ViamVjdDxSZXBsYWNlPiA9IG5ldyBTdWJqZWN0PFJlcGxhY2U+KCk7XG5cbiAgICBnZXQgc2V0VGV4dFN0eWxlcyQoKTogT2JzZXJ2YWJsZTxUZXh0U3R5bGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0VGV4dFN0eWxlcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFRleHRTdHlsZXMkOiBTdWJqZWN0PFRleHRTdHlsZU1vZGVsPiA9IG5ldyBTdWJqZWN0PFRleHRTdHlsZU1vZGVsPigpO1xuXG4gICAgZ2V0IHNldFBhcmFncmFwaFN0eWxlcyQoKTogT2JzZXJ2YWJsZTxQYXJhZ3JhcGhTdHlsZU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXRQYXJhZ3JhcGhTdHlsZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRQYXJhZ3JhcGhTdHlsZXMkOiBTdWJqZWN0PFBhcmFncmFwaFN0eWxlTW9kZWw+ID0gbmV3IFN1YmplY3Q8UGFyYWdyYXBoU3R5bGVNb2RlbD4oKTtcblxuICAgIGdldCBzZXROdW1iZXJpbmdUZW1wbGF0ZVR5cGUkKCk6IE9ic2VydmFibGU8TnVtYmVyaW5nTGV2ZWxNb2RlbFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXROdW1iZXJpbmdUZW1wbGF0ZVR5cGUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXROdW1iZXJpbmdUZW1wbGF0ZVR5cGUkOiBTdWJqZWN0PE51bWJlcmluZ0xldmVsTW9kZWxbXT4gPSBuZXcgU3ViamVjdDxOdW1iZXJpbmdMZXZlbE1vZGVsW10+KCk7XG5cbiAgICBnZXQgcmVtb3ZlTnVtYmVyaW5ncyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW1vdmVOdW1iZXJpbmdzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVtb3ZlTnVtYmVyaW5ncyQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IHNldEltYWdlU3R5bGUkKCk6IE9ic2VydmFibGU8SW1hZ2VNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlSW1hZ2VTdHlsZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZUltYWdlU3R5bGUkID0gbmV3IFN1YmplY3Q8SW1hZ2VNb2RlbD4oKTtcblxuICAgIGdldCBjaGFuZ2VFbGVtZW50U3R5bGUkKCk6IE9ic2VydmFibGU8RWxlbWVudE1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGFuZ2VFbGVtZW50U3R5bGUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGFuZ2VFbGVtZW50U3R5bGUkID0gbmV3IFN1YmplY3Q8RWxlbWVudE1vZGVsPigpO1xuXG4gICAgZ2V0IGNyZWF0ZUN1c3RvbUNvbXBvbmVudCQoKTogT2JzZXJ2YWJsZTxFbGVtZW50RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVDdXN0b21Db21wb25lbnQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jcmVhdGVDdXN0b21Db21wb25lbnQkOiBTdWJqZWN0PEVsZW1lbnREYXRhTW9kZWw+ID0gbmV3IFN1YmplY3Q8RWxlbWVudERhdGFNb2RlbD4oKTtcblxuICAgIGdldCBpbnNlcnRCcmVhayQoKTogT2JzZXJ2YWJsZTxCcmVha1R5cGVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRCcmVhayQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2luc2VydEJyZWFrJDogU3ViamVjdDxCcmVha1R5cGVzPiA9IG5ldyBTdWJqZWN0PEJyZWFrVHlwZXM+KCk7XG5cbiAgICBnZXQgaW5zZXJ0SW1hZ2UkKCk6IE9ic2VydmFibGU8SW1hZ2VEYXRhTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc2VydEltYWdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW5zZXJ0SW1hZ2UkID0gbmV3IFN1YmplY3Q8SW1hZ2VEYXRhTW9kZWw+KCk7XG5cbiAgICBnZXQgaW5zZXJ0TGluayQoKTogT2JzZXJ2YWJsZTx7IHRleHQ6IHN0cmluZzsgbGluazogc3RyaW5nIH0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc2VydExpbmskLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRMaW5rJCA9IG5ldyBTdWJqZWN0PHsgdGV4dDogc3RyaW5nOyBsaW5rOiBzdHJpbmcgfT4oKTtcblxuICAgIGdldCBlbmRNb3VzZVByZXNzJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZE1vdXNlUHJlc3MkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9lbmRNb3VzZVByZXNzJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBnZXQgZGlzYWJsZVNlbGVjdGlvbiQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlU2VsZWN0aW9uJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZGlzYWJsZVNlbGVjdGlvbiQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IGNoYW5nZWRUYWJsZVNpemUkKCk6IE9ic2VydmFibGU8eyBpbnNlcnRJbmRleDogbnVtYmVyOyBzZXNzaW9uSWQ6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGFuZ2VkVGFibGVTaXplJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hhbmdlZFRhYmxlU2l6ZSQgPSBuZXcgU3ViamVjdDx7IGluc2VydEluZGV4OiBudW1iZXI7IHNlc3Npb25JZDogbnVtYmVyIH0+KCk7XG5cbiAgICBnZXQgY2hhbmdlZEVkZ2VTaXplJCgpOiBPYnNlcnZhYmxlPHsgZWRnZVR5cGU6IEVkZ2VUeXBlOyBwYWdlVHlwZTogUGFnZVR5cGUgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlZEVkZ2VTaXplJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hhbmdlZEVkZ2VTaXplJCA9IG5ldyBTdWJqZWN0PHsgZWRnZVR5cGU6IEVkZ2VUeXBlOyBwYWdlVHlwZTogUGFnZVR5cGUgfT4oKTtcblxuICAgIGdldCBpbWFnZUxvYWRlZCQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ltYWdlTG9hZGVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW1hZ2VMb2FkZWQkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgZ2V0IGNoYW5nZWRFZGdlJCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlZEVkZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGFuZ2VkRWRnZSQgPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICBnZXQgaW5zZXJ0VGFibGVSb3dzJCgpOiBPYnNlcnZhYmxlPHtcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgcm93c0NvdW50OiBudW1iZXI7XG4gICAgICAgIHRhcmdldEluZGV4OiBudW1iZXI7XG4gICAgICAgIGluaGVyaXRJbmRleDogbnVtYmVyO1xuICAgICAgICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRUYWJsZVJvd3MkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRUYWJsZVJvd3MkID0gbmV3IFN1YmplY3Q8e1xuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyO1xuICAgICAgICByb3dzQ291bnQ6IG51bWJlcjtcbiAgICAgICAgdGFyZ2V0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgaW5oZXJpdEluZGV4OiBudW1iZXI7XG4gICAgICAgIHNlc3Npb25JZDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICBnZXQgaW5zZXJ0VGFibGVDb2x1bW5zJCgpOiBPYnNlcnZhYmxlPHtcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgY29sdW1uc0NvdW50OiBudW1iZXI7XG4gICAgICAgIHRhcmdldEluZGV4OiBudW1iZXI7XG4gICAgICAgIGluaGVyaXRJbmRleDogbnVtYmVyO1xuICAgICAgICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRUYWJsZUNvbHVtbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRUYWJsZUNvbHVtbnMkID0gbmV3IFN1YmplY3Q8e1xuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyO1xuICAgICAgICBjb2x1bW5zQ291bnQ6IG51bWJlcjtcbiAgICAgICAgdGFyZ2V0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgaW5oZXJpdEluZGV4OiBudW1iZXI7XG4gICAgICAgIHNlc3Npb25JZDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICBnZXQgcmVtb3ZlVGFibGVSb3dzJCgpOiBPYnNlcnZhYmxlPHsgaW5zZXJ0SW5kZXg6IG51bWJlcjsgc3RhcnRJbmRleDogbnVtYmVyOyBlbmRJbmRleDogbnVtYmVyOyBzZXNzaW9uSWQ6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW1vdmVUYWJsZVJvd3MkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZW1vdmVUYWJsZVJvd3MkID0gbmV3IFN1YmplY3Q8eyBpbnNlcnRJbmRleDogbnVtYmVyOyBzdGFydEluZGV4OiBudW1iZXI7IGVuZEluZGV4OiBudW1iZXI7IHNlc3Npb25JZDogbnVtYmVyIH0+KCk7XG5cbiAgICBnZXQgcmVtb3ZlVGFibGVDb2x1bW5zJCgpOiBPYnNlcnZhYmxlPHsgaW5zZXJ0SW5kZXg6IG51bWJlcjsgc3RhcnRJbmRleDogbnVtYmVyOyBlbmRJbmRleDogbnVtYmVyOyBzZXNzaW9uSWQ6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW1vdmVUYWJsZUNvbHVtbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZW1vdmVUYWJsZUNvbHVtbnMkID0gbmV3IFN1YmplY3Q8eyBpbnNlcnRJbmRleDogbnVtYmVyOyBzdGFydEluZGV4OiBudW1iZXI7IGVuZEluZGV4OiBudW1iZXI7IHNlc3Npb25JZDogbnVtYmVyIH0+KCk7XG5cbiAgICBnZXQgcmVtb3ZlUmlnaHQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZlUmlnaHQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZW1vdmVSaWdodCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IHJlc2l6ZVRhYmxlQ29sdW1ucyQoKTogT2JzZXJ2YWJsZTx7XG4gICAgICAgIHJlc2l6ZVRhYmxlQ29sdW1uczogUmVzaXplVGFibGVDb2x1bW5zTW9kZWw7XG4gICAgICAgIHNlc3Npb25JZDogbnVtYmVyO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc2l6ZVRhYmxlQ29sdW1ucyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3Jlc2l6ZVRhYmxlQ29sdW1ucyQgPSBuZXcgU3ViamVjdDx7XG4gICAgICAgIHJlc2l6ZVRhYmxlQ29sdW1uczogUmVzaXplVGFibGVDb2x1bW5zTW9kZWw7XG4gICAgICAgIHNlc3Npb25JZDogbnVtYmVyO1xuICAgIH0+KCk7XG5cbiAgICBnZXQgaW5zZXJ0VGFibGUkKCk6IE9ic2VydmFibGU8eyByb3dzOiBudW1iZXI7IGNvbHVtbnM6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRUYWJsZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2luc2VydFRhYmxlJCA9IG5ldyBTdWJqZWN0PHsgcm93czogbnVtYmVyOyBjb2x1bW5zOiBudW1iZXIgfT4oKTtcblxuICAgIGdldCByZWRvJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZG8kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZWRvJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBnZXQgdW5kbyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91bmRvJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfdW5kbyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IHByaW50JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByaW50JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcHJpbnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBjdXRTZWxlY3RlZCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXRTZWxlY3RlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2N1dFNlbGVjdGVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBnZXQgY29weVNlbGVjdGVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvcHlTZWxlY3RlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NvcHlTZWxlY3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IHBhc3RlRnJvbUNsaXBib2FyZCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXN0ZUZyb21DbGlwYm9hcmQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9wYXN0ZUZyb21DbGlwYm9hcmQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBzZWxlY3RBbGwkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0QWxsJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2VsZWN0QWxsJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBnZXQgcmVtb3ZlU2VsZWN0ZWQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZlU2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZW1vdmVTZWxlY3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IGtleURvd24kKCk6IE9ic2VydmFibGU8S2V5Ym9hcmRFdmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fa2V5RG93biQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2tleURvd24kID0gbmV3IFN1YmplY3Q8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIGdldCB1cGRhdGVFZGdlcyQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUVkZ2VzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfdXBkYXRlRWRnZXMkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgZ2V0IGluc2VydFRleHQkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRUZXh0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW5zZXJ0VGV4dCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgICBnZXQgcmVtb3ZlTGVmdCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW1vdmVMZWZ0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVtb3ZlTGVmdCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IHJlbW92ZUN1c3RvbUVsZW1lbnRzRGF0YSQoKTogT2JzZXJ2YWJsZTxFbGVtZW50TW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZlQ3VzdG9tRWxlbWVudHNEYXRhJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVtb3ZlQ3VzdG9tRWxlbWVudHNEYXRhJCA9IG5ldyBTdWJqZWN0PEVsZW1lbnRNb2RlbFtdPigpO1xuXG4gICAgcmVjZWl2ZVRleHRTdHlsZShjb21wb25lbnQ6IEJhc2VOb2RlckNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWNlaXZlVGV4dFN0eWxlJC5uZXh0KGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgc2V0SXNWaWV3T25seSh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1ZpZXdPbmx5ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2lzVmlld09ubHkkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHNldEhhc1NlbGVjdGlvbih2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYXNTZWxlY3Rpb24kLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHNldENsaXBib2FyZERhdGEodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jbGlwYm9hcmREYXRhJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRUZXh0U3R5bGVzKHZhbHVlOiBUZXh0U3R5bGVNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRUZXh0U3R5bGVzJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRQYXJhZ3JhcGhTdHlsZXModmFsdWU6IFBhcmFncmFwaFN0eWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0UGFyYWdyYXBoU3R5bGVzJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXROdW1iZXJpbmdUZW1wbGF0ZVR5cGUodmFsdWU6IE51bWJlcmluZ0xldmVsTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXROdW1iZXJpbmdUZW1wbGF0ZVR5cGUkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHJlbW92ZU51bWJlcmluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZU51bWJlcmluZ3MkLm5leHQoKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VJbWFnZVN0eWxlKHZhbHVlOiBJbWFnZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUltYWdlU3R5bGUkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGNoYW5nZUVsZW1lbnRTdHlsZSh2YWx1ZTogRWxlbWVudE1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUVsZW1lbnRTdHlsZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgY3JlYXRlQ3VzdG9tQ29tcG9uZW50KG1vZGVsOiBFbGVtZW50RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZUN1c3RvbUNvbXBvbmVudCQubmV4dChtb2RlbCk7XG4gICAgfVxuXG4gICAgaW5zZXJ0QnJlYWsodmFsdWU6IEJyZWFrVHlwZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5zZXJ0QnJlYWskLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGluc2VydEltYWdlKGltYWdlRGF0YTogSW1hZ2VEYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5zZXJ0SW1hZ2UkLm5leHQoaW1hZ2VEYXRhKTtcbiAgICB9XG5cbiAgICBpbnNlcnRMaW5rKHRleHQ6IHN0cmluZywgbGluazogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luc2VydExpbmskLm5leHQoeyB0ZXh0LCBsaW5rIH0pO1xuICAgIH1cblxuICAgIGVuZE1vdXNlUHJlc3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VuZE1vdXNlUHJlc3MkLm5leHQoKTtcbiAgICB9XG5cbiAgICBkaXNhYmxlU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kaXNhYmxlU2VsZWN0aW9uJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgb3BlbkVsZW1lbnRTaWRlbmF2KGNvbXBvbmVudDogVHlwZTxFeHRlcm5hbFNpZGVuYXZJbnRlcmZhY2U+LCBtb2RlbDogRWxlbWVudE1vZGVsLCBjb250ZW50V2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl90b2dnbGVTaWRlbmF2JC5uZXh0KHsgb3BlbjogdHJ1ZSwgY29tcG9uZW50LCBkYXRhOiB7IG1vZGVsLCBjb250ZW50V2lkdGggfSB9KTtcbiAgICB9XG5cbiAgICBvcGVuU2lkZW5hdihjb21wb25lbnQ6IFR5cGU8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLl90b2dnbGVTaWRlbmF2JC5uZXh0KHsgb3BlbjogdHJ1ZSwgY29tcG9uZW50IH0pO1xuICAgIH1cblxuICAgIGNsb3NlU2lkZW5hdigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlU2lkZW5hdiQubmV4dCh7IG9wZW46IGZhbHNlLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlZFRhYmxlU2l6ZShpbnNlcnRJbmRleDogbnVtYmVyLCBzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VkVGFibGVTaXplJC5uZXh0KHsgaW5zZXJ0SW5kZXgsIHNlc3Npb25JZCB9KTtcbiAgICB9XG5cbiAgICBjaGFuZ2VkRWRnZVNpemUoZWRnZVR5cGU6IEVkZ2VUeXBlLCBwYWdlVHlwZTogUGFnZVR5cGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlZEVkZ2VTaXplJC5uZXh0KHsgZWRnZVR5cGUsIHBhZ2VUeXBlIH0pO1xuICAgIH1cblxuICAgIGltYWdlTG9hZGVkKHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ltYWdlTG9hZGVkJC5uZXh0KHNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgY2hhbmdlZEVkZ2Uoc2Vzc2lvbklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlZEVkZ2UkLm5leHQoc2Vzc2lvbklkKTtcbiAgICB9XG5cbiAgICBpbnNlcnRUYWJsZVJvd3MoaW5zZXJ0SW5kZXg6IG51bWJlciwgcm93c0NvdW50OiBudW1iZXIsIHRhcmdldEluZGV4OiBudW1iZXIsIGluaGVyaXRJbmRleDogbnVtYmVyLCBzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbnNlcnRUYWJsZVJvd3MkLm5leHQoeyBpbnNlcnRJbmRleCwgcm93c0NvdW50LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4LCBzZXNzaW9uSWQgfSk7XG4gICAgfVxuXG4gICAgaW5zZXJ0VGFibGVDb2x1bW5zKGluc2VydEluZGV4OiBudW1iZXIsIGNvbHVtbnNDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlciwgc2Vzc2lvbklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5zZXJ0VGFibGVDb2x1bW5zJC5uZXh0KHsgaW5zZXJ0SW5kZXgsIGNvbHVtbnNDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCwgc2Vzc2lvbklkIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZVRhYmxlUm93cyhpbnNlcnRJbmRleDogbnVtYmVyLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZVRhYmxlUm93cyQubmV4dCh7IGluc2VydEluZGV4LCBzdGFydEluZGV4LCBlbmRJbmRleCwgc2Vzc2lvbklkIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZVRhYmxlQ29sdW1ucyhpbnNlcnRJbmRleDogbnVtYmVyLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZVRhYmxlQ29sdW1ucyQubmV4dCh7IGluc2VydEluZGV4LCBzdGFydEluZGV4LCBlbmRJbmRleCwgc2Vzc2lvbklkIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZVJpZ2h0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVSaWdodCQubmV4dCgpO1xuICAgIH1cblxuICAgIHJlc2l6ZVRhYmxlQ29sdW1ucyhyZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsLCBzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZXNpemVUYWJsZUNvbHVtbnMkLm5leHQoe1xuICAgICAgICAgICAgcmVzaXplVGFibGVDb2x1bW5zLFxuICAgICAgICAgICAgc2Vzc2lvbklkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluc2VydFRhYmxlKHRhYmxlRGF0YTogeyByb3dzOiBudW1iZXI7IGNvbHVtbnM6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luc2VydFRhYmxlJC5uZXh0KHRhYmxlRGF0YSk7XG4gICAgfVxuXG4gICAgdW5kbygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdW5kbyQubmV4dCgpO1xuICAgIH1cblxuICAgIHJlZG8oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZG8kLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcmludCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcHJpbnQkLm5leHQoKTtcbiAgICB9XG5cbiAgICBjdXRTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY3V0U2VsZWN0ZWQkLm5leHQoKTtcbiAgICB9XG5cbiAgICBjb3B5U2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvcHlTZWxlY3RlZCQubmV4dCgpO1xuICAgIH1cblxuICAgIHBhc3RlRnJvbUNsaXBib2FyZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcGFzdGVGcm9tQ2xpcGJvYXJkJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZWxlY3RBbGwkLm5leHQoKTtcbiAgICB9XG5cbiAgICByZW1vdmVTZWxlY3RlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlU2VsZWN0ZWQkLm5leHQoKTtcbiAgICB9XG5cbiAgICBrZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2tleURvd24kLm5leHQoZXZlbnQpO1xuICAgIH1cblxuICAgIHVwZGF0ZUVkZ2VzKHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUVkZ2VzJC5uZXh0KHNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgaW5zZXJ0VGV4dCh0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5zZXJ0VGV4dCQubmV4dCh0ZXh0KTtcbiAgICB9XG5cbiAgICByZW1vdmVMZWZ0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVMZWZ0JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQ3VzdG9tRWxlbWVudHNEYXRhKGVsZW1lbnRzOiBFbGVtZW50TW9kZWxbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVDdXN0b21FbGVtZW50c0RhdGEkLm5leHQoZWxlbWVudHMpO1xuICAgIH1cbn1cbiJdfQ==
386
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3IvaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQVlqRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7QUFVeEcsTUFBTSxPQUFPLGFBQWE7SUFEMUI7UUFXWSxhQUFRLEdBQW9DLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUtwRix1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQVF2RCxpQkFBWSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM3RSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUtwQixvQkFBZSxHQUE0QixJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUszRSxtQkFBYyxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQVEvRSxrQkFBYSxHQUFnRCxJQUFJLGVBQWUsQ0FDcEYsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN6QyxDQUFDO1FBS00sb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBMEQsQ0FBQztRQVF4Rix1QkFBa0IsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVE5RCxvQkFBZSxHQUEyQixJQUFJLE9BQU8sRUFBaUIsQ0FBQztRQVF2RSxzQkFBaUIsR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFRN0UsY0FBUyxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBS3JELG9CQUFlLEdBQTRCLElB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QUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELHdCQUF3QixDQUFDLFFBQXdCO1FBQzdDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQzsrR0FuZlEsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJhc2VOb2RlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2hhcmVkL2Fic3RyYWN0L2Jhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEJyZWFrVHlwZXMgfSBmcm9tICcuLi9nYWRnZXRzL3BhZ2UtYnJlYWsvYnJlYWstdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBFZGdlVHlwZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRnZXMvZWRnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgRWxlbWVudERhdGFNb2RlbCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZXh0ZXJuYWwtZWxlbWVudC9tb2RlbHMvZWxlbWVudC1kYXRhLm1vZGVsJztcbmltcG9ydCB7IEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBFeHRlcm5hbFNpZGVuYXZJbnRlcmZhY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2V4dGVybmFsLWVsZW1lbnQvZXh0ZXJuYWwtc2lkZW5hdi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2VEYXRhTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2ltYWdlLWRhdGEubW9kZWwnO1xuaW1wb3J0IHsgSW1hZ2VNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgSVRvb2xiYXJTdHlsZXMgfSBmcm9tICcuLi9jb250ZW50L2Rpc3BsYXktZGF0YS90b29sYmFyLXN0eWxlcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTnVtYmVyaW5nTGV2ZWxNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvbnVtYmVyaW5nLWxldmVsLm1vZGVsJztcbmltcG9ydCB7IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsIH0gZnJvbSAnLi4vLi4vZWRpdG9yL2dhZGdldHMvaGlzdG9yeS9vcGVyYXRpb25zLWhpc3RvcnktaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYWdlVHlwZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZWRnZXMvcGFnZS10eXBlLmVudW0nO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJlcGxhY2UgfSBmcm9tICcuLi9nYWRnZXRzL3NlYXJjaC9yZXBsYWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzaXplLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgU2VhcmNoSXRlcmF0aW9uIH0gZnJvbSAnLi4vZ2FkZ2V0cy9zZWFyY2gvc2VhcmNoLWl0ZXJhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2VhcmNoT3B0aW9ucyB9IGZyb20gJy4uL2dhZGdldHMvc2VhcmNoL3NlYXJjaCc7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFZGl0b3JTZXJ2aWNlIHtcbiAgICBzZXQgc3R5bGVzKHZhbHVlOiBJVG9vbGJhclN0eWxlcykge1xuICAgICAgICB0aGlzLl9zdHlsZXMkLm5leHQoeyAuLi52YWx1ZSB9KTtcbiAgICB9XG4gICAgZ2V0IHN0eWxlcygpOiBJVG9vbGJhclN0eWxlcyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHlsZXMkLnZhbHVlO1xuICAgIH1cbiAgICBnZXQgc3R5bGVzJCgpOiBPYnNlcnZhYmxlPElUb29sYmFyU3R5bGVzPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdHlsZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zdHlsZXMkOiBCZWhhdmlvclN1YmplY3Q8SVRvb2xiYXJTdHlsZXM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJVG9vbGJhclN0eWxlcz4oe30pO1xuXG4gICAgZ2V0IHJlY2VpdmVUZXh0U3R5bGUkKCk6IE9ic2VydmFibGU8QmFzZU5vZGVyQ29tcG9uZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWNlaXZlVGV4dFN0eWxlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVjZWl2ZVRleHRTdHlsZSQgPSBuZXcgU3ViamVjdDxCYXNlTm9kZXJDb21wb25lbnQ+KCk7XG5cbiAgICBnZXQgaXNWaWV3T25seSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZpZXdPbmx5JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgZ2V0IGlzVmlld09ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZpZXdPbmx5O1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1ZpZXdPbmx5JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBfaXNWaWV3T25seSA9IGZhbHNlO1xuXG4gICAgZ2V0IGNsaXBib2FyZERhdGEkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGlwYm9hcmREYXRhJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2xpcGJvYXJkRGF0YSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAgIGdldCBoYXNTZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzU2VsZWN0aW9uJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzU2VsZWN0aW9uJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBzZXQgaGlzdG9yeUluZm8odmFsdWU6IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsKSB7XG4gICAgICAgIHRoaXMuX2hpc3RvcnlJbmZvJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGhpc3RvcnlJbmZvJCgpOiBPYnNlcnZhYmxlPE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaXN0b3J5SW5mbyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hpc3RvcnlJbmZvJDogQmVoYXZpb3JTdWJqZWN0PE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWw+KFxuICAgICAgICBuZXcgT3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWwoLTEsIC0xKVxuICAgICk7XG5cbiAgICBnZXQgdG9nZ2xlU2lkZW5hdiQoKTogT2JzZXJ2YWJsZTx7IG9wZW46IGJvb2xlYW47IGNvbXBvbmVudDogVHlwZTxhbnk+OyBkYXRhPzogb2JqZWN0IH0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RvZ2dsZVNpZGVuYXYkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF90b2dnbGVTaWRlbmF2JCA9IG5ldyBTdWJqZWN0PHsgb3BlbjogYm9vbGVhbjsgY29tcG9uZW50OiBUeXBlPGFueT47IGRhdGE/OiBvYmplY3QgfT4oKTtcblxuICAgIHNldCBvcGVuU2VhcmNoRGlhbG9nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX29wZW5TZWFyY2hEaWFsb2ckLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgb3BlblNlYXJjaERpYWxvZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcGVuU2VhcmNoRGlhbG9nJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfb3BlblNlYXJjaERpYWxvZyQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgc2V0IHNlYXJjaE9wdGlvbnModmFsdWU6IFNlYXJjaE9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoT3B0aW9ucyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBzZWFyY2hPcHRpb25zJCgpOiBPYnNlcnZhYmxlPFNlYXJjaE9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaE9wdGlvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZWFyY2hPcHRpb25zJDogU3ViamVjdDxTZWFyY2hPcHRpb25zPiA9IG5ldyBTdWJqZWN0PFNlYXJjaE9wdGlvbnM+KCk7XG5cbiAgICBzZXQgc2VhcmNoSXRlcmF0aW9uKHZhbHVlOiBTZWFyY2hJdGVyYXRpb24pIHtcbiAgICAgICAgdGhpcy5fc2VhcmNoSXRlcmF0aW9uJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IHNlYXJjaEl0ZXJhdGlvbiQoKTogT2JzZXJ2YWJsZTxTZWFyY2hJdGVyYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaEl0ZXJhdGlvbiQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NlYXJjaEl0ZXJhdGlvbiQ6IFN1YmplY3Q8U2VhcmNoSXRlcmF0aW9uPiA9IG5ldyBTdWJqZWN0PFNlYXJjaEl0ZXJhdGlvbj4oKTtcblxuICAgIHNldCByZXBsYWNlKHZhbHVlOiBSZXBsYWNlKSB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2UkLm5leHQodmFsdWUpO1xuICAgIH1cbiAgICBnZXQgcmVwbGFjZSQoKTogT2JzZXJ2YWJsZTxSZXBsYWNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBsYWNlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVwbGFjZSQ6IFN1YmplY3Q8UmVwbGFjZT4gPSBuZXcgU3ViamVjdDxSZXBsYWNlPigpO1xuXG4gICAgZ2V0IHNldFRleHRTdHlsZXMkKCk6IE9ic2VydmFibGU8VGV4dFN0eWxlTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NldFRleHRTdHlsZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRUZXh0U3R5bGVzJDogU3ViamVjdDxUZXh0U3R5bGVNb2RlbD4gPSBuZXcgU3ViamVjdDxUZXh0U3R5bGVNb2RlbD4oKTtcblxuICAgIGdldCBzZXRQYXJhZ3JhcGhTdHlsZXMkKCk6IE9ic2VydmFibGU8UGFyYWdyYXBoU3R5bGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0UGFyYWdyYXBoU3R5bGVzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0UGFyYWdyYXBoU3R5bGVzJDogU3ViamVjdDxQYXJhZ3JhcGhTdHlsZU1vZGVsPiA9IG5ldyBTdWJqZWN0PFBhcmFncmFwaFN0eWxlTW9kZWw+KCk7XG5cbiAgICBnZXQgc2V0TnVtYmVyaW5nVGVtcGxhdGVUeXBlJCgpOiBPYnNlcnZhYmxlPE51bWJlcmluZ0xldmVsTW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2V0TnVtYmVyaW5nVGVtcGxhdGVUeXBlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0TnVtYmVyaW5nVGVtcGxhdGVUeXBlJDogU3ViamVjdDxOdW1iZXJpbmdMZXZlbE1vZGVsW10+ID0gbmV3IFN1YmplY3Q8TnVtYmVyaW5nTGV2ZWxNb2RlbFtdPigpO1xuXG4gICAgZ2V0IHJlbW92ZU51bWJlcmluZ3MkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZlTnVtYmVyaW5ncyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlbW92ZU51bWJlcmluZ3MkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBzZXRJbWFnZVN0eWxlJCgpOiBPYnNlcnZhYmxlPEltYWdlTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZUltYWdlU3R5bGUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGFuZ2VJbWFnZVN0eWxlJCA9IG5ldyBTdWJqZWN0PEltYWdlTW9kZWw+KCk7XG5cbiAgICBnZXQgY2hhbmdlRWxlbWVudFN0eWxlJCgpOiBPYnNlcnZhYmxlPEVsZW1lbnRNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlRWxlbWVudFN0eWxlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hhbmdlRWxlbWVudFN0eWxlJCA9IG5ldyBTdWJqZWN0PEVsZW1lbnRNb2RlbD4oKTtcblxuICAgIGdldCBjcmVhdGVDdXN0b21Db21wb25lbnQkKCk6IE9ic2VydmFibGU8RWxlbWVudERhdGFNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlQ3VzdG9tQ29tcG9uZW50JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY3JlYXRlQ3VzdG9tQ29tcG9uZW50JDogU3ViamVjdDxFbGVtZW50RGF0YU1vZGVsPiA9IG5ldyBTdWJqZWN0PEVsZW1lbnREYXRhTW9kZWw+KCk7XG5cbiAgICBnZXQgaW5zZXJ0QnJlYWskKCk6IE9ic2VydmFibGU8QnJlYWtUeXBlcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zZXJ0QnJlYWskLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRCcmVhayQ6IFN1YmplY3Q8QnJlYWtUeXBlcz4gPSBuZXcgU3ViamVjdDxCcmVha1R5cGVzPigpO1xuXG4gICAgZ2V0IGluc2VydEltYWdlJCgpOiBPYnNlcnZhYmxlPEltYWdlRGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRJbWFnZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2luc2VydEltYWdlJCA9IG5ldyBTdWJqZWN0PEltYWdlRGF0YU1vZGVsPigpO1xuXG4gICAgZ2V0IGluc2VydExpbmskKCk6IE9ic2VydmFibGU8eyB0ZXh0OiBzdHJpbmc7IGxpbms6IHN0cmluZyB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnNlcnRMaW5rJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW5zZXJ0TGluayQgPSBuZXcgU3ViamVjdDx7IHRleHQ6IHN0cmluZzsgbGluazogc3RyaW5nIH0+KCk7XG5cbiAgICBnZXQgZW5kTW91c2VQcmVzcyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmRNb3VzZVByZXNzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZW5kTW91c2VQcmVzcyQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IGRpc2FibGVTZWxlY3Rpb24kKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZVNlbGVjdGlvbiQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2Rpc2FibGVTZWxlY3Rpb24kOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBjaGFuZ2VkVGFibGVTaXplJCgpOiBPYnNlcnZhYmxlPHsgaW5zZXJ0SW5kZXg6IG51bWJlcjsgc2Vzc2lvbklkOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hhbmdlZFRhYmxlU2l6ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZWRUYWJsZVNpemUkID0gbmV3IFN1YmplY3Q8eyBpbnNlcnRJbmRleDogbnVtYmVyOyBzZXNzaW9uSWQ6IG51bWJlciB9PigpO1xuXG4gICAgZ2V0IGNoYW5nZWRFZGdlU2l6ZSQoKTogT2JzZXJ2YWJsZTx7IGVkZ2VUeXBlOiBFZGdlVHlwZTsgcGFnZVR5cGU6IFBhZ2VUeXBlIH0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZWRFZGdlU2l6ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZWRFZGdlU2l6ZSQgPSBuZXcgU3ViamVjdDx7IGVkZ2VUeXBlOiBFZGdlVHlwZTsgcGFnZVR5cGU6IFBhZ2VUeXBlIH0+KCk7XG5cbiAgICBnZXQgaW1hZ2VMb2FkZWQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbWFnZUxvYWRlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2ltYWdlTG9hZGVkJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIGdldCBjaGFuZ2VkRWRnZSQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoYW5nZWRFZGdlJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hhbmdlZEVkZ2UkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgZ2V0IGluc2VydFRhYmxlUm93cyQoKTogT2JzZXJ2YWJsZTx7XG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXI7XG4gICAgICAgIHJvd3NDb3VudDogbnVtYmVyO1xuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyO1xuICAgICAgICBpbmhlcml0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgc2Vzc2lvbklkOiBudW1iZXI7XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zZXJ0VGFibGVSb3dzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW5zZXJ0VGFibGVSb3dzJCA9IG5ldyBTdWJqZWN0PHtcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgcm93c0NvdW50OiBudW1iZXI7XG4gICAgICAgIHRhcmdldEluZGV4OiBudW1iZXI7XG4gICAgICAgIGluaGVyaXRJbmRleDogbnVtYmVyO1xuICAgICAgICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gICAgZ2V0IGluc2VydFRhYmxlQ29sdW1ucyQoKTogT2JzZXJ2YWJsZTx7XG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXI7XG4gICAgICAgIGNvbHVtbnNDb3VudDogbnVtYmVyO1xuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyO1xuICAgICAgICBpbmhlcml0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgc2Vzc2lvbklkOiBudW1iZXI7XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zZXJ0VGFibGVDb2x1bW5zJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaW5zZXJ0VGFibGVDb2x1bW5zJCA9IG5ldyBTdWJqZWN0PHtcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcjtcbiAgICAgICAgY29sdW1uc0NvdW50OiBudW1iZXI7XG4gICAgICAgIHRhcmdldEluZGV4OiBudW1iZXI7XG4gICAgICAgIGluaGVyaXRJbmRleDogbnVtYmVyO1xuICAgICAgICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gICAgZ2V0IHJlbW92ZVRhYmxlUm93cyQoKTogT2JzZXJ2YWJsZTx7IGluc2VydEluZGV4OiBudW1iZXI7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgc2Vzc2lvbklkOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZlVGFibGVSb3dzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVtb3ZlVGFibGVSb3dzJCA9IG5ldyBTdWJqZWN0PHsgaW5zZXJ0SW5kZXg6IG51bWJlcjsgc3RhcnRJbmRleDogbnVtYmVyOyBlbmRJbmRleDogbnVtYmVyOyBzZXNzaW9uSWQ6IG51bWJlciB9PigpO1xuXG4gICAgZ2V0IHJlbW92ZVRhYmxlQ29sdW1ucyQoKTogT2JzZXJ2YWJsZTx7IGluc2VydEluZGV4OiBudW1iZXI7IHN0YXJ0SW5kZXg6IG51bWJlcjsgZW5kSW5kZXg6IG51bWJlcjsgc2Vzc2lvbklkOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZlVGFibGVDb2x1bW5zJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVtb3ZlVGFibGVDb2x1bW5zJCA9IG5ldyBTdWJqZWN0PHsgaW5zZXJ0SW5kZXg6IG51bWJlcjsgc3RhcnRJbmRleDogbnVtYmVyOyBlbmRJbmRleDogbnVtYmVyOyBzZXNzaW9uSWQ6IG51bWJlciB9PigpO1xuXG4gICAgZ2V0IHJlbW92ZVJpZ2h0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbW92ZVJpZ2h0JC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVtb3ZlUmlnaHQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCByZXNpemVUYWJsZUNvbHVtbnMkKCk6IE9ic2VydmFibGU8e1xuICAgICAgICByZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsO1xuICAgICAgICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVUYWJsZUNvbHVtbnMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9yZXNpemVUYWJsZUNvbHVtbnMkID0gbmV3IFN1YmplY3Q8e1xuICAgICAgICByZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsO1xuICAgICAgICBzZXNzaW9uSWQ6IG51bWJlcjtcbiAgICB9PigpO1xuXG4gICAgZ2V0IGluc2VydFRhYmxlJCgpOiBPYnNlcnZhYmxlPHsgcm93czogbnVtYmVyOyBjb2x1bW5zOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zZXJ0VGFibGUkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pbnNlcnRUYWJsZSQgPSBuZXcgU3ViamVjdDx7IHJvd3M6IG51bWJlcjsgY29sdW1uczogbnVtYmVyIH0+KCk7XG5cbiAgICBnZXQgcmVkbyQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWRvJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVkbyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IHVuZG8kKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdW5kbyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3VuZG8kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBwcmludCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmludCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3ByaW50JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBnZXQgY3V0U2VsZWN0ZWQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3V0U2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jdXRTZWxlY3RlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IGNvcHlTZWxlY3RlZCQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb3B5U2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jb3B5U2VsZWN0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBwYXN0ZUZyb21DbGlwYm9hcmQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFzdGVGcm9tQ2xpcGJvYXJkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcGFzdGVGcm9tQ2xpcGJvYXJkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBnZXQgc2VsZWN0QWxsJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdEFsbCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NlbGVjdEFsbCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgZ2V0IHJlbW92ZVNlbGVjdGVkJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbW92ZVNlbGVjdGVkJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVtb3ZlU2VsZWN0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCBrZXlEb3duJCgpOiBPYnNlcnZhYmxlPEtleWJvYXJkRXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleURvd24kLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9rZXlEb3duJCA9IG5ldyBTdWJqZWN0PEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgICBnZXQgdXBkYXRlRWRnZXMkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVFZGdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3VwZGF0ZUVkZ2VzJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIGdldCBpbnNlcnRUZXh0JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5zZXJ0VGV4dCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2luc2VydFRleHQkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gICAgZ2V0IHJlbW92ZUxlZnQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZlTGVmdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlbW92ZUxlZnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGdldCByZW1vdmVDdXN0b21FbGVtZW50c0RhdGEkKCk6IE9ic2VydmFibGU8RWxlbWVudE1vZGVsW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlbW92ZUN1c3RvbUVsZW1lbnRzRGF0YSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlbW92ZUN1c3RvbUVsZW1lbnRzRGF0YSQgPSBuZXcgU3ViamVjdDxFbGVtZW50TW9kZWxbXT4oKTtcblxuICAgIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2UkLnZhbHVlO1xuICAgIH1cbiAgICBnZXQgY3VycmVudFBhZ2UkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX2N1cnJlbnRQYWdlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMSk7XG5cbiAgICBnZXQgbGFzdFBhZ2VOdW1iZXIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RQYWdlTnVtYmVyJC52YWx1ZTtcbiAgICB9XG4gICAgZ2V0IGxhc3RQYWdlTnVtYmVyJCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFBhZ2VOdW1iZXIkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIF9sYXN0UGFnZU51bWJlciQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDEpO1xuXG4gICAgc2V0TGFzdFBhZ2VOdW1iZXIodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5sYXN0UGFnZU51bWJlciA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xhc3RQYWdlTnVtYmVyJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRDdXJyZW50UGFnZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHJlY2VpdmVUZXh0U3R5bGUoY29tcG9uZW50OiBCYXNlTm9kZXJDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVjZWl2ZVRleHRTdHlsZSQubmV4dChjb21wb25lbnQpO1xuICAgIH1cblxuICAgIHNldElzVmlld09ubHkodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNWaWV3T25seSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9pc1ZpZXdPbmx5JC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRIYXNTZWxlY3Rpb24odmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faGFzU2VsZWN0aW9uJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXRDbGlwYm9hcmREYXRhKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2xpcGJvYXJkRGF0YSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0VGV4dFN0eWxlcyh2YWx1ZTogVGV4dFN0eWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0VGV4dFN0eWxlcyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0UGFyYWdyYXBoU3R5bGVzKHZhbHVlOiBQYXJhZ3JhcGhTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFBhcmFncmFwaFN0eWxlcyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgc2V0TnVtYmVyaW5nVGVtcGxhdGVUeXBlKHZhbHVlOiBOdW1iZXJpbmdMZXZlbE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0TnVtYmVyaW5nVGVtcGxhdGVUeXBlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICByZW1vdmVOdW1iZXJpbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVOdW1iZXJpbmdzJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgY2hhbmdlSW1hZ2VTdHlsZSh2YWx1ZTogSW1hZ2VNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VJbWFnZVN0eWxlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VFbGVtZW50U3R5bGUodmFsdWU6IEVsZW1lbnRNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jaGFuZ2VFbGVtZW50U3R5bGUkLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIGNyZWF0ZUN1c3RvbUNvbXBvbmVudChtb2RlbDogRWxlbWVudERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jcmVhdGVDdXN0b21Db21wb25lbnQkLm5leHQobW9kZWwpO1xuICAgIH1cblxuICAgIGluc2VydEJyZWFrKHZhbHVlOiBCcmVha1R5cGVzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luc2VydEJyZWFrJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBpbnNlcnRJbWFnZShpbWFnZURhdGE6IEltYWdlRGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luc2VydEltYWdlJC5uZXh0KGltYWdlRGF0YSk7XG4gICAgfVxuXG4gICAgaW5zZXJ0TGluayh0ZXh0OiBzdHJpbmcsIGxpbms6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbnNlcnRMaW5rJC5uZXh0KHsgdGV4dCwgbGluayB9KTtcbiAgICB9XG5cbiAgICBlbmRNb3VzZVByZXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbmRNb3VzZVByZXNzJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgZGlzYWJsZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZVNlbGVjdGlvbiQubmV4dCgpO1xuICAgIH1cblxuICAgIG9wZW5FbGVtZW50U2lkZW5hdihjb21wb25lbnQ6IFR5cGU8RXh0ZXJuYWxTaWRlbmF2SW50ZXJmYWNlPiwgbW9kZWw6IEVsZW1lbnRNb2RlbCwgY29udGVudFdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlU2lkZW5hdiQubmV4dCh7IG9wZW46IHRydWUsIGNvbXBvbmVudCwgZGF0YTogeyBtb2RlbCwgY29udGVudFdpZHRoIH0gfSk7XG4gICAgfVxuXG4gICAgb3BlblNpZGVuYXYoY29tcG9uZW50OiBUeXBlPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlU2lkZW5hdiQubmV4dCh7IG9wZW46IHRydWUsIGNvbXBvbmVudCB9KTtcbiAgICB9XG5cbiAgICBjbG9zZVNpZGVuYXYoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RvZ2dsZVNpZGVuYXYkLm5leHQoeyBvcGVuOiBmYWxzZSwgY29tcG9uZW50OiBudWxsIH0pO1xuICAgIH1cblxuICAgIGNoYW5nZWRUYWJsZVNpemUoaW5zZXJ0SW5kZXg6IG51bWJlciwgc2Vzc2lvbklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlZFRhYmxlU2l6ZSQubmV4dCh7IGluc2VydEluZGV4LCBzZXNzaW9uSWQgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlZEVkZ2VTaXplKGVkZ2VUeXBlOiBFZGdlVHlwZSwgcGFnZVR5cGU6IFBhZ2VUeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZWRFZGdlU2l6ZSQubmV4dCh7IGVkZ2VUeXBlLCBwYWdlVHlwZSB9KTtcbiAgICB9XG5cbiAgICBpbWFnZUxvYWRlZChzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbWFnZUxvYWRlZCQubmV4dChzZXNzaW9uSWQpO1xuICAgIH1cblxuICAgIGNoYW5nZWRFZGdlKHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZWRFZGdlJC5uZXh0KHNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgaW5zZXJ0VGFibGVSb3dzKGluc2VydEluZGV4OiBudW1iZXIsIHJvd3NDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlciwgc2Vzc2lvbklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5zZXJ0VGFibGVSb3dzJC5uZXh0KHsgaW5zZXJ0SW5kZXgsIHJvd3NDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCwgc2Vzc2lvbklkIH0pO1xuICAgIH1cblxuICAgIGluc2VydFRhYmxlQ29sdW1ucyhpbnNlcnRJbmRleDogbnVtYmVyLCBjb2x1bW5zQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIsIHNlc3Npb25JZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luc2VydFRhYmxlQ29sdW1ucyQubmV4dCh7IGluc2VydEluZGV4LCBjb2x1bW5zQ291bnQsIHRhcmdldEluZGV4LCBpbmhlcml0SW5kZXgsIHNlc3Npb25JZCB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVUYWJsZVJvd3MoaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCBzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVUYWJsZVJvd3MkLm5leHQoeyBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHNlc3Npb25JZCB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVUYWJsZUNvbHVtbnMoaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCBzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVUYWJsZUNvbHVtbnMkLm5leHQoeyBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHNlc3Npb25JZCB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVSaWdodCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlUmlnaHQkLm5leHQoKTtcbiAgICB9XG5cbiAgICByZXNpemVUYWJsZUNvbHVtbnMocmVzaXplVGFibGVDb2x1bW5zOiBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCwgc2Vzc2lvbklkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzaXplVGFibGVDb2x1bW5zJC5uZXh0KHtcbiAgICAgICAgICAgIHJlc2l6ZVRhYmxlQ29sdW1ucyxcbiAgICAgICAgICAgIHNlc3Npb25JZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbnNlcnRUYWJsZSh0YWJsZURhdGE6IHsgcm93czogbnVtYmVyOyBjb2x1bW5zOiBudW1iZXIgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbnNlcnRUYWJsZSQubmV4dCh0YWJsZURhdGEpO1xuICAgIH1cblxuICAgIHVuZG8oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3VuZG8kLm5leHQoKTtcbiAgICB9XG5cbiAgICByZWRvKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZWRvJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ByaW50JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgY3V0U2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1dFNlbGVjdGVkJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgY29weVNlbGVjdGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb3B5U2VsZWN0ZWQkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwYXN0ZUZyb21DbGlwYm9hcmQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bhc3RlRnJvbUNsaXBib2FyZCQubmV4dCgpO1xuICAgIH1cblxuICAgIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0QWxsJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZVNlbGVjdGVkJC5uZXh0KCk7XG4gICAgfVxuXG4gICAga2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9rZXlEb3duJC5uZXh0KGV2ZW50KTtcbiAgICB9XG5cbiAgICB1cGRhdGVFZGdlcyhzZXNzaW9uSWQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl91cGRhdGVFZGdlcyQubmV4dChzZXNzaW9uSWQpO1xuICAgIH1cblxuICAgIGluc2VydFRleHQodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luc2VydFRleHQkLm5leHQodGV4dCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlTGVmdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlTGVmdCQubmV4dCgpO1xuICAgIH1cblxuICAgIHJlbW92ZUN1c3RvbUVsZW1lbnRzRGF0YShlbGVtZW50czogRWxlbWVudE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlQ3VzdG9tRWxlbWVudHNEYXRhJC5uZXh0KGVsZW1lbnRzKTtcbiAgICB9XG59XG4iXX0=
@@ -529,6 +529,8 @@ class EditorService {
529
529
  this._insertText$ = new Subject();
530
530
  this._removeLeft$ = new Subject();
531
531
  this._removeCustomElementsData$ = new Subject();
532
+ this._currentPage$ = new BehaviorSubject(1);
533
+ this._lastPageNumber$ = new BehaviorSubject(1);
532
534
  }
533
535
  set styles(value) {
534
536
  this._styles$.next({ ...value });
@@ -695,6 +697,30 @@ class EditorService {
695
697
  get removeCustomElementsData$() {
696
698
  return this._removeCustomElementsData$.asObservable();
697
699
  }
700
+ get currentPage() {
701
+ return this._currentPage$.value;
702
+ }
703
+ get currentPage$() {
704
+ return this._currentPage$.asObservable();
705
+ }
706
+ get lastPageNumber() {
707
+ return this._lastPageNumber$.value;
708
+ }
709
+ get lastPageNumber$() {
710
+ return this._lastPageNumber$.asObservable();
711
+ }
712
+ setLastPageNumber(value) {
713
+ if (this.lastPageNumber === value) {
714
+ return;
715
+ }
716
+ this._lastPageNumber$.next(value);
717
+ }
718
+ setCurrentPage(value) {
719
+ if (this.currentPage === value) {
720
+ return;
721
+ }
722
+ this._currentPage$.next(value);
723
+ }
698
724
  receiveTextStyle(component) {
699
725
  this._receiveTextStyle$.next(component);
700
726
  }
@@ -2202,6 +2228,18 @@ class PagesLayer extends EventEmitting {
2202
2228
  if (minPage > 1 && config.scrollTop <= (minPage - 1) * (pageHeight + pageSpace) + pageSpace) {
2203
2229
  minPage--;
2204
2230
  }
2231
+ const lastPageNumber = (config.maxHeight - pageSpace) / (config.minHeight - pageSpace);
2232
+ // to convert to an integer with errors in calculations for floating-point numbers, for example 4.001 => 4 or 3.999 => 4
2233
+ this.mainSession.editorService.setLastPageNumber(Math.round(lastPageNumber));
2234
+ if (pages.length > 1) {
2235
+ const pagesHeight = config.height - pageSpace + config.scrollTop;
2236
+ const minPageHeight = config.minHeight - pageSpace;
2237
+ const currentPage = Math.round(pagesHeight / minPageHeight);
2238
+ this.mainSession.editorService.setCurrentPage(currentPage);
2239
+ }
2240
+ else {
2241
+ this.mainSession.editorService.setCurrentPage(pages[0]);
2242
+ }
2205
2243
  if (this.minPageNumber !== minPage || this.maxPageNumber !== maxPage || minPage === 1) {
2206
2244
  this.minPageNumber = minPage;
2207
2245
  this.maxPageNumber = maxPage;
@@ -5502,18 +5540,6 @@ class ComponentService {
5502
5540
  this.attachComponent(appendTo, componentRef);
5503
5541
  return componentRef;
5504
5542
  }
5505
- generateComponents(component, contents, predicate) {
5506
- const properties = contents.map(predicate);
5507
- return this.generateComponentsByProperties(component, properties);
5508
- }
5509
- generateComponentsByProperties(component, componentProps) {
5510
- const components = [];
5511
- componentProps.forEach(x => {
5512
- const componentRef = this.generateComponent(component, x);
5513
- components.push(componentRef);
5514
- });
5515
- return components;
5516
- }
5517
5543
  generateComponent(component, componentProps) {
5518
5544
  const componentRef = this.createComponent(component, componentProps);
5519
5545
  componentRef.instance.initialize();
@@ -10317,10 +10343,10 @@ class EditSession {
10317
10343
  const insertIndex = ContentHelper.paragraphPositionToDocumentIndex(this.displayData.paragraphs, position);
10318
10344
  const insertElement = new InsertElementModel({ element: new ElementModel({ insertIndex, ...element }) });
10319
10345
  OperationsHelper.insertElement(this.model, insertElement);
10346
+ const endPosition = this.displayData.insertText(position, CUSTOM_ELEMENT_MARKER);
10320
10347
  const model = this.model.elements.find(x => x.insertIndex === insertIndex);
10321
10348
  const type = this.customContentService.findComponentType(model.type);
10322
10349
  this.addComponent(this.customComponents.customElements, model, type);
10323
- const endPosition = this.displayData.insertText(position, CUSTOM_ELEMENT_MARKER);
10324
10350
  this.displayData.updateNextLineIndexes(position.row, endPosition.row);
10325
10351
  this.selection.placeCursor(endPosition);
10326
10352
  return endPosition;
@@ -10422,7 +10448,7 @@ class EditSession {
10422
10448
  return endPoint;
10423
10449
  }
10424
10450
  addComponent(customElements, model, componentType) {
10425
- const customElement = this.customContentService.componentService.generateComponent(componentType, {
10451
+ const customElement = this.customContentService.componentService.createComponent(componentType, {
10426
10452
  content: model,
10427
10453
  sessionId: this.sessionId,
10428
10454
  generalProperties: this.generalProperties,
@@ -10435,6 +10461,7 @@ class EditSession {
10435
10461
  else {
10436
10462
  customElements.push(customElement);
10437
10463
  }
10464
+ customElement.instance.initialize();
10438
10465
  }
10439
10466
  applyToolbarStyles() {
10440
10467
  // undefined - value wasn't set
@@ -10484,12 +10511,12 @@ class EditSession {
10484
10511
  this.removeByDocumentIndexes(model.startIndex, model.endIndex);
10485
10512
  }
10486
10513
  OperationsHelper.restore(this.model, model);
10514
+ const endPoint = this.displayData.insertText(paragraphPosition, model.text);
10487
10515
  const restoreEndIndex = model.startIndex + model.text.length;
10488
10516
  this.restoreComponents(this.model.tables, this.customComponents.tables, NoderTableComponent, model.startIndex, restoreEndIndex);
10489
10517
  this.restoreComponents(this.model.images, this.customComponents.images, NoderImageComponent, model.startIndex, restoreEndIndex);
10490
10518
  this.restoreComponents(this.model.tabs, this.customComponents.tabs, NoderTabComponent, model.startIndex, restoreEndIndex);
10491
10519
  this.restoreElementComponents(this.model.elements, model.startIndex, restoreEndIndex);
10492
- const endPoint = this.displayData.insertText(paragraphPosition, model.text);
10493
10520
  this.displayData.resetAllNumberingInfo(paragraphPosition.row);
10494
10521
  this.displayData.updateNextLineIndexes(paragraphPosition.row, endPoint.row);
10495
10522
  if (endPoint.row - paragraphPosition.row && this.type !== 'cell') {
@@ -11459,12 +11486,6 @@ class CustomContentService {
11459
11486
  }
11460
11487
  return null;
11461
11488
  }
11462
- generateElementComponents(elements, sessionId, contentWidth) {
11463
- return elements.map(x => {
11464
- const type = this.findComponentType(x.type);
11465
- return this.componentService.generateComponent(type, { content: x, sessionId, contentWidth });
11466
- });
11467
- }
11468
11489
  isFragmentContainComponent(components, textFragment, fragmentDistance) {
11469
11490
  if (textFragment.includes(CUSTOM_ELEMENT_MARKER)) {
11470
11491
  return (this.isFragmentContainComponents(components.images, fragmentDistance) ||