@esfaenza/signalr-notifications 15.2.19 → 15.2.20

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.
@@ -26,10 +26,10 @@ export class BaseMessageService {
26
26
  add(endpoint) {
27
27
  this.definitions.push(endpoint);
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseMessageService }); }
31
29
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BaseMessageService, decorators: [{
30
+ BaseMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BaseMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
31
+ BaseMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BaseMessageService });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BaseMessageService, decorators: [{
33
33
  type: Injectable
34
34
  }], ctorParameters: function () { return []; } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU1lc3NhZ2VTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lnbmFsci1ub3RpZmljYXRpb25zL3NyYy9saWIvbW9kZWxzL0Jhc2VNZXNzYWdlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRWxEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQVkzQixvSUFBb0k7SUFDcEksSUFBVyxjQUFjLEtBQThCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFakY7UUFiUSxnQkFBVyxHQUE0QixFQUFFLENBQUM7UUFFM0MsK0JBQTBCLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxJQUFJLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDOUYsbUJBQWMsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELHdCQUFtQixHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFHN0QsdUJBQWtCLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQU1oRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sR0FBRyxDQUFDLFFBQStCO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBekJRLGtCQUFrQjttSEFBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEVuZHBvaW50RGVmIH0gZnJvbSAnLi9FbmRwb2ludERlZic7XHJcbmltcG9ydCB7IEpvYlByb2dyZXNzRHRvIH0gZnJvbSAnLi9Kb2JQcm9ncmVzc0R0byc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGJhc2UgZGEgZXN0ZW5kZXJlIGNvbiBsYSBkZWZpbml6aW9uZSBkZWdsaSBFbmRwb2ludCBzdXBwb3J0YXRpIGRhbGwnYXBwbGljYXppb25lXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlTWVzc2FnZVNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgZGVmaW5pdGlvbnM6IEVuZHBvaW50RGVmPGFueSwgYW55PltdID0gW107XHJcblxyXG4gICAgcHVibGljIElOX0pvYlByb2dyZXNzTm90aWZpY2F0aW9uID0gRW5kcG9pbnREZWYuSW4oXCJTZW5kUHJvZ3Jlc3NOb3RpZmljYXRpb25cIiwgbmV3IEpvYlByb2dyZXNzRHRvKCkpO1xyXG4gICAgcHVibGljIElOX1NlbmRWZXJzaW9uID0gRW5kcG9pbnREZWYuSW4oXCJTZW5kVmVyc2lvblwiLCBcIlwiKTtcclxuICAgIHB1YmxpYyBJTl9DbGVhckNhY2hlID0gRW5kcG9pbnREZWYuSW4oXCJDbGVhckNhY2hlXCIsIFwiXCIpO1xyXG4gICAgcHVibGljIElOX0NsZWFyUHJlZmVyZWNuZXMgPSBFbmRwb2ludERlZi5JbihcIkNsZWFyUHJlZmVyZWNuZXNcIiwgXCJcIik7XHJcblxyXG5cclxuICAgIHB1YmxpYyBPVVRfUXVlcnlKb2JTdGF0dXMgPSBFbmRwb2ludERlZi5PdXQoXCJRdWVyeUpvYlN0YXR1c1wiLCBudWxsKTtcclxuXHJcbiAgICAvKiogRW50cnlwb2ludCBjaGUgcmVzdGl0dWlzY2UgdHV0dGkgZ2xpIEVuZHBvaW50IGRlbGwnYXBwbGljYXppb25lLiBEYSBvdmVycmlkYXJlIHF1YWxvcmEgbm9uIHZlbmdhIHV0aWxpenphdG8gaWwgbWV0b2RvICoqYWRkKiogKi9cclxuICAgIHB1YmxpYyBnZXQgQWxsRGVmaW5pdGlvbnMoKTogRW5kcG9pbnREZWY8YW55LCBhbnk+W10geyByZXR1cm4gdGhpcy5kZWZpbml0aW9uczsgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuYWRkKHRoaXMuSU5fSm9iUHJvZ3Jlc3NOb3RpZmljYXRpb24pO1xyXG4gICAgICAgIHRoaXMuYWRkKHRoaXMuSU5fU2VuZFZlcnNpb24pO1xyXG4gICAgICAgIHRoaXMuYWRkKHRoaXMuSU5fQ2xlYXJDYWNoZSk7XHJcbiAgICAgICAgdGhpcy5hZGQodGhpcy5JTl9DbGVhclByZWZlcmVjbmVzKTtcclxuICAgICAgICB0aGlzLmFkZCh0aGlzLk9VVF9RdWVyeUpvYlN0YXR1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZChlbmRwb2ludDogRW5kcG9pbnREZWY8YW55LCBhbnk+KSB7XHJcbiAgICAgICAgdGhpcy5kZWZpbml0aW9ucy5wdXNoKGVuZHBvaW50KTtcclxuICAgIH1cclxufSJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU1lc3NhZ2VTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lnbmFsci1ub3RpZmljYXRpb25zL3NyYy9saWIvbW9kZWxzL0Jhc2VNZXNzYWdlU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRWxEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQVkzQixvSUFBb0k7SUFDcEksSUFBVyxjQUFjLEtBQThCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFakY7UUFiUSxnQkFBVyxHQUE0QixFQUFFLENBQUM7UUFFM0MsK0JBQTBCLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxJQUFJLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDOUYsbUJBQWMsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxrQkFBYSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELHdCQUFtQixHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFHN0QsdUJBQWtCLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQU1oRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sR0FBRyxDQUFDLFFBQStCO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7O2dIQXpCUSxrQkFBa0I7b0hBQWxCLGtCQUFrQjs0RkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IEVuZHBvaW50RGVmIH0gZnJvbSAnLi9FbmRwb2ludERlZic7XHJcbmltcG9ydCB7IEpvYlByb2dyZXNzRHRvIH0gZnJvbSAnLi9Kb2JQcm9ncmVzc0R0byc7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGJhc2UgZGEgZXN0ZW5kZXJlIGNvbiBsYSBkZWZpbml6aW9uZSBkZWdsaSBFbmRwb2ludCBzdXBwb3J0YXRpIGRhbGwnYXBwbGljYXppb25lXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBCYXNlTWVzc2FnZVNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgZGVmaW5pdGlvbnM6IEVuZHBvaW50RGVmPGFueSwgYW55PltdID0gW107XHJcblxyXG4gICAgcHVibGljIElOX0pvYlByb2dyZXNzTm90aWZpY2F0aW9uID0gRW5kcG9pbnREZWYuSW4oXCJTZW5kUHJvZ3Jlc3NOb3RpZmljYXRpb25cIiwgbmV3IEpvYlByb2dyZXNzRHRvKCkpO1xyXG4gICAgcHVibGljIElOX1NlbmRWZXJzaW9uID0gRW5kcG9pbnREZWYuSW4oXCJTZW5kVmVyc2lvblwiLCBcIlwiKTtcclxuICAgIHB1YmxpYyBJTl9DbGVhckNhY2hlID0gRW5kcG9pbnREZWYuSW4oXCJDbGVhckNhY2hlXCIsIFwiXCIpO1xyXG4gICAgcHVibGljIElOX0NsZWFyUHJlZmVyZWNuZXMgPSBFbmRwb2ludERlZi5JbihcIkNsZWFyUHJlZmVyZWNuZXNcIiwgXCJcIik7XHJcblxyXG5cclxuICAgIHB1YmxpYyBPVVRfUXVlcnlKb2JTdGF0dXMgPSBFbmRwb2ludERlZi5PdXQoXCJRdWVyeUpvYlN0YXR1c1wiLCBudWxsKTtcclxuXHJcbiAgICAvKiogRW50cnlwb2ludCBjaGUgcmVzdGl0dWlzY2UgdHV0dGkgZ2xpIEVuZHBvaW50IGRlbGwnYXBwbGljYXppb25lLiBEYSBvdmVycmlkYXJlIHF1YWxvcmEgbm9uIHZlbmdhIHV0aWxpenphdG8gaWwgbWV0b2RvICoqYWRkKiogKi9cclxuICAgIHB1YmxpYyBnZXQgQWxsRGVmaW5pdGlvbnMoKTogRW5kcG9pbnREZWY8YW55LCBhbnk+W10geyByZXR1cm4gdGhpcy5kZWZpbml0aW9uczsgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuYWRkKHRoaXMuSU5fSm9iUHJvZ3Jlc3NOb3RpZmljYXRpb24pO1xyXG4gICAgICAgIHRoaXMuYWRkKHRoaXMuSU5fU2VuZFZlcnNpb24pO1xyXG4gICAgICAgIHRoaXMuYWRkKHRoaXMuSU5fQ2xlYXJDYWNoZSk7XHJcbiAgICAgICAgdGhpcy5hZGQodGhpcy5JTl9DbGVhclByZWZlcmVjbmVzKTtcclxuICAgICAgICB0aGlzLmFkZCh0aGlzLk9VVF9RdWVyeUpvYlN0YXR1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZChlbmRwb2ludDogRW5kcG9pbnREZWY8YW55LCBhbnk+KSB7XHJcbiAgICAgICAgdGhpcy5kZWZpbml0aW9ucy5wdXNoKGVuZHBvaW50KTtcclxuICAgIH1cclxufSJdfQ==
@@ -19,11 +19,11 @@ export class SignalrNotificationsModule {
19
19
  ]
20
20
  };
21
21
  }
22
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SignalrNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SignalrNotificationsModule }); }
24
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SignalrNotificationsModule }); }
25
22
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SignalrNotificationsModule, decorators: [{
23
+ SignalrNotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SignalrNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
+ SignalrNotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: SignalrNotificationsModule });
25
+ SignalrNotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SignalrNotificationsModule });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SignalrNotificationsModule, decorators: [{
27
27
  type: NgModule
28
28
  }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZ25hbHItbm90aWZpY2F0aW9ucy9zcmMvbGliL3NpZ25hbHItbm90aWZpY2F0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUdqSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBeUM7UUFDdEQsT0FBTztZQUNMLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsU0FBUyxFQUFFO2dCQUNULG9CQUFvQjtnQkFDcEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLElBQUksa0JBQWtCLEVBQUU7Z0JBQ3ZGLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtnQkFDeEQsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUN4RixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzVGLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDcEcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNuRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7YUFDbkY7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FmVSwwQkFBMEI7Z0hBQTFCLDBCQUEwQjtnSEFBMUIsMEJBQTBCOzs0RkFBMUIsMEJBQTBCO2tCQUR0QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpZ25hbHJOb3RpZmljYXRpb25zTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvU2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGVDb25maWcnO1xyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9CYXNlTWVzc2FnZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4vc2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFTkRQT0lOVF9VUkwsIFNJR05BTFJfRU5BQkxFRCwgU0dSX0RFQlVHX01PREUsIE1FU1NBR0VfUEFDSywgQVVUT19SRUNPTk5FQ1QsIEFWT0lEX1dTIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIFNpZ25hbHJOb3RpZmljYXRpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICAgICAgeyBwcm92aWRlOiBCYXNlTWVzc2FnZVNlcnZpY2UsIHVzZUNsYXNzOiBjb25maWc/Lm1lc3NhZ2VTZXJ2aWNlIHx8IEJhc2VNZXNzYWdlU2VydmljZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRU5EUE9JTlRfVVJMLCB1c2VWYWx1ZTogY29uZmlnPy5lbmRwb2ludFVybCB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0lHTkFMUl9FTkFCTEVELCB1c2VWYWx1ZTogY29uZmlnPy5lbmFibGVkICE9IG51bGwgPyBjb25maWc/LmVuYWJsZWQgOiB0cnVlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBTR1JfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZz8uZGVidWdNb2RlICE9IG51bGwgPyBjb25maWc/LmRlYnVnTW9kZSA6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBNRVNTQUdFX1BBQ0ssIHVzZVZhbHVlOiBjb25maWc/LnVzZU1lc3NhZ2VQYWNrICE9IG51bGwgPyBjb25maWc/LnVzZU1lc3NhZ2VQYWNrIDogZmFsc2UgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFVVE9fUkVDT05ORUNULCB1c2VWYWx1ZTogY29uZmlnPy5hdXRvUmVjb25uZWN0ICE9IG51bGwgPyBjb25maWc/LmF1dG9SZWNvbm5lY3QgOiB0cnVlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBVk9JRF9XUywgdXNlVmFsdWU6IGNvbmZpZz8uYXZvaWRXcyAhPSBudWxsID8gY29uZmlnPy5hdm9pZFdzIDogZmFsc2UgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZ25hbHItbm90aWZpY2F0aW9ucy9zcmMvbGliL3NpZ25hbHItbm90aWZpY2F0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUdqSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBeUM7UUFDdEQsT0FBTztZQUNMLFFBQVEsRUFBRSwwQkFBMEI7WUFDcEMsU0FBUyxFQUFFO2dCQUNULG9CQUFvQjtnQkFDcEIsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLElBQUksa0JBQWtCLEVBQUU7Z0JBQ3ZGLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRTtnQkFDeEQsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUN4RixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQzVGLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGNBQWMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDcEcsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNuRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7YUFDbkY7U0FDRixDQUFDO0lBQ0osQ0FBQzs7d0hBZlUsMEJBQTBCO3lIQUExQiwwQkFBMEI7eUhBQTFCLDBCQUEwQjs0RkFBMUIsMEJBQTBCO2tCQUR0QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpZ25hbHJOb3RpZmljYXRpb25zTW9kdWxlQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvU2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGVDb25maWcnO1xyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9CYXNlTWVzc2FnZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4vc2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFTkRQT0lOVF9VUkwsIFNJR05BTFJfRU5BQkxFRCwgU0dSX0RFQlVHX01PREUsIE1FU1NBR0VfUEFDSywgQVVUT19SRUNPTk5FQ1QsIEFWT0lEX1dTIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIFNpZ25hbHJOb3RpZmljYXRpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZUNvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U2lnbmFsck5vdGlmaWNhdGlvbnNNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBTaWduYWxyTm90aWZpY2F0aW9uc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICAgICAgeyBwcm92aWRlOiBCYXNlTWVzc2FnZVNlcnZpY2UsIHVzZUNsYXNzOiBjb25maWc/Lm1lc3NhZ2VTZXJ2aWNlIHx8IEJhc2VNZXNzYWdlU2VydmljZSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogRU5EUE9JTlRfVVJMLCB1c2VWYWx1ZTogY29uZmlnPy5lbmRwb2ludFVybCB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU0lHTkFMUl9FTkFCTEVELCB1c2VWYWx1ZTogY29uZmlnPy5lbmFibGVkICE9IG51bGwgPyBjb25maWc/LmVuYWJsZWQgOiB0cnVlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBTR1JfREVCVUdfTU9ERSwgdXNlVmFsdWU6IGNvbmZpZz8uZGVidWdNb2RlICE9IG51bGwgPyBjb25maWc/LmRlYnVnTW9kZSA6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBNRVNTQUdFX1BBQ0ssIHVzZVZhbHVlOiBjb25maWc/LnVzZU1lc3NhZ2VQYWNrICE9IG51bGwgPyBjb25maWc/LnVzZU1lc3NhZ2VQYWNrIDogZmFsc2UgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IEFVVE9fUkVDT05ORUNULCB1c2VWYWx1ZTogY29uZmlnPy5hdXRvUmVjb25uZWN0ICE9IG51bGwgPyBjb25maWc/LmF1dG9SZWNvbm5lY3QgOiB0cnVlIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBBVk9JRF9XUywgdXNlVmFsdWU6IGNvbmZpZz8uYXZvaWRXcyAhPSBudWxsID8gY29uZmlnPy5hdm9pZFdzIDogZmFsc2UgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
@@ -0,0 +1,248 @@
1
+ // Angular
2
+ import { Injectable, Inject } from "@angular/core";
3
+ // Direttive, Componenti, Librerie
4
+ import * as signalR from '@microsoft/signalr';
5
+ import { HubConnectionState } from "@microsoft/signalr";
6
+ import { Subject, EMPTY, from, of } from "rxjs";
7
+ import { catchError, concatMap, delay, tap } from "rxjs/operators";
8
+ import { SGR_DEBUG_MODE, ENDPOINT_URL, MESSAGE_PACK, SIGNALR_ENABLED, AUTO_RECONNECT, AVOID_WS } from "./tokens";
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "./models/BaseMessageService";
11
+ /** Servizio che gestisce la comunicazione con un Hub SignalR in base alle configurazioni fornite dall'applicazione */
12
+ export class NotificationsService {
13
+ /** @ignore Costruttore */
14
+ constructor(MessageDef, endpoint_url, msgpack, avoidWs, enabled, debug, autoreconnect) {
15
+ this.MessageDef = MessageDef;
16
+ this.endpoint_url = endpoint_url;
17
+ this.msgpack = msgpack;
18
+ this.avoidWs = avoidWs;
19
+ this.enabled = enabled;
20
+ this.debug = debug;
21
+ this.autoreconnect = autoreconnect;
22
+ /** Cache degli Observable generati in base agli Endpoint disponibili */
23
+ this.notifications$ = {};
24
+ /** Coda di chiamate da recuperare quando la connessione viene finalmente aperta */
25
+ this.RequestsToRecover = [];
26
+ if (!this.enabled) {
27
+ this.log(this.loc("SignalR won't be enabled as per configuration"));
28
+ return;
29
+ }
30
+ this.init();
31
+ }
32
+ async init() {
33
+ this.MessageDef.AllDefinitions.forEach(def => { this.notifications$[def.endpoint] = new Subject(); });
34
+ let pars = { skipNegotiation: this.avoidWs ? false : true, transport: this.avoidWs ? signalR.HttpTransportType.LongPolling : signalR.HttpTransportType.WebSockets, logger: this.debug ? signalR.LogLevel.Trace : signalR.LogLevel.None };
35
+ var builder = new signalR.HubConnectionBuilder().withUrl("/" + this.endpoint_url, pars);
36
+ if (this.autoreconnect) {
37
+ this.log(this.loc("Building SignalR Hub with Automatic Reconnection"));
38
+ // 100 tentativi di riconnessione, 1 ogni 5 secondi
39
+ builder = builder.withAutomaticReconnect(new Array(100).fill(5 * 1000));
40
+ }
41
+ if (this.msgpack) {
42
+ this.log(this.loc("Building SignalR Hub with MessagePack protocol"));
43
+ var mphpModule = await import("@microsoft/signalr-protocol-msgpack");
44
+ builder = builder.withHubProtocol(new mphpModule.MessagePackHubProtocol());
45
+ }
46
+ this.connection = builder.build();
47
+ this.connect(() => {
48
+ if (this.RequestsToRecover.length == 0)
49
+ return;
50
+ for (let i = 0; i < this.RequestsToRecover.length; i++) {
51
+ this.log(this.loc("Recovering request to Endpoint") + " " + this.RequestsToRecover[i].item.endpoint);
52
+ this.send(this.RequestsToRecover[i].item, this.RequestsToRecover[i].dto);
53
+ }
54
+ this.RequestsToRecover = [];
55
+ });
56
+ }
57
+ /**
58
+ * Effettua la connessione all'Hub Signalr e registra tutti gli Endpoint per cui il Backend comunica con il Frontend sulla **connection**
59
+ */
60
+ connect(onConnected) {
61
+ this.connection.start().catch(err => console.log(err)).then(_ => onConnected?.());
62
+ this.connection.on("ForceDisconnect", () => { this.connection.stop(); });
63
+ this.MessageDef.AllDefinitions.forEach(d => {
64
+ //Registro solo le cose di IN, quelle di out sono chiamate che faccio io al BE quindi non servono
65
+ if (d.inTypeDefault !== null && (d.outTypeDefault === null || d.outTypeDefault === undefined))
66
+ this.connection.on(d.endpoint, (message) => {
67
+ this.log(this.loc("Request received from the server for endpoint") + " '" + d.endpoint + "': " + (message ? this.substringLog(JSON.stringify(message)) : "[No message]"));
68
+ this.notifications$[d.endpoint].next(message);
69
+ });
70
+ else
71
+ this.log(this.loc("Refusing to register endpoint") + " " + d.endpoint + " " + this.loc("because it is not declared as IN - ONLY"));
72
+ });
73
+ }
74
+ /**
75
+ * Effettua verifiche sulla connessione e, in caso non fosse collegata, tenta di riconnetterla
76
+ *
77
+ * @returns {Promise<'OK' | 'KO' | 'NO-OP'>} 'OK' Se la connessione è già connessa o è stata riconnessa con successo, 'KO' Se non è stato possibile riconnettere
78
+ * una connessione disconnessa, 'NO-OP' se la connesisone è in uno stato intermedio che non può essere modificato
79
+ */
80
+ ensureConnected() {
81
+ if (this.connection.state == HubConnectionState.Disconnected) {
82
+ this.log(this.loc("Connection lost or missing, reconnecting..."));
83
+ return this.connection.start()
84
+ .then(_ => {
85
+ return Promise.resolve("OK");
86
+ }, _ => {
87
+ this.log(this.loc("Cannot reconnect SignalR, frontend HUB offline"));
88
+ return Promise.resolve("KO");
89
+ });
90
+ }
91
+ else if (this.connection.state == HubConnectionState.Connected)
92
+ return Promise.resolve("OK");
93
+ else
94
+ return Promise.resolve("NO-OP");
95
+ }
96
+ /**
97
+ * Invia un messaggio all'Hub del Backend
98
+ *
99
+ * @param {EndpointDef<any, TOut>} item Endpoint da contattare
100
+ * @param {TOut} dto Dto da inviare all'Endpoint
101
+ */
102
+ send(item, dto) {
103
+ if (!this.connection) {
104
+ this.RequestsToRecover.push({ item, dto });
105
+ return;
106
+ }
107
+ if (!this.enabled) {
108
+ this.log(this.loc("Send request ignored because SignalR is not active by configuration"));
109
+ return EMPTY;
110
+ }
111
+ if (this.connection.state == HubConnectionState.Connecting || this.connection.state == HubConnectionState.Reconnecting || this.connection.state == HubConnectionState.Disconnecting) {
112
+ this.log(this.loc("Send request sent before a connection was in stable State, waiting 1 second and retrying"));
113
+ setTimeout(() => { this.send(item, dto); }, 1000);
114
+ }
115
+ else if (this.connection.state == HubConnectionState.Disconnected) {
116
+ this.ensureConnected().then(t => {
117
+ if (t == "KO")
118
+ this.log(this.loc("ERRORS on reconnecting before retrying a send command. Sent message WILL BE LOST"));
119
+ else
120
+ this.send(item, dto);
121
+ });
122
+ }
123
+ else {
124
+ this.connection.send(item.endpoint, dto).then(_ => {
125
+ if (this.debug)
126
+ console.info(this.loc("Request sent to server") + " - " + item.endpoint + ": " + this.substringLog(JSON.stringify(dto)));
127
+ });
128
+ }
129
+ }
130
+ /**
131
+ * Invia un messaggio all'Hub del Backend, aspettandosi una risposta
132
+ *
133
+ * @param {EndpointDef<TOut, TIn>} item Endpoint da contattare
134
+ * @param {TOut} dto Dto da inviare all'Endpoint
135
+ *
136
+ * @returns {Observable<TIn>} Observable su cui ci si può registrare per ricevere il risultato della chiamata
137
+ */
138
+ invoke(item, dto) {
139
+ if (!this.enabled) {
140
+ this.log(this.loc("Invoke request ignored because SignalR is not active by configuration"));
141
+ return EMPTY;
142
+ }
143
+ if (this.connection.state == HubConnectionState.Connecting || this.connection.state == HubConnectionState.Reconnecting || this.connection.state == HubConnectionState.Disconnecting) {
144
+ this.log(this.loc("Invoke request sent before a connection was in stable State, waiting 1 second and retrying"));
145
+ return of().pipe(delay(1000), concatMap(() => this.invoke(item, dto)));
146
+ }
147
+ else if (this.connection.state == HubConnectionState.Disconnected) {
148
+ return from(this.ensureConnected()).pipe(concatMap((res) => {
149
+ if (res == "KO") {
150
+ this.log(this.loc("ERRORS on reconnecting before retrying a send command. Sent message WILL BE LOST"));
151
+ return EMPTY;
152
+ }
153
+ else
154
+ return this.invoke(item, dto);
155
+ }));
156
+ }
157
+ else {
158
+ return from(this.connection.invoke(item.endpoint, dto)).pipe(tap(() => {
159
+ if (this.debug)
160
+ console.log(this.loc("Request invoked to server") + " - " + item.endpoint + ": " + this.substringLog(JSON.stringify(dto)));
161
+ }));
162
+ }
163
+ }
164
+ /**
165
+ * Hook per osservare i dati spediti ad un Endpoint dal Backend
166
+ *
167
+ * @param {EndpointDef<TIn, any>} item Endpoint su cui ascoltare
168
+ *
169
+ * @returns {Observable<TIn>} Observable su cui ci si può registrare per ricevere l'oggetto generato ad ogni chiamata dal Backend al Frontend
170
+ */
171
+ observe(item) {
172
+ if (!this.enabled) {
173
+ this.log(this.loc("Observe request ignored because SignalR is not active by configuration"));
174
+ return EMPTY;
175
+ }
176
+ this.log(this.loc("Returning observable for required endpoint") + ": " + item.endpoint);
177
+ return this.notifications$[item.endpoint];
178
+ }
179
+ /**
180
+ * Disconnessione del sistema di SignalR
181
+ *
182
+ * @returns {Observable<void>} Observable a cui registrarsi che viene chiamato quando la disconnessione è terminata
183
+ */
184
+ disconnect() {
185
+ //NO-OP se non attivo
186
+ if (!this.enabled) {
187
+ this.log(this.loc("Disconnection request ignored because SignalR is not active by configuration"));
188
+ return EMPTY;
189
+ }
190
+ return from(this.connection.stop()).pipe(catchError((err, caught) => { console.log(err); return of(null); }), tap(() => {
191
+ this.log(this.loc("Disconnection request honored"));
192
+ }));
193
+ }
194
+ /**
195
+ * Taglia un log troppo lungo
196
+ *
197
+ * @param {string} text Log da tagliare
198
+ * @param {number} maxchars Numero massimo di caratteri da tenere
199
+ *
200
+ * @returns {string} Log tagliato
201
+ */
202
+ substringLog(text, maxchars = 120) {
203
+ return text.length > maxchars ? text.substr(0, maxchars) + "[...]" : text;
204
+ }
205
+ /**
206
+ * Stampa un log a console
207
+ *
208
+ * @param {string} message Messaggio da stampare
209
+ */
210
+ log(message) {
211
+ if (this.debug)
212
+ console.log("@signalr-notifications: " + message);
213
+ }
214
+ /**
215
+ * Helper di localizzazione
216
+ *
217
+ * @param {string} message Messaggio da tradurre
218
+ *
219
+ * @returns {string} Messaggio tradotto
220
+ */
221
+ loc(message) {
222
+ return message;
223
+ }
224
+ }
225
+ NotificationsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationsService, deps: [{ token: i1.BaseMessageService }, { token: ENDPOINT_URL }, { token: MESSAGE_PACK }, { token: AVOID_WS }, { token: SIGNALR_ENABLED }, { token: SGR_DEBUG_MODE }, { token: AUTO_RECONNECT }], target: i0.ɵɵFactoryTarget.Injectable });
226
+ NotificationsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationsService });
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NotificationsService, decorators: [{
228
+ type: Injectable
229
+ }], ctorParameters: function () { return [{ type: i1.BaseMessageService }, { type: undefined, decorators: [{
230
+ type: Inject,
231
+ args: [ENDPOINT_URL]
232
+ }] }, { type: undefined, decorators: [{
233
+ type: Inject,
234
+ args: [MESSAGE_PACK]
235
+ }] }, { type: undefined, decorators: [{
236
+ type: Inject,
237
+ args: [AVOID_WS]
238
+ }] }, { type: undefined, decorators: [{
239
+ type: Inject,
240
+ args: [SIGNALR_ENABLED]
241
+ }] }, { type: undefined, decorators: [{
242
+ type: Inject,
243
+ args: [SGR_DEBUG_MODE]
244
+ }] }, { type: undefined, decorators: [{
245
+ type: Inject,
246
+ args: [AUTO_RECONNECT]
247
+ }] }]; } });
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci1ub3RpZmljYXRpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWduYWxyLW5vdGlmaWNhdGlvbnMvc3JjL2xpYi9zaWduYWxyLW5vdGlmaWNhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsa0NBQWtDO0FBQ2xDLE9BQU8sS0FBSyxPQUFPLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFjLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFakgsc0hBQXNIO0FBRXRILE1BQU0sT0FBTyxvQkFBb0I7SUFXNUIsMEJBQTBCO0lBQzNCLFlBQW9CLFVBQThCLEVBQWdDLFlBQW9CLEVBQWdDLE9BQWdCLEVBQTZCLE9BQWdCLEVBQW1DLE9BQWdCLEVBQWtDLEtBQWMsRUFBa0MsYUFBc0I7UUFBMVUsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFBZ0MsaUJBQVksR0FBWixZQUFZLENBQVE7UUFBZ0MsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUE2QixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQW1DLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBa0MsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUFrQyxrQkFBYSxHQUFiLGFB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Q0FBQyxHQUFHLENBQUMsMEJBQTBCLEdBQUcsT0FBTyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLEdBQUcsQ0FBQyxPQUFlO1FBQ3ZCLE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7O2tIQTNPUSxvQkFBb0Isb0RBWStCLFlBQVksYUFBd0MsWUFBWSxhQUFxQyxRQUFRLGFBQW9DLGVBQWUsYUFBb0MsY0FBYyxhQUFrQyxjQUFjO3NIQVpyVCxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTs7MEJBYThDLE1BQU07MkJBQUMsWUFBWTs7MEJBQWlDLE1BQU07MkJBQUMsWUFBWTs7MEJBQThCLE1BQU07MkJBQUMsUUFBUTs7MEJBQTZCLE1BQU07MkJBQUMsZUFBZTs7MEJBQTZCLE1BQU07MkJBQUMsY0FBYzs7MEJBQTJCLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIERpcmV0dGl2ZSwgQ29tcG9uZW50aSwgTGlicmVyaWVcclxuaW1wb3J0ICogYXMgc2lnbmFsUiBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xyXG5pbXBvcnQgeyBIdWJDb25uZWN0aW9uU3RhdGUgfSBmcm9tIFwiQG1pY3Jvc29mdC9zaWduYWxyXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIEVNUFRZLCBmcm9tLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgZGVsYXksIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5cclxuLy8gTW9kZWxsaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9CYXNlTWVzc2FnZVNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbmRwb2ludERlZiB9IGZyb20gJy4vbW9kZWxzL0VuZHBvaW50RGVmJztcclxuaW1wb3J0IHsgU0dSX0RFQlVHX01PREUsIEVORFBPSU5UX1VSTCwgTUVTU0FHRV9QQUNLLCBTSUdOQUxSX0VOQUJMRUQsIEFVVE9fUkVDT05ORUNULCBBVk9JRF9XUyB9IGZyb20gXCIuL3Rva2Vuc1wiO1xyXG5cclxuLyoqIFNlcnZpemlvIGNoZSBnZXN0aXNjZSBsYSBjb211bmljYXppb25lIGNvbiB1biBIdWIgU2lnbmFsUiBpbiBiYXNlIGFsbGUgY29uZmlndXJhemlvbmkgZm9ybml0ZSBkYWxsJ2FwcGxpY2F6aW9uZSAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zU2VydmljZSB7XHJcblxyXG4gICAgLyoqIENhY2hlIGRlZ2xpIE9ic2VydmFibGUgZ2VuZXJhdGkgaW4gYmFzZSBhZ2xpIEVuZHBvaW50IGRpc3BvbmliaWxpICovXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvbnMkOiB7IFtpbmRleDogc3RyaW5nXTogU3ViamVjdDxhbnk+IH0gPSB7fTtcclxuXHJcbiAgICAvKiogQ29ubmVzc2lvbmUgU2lnbmFsciAqL1xyXG4gICAgcHJpdmF0ZSBjb25uZWN0aW9uOiBzaWduYWxSLkh1YkNvbm5lY3Rpb247XHJcblxyXG4gICAgIC8qKiBDb2RhIGRpIGNoaWFtYXRlIGRhIHJlY3VwZXJhcmUgcXVhbmRvIGxhIGNvbm5lc3Npb25lIHZpZW5lIGZpbmFsbWVudGUgYXBlcnRhICovXHJcbiAgICAgcHJpdmF0ZSBSZXF1ZXN0c1RvUmVjb3ZlcjogeyBpdGVtOiBFbmRwb2ludERlZjxhbnksIGFueT4sIGR0bzogYW55IH1bXSA9IFtdO1xyXG5cclxuICAgICAvKiogQGlnbm9yZSBDb3N0cnV0dG9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBNZXNzYWdlRGVmOiBCYXNlTWVzc2FnZVNlcnZpY2UsIEBJbmplY3QoRU5EUE9JTlRfVVJMKSBwcml2YXRlIGVuZHBvaW50X3VybDogc3RyaW5nLCBASW5qZWN0KE1FU1NBR0VfUEFDSykgcHJpdmF0ZSBtc2dwYWNrOiBib29sZWFuLCAgQEluamVjdChBVk9JRF9XUykgcHJpdmF0ZSBhdm9pZFdzOiBib29sZWFuLCBASW5qZWN0KFNJR05BTFJfRU5BQkxFRCkgcHJpdmF0ZSBlbmFibGVkOiBib29sZWFuLCBASW5qZWN0KFNHUl9ERUJVR19NT0RFKSBwcml2YXRlIGRlYnVnOiBib29sZWFuLCBASW5qZWN0KEFVVE9fUkVDT05ORUNUKSBwcml2YXRlIGF1dG9yZWNvbm5lY3Q6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlNpZ25hbFIgd29uJ3QgYmUgZW5hYmxlZCBhcyBwZXIgY29uZmlndXJhdGlvblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMuTWVzc2FnZURlZi5BbGxEZWZpbml0aW9ucy5mb3JFYWNoKGRlZiA9PiB7IHRoaXMubm90aWZpY2F0aW9ucyRbZGVmLmVuZHBvaW50XSA9IG5ldyBTdWJqZWN0PHR5cGVvZiBkZWYuaW5UeXBlRGVmYXVsdD4oKTsgfSk7XHJcblxyXG4gICAgICAgIGxldCBwYXJzOiBzaWduYWxSLklIdHRwQ29ubmVjdGlvbk9wdGlvbnMgPSB7IHNraXBOZWdvdGlhdGlvbjogdGhpcy5hdm9pZFdzID8gZmFsc2UgOiB0cnVlLCB0cmFuc3BvcnQ6IHRoaXMuYXZvaWRXcyA/IHNpZ25hbFIuSHR0cFRyYW5zcG9ydFR5cGUuTG9uZ1BvbGxpbmcgOiBzaWduYWxSLkh0dHBUcmFuc3BvcnRUeXBlLldlYlNvY2tldHMsIGxvZ2dlcjogdGhpcy5kZWJ1ZyA/IHNpZ25hbFIuTG9nTGV2ZWwuVHJhY2UgOiBzaWduYWxSLkxvZ0xldmVsLk5vbmUgfTtcclxuICAgICAgICB2YXIgYnVpbGRlciA9IG5ldyBzaWduYWxSLkh1YkNvbm5lY3Rpb25CdWlsZGVyKCkud2l0aFVybChcIi9cIiArIHRoaXMuZW5kcG9pbnRfdXJsLCBwYXJzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b3JlY29ubmVjdCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkJ1aWxkaW5nIFNpZ25hbFIgSHViIHdpdGggQXV0b21hdGljIFJlY29ubmVjdGlvblwiKSk7XHJcbiAgICAgICAgICAgIC8vIDEwMCB0ZW50YXRpdmkgZGkgcmljb25uZXNzaW9uZSwgMSBvZ25pIDUgc2Vjb25kaVxyXG4gICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlci53aXRoQXV0b21hdGljUmVjb25uZWN0KG5ldyBBcnJheSgxMDApLmZpbGwoNSAqIDEwMDApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1zZ3BhY2spIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJCdWlsZGluZyBTaWduYWxSIEh1YiB3aXRoIE1lc3NhZ2VQYWNrIHByb3RvY29sXCIpKTtcclxuICAgICAgICAgICAgdmFyIG1waHBNb2R1bGUgPSBhd2FpdCBpbXBvcnQoXCJAbWljcm9zb2Z0L3NpZ25hbHItcHJvdG9jb2wtbXNncGFja1wiKTtcclxuICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIud2l0aEh1YlByb3RvY29sKG5ldyBtcGhwTW9kdWxlLk1lc3NhZ2VQYWNrSHViUHJvdG9jb2woKSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbiA9IGJ1aWxkZXIuYnVpbGQoKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3QoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5SZXF1ZXN0c1RvUmVjb3Zlci5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5SZXF1ZXN0c1RvUmVjb3Zlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJSZWNvdmVyaW5nIHJlcXVlc3QgdG8gRW5kcG9pbnRcIikgKyBcIiBcIiArIHRoaXMuUmVxdWVzdHNUb1JlY292ZXJbaV0uaXRlbS5lbmRwb2ludClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZCh0aGlzLlJlcXVlc3RzVG9SZWNvdmVyW2ldLml0ZW0sIHRoaXMuUmVxdWVzdHNUb1JlY292ZXJbaV0uZHRvKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5SZXF1ZXN0c1RvUmVjb3ZlciA9IFtdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgbGEgY29ubmVzc2lvbmUgYWxsJ0h1YiBTaWduYWxyIGUgcmVnaXN0cmEgdHV0dGkgZ2xpIEVuZHBvaW50IHBlciBjdWkgaWwgQmFja2VuZCBjb211bmljYSBjb24gaWwgRnJvbnRlbmQgc3VsbGEgKipjb25uZWN0aW9uKipcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb25uZWN0KG9uQ29ubmVjdGVkPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5zdGFydCgpLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZyhlcnIpKS50aGVuKF8gPT4gb25Db25uZWN0ZWQ/LigpKTtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24ub24oXCJGb3JjZURpc2Nvbm5lY3RcIiwgKCkgPT4geyB0aGlzLmNvbm5lY3Rpb24uc3RvcCgpOyB9KTtcclxuICAgICAgICB0aGlzLk1lc3NhZ2VEZWYuQWxsRGVmaW5pdGlvbnMuZm9yRWFjaChkID0+IHtcclxuICAgICAgICAgICAgLy9SZWdpc3RybyBzb2xvIGxlIGNvc2UgZGkgSU4sIHF1ZWxsZSBkaSBvdXQgc29ubyBjaGlhbWF0ZSBjaGUgZmFjY2lvIGlvIGFsIEJFIHF1aW5kaSBub24gc2Vydm9ub1xyXG4gICAgICAgICAgICBpZiAoZC5pblR5cGVEZWZhdWx0ICE9PSBudWxsICYmIChkLm91dFR5cGVEZWZhdWx0ID09PSBudWxsIHx8IGQub3V0VHlwZURlZmF1bHQgPT09IHVuZGVmaW5lZCkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24ub24oZC5lbmRwb2ludCwgKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlJlcXVlc3QgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyIGZvciBlbmRwb2ludFwiKSArIFwiICdcIiArIGQuZW5kcG9pbnQgKyBcIic6IFwiICsgKG1lc3NhZ2UgPyB0aGlzLnN1YnN0cmluZ0xvZyhKU09OLnN0cmluZ2lmeShtZXNzYWdlKSk6IFwiW05vIG1lc3NhZ2VdXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMkW2QuZW5kcG9pbnRdLm5leHQobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJSZWZ1c2luZyB0byByZWdpc3RlciBlbmRwb2ludFwiKSArIFwiIFwiICsgZC5lbmRwb2ludCArIFwiIFwiICsgdGhpcy5sb2MoXCJiZWNhdXNlIGl0IGlzIG5vdCBkZWNsYXJlZCBhcyBJTiAtIE9OTFlcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRWZmZXR0dWEgdmVyaWZpY2hlIHN1bGxhIGNvbm5lc3Npb25lIGUsIGluIGNhc28gbm9uIGZvc3NlIGNvbGxlZ2F0YSwgdGVudGEgZGkgcmljb25uZXR0ZXJsYVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTwnT0snIHwgJ0tPJyB8ICdOTy1PUCc+fSAnT0snIFNlIGxhIGNvbm5lc3Npb25lIMOoIGdpw6AgY29ubmVzc2EgbyDDqCBzdGF0YSByaWNvbm5lc3NhIGNvbiBzdWNjZXNzbywgJ0tPJyBTZSBub24gw6ggc3RhdG8gcG9zc2liaWxlIHJpY29ubmV0dGVyZSBcclxuICAgICAqIHVuYSBjb25uZXNzaW9uZSBkaXNjb25uZXNzYSwgJ05PLU9QJyBzZSBsYSBjb25uZXNpc29uZSDDqCBpbiB1bm8gc3RhdG8gaW50ZXJtZWRpbyBjaGUgbm9uIHB1w7IgZXNzZXJlIG1vZGlmaWNhdG9cclxuICAgICAqL1xyXG4gICAgcHVibGljIGVuc3VyZUNvbm5lY3RlZCgpOiBQcm9taXNlPCdPSycgfCAnS08nIHwgJ05PLU9QJz4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkRpc2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkNvbm5lY3Rpb24gbG9zdCBvciBtaXNzaW5nLCByZWNvbm5lY3RpbmcuLi5cIikpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5zdGFydCgpXHJcbiAgICAgICAgICAgICAgICAudGhlbihfID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFwiT0tcIik7XHJcbiAgICAgICAgICAgICAgICB9LCBfID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkNhbm5vdCByZWNvbm5lY3QgU2lnbmFsUiwgZnJvbnRlbmQgSFVCIG9mZmxpbmVcIikpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXCJLT1wiKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RlZClcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcIk9LXCIpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcIk5PLU9QXCIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEludmlhIHVuIG1lc3NhZ2dpbyBhbGwnSHViIGRlbCBCYWNrZW5kXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7RW5kcG9pbnREZWY8YW55LCBUT3V0Pn0gaXRlbSBFbmRwb2ludCBkYSBjb250YXR0YXJlXHJcbiAgICAgKiBAcGFyYW0ge1RPdXR9IGR0byBEdG8gZGEgaW52aWFyZSBhbGwnRW5kcG9pbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbmQ8VE91dD4oaXRlbTogRW5kcG9pbnREZWY8YW55LCBUT3V0PiwgZHRvOiBUT3V0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5SZXF1ZXN0c1RvUmVjb3Zlci5wdXNoKHsgaXRlbSwgZHRvIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlNlbmQgcmVxdWVzdCBpZ25vcmVkIGJlY2F1c2UgU2lnbmFsUiBpcyBub3QgYWN0aXZlIGJ5IGNvbmZpZ3VyYXRpb25cIikpO1xyXG4gICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5Db25uZWN0aW5nIHx8IHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuUmVjb25uZWN0aW5nIHx8IHRoaXMuY29ubmVjdGlvbi5zdGF0ZSA9PSBIdWJDb25uZWN0aW9uU3RhdGUuRGlzY29ubmVjdGluZykge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIlNlbmQgcmVxdWVzdCBzZW50IGJlZm9yZSBhIGNvbm5lY3Rpb24gd2FzIGluIHN0YWJsZSBTdGF0ZSwgd2FpdGluZyAxIHNlY29uZCBhbmQgcmV0cnlpbmdcIikpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5zZW5kKGl0ZW0sIGR0byk7IH0sIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkRpc2Nvbm5lY3RlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuc3VyZUNvbm5lY3RlZCgpLnRoZW4odCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodCA9PSBcIktPXCIpIHRoaXMubG9nKHRoaXMubG9jKFwiRVJST1JTIG9uIHJlY29ubmVjdGluZyBiZWZvcmUgcmV0cnlpbmcgYSBzZW5kIGNvbW1hbmQuIFNlbnQgbWVzc2FnZSBXSUxMIEJFIExPU1RcIikpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzLnNlbmQoaXRlbSwgZHRvKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5zZW5kKGl0ZW0uZW5kcG9pbnQsIGR0bykudGhlbihfID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbyh0aGlzLmxvYyhcIlJlcXVlc3Qgc2VudCB0byBzZXJ2ZXJcIikgKyBcIiAtIFwiICsgaXRlbS5lbmRwb2ludCArIFwiOiBcIiArIHRoaXMuc3Vic3RyaW5nTG9nKEpTT04uc3RyaW5naWZ5KGR0bykpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW52aWEgdW4gbWVzc2FnZ2lvIGFsbCdIdWIgZGVsIEJhY2tlbmQsIGFzcGV0dGFuZG9zaSB1bmEgcmlzcG9zdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtFbmRwb2ludERlZjxUT3V0LCBUSW4+fSBpdGVtIEVuZHBvaW50IGRhIGNvbnRhdHRhcmVcclxuICAgICAqIEBwYXJhbSB7VE91dH0gZHRvIER0byBkYSBpbnZpYXJlIGFsbCdFbmRwb2ludFxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxUSW4+fSBPYnNlcnZhYmxlIHN1IGN1aSBjaSBzaSBwdcOyIHJlZ2lzdHJhcmUgcGVyIHJpY2V2ZXJlIGlsIHJpc3VsdGF0byBkZWxsYSBjaGlhbWF0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW52b2tlPFRPdXQsIFRJbj4oaXRlbTogRW5kcG9pbnREZWY8VE91dCwgVEluPiwgZHRvOiBUT3V0KTogT2JzZXJ2YWJsZTxUSW4+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkludm9rZSByZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBTaWduYWxSIGlzIG5vdCBhY3RpdmUgYnkgY29uZmlndXJhdGlvblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbm5lY3Rpb24uc3RhdGUgPT0gSHViQ29ubmVjdGlvblN0YXRlLkNvbm5lY3RpbmcgfHwgdGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5SZWNvbm5lY3RpbmcgfHwgdGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5EaXNjb25uZWN0aW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiSW52b2tlIHJlcXVlc3Qgc2VudCBiZWZvcmUgYSBjb25uZWN0aW9uIHdhcyBpbiBzdGFibGUgU3RhdGUsIHdhaXRpbmcgMSBzZWNvbmQgYW5kIHJldHJ5aW5nXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKCkucGlwZShkZWxheSgxMDAwKSwgY29uY2F0TWFwKCgpID0+IHRoaXMuaW52b2tlKGl0ZW0sIGR0bykpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5jb25uZWN0aW9uLnN0YXRlID09IEh1YkNvbm5lY3Rpb25TdGF0ZS5EaXNjb25uZWN0ZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZyb20odGhpcy5lbnN1cmVDb25uZWN0ZWQoKSkucGlwZShjb25jYXRNYXAoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBcIktPXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyh0aGlzLmxvYyhcIkVSUk9SUyBvbiByZWNvbm5lY3RpbmcgYmVmb3JlIHJldHJ5aW5nIGEgc2VuZCBjb21tYW5kLiBTZW50IG1lc3NhZ2UgV0lMTCBCRSBMT1NUXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHJldHVybiB0aGlzLmludm9rZShpdGVtLCBkdG8pO1xyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKHRoaXMuY29ubmVjdGlvbi5pbnZva2U8VEluPihpdGVtLmVuZHBvaW50LCBkdG8pKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1ZykgY29uc29sZS5sb2codGhpcy5sb2MoXCJSZXF1ZXN0IGludm9rZWQgdG8gc2VydmVyXCIpICsgXCIgLSBcIiArIGl0ZW0uZW5kcG9pbnQgKyBcIjogXCIgKyB0aGlzLnN1YnN0cmluZ0xvZyhKU09OLnN0cmluZ2lmeShkdG8pKSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhvb2sgcGVyIG9zc2VydmFyZSBpIGRhdGkgc3BlZGl0aSBhZCB1biBFbmRwb2ludCBkYWwgQmFja2VuZFxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0VuZHBvaW50RGVmPFRJbiwgYW55Pn0gaXRlbSBFbmRwb2ludCBzdSBjdWkgYXNjb2x0YXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFRJbj59IE9ic2VydmFibGUgc3UgY3VpIGNpIHNpIHB1w7IgcmVnaXN0cmFyZSBwZXIgcmljZXZlcmUgbCdvZ2dldHRvIGdlbmVyYXRvIGFkIG9nbmkgY2hpYW1hdGEgZGFsIEJhY2tlbmQgYWwgRnJvbnRlbmRcclxuICAgICAqL1xyXG4gICAgcHVibGljIG9ic2VydmU8VEluPihpdGVtOiBFbmRwb2ludERlZjxUSW4sIGFueT4pOiBPYnNlcnZhYmxlPFRJbj4ge1xyXG4gICAgICAgIGlmICghdGhpcy5lbmFibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiT2JzZXJ2ZSByZXF1ZXN0IGlnbm9yZWQgYmVjYXVzZSBTaWduYWxSIGlzIG5vdCBhY3RpdmUgYnkgY29uZmlndXJhdGlvblwiKSk7XHJcbiAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiUmV0dXJuaW5nIG9ic2VydmFibGUgZm9yIHJlcXVpcmVkIGVuZHBvaW50XCIpICsgXCI6IFwiICsgaXRlbS5lbmRwb2ludCk7XHJcbiAgICAgICAgcmV0dXJuIDxPYnNlcnZhYmxlPFRJbj4+dGhpcy5ub3RpZmljYXRpb25zJFtpdGVtLmVuZHBvaW50XTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIERpc2Nvbm5lc3Npb25lIGRlbCBzaXN0ZW1hIGRpIFNpZ25hbFJcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8dm9pZD59IE9ic2VydmFibGUgYSBjdWkgcmVnaXN0cmFyc2kgY2hlIHZpZW5lIGNoaWFtYXRvIHF1YW5kbyBsYSBkaXNjb25uZXNzaW9uZSDDqCB0ZXJtaW5hdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRpc2Nvbm5lY3QoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICAgICAgLy9OTy1PUCBzZSBub24gYXR0aXZvXHJcbiAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2codGhpcy5sb2MoXCJEaXNjb25uZWN0aW9uIHJlcXVlc3QgaWdub3JlZCBiZWNhdXNlIFNpZ25hbFIgaXMgbm90IGFjdGl2ZSBieSBjb25maWd1cmF0aW9uXCIpKTtcclxuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5jb25uZWN0aW9uLnN0b3AoKSkucGlwZShcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHsgY29uc29sZS5sb2coZXJyKTsgcmV0dXJuIG9mKG51bGwpOyB9KSxcclxuICAgICAgICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nKHRoaXMubG9jKFwiRGlzY29ubmVjdGlvbiByZXF1ZXN0IGhvbm9yZWRcIikpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUYWdsaWEgdW4gbG9nIHRyb3BwbyBsdW5nb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBMb2cgZGEgdGFnbGlhcmVcclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtYXhjaGFycyBOdW1lcm8gbWFzc2ltbyBkaSBjYXJhdHRlcmkgZGEgdGVuZXJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IExvZyB0YWdsaWF0b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN1YnN0cmluZ0xvZyh0ZXh0OiBzdHJpbmcsIG1heGNoYXJzOiBudW1iZXIgPSAxMjApOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0ZXh0Lmxlbmd0aCA+IG1heGNoYXJzID8gdGV4dC5zdWJzdHIoMCwgbWF4Y2hhcnMpICsgXCJbLi4uXVwiIDogdGV4dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0YW1wYSB1biBsb2cgYSBjb25zb2xlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIE1lc3NhZ2dpbyBkYSBzdGFtcGFyZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvZyhtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodGhpcy5kZWJ1ZylcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJAc2lnbmFsci1ub3RpZmljYXRpb25zOiBcIiArIG1lc3NhZ2UpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgZGkgbG9jYWxpenphemlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgTWVzc2FnZ2lvIGRhIHRyYWR1cnJlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IE1lc3NhZ2dpbyB0cmFkb3R0b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYyhtZXNzYWdlOiBzdHJpbmcpIDogc3RyaW5ne1xyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfVxyXG59Il19