taxtank-core 0.25.0 → 0.27.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/bundles/taxtank-core.umd.js +413 -264
  2. package/bundles/taxtank-core.umd.js.map +1 -1
  3. package/esm2015/lib/models/endpoint/endpoints.const.js +3 -1
  4. package/esm2015/lib/models/event/app-event-type.enum.js +45 -42
  5. package/esm2015/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.js +40 -0
  6. package/esm2015/lib/services/http/depreciation/depreciation.service.js +61 -22
  7. package/esm2015/lib/services/http/depreciation/index.js +4 -0
  8. package/esm2015/lib/services/http/index.js +2 -1
  9. package/esm2015/lib/services/http/receipt/receipt.service.js +76 -0
  10. package/esm2015/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.js +20 -50
  11. package/esm2015/lib/services/http/transaction/transaction.service.js +12 -11
  12. package/esm2015/lib/services/http/user/index.js +5 -0
  13. package/esm2015/lib/services/http/user/users-invite/users-invite.service.js +23 -0
  14. package/esm2015/public-api.js +2 -3
  15. package/fesm2015/taxtank-core.js +375 -245
  16. package/fesm2015/taxtank-core.js.map +1 -1
  17. package/lib/models/event/app-event-type.enum.d.ts +44 -41
  18. package/lib/services/http/depreciation/depreciation-receipt/depreciation-receipt.service.d.ts +28 -0
  19. package/lib/services/http/depreciation/depreciation.service.d.ts +15 -7
  20. package/lib/services/http/depreciation/index.d.ts +3 -0
  21. package/lib/services/http/index.d.ts +1 -0
  22. package/lib/services/http/receipt/receipt.service.d.ts +62 -0
  23. package/lib/services/http/transaction/transaction-receipt/transaction-receipt.service.d.ts +21 -21
  24. package/lib/services/http/transaction/transaction.service.d.ts +1 -0
  25. package/lib/services/http/user/index.d.ts +4 -0
  26. package/lib/services/http/user/users-invite/users-invite.service.d.ts +13 -0
  27. package/package.json +1 -1
  28. package/public-api.d.ts +1 -2
@@ -0,0 +1,76 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { AppEvent } from '../../../models/event/app-event';
4
+ import { plainToClass } from 'class-transformer';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common/http";
7
+ import * as i2 from "../../event/event-dispatcher.service";
8
+ import * as i3 from "../../toast/toast.service";
9
+ /**
10
+ * Abstract service class to work with transactions-like receipt files (transactions, depreciations, e.t.c.)
11
+ * @Todo TT-2191 refactor service when receipts API will be updated
12
+ */
13
+ export class ReceiptService {
14
+ constructor(http, eventDispatcherService, environment, toastService) {
15
+ this.http = http;
16
+ this.eventDispatcherService = eventDispatcherService;
17
+ this.environment = environment;
18
+ this.toastService = toastService;
19
+ }
20
+ listenEvents() {
21
+ this.listenParentWithReceiptUpdated();
22
+ this.listenParentWithoutReceiptUpdated();
23
+ }
24
+ /**
25
+ * Entity is necessary to take the ID and the receipt file from it.
26
+ */
27
+ add(receiptEntity) {
28
+ const formData = new FormData();
29
+ formData.append('file', receiptEntity.file);
30
+ return this.http.post(`${this.environment.apiV2}/${this.entityType}/${receiptEntity.id}/receipts`, formData)
31
+ .pipe(map((receipt) => {
32
+ const uploadedReceipt = this.createModelInstance(receipt);
33
+ this.eventDispatcherService.dispatch(new AppEvent(this.receiptCreatedEvent, uploadedReceipt));
34
+ return uploadedReceipt;
35
+ }));
36
+ }
37
+ delete(receiptEntity) {
38
+ return this.http.delete(`${this.environment.apiV2}/${this.entityType}/${receiptEntity.id}/receipts/${receiptEntity.receipt.id}`)
39
+ .pipe(map(() => {
40
+ this.eventDispatcherService.dispatch(new AppEvent(this.receiptDeletedEvent, receiptEntity));
41
+ }));
42
+ }
43
+ /**
44
+ * Parent entity was updated with attached receipt
45
+ */
46
+ listenParentWithReceiptUpdated() {
47
+ this.eventDispatcherService.on(this.entityUpdatedWithReceiptEvent)
48
+ .subscribe((receiptEntity) => {
49
+ this.add(receiptEntity).subscribe();
50
+ });
51
+ }
52
+ /**
53
+ * Parent entity was updated, but receipt was removed
54
+ */
55
+ listenParentWithoutReceiptUpdated() {
56
+ this.eventDispatcherService.on(this.entityUpdatedWithDeletedReceiptEvent)
57
+ .subscribe((receiptEntity) => {
58
+ this.delete(receiptEntity).subscribe();
59
+ });
60
+ }
61
+ createModelInstance(data) {
62
+ return plainToClass(this.modelClass, data);
63
+ }
64
+ }
65
+ ReceiptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ReceiptService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
66
+ ReceiptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ReceiptService, providedIn: 'root' });
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ReceiptService, decorators: [{
68
+ type: Injectable,
69
+ args: [{
70
+ providedIn: 'root'
71
+ }]
72
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
73
+ type: Inject,
74
+ args: ['environment']
75
+ }] }, { type: i3.ToastService }]; } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjZWlwdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvcmVjZWlwdC9yZWNlaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFTekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUkzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBRWpEOzs7R0FHRztBQUlILE1BQU0sT0FBZ0IsY0FBYztJQThCbEMsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0IsRUFDdkMsWUFBMEI7UUFIMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRXRDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsR0FBRyxDQUFDLGFBQTBCO1FBQzVCLE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUFDMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLGFBQWEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUM7YUFDekcsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLE9BQWtCLEVBQUUsRUFBRTtZQUN6QixNQUFNLGVBQWUsR0FBVSxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFakUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQTtZQUM3RixPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUEwQjtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsRUFBRSxhQUFhLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDN0gsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFBO1FBQzdGLENBQUMsQ0FBQyxDQUNILENBQUE7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyw4QkFBOEI7UUFDcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUM7YUFDL0QsU0FBUyxDQUFDLENBQUMsYUFBMEIsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQ0FBaUM7UUFDdkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUM7YUFDdEUsU0FBUyxDQUFDLENBQUMsYUFBMEIsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBZTtRQUN6QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7OzRHQTVGbUIsY0FBYyxrRkFpQ3hCLGFBQWE7Z0hBakNILGNBQWMsY0FGdEIsTUFBTTs0RkFFRSxjQUFjO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBa0NJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXNzZXRFbnRpdHlUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvYXNzZXQtZW50aXR5LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJRXZlbnRMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvZXZlbnQtbGlzdGVuZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IERlcHJlY2lhdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kZXByZWNpYXRpb24vZGVwcmVjaWF0aW9uJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQgYXMgVHJhbnNhY3Rpb25SZWNlaXB0QmFzZSB9IGZyb20gJy4uLy4uLy4uL2RiL01vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi1yZWNlaXB0JztcbmltcG9ydCB7IERlcHJlY2lhdGlvblJlY2VpcHQgYXMgRGVwcmVjaWF0aW9uUmVjZWlwdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9kYi9Nb2RlbHMvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi1yZWNlaXB0JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi90b2FzdC90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcblxuLyoqXG4gKiBBYnN0cmFjdCBzZXJ2aWNlIGNsYXNzIHRvIHdvcmsgd2l0aCB0cmFuc2FjdGlvbnMtbGlrZSByZWNlaXB0IGZpbGVzICh0cmFuc2FjdGlvbnMsIGRlcHJlY2lhdGlvbnMsIGUudC5jLilcbiAqIEBUb2RvIFRULTIxOTEgcmVmYWN0b3Igc2VydmljZSB3aGVuIHJlY2VpcHRzIEFQSSB3aWxsIGJlIHVwZGF0ZWRcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVjZWlwdFNlcnZpY2U8UGFyZW50TW9kZWwgZXh0ZW5kcyBUcmFuc2FjdGlvbiB8IERlcHJlY2lhdGlvbixcbiAgQmFzZU1vZGVsIGV4dGVuZHMgVHJhbnNhY3Rpb25SZWNlaXB0QmFzZSB8IERlcHJlY2lhdGlvblJlY2VpcHRCYXNlLFxuICBNb2RlbCBleHRlbmRzIEJhc2VNb2RlbD4gaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG5cbiAgLyoqXG4gICAqIE5lZWRlZCB0byBmdWxmaWxsIGVuZHBvaW50IHRvIEFQSVxuICAgKi9cbiAgYWJzdHJhY3QgZW50aXR5VHlwZTogQXNzZXRFbnRpdHlUeXBlRW51bTtcbiAgYWJzdHJhY3QgbW9kZWxDbGFzczogVHlwZTxNb2RlbD47XG5cbiAgLyoqXG4gICAqIEV2ZW50IHR5cGUgdGhhdCB3aWxsIGJlIGRpc3BhdGNoZWQgd2hlbiByZWNlaXB0IHdpbGwgYmUgdXBsb2FkZWRcbiAgICovXG4gIGFic3RyYWN0IHJlY2VpcHRDcmVhdGVkRXZlbnQ6IEFwcEV2ZW50VHlwZUVudW07XG5cbiAgLyoqXG4gICAqIEV2ZW50IHR5cGUgdGhhdCB3aWxsIGJlIGRpc3BhdGNoZWQgd2hlbiByZWNlaXB0IHdpbGwgYmUgZGVsZXRlZFxuICAgKi9cbiAgYWJzdHJhY3QgcmVjZWlwdERlbGV0ZWRFdmVudDogQXBwRXZlbnRUeXBlRW51bTtcblxuICAvKipcbiAgICogRXZlbnQgdHlwZSB0aGF0IHdpbGwgYmUgZGlzcGF0Y2hlZCB3aGVuIHBhcmVudCBlbnRpdHkgKHRyYW5zYWN0aW9uLWxpa2UgY2xhc3MpIHdpbGwgYmUgdXBkYXRlZCB3aXRoIGF0dGFjaGVkIHJlY2VpcHRcbiAgICovXG4gIGFic3RyYWN0IGVudGl0eVVwZGF0ZWRXaXRoUmVjZWlwdEV2ZW50OiBBcHBFdmVudFR5cGVFbnVtO1xuXG4gIC8qKlxuICAgKiBFdmVudCB0eXBlIHRoYXQgd2lsbCBiZSBkaXNwYXRjaGVkIHdoZW4gcGFyZW50IGVudGl0eSAodHJhbnNhY3Rpb24tbGlrZSBjbGFzcykgd2lsbCBiZSB1cGRhdGVkIHdpdGggZGVsZXRlZCByZWNlaXB0XG4gICAqL1xuICBhYnN0cmFjdCBlbnRpdHlVcGRhdGVkV2l0aERlbGV0ZWRSZWNlaXB0RXZlbnQ6IEFwcEV2ZW50VHlwZUVudW07XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJvdGVjdGVkIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIGxpc3RlbkV2ZW50cygpIHtcbiAgICB0aGlzLmxpc3RlblBhcmVudFdpdGhSZWNlaXB0VXBkYXRlZCgpO1xuICAgIHRoaXMubGlzdGVuUGFyZW50V2l0aG91dFJlY2VpcHRVcGRhdGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogRW50aXR5IGlzIG5lY2Vzc2FyeSB0byB0YWtlIHRoZSBJRCBhbmQgdGhlIHJlY2VpcHQgZmlsZSBmcm9tIGl0LlxuICAgKi9cbiAgYWRkKHJlY2VpcHRFbnRpdHk6IFBhcmVudE1vZGVsKTogT2JzZXJ2YWJsZTxNb2RlbD4ge1xuICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIHJlY2VpcHRFbnRpdHkuZmlsZSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLmVudGl0eVR5cGV9LyR7cmVjZWlwdEVudGl0eS5pZH0vcmVjZWlwdHNgLCBmb3JtRGF0YSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlY2VpcHQ6IEJhc2VNb2RlbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwbG9hZGVkUmVjZWlwdDogTW9kZWwgPSB0aGlzLmNyZWF0ZU1vZGVsSW5zdGFuY2UocmVjZWlwdCk7XG5cbiAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KHRoaXMucmVjZWlwdENyZWF0ZWRFdmVudCwgdXBsb2FkZWRSZWNlaXB0KSlcbiAgICAgICAgICByZXR1cm4gdXBsb2FkZWRSZWNlaXB0O1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgZGVsZXRlKHJlY2VpcHRFbnRpdHk6IFBhcmVudE1vZGVsKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLmVudGl0eVR5cGV9LyR7cmVjZWlwdEVudGl0eS5pZH0vcmVjZWlwdHMvJHtyZWNlaXB0RW50aXR5LnJlY2VpcHQuaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQodGhpcy5yZWNlaXB0RGVsZXRlZEV2ZW50LCByZWNlaXB0RW50aXR5KSlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJlbnQgZW50aXR5IHdhcyB1cGRhdGVkIHdpdGggYXR0YWNoZWQgcmVjZWlwdFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5QYXJlbnRXaXRoUmVjZWlwdFVwZGF0ZWQoKSB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKHRoaXMuZW50aXR5VXBkYXRlZFdpdGhSZWNlaXB0RXZlbnQpXG4gICAgICAuc3Vic2NyaWJlKChyZWNlaXB0RW50aXR5OiBQYXJlbnRNb2RlbCkgPT4ge1xuICAgICAgICB0aGlzLmFkZChyZWNlaXB0RW50aXR5KS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcmVudCBlbnRpdHkgd2FzIHVwZGF0ZWQsIGJ1dCByZWNlaXB0IHdhcyByZW1vdmVkXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblBhcmVudFdpdGhvdXRSZWNlaXB0VXBkYXRlZCgpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24odGhpcy5lbnRpdHlVcGRhdGVkV2l0aERlbGV0ZWRSZWNlaXB0RXZlbnQpXG4gICAgICAuc3Vic2NyaWJlKChyZWNlaXB0RW50aXR5OiBQYXJlbnRNb2RlbCkgPT4ge1xuICAgICAgICB0aGlzLmRlbGV0ZShyZWNlaXB0RW50aXR5KS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNb2RlbEluc3RhbmNlKGRhdGE6IEJhc2VNb2RlbCk6IE1vZGVsIHtcbiAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKHRoaXMubW9kZWxDbGFzcywgZGF0YSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,62 +1,32 @@
1
1
  import { Inject, Injectable } from '@angular/core';
2
- import { TransactionReceipt } from '../../../../models/transaction/transaction-receipt';
3
- import { plainToClass } from 'class-transformer';
4
2
  import { AppEventTypeEnum } from '../../../../models/event/app-event-type.enum';
5
- import { AppEvent } from '../../../../models/event/app-event';
3
+ import { ReceiptService } from '../../receipt/receipt.service';
4
+ import { AssetEntityTypeEnum } from '../../../../interfaces/asset-entity-type.enum';
5
+ import { TransactionReceipt } from '../../../../models/transaction/transaction-receipt';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/common/http";
8
8
  import * as i2 from "../../../event/event-dispatcher.service";
9
- export class TransactionReceiptService {
10
- constructor(http, eventDispatcherService, environment) {
9
+ import * as i3 from "../../../toast/toast.service";
10
+ /**
11
+ * @Todo TT-2191 refactor service when receipts API will be updated
12
+ */
13
+ export class TransactionReceiptService extends ReceiptService {
14
+ constructor(http, eventDispatcherService, environment, toastService) {
15
+ super(http, eventDispatcherService, environment, toastService);
11
16
  this.http = http;
12
17
  this.eventDispatcherService = eventDispatcherService;
13
18
  this.environment = environment;
14
- this.url = 'receipts';
19
+ this.toastService = toastService;
20
+ this.modelClass = TransactionReceipt;
21
+ this.entityType = AssetEntityTypeEnum.TRANSACTIONS;
22
+ this.receiptCreatedEvent = AppEventTypeEnum.TRANSACTION_RECEIPT_CREATED;
23
+ this.receiptDeletedEvent = AppEventTypeEnum.TRANSACTION_RECEIPT_DELETED;
24
+ this.entityUpdatedWithReceiptEvent = AppEventTypeEnum.TRANSACTION_UPDATED_WITH_RECEIPT;
25
+ this.entityUpdatedWithDeletedReceiptEvent = AppEventTypeEnum.TRANSACTION_UPDATED_WITH_DELETED_RECEIPT;
15
26
  this.listenEvents();
16
27
  }
17
- /**
18
- * Transaction instance is necessary to take the ID and the receipt file from it.
19
- */
20
- add(transaction) {
21
- const formData = new FormData();
22
- formData.append('file', transaction.file);
23
- this.http.post(`${this.environment.apiV2}/transactions/${transaction.id}/${this.url}`, formData)
24
- .subscribe((receiptResponse) => {
25
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_RECEIPT_CREATED, plainToClass(TransactionReceipt, receiptResponse)));
26
- });
27
- }
28
- /**
29
- * Transaction instance is necessary to take the ID and the receipt ID from it.
30
- */
31
- delete(transaction) {
32
- this.http.delete(`${this.environment.apiV2}/transactions/${transaction.id}/${this.url}/${transaction.receipt.id}`)
33
- .subscribe(() => {
34
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_RECEIPT_DELETED, transaction));
35
- });
36
- }
37
- listenEvents() {
38
- this.listenTransactionWithReceiptUpdated();
39
- this.listenTransactionWithoutReceiptUpdated();
40
- }
41
- listenTransactionWithReceiptUpdated() {
42
- this.eventDispatcherService.on([
43
- AppEventTypeEnum.TRANSACTION_CREATED_WITH_NEW_RECEIPT,
44
- AppEventTypeEnum.TRANSACTION_UPDATED_WITH_NEW_RECEIPT
45
- ]).subscribe((transaction) => {
46
- this.add(transaction);
47
- });
48
- }
49
- /**
50
- * Case when transaction was updated, but receipt was removed
51
- */
52
- listenTransactionWithoutReceiptUpdated() {
53
- this.eventDispatcherService.on(AppEventTypeEnum.TRANSACTION_UPDATED_WITH_DELETED_RECEIPT)
54
- .subscribe((transaction) => {
55
- this.delete(transaction);
56
- });
57
- }
58
28
  }
59
- TransactionReceiptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionReceiptService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ TransactionReceiptService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionReceiptService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
60
30
  TransactionReceiptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionReceiptService, providedIn: 'root' });
61
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionReceiptService, decorators: [{
62
32
  type: Injectable,
@@ -66,5 +36,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
66
36
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
67
37
  type: Inject,
68
38
  args: ['environment']
69
- }] }]; } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVjZWlwdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24tcmVjZWlwdC90cmFuc2FjdGlvbi1yZWNlaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSWpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQU05RCxNQUFNLE9BQU8seUJBQXlCO0lBR3BDLFlBQ1UsSUFBZ0IsRUFDaEIsc0JBQThDLEVBQ3ZCLFdBQWdCO1FBRnZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBSztRQUxqRCxRQUFHLEdBQVcsVUFBVSxDQUFDO1FBT3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsV0FBd0I7UUFDMUIsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssaUJBQWlCLFdBQVcsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsQ0FBQzthQUM3RixTQUFTLENBQUMsQ0FBQyxlQUF1QyxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQywyQkFBMkIsRUFBRSxZQUFZLENBQUMsa0JBQWtCLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3JKLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFdBQXdCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLGlCQUFpQixXQUFXLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUMvRyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQywyQkFBMkIsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO1FBQy9HLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRU8sbUNBQW1DO1FBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7WUFDN0IsZ0JBQWdCLENBQUMsb0NBQW9DO1lBQ3JELGdCQUFnQixDQUFDLG9DQUFvQztTQUN0RCxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQ0FBc0M7UUFDNUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyx3Q0FBd0MsQ0FBQzthQUN0RixTQUFTLENBQUMsQ0FBQyxXQUF3QixFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3VIQXhEVSx5QkFBeUIsa0ZBTTFCLGFBQWE7MkhBTloseUJBQXlCLGNBRnhCLE1BQU07NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQgYXMgVHJhbnNhY3Rpb25SZWNlaXB0QmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RiL01vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi1yZWNlaXB0JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi1yZWNlaXB0JztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQnO1xuaW1wb3J0IHsgSUV2ZW50TGlzdGVuZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9pbnRlcmZhY2VzL2V2ZW50LWxpc3RlbmVyLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uUmVjZWlwdFNlcnZpY2UgaW1wbGVtZW50cyBJRXZlbnRMaXN0ZW5lciB7XG4gIHVybDogc3RyaW5nID0gJ3JlY2VpcHRzJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHRoaXMubGlzdGVuRXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNhY3Rpb24gaW5zdGFuY2UgaXMgbmVjZXNzYXJ5IHRvIHRha2UgdGhlIElEIGFuZCB0aGUgcmVjZWlwdCBmaWxlIGZyb20gaXQuXG4gICAqL1xuICBhZGQodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgdHJhbnNhY3Rpb24uZmlsZSk7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS90cmFuc2FjdGlvbnMvJHt0cmFuc2FjdGlvbi5pZH0vJHt0aGlzLnVybH1gLCBmb3JtRGF0YSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlY2VpcHRSZXNwb25zZTogVHJhbnNhY3Rpb25SZWNlaXB0QmFzZSkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fUkVDRUlQVF9DUkVBVEVELCBwbGFpblRvQ2xhc3MoVHJhbnNhY3Rpb25SZWNlaXB0LCByZWNlaXB0UmVzcG9uc2UpKSlcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zYWN0aW9uIGluc3RhbmNlIGlzIG5lY2Vzc2FyeSB0byB0YWtlIHRoZSBJRCBhbmQgdGhlIHJlY2VpcHQgSUQgZnJvbSBpdC5cbiAgICovXG4gIGRlbGV0ZSh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3RyYW5zYWN0aW9ucy8ke3RyYW5zYWN0aW9uLmlkfS8ke3RoaXMudXJsfS8ke3RyYW5zYWN0aW9uLnJlY2VpcHQuaWR9YClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fUkVDRUlQVF9ERUxFVEVELCB0cmFuc2FjdGlvbikpXG4gICAgICB9KTtcbiAgfVxuXG4gIGxpc3RlbkV2ZW50cygpIHtcbiAgICB0aGlzLmxpc3RlblRyYW5zYWN0aW9uV2l0aFJlY2VpcHRVcGRhdGVkKCk7XG4gICAgdGhpcy5saXN0ZW5UcmFuc2FjdGlvbldpdGhvdXRSZWNlaXB0VXBkYXRlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5UcmFuc2FjdGlvbldpdGhSZWNlaXB0VXBkYXRlZCgpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oW1xuICAgICAgQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9DUkVBVEVEX1dJVEhfTkVXX1JFQ0VJUFQsXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1VQREFURURfV0lUSF9ORVdfUkVDRUlQVFxuICAgIF0pLnN1YnNjcmliZSgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmFkZCh0cmFuc2FjdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FzZSB3aGVuIHRyYW5zYWN0aW9uIHdhcyB1cGRhdGVkLCBidXQgcmVjZWlwdCB3YXMgcmVtb3ZlZFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5UcmFuc2FjdGlvbldpdGhvdXRSZWNlaXB0VXBkYXRlZCgpIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9VUERBVEVEX1dJVEhfREVMRVRFRF9SRUNFSVBUKVxuICAgICAgLnN1YnNjcmliZSgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuZGVsZXRlKHRyYW5zYWN0aW9uKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
39
+ }] }, { type: i3.ToastService }]; } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVjZWlwdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2h0dHAvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24tcmVjZWlwdC90cmFuc2FjdGlvbi1yZWNlaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7OztBQUt4Rjs7R0FFRztBQUlILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxjQUF1RTtJQVFwSCxZQUNZLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUN2QixXQUFnQixFQUN2QyxZQUEwQjtRQUVwQyxLQUFLLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUxyRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFDdkMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFYdEMsZUFBVSxHQUE4QixrQkFBa0IsQ0FBQztRQUMzRCxlQUFVLEdBQXdCLG1CQUFtQixDQUFDLFlBQVksQ0FBQztRQUNuRSx3QkFBbUIsR0FBcUIsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUM7UUFDckYsd0JBQW1CLEdBQXFCLGdCQUFnQixDQUFDLDJCQUEyQixDQUFDO1FBQ3JGLGtDQUE2QixHQUFxQixnQkFBZ0IsQ0FBQyxnQ0FBZ0MsQ0FBQztRQUNwRyx5Q0FBb0MsR0FBcUIsZ0JBQWdCLENBQUMsd0NBQXdDLENBQUM7UUFTakgsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7O3VIQWhCVSx5QkFBeUIsa0ZBVzFCLGFBQWE7MkhBWFoseUJBQXlCLGNBRnhCLE1BQU07NEZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBWUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgUmVjZWlwdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9yZWNlaXB0L3JlY2VpcHQuc2VydmljZSc7XG5pbXBvcnQgeyBBc3NldEVudGl0eVR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9hc3NldC1lbnRpdHktdHlwZS5lbnVtJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCBhcyBUcmFuc2FjdGlvblJlY2VpcHRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLXJlY2VpcHQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZWNlaXB0IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLXJlY2VpcHQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vdG9hc3QvdG9hc3Quc2VydmljZSc7XG5cbi8qKlxuICogQFRvZG8gVFQtMjE5MSByZWZhY3RvciBzZXJ2aWNlIHdoZW4gcmVjZWlwdHMgQVBJIHdpbGwgYmUgdXBkYXRlZFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblJlY2VpcHRTZXJ2aWNlIGV4dGVuZHMgUmVjZWlwdFNlcnZpY2U8VHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uUmVjZWlwdEJhc2UsIFRyYW5zYWN0aW9uUmVjZWlwdD4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgVHJhbnNhY3Rpb25SZWNlaXB0ID0gVHJhbnNhY3Rpb25SZWNlaXB0O1xuICBlbnRpdHlUeXBlOiBBc3NldEVudGl0eVR5cGVFbnVtID0gQXNzZXRFbnRpdHlUeXBlRW51bS5UUkFOU0FDVElPTlM7XG4gIHJlY2VpcHRDcmVhdGVkRXZlbnQ6IEFwcEV2ZW50VHlwZUVudW0gPSBBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1JFQ0VJUFRfQ1JFQVRFRDtcbiAgcmVjZWlwdERlbGV0ZWRFdmVudDogQXBwRXZlbnRUeXBlRW51bSA9IEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fUkVDRUlQVF9ERUxFVEVEO1xuICBlbnRpdHlVcGRhdGVkV2l0aFJlY2VpcHRFdmVudDogQXBwRXZlbnRUeXBlRW51bSA9IEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fVVBEQVRFRF9XSVRIX1JFQ0VJUFQ7XG4gIGVudGl0eVVwZGF0ZWRXaXRoRGVsZXRlZFJlY2VpcHRFdmVudDogQXBwRXZlbnRUeXBlRW51bSA9IEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fVVBEQVRFRF9XSVRIX0RFTEVURURfUkVDRUlQVDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgZXZlbnREaXNwYXRjaGVyU2VydmljZTogRXZlbnREaXNwYXRjaGVyU2VydmljZSxcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByb3RlY3RlZCBlbnZpcm9ubWVudDogYW55LFxuICAgIHByb3RlY3RlZCB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaHR0cCwgZXZlbnREaXNwYXRjaGVyU2VydmljZSwgZW52aXJvbm1lbnQsIHRvYXN0U2VydmljZSk7XG4gICAgdGhpcy5saXN0ZW5FdmVudHMoKTtcbiAgfVxufVxuIl19
@@ -134,10 +134,10 @@ export class TransactionService extends RestService {
134
134
  transactions.forEach((transaction, index) => {
135
135
  // @TODO backend: need to upload file in the same backend endpoint with transaction add/update
136
136
  // check if passed receipt and upload file
137
- if (transaction.file && (transaction.file instanceof File)) {
137
+ if (transaction.file) {
138
138
  transaction.id = response[index].id;
139
139
  addedTransactions[index].file = transaction.file;
140
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_CREATED_WITH_NEW_RECEIPT, addedTransactions[index]));
140
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_UPDATED_WITH_RECEIPT, addedTransactions[index]));
141
141
  }
142
142
  // @TODO Viktor: implement API for saving of nested transactions
143
143
  // add child transactions if exist
@@ -170,9 +170,9 @@ export class TransactionService extends RestService {
170
170
  const updatedTransaction = plainToClass(Transaction, response);
171
171
  // @TODO need to upload file in the same backend endpoint with transaction add/update
172
172
  // check if passed new receipt and upload file
173
- if (transaction.file && (transaction.file instanceof File)) {
173
+ if (transaction.file) {
174
174
  updatedTransaction.file = transaction.file;
175
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_UPDATED_WITH_NEW_RECEIPT, updatedTransaction));
175
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.TRANSACTION_UPDATED_WITH_RECEIPT, updatedTransaction));
176
176
  // receipt file was removed from form - we should delete receipt from transaction
177
177
  }
178
178
  else if (!transaction.file && transaction.receipt) {
@@ -196,8 +196,7 @@ export class TransactionService extends RestService {
196
196
  this.addBatch(childTransactionsToAdd).subscribe();
197
197
  }
198
198
  }
199
- replace(this.cache, updatedTransaction);
200
- this.updateCache();
199
+ this.replaceInCache(updatedTransaction);
201
200
  return updatedTransaction;
202
201
  }));
203
202
  }
@@ -311,16 +310,14 @@ export class TransactionService extends RestService {
311
310
  // we don't need to keep file after save
312
311
  transactionToUpdate.file = null;
313
312
  transactionToUpdate.receipt = transactionReceipt;
314
- replace(this.cache, transactionToUpdate);
315
- this.updateCache();
313
+ this.replaceInCache(transactionToUpdate);
316
314
  });
317
315
  }
318
316
  listenReceiptDeleted() {
319
317
  this.eventDispatcherService.on(AppEventTypeEnum.TRANSACTION_RECEIPT_DELETED).subscribe((transaction) => {
320
318
  const transactionToUpdate = this.find(transaction.id);
321
319
  transactionToUpdate.receipt = null;
322
- replace(this.cache, transactionToUpdate);
323
- this.updateCache();
320
+ this.replaceInCache(transactionToUpdate);
324
321
  });
325
322
  }
326
323
  listenVehicleClaimChanges() {
@@ -333,6 +330,10 @@ export class TransactionService extends RestService {
333
330
  this.resetCache();
334
331
  });
335
332
  }
333
+ replaceInCache(transactionToReplace) {
334
+ replace(this.cache, transactionToReplace);
335
+ this.updateCache();
336
+ }
336
337
  }
337
338
  TransactionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }, { token: i3.ToastService }, { token: i4.TransactionReceiptService }], target: i0.ɵɵFactoryTarget.Injectable });
338
339
  TransactionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TransactionService, providedIn: 'root' });
@@ -345,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
345
346
  type: Inject,
346
347
  args: ['environment']
347
348
  }] }, { type: i3.ToastService }, { type: i4.TransactionReceiptService }]; } });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHM0QsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdE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RUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOztnSEF6WFUsa0JBQWtCLGtGQVNuQixhQUFhO29IQVRaLGtCQUFrQixjQUZqQixNQUFNOzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVVJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbkJhc2UgfSBmcm9tICcuLi8uLi8uLi9kYi9Nb2RlbHMvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgcmVwbGFjZSwgc29ydCB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBlbnVtVG9MaXN0IH0gZnJvbSAnLi4vLi4vLi4vZnVuY3Rpb25zL2VudW0tdG8tbGlzdCc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzSGVhZGluZ1RheGFibGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMvY2hhcnQtYWNjb3VudHMtaGVhZGluZy10YXhhYmxlLmVudW0nO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0hlYWRpbmdUYXhEZWR1Y3RpYmxlRW51bSB9IGZyb20gJy4uLy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWhlYWRpbmctdGF4LWRlZHVjdGlibGUuZW51bSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbk9wZXJhdGlvbkVudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy90cmFuc2FjdGlvbi1vcGVyYXRpb24uZW51bSc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IENIQVJUX0FDQ09VTlRTX0NBVEVHT1JJRVMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMtY2F0ZWdvcmllcy5jb25zdCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbi1yZWNlaXB0JztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNUYXhMYWJlbHNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzLXRheC1sYWJlbHMuZW51bSc7XG5pbXBvcnQgeyBQcm9wZXJ0eUNhdGVnb3J5TGlzdEVudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy9wcm9wZXJ0eS9wcm9wZXJ0eS1jYXRlZ29yeS1saXN0LmVudW0nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZWNlaXB0U2VydmljZSB9IGZyb20gJy4vdHJhbnNhY3Rpb24tcmVjZWlwdC90cmFuc2FjdGlvbi1yZWNlaXB0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9ldmVudC9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdG9hc3QvdG9hc3Quc2VydmljZSc7XG5cbi8qKlxuICogU2VydmljZSBmb3IgdHJhbnNhY3Rpb25zIGJ1c2luZXNzIGxvZ2ljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFRyYW5zYWN0aW9uQmFzZSwgVHJhbnNhY3Rpb24+IHtcbiAgLy8gdXJsIHBhcnQgZm9yIFRyYW5zYWN0aW9uIEFQSVxuICB1cmw6IHN0cmluZyA9ICd0cmFuc2FjdGlvbnMnO1xuICBtb2RlbENsYXNzID0gVHJhbnNhY3Rpb247XG4gIHRyYW5zYWN0aW9uRGVsZXRlZDogRXZlbnRFbWl0dGVyPFRyYW5zYWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8VHJhbnNhY3Rpb24+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgQEluamVjdCgnZW52aXJvbm1lbnQnKSBwcm90ZWN0ZWQgZW52aXJvbm1lbnQ6IGFueSxcbiAgICBwcm90ZWN0ZWQgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvblJlY2VpcHRTZXJ2aWNlOiBUcmFuc2FjdGlvblJlY2VpcHRTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGh0dHAsIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsIGVudmlyb25tZW50LCB0b2FzdFNlcnZpY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBldmVudHMgZnJvbSBFdmVudCBEaXNwYXRjaGVyIHNlcnZpY2VzXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5EZXByZWNpYXRpb25DaGFuZ2UoKTtcbiAgICB0aGlzLmxpc3RlblByb3BlcnR5U2hhcmVVcGRhdGUoKTtcbiAgICB0aGlzLmxpc3RlblJlY2VpcHRBZGRlZCgpO1xuICAgIHRoaXMubGlzdGVuUmVjZWlwdERlbGV0ZWQoKTtcbiAgICB0aGlzLmxpc3RlblZlaGljbGVDbGFpbUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiBhbGwgdXNlcidzIFRheFRhbmsgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXQoKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgaWYgKCF0aGlzLmNhY2hlKSB7XG4gICAgICAvLyBzZXQgY2FjaGUgYXMgZGVmYXVsdCBlbXB0eSBhcnJheSB0byBhdm9pZCBtdWx0aXBsZSBiYWNrZW5kIHJlcXVlc3RzXG4gICAgICB0aGlzLmNhY2hlID0gW107XG4gICAgICB0aGlzLmZldGNoKClcbiAgICAgICAgLnN1YnNjcmliZSgodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKSA9PiB7XG4gICAgICAgICAgdGhpcy5jYWNoZSA9IHRyYW5zYWN0aW9ucztcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgLy8gYXNzaWduIGNoaWxkIHRyYW5zYWN0aW9ucyAoZmVlcykgdG8gcGFyZW50IHRyYW5zYWN0aW9uc1xuICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdID0+IHtcbiAgICAgICAgdHJhbnNhY3Rpb25zLmZvckVhY2goKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQgPT4ge1xuICAgICAgICAgIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucyA9IHRyYW5zYWN0aW9uc1xuICAgICAgICAgICAgLy8gZ2V0IGxpc3Qgb2YgY2hpbGQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICAuZmlsdGVyKCh0OiBUcmFuc2FjdGlvbik6IGJvb2xlYW4gPT4gdC5wYXJlbnRUcmFuc2FjdGlvbiAmJiB0LnBhcmVudFRyYW5zYWN0aW9uLmlkID09PSB0cmFuc2FjdGlvbi5pZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBzb3J0KHRyYW5zYWN0aW9ucywgJ2RhdGUnLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiB0cmFuc2FjdGlvbnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHNpbmdsZSBuZXcgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIG1vZGVsIE5ldyBUcmFuc2FjdGlvbiBpbnN0YW5jZSBmb3Igc2F2aW5nXG4gICAqL1xuICBhZGQobW9kZWw6IFRyYW5zYWN0aW9uKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbj4ge1xuICAgIC8vIHdlIGRvbid0IGhhdmUgUE9TVCBBUEkgZW5kcG9pbnQgZm9yIHNpbmdsZSB0cmFuc2FjdGlvblxuICAgIHJldHVybiB0aGlzLmFkZEJhdGNoKFttb2RlbF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChuZXdUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbiA9PiB7XG4gICAgICAgICAgLy8gQFRPRE8gYWxleFxuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBBcHBFdmVudDxUcmFuc2FjdGlvbj4oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9DUkVBVEVELCBuZXdUcmFuc2FjdGlvbnNbMF0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBuZXdUcmFuc2FjdGlvbnNbMF07XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0cmFuc2FjdGlvbnMgcmVsYXRlZCB3aXRoIHByb3BlcnR5XG4gICAqL1xuICBnZXRCeVByb3BlcnR5SWQocHJvcGVydHlJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4ge1xuICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbnMuZmlsdGVyKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5wcm9wZXJ0eT8uaWQgPT09IHByb3BlcnR5SWQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsaXN0IG9mIHRyYW5zYWN0aW9ucyB3aXRoIHRhbmsgdHlwZSAnV29yaydcbiAgICovXG4gIGdldFdvcmtUcmFuc2FjdGlvbnMoKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4ge1xuICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbnMuZmlsdGVyKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHRyYW5zYWN0aW9uLmlzV29ya1RhbmsoKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsaXN0IG9mIHByb3BlcnR5IGhvbGRpbmcgY29zdHMgKHRyYW5zYWN0aW9ucyByZWxhdGVkIHRvIHZhY2FudCBsYW5kIHByb3BlcnR5KVxuICAgKi9cbiAgZ2V0UHJvcGVydHlIb2xkaW5nQ29zdHMocHJvcGVydHlJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfT9wcm9wZXJ0eUlkPSR7cHJvcGVydHlJZH0mcHJvcGVydHlDYXRlZ29yeUlkPSR7UHJvcGVydHlDYXRlZ29yeUxpc3RFbnVtLlZBQ0FOVF9MQU5EfWBcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnNCYXNlOiBUcmFuc2FjdGlvbkJhc2VbXSk6IFRyYW5zYWN0aW9uW10gPT4ge1xuICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbnNCYXNlLm1hcCgodHJhbnNhY3Rpb25CYXNlOiBUcmFuc2FjdGlvbkJhc2UpOiBUcmFuc2FjdGlvbiA9PiBwbGFpblRvQ2xhc3MoVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uQmFzZSkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiB0YXhhYmxlIHRyYW5zYWN0aW9ucyB3aXRoIHRhbmsgdHlwZSAnV29yaydcbiAgICovXG4gIGdldFRheGFibGVXb3JrVHJhbnNhY3Rpb25zKCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmdldFdvcmtUcmFuc2FjdGlvbnMoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRyYW5zYWN0aW9ucy5maWx0ZXIoKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IGJvb2xlYW4gPT4gISF0cmFuc2FjdGlvbi5jaGFydEFjY291bnRzLnRheFJldHVybkl0ZW0pO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgbXVsdGlwbGUgdHJhbnNhY3Rpb25zXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbnMgTGlzdCBvZiBuZXcgVHJhbnNhY3Rpb24gaW5zdGFuY2VzIGZvciBzYXZpbmdcbiAgICovXG4gIGFkZEJhdGNoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHRyYW5zYWN0aW9ucyA9IF8uY2xvbmVEZWVwKHRyYW5zYWN0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgdHJhbnNhY3Rpb25zKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IFRyYW5zYWN0aW9uQmFzZVtdKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWRkZWRUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10gPSByZXNwb25zZS5tYXAoKGl0ZW06IFRyYW5zYWN0aW9uQmFzZSkgPT4gcGxhaW5Ub0NsYXNzKFRyYW5zYWN0aW9uLCBpdGVtKSk7XG5cbiAgICAgICAgICB0cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAvLyBAVE9ETyBiYWNrZW5kOiBuZWVkIHRvIHVwbG9hZCBmaWxlIGluIHRoZSBzYW1lIGJhY2tlbmQgZW5kcG9pbnQgd2l0aCB0cmFuc2FjdGlvbiBhZGQvdXBkYXRlXG4gICAgICAgICAgICAvLyBjaGVjayBpZiBwYXNzZWQgcmVjZWlwdCBhbmQgdXBsb2FkIGZpbGVcbiAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvbi5maWxlICYmICh0cmFuc2FjdGlvbi5maWxlIGluc3RhbmNlb2YgRmlsZSkpIHtcbiAgICAgICAgICAgICAgdHJhbnNhY3Rpb24uaWQgPSByZXNwb25zZVtpbmRleF0uaWQ7XG4gICAgICAgICAgICAgIGFkZGVkVHJhbnNhY3Rpb25zW2luZGV4XS5maWxlID0gdHJhbnNhY3Rpb24uZmlsZTtcbiAgICAgICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX0NSRUFURURfV0lUSF9ORVdfUkVDRUlQVCwgYWRkZWRUcmFuc2FjdGlvbnNbaW5kZXhdKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEBUT0RPIFZpa3RvcjogaW1wbGVtZW50IEFQSSBmb3Igc2F2aW5nIG9mIG5lc3RlZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIC8vIGFkZCBjaGlsZCB0cmFuc2FjdGlvbnMgaWYgZXhpc3RcbiAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5mb3JFYWNoKChjaGlsZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNoaWxkVHJhbnNhY3Rpb24ucGFyZW50VHJhbnNhY3Rpb24gPSBwbGFpblRvQ2xhc3MoVHJhbnNhY3Rpb24sIHtpZDogYWRkZWRUcmFuc2FjdGlvbnNbaW5kZXhdLmlkfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB0aGlzLmFkZEJhdGNoKHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucykuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGFkZCB0cmFuc2ZlciB0cmFuc2FjdGlvbiB0byBjYWNoZVxuICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uLm9wZXJhdGlvbiA9PT0gVHJhbnNhY3Rpb25PcGVyYXRpb25FbnVtLlRSQU5TRkVSKSB7XG4gICAgICAgICAgICAgIGFkZGVkVHJhbnNhY3Rpb25zLnB1c2goYWRkZWRUcmFuc2FjdGlvbnNbMF0udHJhbnNmZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRoaXMuY2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2FjaGUucHVzaCguLi5hZGRlZFRyYW5zYWN0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKFxuICAgICAgICAgICAgbmV3IEFwcEV2ZW50PFRyYW5zYWN0aW9uW10+KEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05TX0NSRUFURUQsIGFkZGVkVHJhbnNhY3Rpb25zKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gYWRkZWRUcmFuc2FjdGlvbnM7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSBleGlzdGluZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gVHJhbnNhY3Rpb24gaW5zdGFuY2UgZm9yIHVwZGF0aW5nXG4gICAqL1xuICB1cGRhdGUodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogT2JzZXJ2YWJsZTxUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7dHJhbnNhY3Rpb24uaWR9YCwgdHJhbnNhY3Rpb24pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogVHJhbnNhY3Rpb25CYXNlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbiA9IHBsYWluVG9DbGFzcyhUcmFuc2FjdGlvbiwgcmVzcG9uc2UpO1xuXG4gICAgICAgICAgLy8gQFRPRE8gbmVlZCB0byB1cGxvYWQgZmlsZSBpbiB0aGUgc2FtZSBiYWNrZW5kIGVuZHBvaW50IHdpdGggdHJhbnNhY3Rpb24gYWRkL3VwZGF0ZVxuICAgICAgICAgIC8vIGNoZWNrIGlmIHBhc3NlZCBuZXcgcmVjZWlwdCBhbmQgdXBsb2FkIGZpbGVcbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb24uZmlsZSAmJiAodHJhbnNhY3Rpb24uZmlsZSBpbnN0YW5jZW9mIEZpbGUpKSB7XG4gICAgICAgICAgICB1cGRhdGVkVHJhbnNhY3Rpb24uZmlsZSA9IHRyYW5zYWN0aW9uLmZpbGU7XG4gICAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fVVBEQVRFRF9XSVRIX05FV19SRUNFSVBULCB1cGRhdGVkVHJhbnNhY3Rpb24pKTtcbiAgICAgICAgICAgIC8vIHJlY2VpcHQgZmlsZSB3YXMgcmVtb3ZlZCBmcm9tIGZvcm0gLSB3ZSBzaG91bGQgZGVsZXRlIHJlY2VpcHQgZnJvbSB0cmFuc2FjdGlvblxuICAgICAgICAgIH0gZWxzZSBpZiAoIXRyYW5zYWN0aW9uLmZpbGUgJiYgdHJhbnNhY3Rpb24ucmVjZWlwdCkge1xuICAgICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1VQREFURURfV0lUSF9ERUxFVEVEX1JFQ0VJUFQsIHVwZGF0ZWRUcmFuc2FjdGlvbikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEBUT0RPIFZpa3RvcjogaW1wbGVtZW50IEFQSSBmb3Igc2F2aW5nIG9mIG5lc3RlZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICBpZiAodHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gYWRkIHBhcmVudCB0cmFuc2FjdGlvbiB0byBjaGlsZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5mb3JFYWNoKChjaGlsZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgICBjaGlsZFRyYW5zYWN0aW9uLnBhcmVudFRyYW5zYWN0aW9uID0gcGxhaW5Ub0NsYXNzKFRyYW5zYWN0aW9uLCB7aWQ6IHVwZGF0ZWRUcmFuc2FjdGlvbi5pZH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBzZXBhcmF0ZSBjaGlsZCB0cmFuc2FjdGlvbnMgYnkgaWQgZXhpc3RpbmcgdG8gZGVmaW5lIGFkZCBvciB1cGRhdGUgYWN0aW9uLlxuICAgICAgICAgICAgY29uc3QgY2hpbGRUcmFuc2FjdGlvbnNUb1VwZGF0ZTogVHJhbnNhY3Rpb25bXSA9IHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5maWx0ZXIoKHQ6IFRyYW5zYWN0aW9uKSA9PiB0LmlkKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkVHJhbnNhY3Rpb25zVG9BZGQ6IFRyYW5zYWN0aW9uW10gPSB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMuZmlsdGVyKCh0OiBUcmFuc2FjdGlvbikgPT4gIXQuaWQpO1xuXG4gICAgICAgICAgICAvLyB1cGRhdGUgY2hpbGQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICBpZiAoY2hpbGRUcmFuc2FjdGlvbnNUb1VwZGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVCYXRjaChjaGlsZFRyYW5zYWN0aW9uc1RvVXBkYXRlKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYWRkIGNoaWxkIHRyYW5zYWN0aW9uc1xuICAgICAgICAgICAgaWYgKGNoaWxkVHJhbnNhY3Rpb25zVG9BZGQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkQmF0Y2goY2hpbGRUcmFuc2FjdGlvbnNUb0FkZCkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVwbGFjZSh0aGlzLmNhY2hlLCB1cGRhdGVkVHJhbnNhY3Rpb24pO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcblxuICAgICAgICAgIHJldHVybiB1cGRhdGVkVHJhbnNhY3Rpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9ucyBsaXN0IG9mIHRyYW5zYWN0aW9ucyBmb3IgdXBkYXRpbmdcbiAgICovXG4gIHVwZGF0ZUJhdGNoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgdHJhbnNhY3Rpb25zKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IFRyYW5zYWN0aW9uQmFzZVtdKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZFRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSA9IHJlc3BvbnNlLm1hcCgoaXRlbTogVHJhbnNhY3Rpb25CYXNlKSA9PiBwbGFpblRvQ2xhc3MoVHJhbnNhY3Rpb24sIGl0ZW0pKTtcblxuICAgICAgICAgIHVwZGF0ZWRUcmFuc2FjdGlvbnMuZm9yRWFjaCgodXBkYXRlZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgcmVwbGFjZSh0aGlzLmNhY2hlLCB1cGRhdGVkVHJhbnNhY3Rpb24pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHJldHVybiB1cGRhdGVkVHJhbnNhY3Rpb25zO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWxldGUgdHJhbnNhY3Rpb24gYW5kIHJlbGF0ZWQgdHJhbnNhY3Rpb25zXG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cbiAgZGVsZXRlKG1vZGVsOiBUcmFuc2FjdGlvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7bW9kZWwuaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICAvLyB3aGVuIGRlbGV0ZSB0cmFuc2ZlciB3ZSBkZWxldGUgYWN0dWFsbHkgMiB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIGlmIChtb2RlbC5pc1RyYW5zZmVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlkczogbnVtYmVyW10gPSBbbW9kZWwuaWRdO1xuXG4gICAgICAgICAgICAgIC8vIGdldCBpZCBvZiByZWxhdGVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgIGlmIChtb2RlbC50cmFuc2Zlcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgdGFrZSBpZCBpZiB3ZSBkZWxldGUgc291cmNlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgICAgaWRzLnB1c2gobW9kZWwudHJhbnNmZXIuaWQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgc291cmNlIHRyYW5zYWN0aW9uIGlkIGlmIHdlIGRlbGV0ZSBkZXN0aW5hdGlvbiB0cmFuc2FjdGlvblxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKHRoaXMuY2FjaGUuZmluZCgodDogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHQudHJhbnNmZXIuaWQgPT09IG1vZGVsLmlkKS5pZCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gIWlkcy5pbmNsdWRlcyh0cmFuc2FjdGlvbi5pZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5pZCAhPT0gbW9kZWwuaWQgJiYgdHJhbnNhY3Rpb24ucGFyZW50VHJhbnNhY3Rpb24/LmlkICE9PSBtb2RlbC5pZDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBBcHBFdmVudDxUcmFuc2FjdGlvbj4oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9ERUxFVEVELCBtb2RlbClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25EZWxldGVkLmVtaXQobW9kZWwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxjdWxhdGUgZ3Jvc3MgaW5jb21lIGFtb3VudCBiYXNlZCBvbiB0cmFuc2FjdGlvbiBhbW91bnQgYW5kIHRheGVzIChmZWVzKVxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gVHJhbnNhY3Rpb24gaW5zdGFuY2UgZm9yIGNhbGN1bGF0aW9uXG4gICAqL1xuICBjYWxjdWxhdGVHcm9zc0Ftb3VudCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBudW1iZXIge1xuICAgIGxldCBhbW91bnQ6IG51bWJlciA9IHRyYW5zYWN0aW9uLmFtb3VudCB8fCAwO1xuXG4gICAgLy8gZ3Jvc3MgaW5jb21lIGFtb3VudCBpbmNsdWRlcyBhbW91bnQgb2YgZmVlcyBmb3IgcHJvcGVydHkgdGFuayBhbmQgdGF4IGZvciB3b3JrIHRhbmtcbiAgICBpZiAodHJhbnNhY3Rpb24uaXNQcm9wZXJ0eVRhbmsoKSkge1xuICAgICAgYW1vdW50ICs9IHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBpdGVtOiBUcmFuc2FjdGlvbikgPT4gc3VtICsgaXRlbS5hbW91bnQsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAVE9ETyBBbGV4OiBmaXggbG9naWMgYWZ0ZXIgVFQtNjQxIHJlYWR5XG4gICAgICBhbW91bnQgKz0gKHRyYW5zYWN0aW9uLnRheCB8fCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYW1vdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsYWJlbCBmb3IgdHJhbnNhY3Rpb24gdGF4IGZpZWxkIGRlcGVuZGVkIG9mIHNlbGVjdGVkIGNoYXJ0IGFjY291bnQuXG4gICAqIHRheCB0eXBlIGRlcGVuZHMgb2YgY2hhcnQgYWNjb3VudCBoZWFkaW5nIG9yIGNhdGVnb3J5LlxuICAgKi9cbiAgZ2V0VGF4TGFiZWwoY2hhcnRBY2NvdW50czogQ2hhcnRBY2NvdW50cyk6IENoYXJ0QWNjb3VudHNUYXhMYWJlbHNFbnVtIHtcbiAgICAvLyBnZXQgc2ltcGxlIGFycmF5IG9mIGlkcyBmcm9tIGVudW0gd2l0aCB0YXhhYmxlIGNoYXJ0IGFjY291bnRzIGhlYWRpbmdzXG4gICAgY29uc3QgdGF4YWJsZUNBSGVhZGluZ3NJZHM6IG51bWJlcltdID0gZW51bVRvTGlzdChDaGFydEFjY291bnRzSGVhZGluZ1RheGFibGVFbnVtKVxuICAgICAgLm1hcCgoaXRlbTogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH0pID0+IGl0ZW0udmFsdWUpO1xuICAgIC8vIGdldCBzaW1wbGUgYXJyYXkgb2YgaWRzIGZyb20gZW51bSB3aXRoIHRheCBkZWR1Y3RpYmxlIGNoYXJ0IGFjY291bnRzIGhlYWRpbmdzXG4gICAgY29uc3QgZGVkdWN0aWJsZUNBSGVhZGluZ3NJZHM6IG51bWJlcltdID0gZW51bVRvTGlzdChDaGFydEFjY291bnRzSGVhZGluZ1RheERlZHVjdGlibGVFbnVtKVxuICAgICAgLm1hcCgoaXRlbTogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH0pID0+IGl0ZW0udmFsdWUpO1xuXG4gICAgLy8gY2hlY2sgaWYgb25lIG9mIGlkcyBhcnJheXMgaW5jbHVkZXMgY3VycmVudCBjaGFydCBhY2NvdW50cyBoZWFkaW5nIGlkIGFuZCBzZXQgdGF4IGxhYmVsXG4gICAgLy8gb3RoZXJ3aXNlIGxhYmVsIGlzIGVtcHR5IGZvciB0aGlzIGNsYXNzXG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRheGFibGVDQUhlYWRpbmdzSWRzLmluY2x1ZGVzKGNoYXJ0QWNjb3VudHMuaGVhZGluZz8uaWQpOlxuICAgICAgICByZXR1cm4gQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0uVEFYX1BBSUQ7XG4gICAgICBjYXNlIGRlZHVjdGlibGVDQUhlYWRpbmdzSWRzLmluY2x1ZGVzKGNoYXJ0QWNjb3VudHMuaGVhZGluZz8uaWQpOlxuICAgICAgICByZXR1cm4gQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0uVEFYX0RFRFVDVEVEO1xuICAgICAgY2FzZSBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTLndvcmtJbmNvbWUuaW5jbHVkZXMoY2hhcnRBY2NvdW50cy5jYXRlZ29yeSk6XG4gICAgICAgIHJldHVybiBDaGFydEFjY291bnRzVGF4TGFiZWxzRW51bS5UQVhfV0lUSEhFTEQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgZXZlbnQgcmVsYXRlZCB0byBEZXByZWNpYXRpb24gY2hhbmdpbmdcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuRGVwcmVjaWF0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLkRFUFJFQ0lBVElPTl9ERUxFVEVEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mZXRjaCgpXG4gICAgICAgIC5zdWJzY3JpYmUoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0cmFuc2FjdGlvbnM7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIFByb3BlcnR5IFNoYXJlIGNoYW5naW5nXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblByb3BlcnR5U2hhcmVVcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uUFJPUEVSVFlfU0hBUkVfVVBEQVRFRCkuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXRDYWNoZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuUmVjZWlwdEFkZGVkKCkge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1JFQ0VJUFRfQ1JFQVRFRCkuc3Vic2NyaWJlKCh0cmFuc2FjdGlvblJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25Ub1VwZGF0ZTogVHJhbnNhY3Rpb24gPSB0aGlzLmZpbmQodHJhbnNhY3Rpb25SZWNlaXB0LnRyYW5zYWN0aW9uLmlkKTtcblxuICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBrZWVwIGZpbGUgYWZ0ZXIgc2F2ZVxuICAgICAgdHJhbnNhY3Rpb25Ub1VwZGF0ZS5maWxlID0gbnVsbDtcbiAgICAgIHRyYW5zYWN0aW9uVG9VcGRhdGUucmVjZWlwdCA9IHRyYW5zYWN0aW9uUmVjZWlwdDtcbiAgICAgIHJlcGxhY2UodGhpcy5jYWNoZSwgdHJhbnNhY3Rpb25Ub1VwZGF0ZSk7XG4gICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblJlY2VpcHREZWxldGVkKCkge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1JFQ0VJUFRfREVMRVRFRCkuc3Vic2NyaWJlKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uVG9VcGRhdGU6IFRyYW5zYWN0aW9uID0gdGhpcy5maW5kKHRyYW5zYWN0aW9uLmlkKTtcblxuICAgICAgdHJhbnNhY3Rpb25Ub1VwZGF0ZS5yZWNlaXB0ID0gbnVsbDtcbiAgICAgIHJlcGxhY2UodGhpcy5jYWNoZSwgdHJhbnNhY3Rpb25Ub1VwZGF0ZSk7XG4gICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblZlaGljbGVDbGFpbUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKFtcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELFxuICAgICAgQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX1VQREFURUQsXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fREVUQUlMU19DUkVBVEVELFxuICAgICAgQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX0RFVEFJTFNfVVBEQVRFRFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICB9KVxuICB9XG59XG4iXX0=
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9odHRwL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNySCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHM0QsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdE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bkIsYUFBYTtvSEFUWixrQkFBa0IsY0FGakIsTUFBTTs0RkFFUCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFVSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb25CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZGIvTW9kZWxzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHJlcGxhY2UsIHNvcnQgfSBmcm9tICcuLi8uLi8uLi9mdW5jdGlvbnMvYXJyYXknO1xuaW1wb3J0IHsgZW51bVRvTGlzdCB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9lbnVtLXRvLWxpc3QnO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0hlYWRpbmdUYXhhYmxlRW51bSB9IGZyb20gJy4uLy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWhlYWRpbmctdGF4YWJsZS5lbnVtJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNIZWFkaW5nVGF4RGVkdWN0aWJsZUVudW0gfSBmcm9tICcuLi8uLi8uLi9kYi9FbnVtcy9jaGFydC1hY2NvdW50cy1oZWFkaW5nLXRheC1kZWR1Y3RpYmxlLmVudW0nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25PcGVyYXRpb25FbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMvdHJhbnNhY3Rpb24tb3BlcmF0aW9uLmVudW0nO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi9yZXN0L3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzLWNhdGVnb3JpZXMuY29uc3QnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQXBwRXZlbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQtdHlwZS5lbnVtJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24tcmVjZWlwdCc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2NoYXJ0LWFjY291bnRzL2NoYXJ0LWFjY291bnRzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzVGF4TGFiZWxzRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9jaGFydC1hY2NvdW50cy9jaGFydC1hY2NvdW50cy10YXgtbGFiZWxzLmVudW0nO1xuaW1wb3J0IHsgUHJvcGVydHlDYXRlZ29yeUxpc3RFbnVtIH0gZnJvbSAnLi4vLi4vLi4vZGIvRW51bXMvcHJvcGVydHkvcHJvcGVydHktY2F0ZWdvcnktbGlzdC5lbnVtJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdFNlcnZpY2UgfSBmcm9tICcuL3RyYW5zYWN0aW9uLXJlY2VpcHQvdHJhbnNhY3Rpb24tcmVjZWlwdC5zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3RvYXN0L3RvYXN0LnNlcnZpY2UnO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIHRyYW5zYWN0aW9ucyBidXNpbmVzcyBsb2dpY1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblNlcnZpY2UgZXh0ZW5kcyBSZXN0U2VydmljZTxUcmFuc2FjdGlvbkJhc2UsIFRyYW5zYWN0aW9uPiB7XG4gIC8vIHVybCBwYXJ0IGZvciBUcmFuc2FjdGlvbiBBUElcbiAgdXJsOiBzdHJpbmcgPSAndHJhbnNhY3Rpb25zJztcbiAgbW9kZWxDbGFzcyA9IFRyYW5zYWN0aW9uO1xuICB0cmFuc2FjdGlvbkRlbGV0ZWQ6IEV2ZW50RW1pdHRlcjxUcmFuc2FjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPFRyYW5zYWN0aW9uPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnksXG4gICAgcHJvdGVjdGVkIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNhY3Rpb25SZWNlaXB0U2VydmljZTogVHJhbnNhY3Rpb25SZWNlaXB0U2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwLCBldmVudERpc3BhdGNoZXJTZXJ2aWNlLCBlbnZpcm9ubWVudCwgdG9hc3RTZXJ2aWNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZXZlbnRzIGZyb20gRXZlbnQgRGlzcGF0Y2hlciBzZXJ2aWNlc1xuICAgKi9cbiAgbGlzdGVuRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuRGVwcmVjaWF0aW9uQ2hhbmdlKCk7XG4gICAgdGhpcy5saXN0ZW5Qcm9wZXJ0eVNoYXJlVXBkYXRlKCk7XG4gICAgdGhpcy5saXN0ZW5SZWNlaXB0QWRkZWQoKTtcbiAgICB0aGlzLmxpc3RlblJlY2VpcHREZWxldGVkKCk7XG4gICAgdGhpcy5saXN0ZW5WZWhpY2xlQ2xhaW1DaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgYWxsIHVzZXIncyBUYXhUYW5rIHRyYW5zYWN0aW9uc1xuICAgKi9cbiAgZ2V0KCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIGlmICghdGhpcy5jYWNoZSkge1xuICAgICAgLy8gc2V0IGNhY2hlIGFzIGRlZmF1bHQgZW1wdHkgYXJyYXkgdG8gYXZvaWQgbXVsdGlwbGUgYmFja2VuZCByZXF1ZXN0c1xuICAgICAgdGhpcy5jYWNoZSA9IFtdO1xuICAgICAgdGhpcy5mZXRjaCgpXG4gICAgICAgIC5zdWJzY3JpYmUoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0cmFuc2FjdGlvbnM7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZVN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIC8vIGFzc2lnbiBjaGlsZCB0cmFuc2FjdGlvbnMgKGZlZXMpIHRvIHBhcmVudCB0cmFuc2FjdGlvbnNcbiAgICAgIG1hcCgodHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSA9PiB7XG4gICAgICAgIHRyYW5zYWN0aW9ucy5mb3JFYWNoKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMgPSB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIC8vIGdldCBsaXN0IG9mIGNoaWxkIHRyYW5zYWN0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigodDogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHQucGFyZW50VHJhbnNhY3Rpb24gJiYgdC5wYXJlbnRUcmFuc2FjdGlvbi5pZCA9PT0gdHJhbnNhY3Rpb24uaWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgc29ydCh0cmFuc2FjdGlvbnMsICdkYXRlJywgZmFsc2UpO1xuICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25zO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBzaW5nbGUgbmV3IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBtb2RlbCBOZXcgVHJhbnNhY3Rpb24gaW5zdGFuY2UgZm9yIHNhdmluZ1xuICAgKi9cbiAgYWRkKG1vZGVsOiBUcmFuc2FjdGlvbik6IE9ic2VydmFibGU8VHJhbnNhY3Rpb24+IHtcbiAgICAvLyB3ZSBkb24ndCBoYXZlIFBPU1QgQVBJIGVuZHBvaW50IGZvciBzaW5nbGUgdHJhbnNhY3Rpb25cbiAgICByZXR1cm4gdGhpcy5hZGRCYXRjaChbbW9kZWxdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgobmV3VHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb24gPT4ge1xuICAgICAgICAgIC8vIEBUT0RPIGFsZXhcbiAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2goXG4gICAgICAgICAgICBuZXcgQXBwRXZlbnQ8VHJhbnNhY3Rpb24+KEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fQ1JFQVRFRCwgbmV3VHJhbnNhY3Rpb25zWzBdKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3VHJhbnNhY3Rpb25zWzBdO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdHJhbnNhY3Rpb25zIHJlbGF0ZWQgd2l0aCBwcm9wZXJ0eVxuICAgKi9cbiAgZ2V0QnlQcm9wZXJ0eUlkKHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25zLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucHJvcGVydHk/LmlkID09PSBwcm9wZXJ0eUlkO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgbGlzdCBvZiB0cmFuc2FjdGlvbnMgd2l0aCB0YW5rIHR5cGUgJ1dvcmsnXG4gICAqL1xuICBnZXRXb3JrVHJhbnNhY3Rpb25zKCk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmdldCgpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25zLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB0cmFuc2FjdGlvbi5pc1dvcmtUYW5rKCkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBwcm9wZXJ0eSBob2xkaW5nIGNvc3RzICh0cmFuc2FjdGlvbnMgcmVsYXRlZCB0byB2YWNhbnQgbGFuZCBwcm9wZXJ0eSlcbiAgICovXG4gIGdldFByb3BlcnR5SG9sZGluZ0Nvc3RzKHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vJHt0aGlzLnVybH0/cHJvcGVydHlJZD0ke3Byb3BlcnR5SWR9JnByb3BlcnR5Q2F0ZWdvcnlJZD0ke1Byb3BlcnR5Q2F0ZWdvcnlMaXN0RW51bS5WQUNBTlRfTEFORH1gXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgodHJhbnNhY3Rpb25zQmFzZTogVHJhbnNhY3Rpb25CYXNlW10pOiBUcmFuc2FjdGlvbltdID0+IHtcbiAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25zQmFzZS5tYXAoKHRyYW5zYWN0aW9uQmFzZTogVHJhbnNhY3Rpb25CYXNlKTogVHJhbnNhY3Rpb24gPT4gcGxhaW5Ub0NsYXNzKFRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbkJhc2UpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGxpc3Qgb2YgdGF4YWJsZSB0cmFuc2FjdGlvbnMgd2l0aCB0YW5rIHR5cGUgJ1dvcmsnXG4gICAqL1xuICBnZXRUYXhhYmxlV29ya1RyYW5zYWN0aW9ucygpOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXb3JrVHJhbnNhY3Rpb25zKClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10gPT4ge1xuICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbnMuZmlsdGVyKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+ICEhdHJhbnNhY3Rpb24uY2hhcnRBY2NvdW50cy50YXhSZXR1cm5JdGVtKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogYWRkIG11bHRpcGxlIHRyYW5zYWN0aW9uc1xuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25zIExpc3Qgb2YgbmV3IFRyYW5zYWN0aW9uIGluc3RhbmNlcyBmb3Igc2F2aW5nXG4gICAqL1xuICBhZGRCYXRjaCh0cmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uW10pOiBPYnNlcnZhYmxlPFRyYW5zYWN0aW9uW10+IHtcbiAgICB0cmFuc2FjdGlvbnMgPSBfLmNsb25lRGVlcCh0cmFuc2FjdGlvbnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfWAsIHRyYW5zYWN0aW9ucylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBUcmFuc2FjdGlvbkJhc2VbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFkZGVkVHJhbnNhY3Rpb25zOiBUcmFuc2FjdGlvbltdID0gcmVzcG9uc2UubWFwKChpdGVtOiBUcmFuc2FjdGlvbkJhc2UpID0+IHBsYWluVG9DbGFzcyhUcmFuc2FjdGlvbiwgaXRlbSkpO1xuXG4gICAgICAgICAgdHJhbnNhY3Rpb25zLmZvckVhY2goKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgLy8gQFRPRE8gYmFja2VuZDogbmVlZCB0byB1cGxvYWQgZmlsZSBpbiB0aGUgc2FtZSBiYWNrZW5kIGVuZHBvaW50IHdpdGggdHJhbnNhY3Rpb24gYWRkL3VwZGF0ZVxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgcGFzc2VkIHJlY2VpcHQgYW5kIHVwbG9hZCBmaWxlXG4gICAgICAgICAgICBpZiAodHJhbnNhY3Rpb24uZmlsZSkge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5pZCA9IHJlc3BvbnNlW2luZGV4XS5pZDtcbiAgICAgICAgICAgICAgYWRkZWRUcmFuc2FjdGlvbnNbaW5kZXhdLmZpbGUgPSB0cmFuc2FjdGlvbi5maWxlO1xuICAgICAgICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVFJBTlNBQ1RJT05fVVBEQVRFRF9XSVRIX1JFQ0VJUFQsIGFkZGVkVHJhbnNhY3Rpb25zW2luZGV4XSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBAVE9ETyBWaWt0b3I6IGltcGxlbWVudCBBUEkgZm9yIHNhdmluZyBvZiBuZXN0ZWQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICAvLyBhZGQgY2hpbGQgdHJhbnNhY3Rpb25zIGlmIGV4aXN0XG4gICAgICAgICAgICBpZiAodHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMuZm9yRWFjaCgoY2hpbGRUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBjaGlsZFRyYW5zYWN0aW9uLnBhcmVudFRyYW5zYWN0aW9uID0gcGxhaW5Ub0NsYXNzKFRyYW5zYWN0aW9uLCB7aWQ6IGFkZGVkVHJhbnNhY3Rpb25zW2luZGV4XS5pZH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgdGhpcy5hZGRCYXRjaCh0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBhZGQgdHJhbnNmZXIgdHJhbnNhY3Rpb24gdG8gY2FjaGVcbiAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvbi5vcGVyYXRpb24gPT09IFRyYW5zYWN0aW9uT3BlcmF0aW9uRW51bS5UUkFOU0ZFUikge1xuICAgICAgICAgICAgICBhZGRlZFRyYW5zYWN0aW9ucy5wdXNoKGFkZGVkVHJhbnNhY3Rpb25zWzBdLnRyYW5zZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmICh0aGlzLmNhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlLnB1c2goLi4uYWRkZWRUcmFuc2FjdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBBcHBFdmVudDxUcmFuc2FjdGlvbltdPihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OU19DUkVBVEVELCBhZGRlZFRyYW5zYWN0aW9ucylcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIGFkZGVkVHJhbnNhY3Rpb25zO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiB1cGRhdGUgZXhpc3RpbmcgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIFRyYW5zYWN0aW9uIGluc3RhbmNlIGZvciB1cGRhdGluZ1xuICAgKi9cbiAgdXBkYXRlKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IE9ic2VydmFibGU8VHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke3RyYW5zYWN0aW9uLmlkfWAsIHRyYW5zYWN0aW9uKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IFRyYW5zYWN0aW9uQmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gPSBwbGFpblRvQ2xhc3MoVHJhbnNhY3Rpb24sIHJlc3BvbnNlKTtcblxuICAgICAgICAgIC8vIEBUT0RPIG5lZWQgdG8gdXBsb2FkIGZpbGUgaW4gdGhlIHNhbWUgYmFja2VuZCBlbmRwb2ludCB3aXRoIHRyYW5zYWN0aW9uIGFkZC91cGRhdGVcbiAgICAgICAgICAvLyBjaGVjayBpZiBwYXNzZWQgbmV3IHJlY2VpcHQgYW5kIHVwbG9hZCBmaWxlXG4gICAgICAgICAgaWYgKHRyYW5zYWN0aW9uLmZpbGUpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRUcmFuc2FjdGlvbi5maWxlID0gdHJhbnNhY3Rpb24uZmlsZTtcbiAgICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9VUERBVEVEX1dJVEhfUkVDRUlQVCwgdXBkYXRlZFRyYW5zYWN0aW9uKSk7XG4gICAgICAgICAgICAvLyByZWNlaXB0IGZpbGUgd2FzIHJlbW92ZWQgZnJvbSBmb3JtIC0gd2Ugc2hvdWxkIGRlbGV0ZSByZWNlaXB0IGZyb20gdHJhbnNhY3Rpb25cbiAgICAgICAgICB9IGVsc2UgaWYgKCF0cmFuc2FjdGlvbi5maWxlICYmIHRyYW5zYWN0aW9uLnJlY2VpcHQpIHtcbiAgICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9VUERBVEVEX1dJVEhfREVMRVRFRF9SRUNFSVBULCB1cGRhdGVkVHJhbnNhY3Rpb24pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBAVE9ETyBWaWt0b3I6IGltcGxlbWVudCBBUEkgZm9yIHNhdmluZyBvZiBuZXN0ZWQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgaWYgKHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIGFkZCBwYXJlbnQgdHJhbnNhY3Rpb24gdG8gY2hpbGQgdHJhbnNhY3Rpb25zXG4gICAgICAgICAgICB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMuZm9yRWFjaCgoY2hpbGRUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgY2hpbGRUcmFuc2FjdGlvbi5wYXJlbnRUcmFuc2FjdGlvbiA9IHBsYWluVG9DbGFzcyhUcmFuc2FjdGlvbiwge2lkOiB1cGRhdGVkVHJhbnNhY3Rpb24uaWR9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gc2VwYXJhdGUgY2hpbGQgdHJhbnNhY3Rpb25zIGJ5IGlkIGV4aXN0aW5nIHRvIGRlZmluZSBhZGQgb3IgdXBkYXRlIGFjdGlvbi5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkVHJhbnNhY3Rpb25zVG9VcGRhdGU6IFRyYW5zYWN0aW9uW10gPSB0cmFuc2FjdGlvbi50cmFuc2FjdGlvbnMuZmlsdGVyKCh0OiBUcmFuc2FjdGlvbikgPT4gdC5pZCk7XG4gICAgICAgICAgICBjb25zdCBjaGlsZFRyYW5zYWN0aW9uc1RvQWRkOiBUcmFuc2FjdGlvbltdID0gdHJhbnNhY3Rpb24udHJhbnNhY3Rpb25zLmZpbHRlcigodDogVHJhbnNhY3Rpb24pID0+ICF0LmlkKTtcblxuICAgICAgICAgICAgLy8gdXBkYXRlIGNoaWxkIHRyYW5zYWN0aW9uc1xuICAgICAgICAgICAgaWYgKGNoaWxkVHJhbnNhY3Rpb25zVG9VcGRhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlQmF0Y2goY2hpbGRUcmFuc2FjdGlvbnNUb1VwZGF0ZSkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGFkZCBjaGlsZCB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIGlmIChjaGlsZFRyYW5zYWN0aW9uc1RvQWRkLmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLmFkZEJhdGNoKGNoaWxkVHJhbnNhY3Rpb25zVG9BZGQpLnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucmVwbGFjZUluQ2FjaGUodXBkYXRlZFRyYW5zYWN0aW9uKTtcblxuICAgICAgICAgIHJldHVybiB1cGRhdGVkVHJhbnNhY3Rpb247XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSBtdWx0aXBsZSB0cmFuc2FjdGlvbnNcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9ucyBsaXN0IG9mIHRyYW5zYWN0aW9ucyBmb3IgdXBkYXRpbmdcbiAgICovXG4gIHVwZGF0ZUJhdGNoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSk6IE9ic2VydmFibGU8VHJhbnNhY3Rpb25bXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9YCwgdHJhbnNhY3Rpb25zKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IFRyYW5zYWN0aW9uQmFzZVtdKSA9PiB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZFRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSA9IHJlc3BvbnNlLm1hcCgoaXRlbTogVHJhbnNhY3Rpb25CYXNlKSA9PiBwbGFpblRvQ2xhc3MoVHJhbnNhY3Rpb24sIGl0ZW0pKTtcblxuICAgICAgICAgIHVwZGF0ZWRUcmFuc2FjdGlvbnMuZm9yRWFjaCgodXBkYXRlZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgICAgcmVwbGFjZSh0aGlzLmNhY2hlLCB1cGRhdGVkVHJhbnNhY3Rpb24pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHJldHVybiB1cGRhdGVkVHJhbnNhY3Rpb25zO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWxldGUgdHJhbnNhY3Rpb24gYW5kIHJlbGF0ZWQgdHJhbnNhY3Rpb25zXG4gICAqIEBwYXJhbSBtb2RlbFxuICAgKi9cbiAgZGVsZXRlKG1vZGVsOiBUcmFuc2FjdGlvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9LyR7dGhpcy51cmx9LyR7bW9kZWwuaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLmZpbHRlcigodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICAvLyB3aGVuIGRlbGV0ZSB0cmFuc2ZlciB3ZSBkZWxldGUgYWN0dWFsbHkgMiB0cmFuc2FjdGlvbnNcbiAgICAgICAgICAgIGlmIChtb2RlbC5pc1RyYW5zZmVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlkczogbnVtYmVyW10gPSBbbW9kZWwuaWRdO1xuXG4gICAgICAgICAgICAgIC8vIGdldCBpZCBvZiByZWxhdGVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgIGlmIChtb2RlbC50cmFuc2Zlcikge1xuICAgICAgICAgICAgICAgIC8vIGp1c3QgdGFrZSBpZCBpZiB3ZSBkZWxldGUgc291cmNlIHRyYW5zYWN0aW9uXG4gICAgICAgICAgICAgICAgaWRzLnB1c2gobW9kZWwudHJhbnNmZXIuaWQpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGZpbmQgc291cmNlIHRyYW5zYWN0aW9uIGlkIGlmIHdlIGRlbGV0ZSBkZXN0aW5hdGlvbiB0cmFuc2FjdGlvblxuICAgICAgICAgICAgICAgIGlkcy5wdXNoKHRoaXMuY2FjaGUuZmluZCgodDogVHJhbnNhY3Rpb24pOiBib29sZWFuID0+IHQudHJhbnNmZXIuaWQgPT09IG1vZGVsLmlkKS5pZCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gIWlkcy5pbmNsdWRlcyh0cmFuc2FjdGlvbi5pZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5pZCAhPT0gbW9kZWwuaWQgJiYgdHJhbnNhY3Rpb24ucGFyZW50VHJhbnNhY3Rpb24/LmlkICE9PSBtb2RlbC5pZDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChcbiAgICAgICAgICAgIG5ldyBBcHBFdmVudDxUcmFuc2FjdGlvbj4oQXBwRXZlbnRUeXBlRW51bS5UUkFOU0FDVElPTl9ERUxFVEVELCBtb2RlbClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25EZWxldGVkLmVtaXQobW9kZWwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxjdWxhdGUgZ3Jvc3MgaW5jb21lIGFtb3VudCBiYXNlZCBvbiB0cmFuc2FjdGlvbiBhbW91bnQgYW5kIHRheGVzIChmZWVzKVxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gVHJhbnNhY3Rpb24gaW5zdGFuY2UgZm9yIGNhbGN1bGF0aW9uXG4gICAqL1xuICBjYWxjdWxhdGVHcm9zc0Ftb3VudCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBudW1iZXIge1xuICAgIGxldCBhbW91bnQ6IG51bWJlciA9IHRyYW5zYWN0aW9uLmFtb3VudCB8fCAwO1xuXG4gICAgLy8gZ3Jvc3MgaW5jb21lIGFtb3VudCBpbmNsdWRlcyBhbW91bnQgb2YgZmVlcyBmb3IgcHJvcGVydHkgdGFuayBhbmQgdGF4IGZvciB3b3JrIHRhbmtcbiAgICBpZiAodHJhbnNhY3Rpb24uaXNQcm9wZXJ0eVRhbmsoKSkge1xuICAgICAgYW1vdW50ICs9IHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9ucy5yZWR1Y2UoKHN1bTogbnVtYmVyLCBpdGVtOiBUcmFuc2FjdGlvbikgPT4gc3VtICsgaXRlbS5hbW91bnQsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAVE9ETyBBbGV4OiBmaXggbG9naWMgYWZ0ZXIgVFQtNjQxIHJlYWR5XG4gICAgICBhbW91bnQgKz0gKHRyYW5zYWN0aW9uLnRheCB8fCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYW1vdW50O1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBsYWJlbCBmb3IgdHJhbnNhY3Rpb24gdGF4IGZpZWxkIGRlcGVuZGVkIG9mIHNlbGVjdGVkIGNoYXJ0IGFjY291bnQuXG4gICAqIHRheCB0eXBlIGRlcGVuZHMgb2YgY2hhcnQgYWNjb3VudCBoZWFkaW5nIG9yIGNhdGVnb3J5LlxuICAgKi9cbiAgZ2V0VGF4TGFiZWwoY2hhcnRBY2NvdW50czogQ2hhcnRBY2NvdW50cyk6IENoYXJ0QWNjb3VudHNUYXhMYWJlbHNFbnVtIHtcbiAgICAvLyBnZXQgc2ltcGxlIGFycmF5IG9mIGlkcyBmcm9tIGVudW0gd2l0aCB0YXhhYmxlIGNoYXJ0IGFjY291bnRzIGhlYWRpbmdzXG4gICAgY29uc3QgdGF4YWJsZUNBSGVhZGluZ3NJZHM6IG51bWJlcltdID0gZW51bVRvTGlzdChDaGFydEFjY291bnRzSGVhZGluZ1RheGFibGVFbnVtKVxuICAgICAgLm1hcCgoaXRlbTogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH0pID0+IGl0ZW0udmFsdWUpO1xuICAgIC8vIGdldCBzaW1wbGUgYXJyYXkgb2YgaWRzIGZyb20gZW51bSB3aXRoIHRheCBkZWR1Y3RpYmxlIGNoYXJ0IGFjY291bnRzIGhlYWRpbmdzXG4gICAgY29uc3QgZGVkdWN0aWJsZUNBSGVhZGluZ3NJZHM6IG51bWJlcltdID0gZW51bVRvTGlzdChDaGFydEFjY291bnRzSGVhZGluZ1RheERlZHVjdGlibGVFbnVtKVxuICAgICAgLm1hcCgoaXRlbTogeyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyIH0pID0+IGl0ZW0udmFsdWUpO1xuXG4gICAgLy8gY2hlY2sgaWYgb25lIG9mIGlkcyBhcnJheXMgaW5jbHVkZXMgY3VycmVudCBjaGFydCBhY2NvdW50cyBoZWFkaW5nIGlkIGFuZCBzZXQgdGF4IGxhYmVsXG4gICAgLy8gb3RoZXJ3aXNlIGxhYmVsIGlzIGVtcHR5IGZvciB0aGlzIGNsYXNzXG4gICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICBjYXNlIHRheGFibGVDQUhlYWRpbmdzSWRzLmluY2x1ZGVzKGNoYXJ0QWNjb3VudHMuaGVhZGluZz8uaWQpOlxuICAgICAgICByZXR1cm4gQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0uVEFYX1BBSUQ7XG4gICAgICBjYXNlIGRlZHVjdGlibGVDQUhlYWRpbmdzSWRzLmluY2x1ZGVzKGNoYXJ0QWNjb3VudHMuaGVhZGluZz8uaWQpOlxuICAgICAgICByZXR1cm4gQ2hhcnRBY2NvdW50c1RheExhYmVsc0VudW0uVEFYX0RFRFVDVEVEO1xuICAgICAgY2FzZSBDSEFSVF9BQ0NPVU5UU19DQVRFR09SSUVTLndvcmtJbmNvbWUuaW5jbHVkZXMoY2hhcnRBY2NvdW50cy5jYXRlZ29yeSk6XG4gICAgICAgIHJldHVybiBDaGFydEFjY291bnRzVGF4TGFiZWxzRW51bS5UQVhfV0lUSEhFTEQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UgZXZlbnQgcmVsYXRlZCB0byBEZXByZWNpYXRpb24gY2hhbmdpbmdcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuRGVwcmVjaWF0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLkRFUFJFQ0lBVElPTl9ERUxFVEVEKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mZXRjaCgpXG4gICAgICAgIC5zdWJzY3JpYmUoKHRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25bXSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSB0cmFuc2FjdGlvbnM7XG4gICAgICAgICAgdGhpcy51cGRhdGVDYWNoZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRXZlbnREaXNwYXRjaGVyU2VydmljZSBldmVudCByZWxhdGVkIHRvIFByb3BlcnR5IFNoYXJlIGNoYW5naW5nXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblByb3BlcnR5U2hhcmVVcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKEFwcEV2ZW50VHlwZUVudW0uUFJPUEVSVFlfU0hBUkVfVVBEQVRFRCkuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXRDYWNoZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuUmVjZWlwdEFkZGVkKCkge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1JFQ0VJUFRfQ1JFQVRFRCkuc3Vic2NyaWJlKCh0cmFuc2FjdGlvblJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb25Ub1VwZGF0ZTogVHJhbnNhY3Rpb24gPSB0aGlzLmZpbmQodHJhbnNhY3Rpb25SZWNlaXB0LnRyYW5zYWN0aW9uLmlkKTtcblxuICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBrZWVwIGZpbGUgYWZ0ZXIgc2F2ZVxuICAgICAgdHJhbnNhY3Rpb25Ub1VwZGF0ZS5maWxlID0gbnVsbDtcbiAgICAgIHRyYW5zYWN0aW9uVG9VcGRhdGUucmVjZWlwdCA9IHRyYW5zYWN0aW9uUmVjZWlwdDtcbiAgICAgIHRoaXMucmVwbGFjZUluQ2FjaGUodHJhbnNhY3Rpb25Ub1VwZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblJlY2VpcHREZWxldGVkKCkge1xuICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5vbihBcHBFdmVudFR5cGVFbnVtLlRSQU5TQUNUSU9OX1JFQ0VJUFRfREVMRVRFRCkuc3Vic2NyaWJlKCh0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uVG9VcGRhdGU6IFRyYW5zYWN0aW9uID0gdGhpcy5maW5kKHRyYW5zYWN0aW9uLmlkKTtcblxuICAgICAgdHJhbnNhY3Rpb25Ub1VwZGF0ZS5yZWNlaXB0ID0gbnVsbDtcbiAgICAgIHRoaXMucmVwbGFjZUluQ2FjaGUodHJhbnNhY3Rpb25Ub1VwZGF0ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblZlaGljbGVDbGFpbUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLm9uKFtcbiAgICAgIEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELFxuICAgICAgQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX1VQREFURUQsXG4gICAgICBBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fREVUQUlMU19DUkVBVEVELFxuICAgICAgQXBwRXZlbnRUeXBlRW51bS5WRUhJQ0xFX0NMQUlNX0RFVEFJTFNfVVBEQVRFRFxuICAgIF0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0Q2FjaGUoKTtcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlSW5DYWNoZSh0cmFuc2FjdGlvblRvUmVwbGFjZTogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICByZXBsYWNlKHRoaXMuY2FjaGUsIHRyYW5zYWN0aW9uVG9SZXBsYWNlKTtcbiAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export * from './occupation/occupation.service';
2
+ export * from './user-event-setting/user-event-setting.service';
3
+ export * from './user-event-type/user-event-type.service';
4
+ export * from './users-invite/users-invite.service';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC91c2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMscUNBQXFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29jY3VwYXRpb24vb2NjdXBhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1ldmVudC1zZXR0aW5nL3VzZXItZXZlbnQtc2V0dGluZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1ldmVudC10eXBlL3VzZXItZXZlbnQtdHlwZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdXNlcnMtaW52aXRlL3VzZXJzLWludml0ZS5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { RestService } from '../../rest/rest.service';
3
+ import { RegistrationInvite } from '../../../../models/registration-invite/registration-invite';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Service to work with invitations for unregistered users
7
+ */
8
+ export class UsersInviteService extends RestService {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.modelClass = RegistrationInvite;
12
+ this.url = 'users/invite';
13
+ }
14
+ }
15
+ UsersInviteService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UsersInviteService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
16
+ UsersInviteService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UsersInviteService, providedIn: 'root' });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: UsersInviteService, decorators: [{
18
+ type: Injectable,
19
+ args: [{
20
+ providedIn: 'root'
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMtaW52aXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvaHR0cC91c2VyL3VzZXJzLWludml0ZS91c2Vycy1pbnZpdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7QUFFaEc7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsV0FBdUQ7SUFIL0Y7O1FBSUUsZUFBVSxHQUE4QixrQkFBa0IsQ0FBQztRQUMzRCxRQUFHLEdBQVcsY0FBYyxDQUFDO0tBQzlCOztnSEFIWSxrQkFBa0I7b0hBQWxCLGtCQUFrQixjQUZqQixNQUFNOzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3Jlc3QvcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZ2lzdHJhdGlvbkludml0ZSBhcyBSZWdpc3RyYXRpb25JbnZpdGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGIvTW9kZWxzL3VzZXIvcmVnaXN0cmF0aW9uLWludml0ZSc7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25JbnZpdGUgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvcmVnaXN0cmF0aW9uLWludml0ZS9yZWdpc3RyYXRpb24taW52aXRlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRvIHdvcmsgd2l0aCBpbnZpdGF0aW9ucyBmb3IgdW5yZWdpc3RlcmVkIHVzZXJzXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJzSW52aXRlU2VydmljZSBleHRlbmRzIFJlc3RTZXJ2aWNlPFJlZ2lzdHJhdGlvbkludml0ZUJhc2UsIFJlZ2lzdHJhdGlvbkludml0ZT4ge1xuICBtb2RlbENsYXNzOiB0eXBlb2YgUmVnaXN0cmF0aW9uSW52aXRlID0gUmVnaXN0cmF0aW9uSW52aXRlO1xuICB1cmw6IHN0cmluZyA9ICd1c2Vycy9pbnZpdGUnO1xufVxuIl19