myrtex-mf-competition 1.0.21 → 1.0.23
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.
- package/esm2020/lib/modules/competition-header/store/competition-header.effects.mjs +86 -175
- package/fesm2015/myrtex-mf-competition.mjs +81 -176
- package/fesm2015/myrtex-mf-competition.mjs.map +1 -1
- package/fesm2020/myrtex-mf-competition.mjs +81 -176
- package/fesm2020/myrtex-mf-competition.mjs.map +1 -1
- package/lib/modules/competition-header/store/competition-header.effects.d.ts +27 -1
- package/package.json +1 -1
|
@@ -1,189 +1,100 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { createEffect, ofType } from '@ngrx/effects';
|
|
3
|
+
import { select } from '@ngrx/store';
|
|
4
|
+
import { EMPTY } from 'rxjs';
|
|
5
|
+
import { catchError, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';
|
|
6
|
+
import * as CompetitionHeaderActions from './competition-header.actions';
|
|
7
|
+
import { ECompetitionHeaderActions } from './competition-header.actions';
|
|
8
|
+
import { MessageSeverity, selectCompetitionId, Utilities } from 'myrtex-mf-ui-composite';
|
|
2
9
|
import * as i0 from "@angular/core";
|
|
3
10
|
import * as i1 from "../services/competition-header.service";
|
|
4
11
|
import * as i2 from "@ngrx/effects";
|
|
5
12
|
import * as i3 from "@ngrx/store";
|
|
6
|
-
|
|
7
|
-
// AlertService,
|
|
8
|
-
// CompetitionVersionStatusEnum,
|
|
9
|
-
// MessageSeverity,
|
|
10
|
-
// selectCompetitionId,
|
|
11
|
-
// Utilities
|
|
12
|
-
// } from 'myrtex-mf-ui-composite';
|
|
13
|
+
import * as i4 from "myrtex-mf-ui-composite";
|
|
13
14
|
export class CompetitionHeaderEffects {
|
|
14
|
-
|
|
15
|
-
// ofType(ECompetitionHeaderActions.LoadCompetitionHeader),
|
|
16
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
17
|
-
// switchMap(([, competitionId]) => {
|
|
18
|
-
// return this.competitionHeaderService.getHeader(competitionId).pipe(
|
|
19
|
-
// map((result: CompetitionHeaderVersionModel) => CompetitionHeaderActions.loadCompetitionHeaderSuccess({competitionHeader: result})),
|
|
20
|
-
// catchError((err) => {
|
|
21
|
-
// this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
22
|
-
// return EMPTY;
|
|
23
|
-
// })
|
|
24
|
-
// );
|
|
25
|
-
// })));
|
|
26
|
-
//
|
|
27
|
-
// deleteCompetitionVersion$ = createEffect(() => this.actions$.pipe(
|
|
28
|
-
// ofType(ECompetitionHeaderActions.DeleteCompetitionVersion),
|
|
29
|
-
// map((action: { versionId: string }) => action.versionId),
|
|
30
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
31
|
-
// switchMap(([versionId, competitionId]) => {
|
|
32
|
-
// return this.competitionHeaderService.deleteVersion(competitionId, versionId).pipe(
|
|
33
|
-
// map((result: boolean) => CompetitionHeaderActions.deleteCompetitionVersionSuccess({ versionId })),
|
|
34
|
-
// catchError((err) => {
|
|
35
|
-
// this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
36
|
-
// return EMPTY;
|
|
37
|
-
// })
|
|
38
|
-
// );
|
|
39
|
-
// })));
|
|
40
|
-
//
|
|
41
|
-
// deleteCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(
|
|
42
|
-
// ofType(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess),
|
|
43
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
44
|
-
// tap(([, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}`)
|
|
45
|
-
// ), {dispatch: false});
|
|
46
|
-
//
|
|
47
|
-
// createCompetitionVersion$ = createEffect(() => this.actions$.pipe(
|
|
48
|
-
// ofType(ECompetitionHeaderActions.CreateCompetitionVersion),
|
|
49
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
50
|
-
// switchMap(([, competitionId]) => {
|
|
51
|
-
// return this.competitionHeaderService.createVersion(competitionId).pipe(
|
|
52
|
-
// map((result: string) => CompetitionHeaderActions.createCompetitionVersionSuccess({ versionId: result })),
|
|
53
|
-
// catchError((err) => {
|
|
54
|
-
// this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
55
|
-
// return EMPTY;
|
|
56
|
-
// })
|
|
57
|
-
// );
|
|
58
|
-
// })));
|
|
59
|
-
//
|
|
60
|
-
// createCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(
|
|
61
|
-
// ofType(ECompetitionHeaderActions.CreateCompetitionVersionSuccess),
|
|
62
|
-
// map((action: { versionId: string }) => action.versionId),
|
|
63
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
64
|
-
// tap(([versionId, competitionId]) =>
|
|
65
|
-
// window.location.href = `/application/competitions/item?competitionId=${competitionId}&versionId=${versionId}`)
|
|
66
|
-
// ), {dispatch: false});
|
|
67
|
-
//
|
|
68
|
-
// competitionVersionChangeStatus$ = createEffect(() => this.actions$.pipe(
|
|
69
|
-
// ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatus),
|
|
70
|
-
// map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
|
|
71
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
72
|
-
// switchMap(([action, competitionId]) => {
|
|
73
|
-
// return this.competitionHeaderService.versionChangeStatus(competitionId, action.versionId, action.status).pipe(
|
|
74
|
-
// map((result: boolean) => {
|
|
75
|
-
// return CompetitionHeaderActions.competitionVersionChangeStatusSuccess({
|
|
76
|
-
// versionId: action.versionId,
|
|
77
|
-
// status: action.status
|
|
78
|
-
// });
|
|
79
|
-
// }),
|
|
80
|
-
// catchError((err) => {
|
|
81
|
-
// this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
82
|
-
// return EMPTY;
|
|
83
|
-
// })
|
|
84
|
-
// );
|
|
85
|
-
// })));
|
|
86
|
-
//
|
|
87
|
-
// competitionVersionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
|
|
88
|
-
// ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess),
|
|
89
|
-
// map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
|
|
90
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
91
|
-
// tap(([action, competitionId]) => {
|
|
92
|
-
// if (action.status === CompetitionVersionStatusEnum.Validation) {
|
|
93
|
-
// window.location.href = `/m-data/minfin/selection/edit?competitionId=${competitionId}&versionId=${action.versionId}`;
|
|
94
|
-
// } else {
|
|
95
|
-
// window.location.reload();
|
|
96
|
-
// }
|
|
97
|
-
// })
|
|
98
|
-
// ), { dispatch: false });
|
|
99
|
-
//
|
|
100
|
-
// selectCompetitionVersion$ = createEffect(() => this.actions$.pipe(
|
|
101
|
-
// ofType(ECompetitionHeaderActions.SelectCompetitionVersion),
|
|
102
|
-
// map((action: { versionId: string }) => action.versionId),
|
|
103
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
104
|
-
// tap(([versionId, competitionId]) => {
|
|
105
|
-
// const newUri = Utilities.updateQueryStringParameter(window.location.href, 'versionId', versionId);
|
|
106
|
-
// window.location.href = newUri;
|
|
107
|
-
// })
|
|
108
|
-
// ), {dispatch: false});
|
|
109
|
-
//
|
|
110
|
-
// activateCompetition$ = createEffect(() => (this.actions$.pipe(
|
|
111
|
-
// ofType(ECompetitionHeaderActions.ActivateCompetition),
|
|
112
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
113
|
-
// switchMap(([, competitionId]) => {
|
|
114
|
-
// return this.competitionHeaderService.activate(competitionId).pipe(
|
|
115
|
-
// map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
|
|
116
|
-
// catchError((err, caught) => {
|
|
117
|
-
// this.alertService.showStickyMessage(err, 'Ошибка активации', MessageSeverity.error);
|
|
118
|
-
// return EMPTY;
|
|
119
|
-
// })
|
|
120
|
-
// );
|
|
121
|
-
// })
|
|
122
|
-
// )));
|
|
123
|
-
//
|
|
124
|
-
// pauseCompetition$ = createEffect(() => (this.actions$.pipe(
|
|
125
|
-
// ofType(ECompetitionHeaderActions.PauseCompetition),
|
|
126
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
127
|
-
// switchMap(([, competitionId]) => {
|
|
128
|
-
// return this.competitionHeaderService.pause(competitionId).pipe(
|
|
129
|
-
// map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
|
|
130
|
-
// catchError((err, caught) => {
|
|
131
|
-
// this.alertService.showStickyMessage(err, 'Ошибка приостановки', MessageSeverity.error);
|
|
132
|
-
// return EMPTY;
|
|
133
|
-
// })
|
|
134
|
-
// );
|
|
135
|
-
// })
|
|
136
|
-
// )));
|
|
137
|
-
//
|
|
138
|
-
// completeCompetition$ = createEffect(() => (this.actions$.pipe(
|
|
139
|
-
// ofType(ECompetitionHeaderActions.CompleteCompetition),
|
|
140
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
141
|
-
// switchMap(([, competitionId]) => {
|
|
142
|
-
// return this.competitionHeaderService.complete(competitionId).pipe(
|
|
143
|
-
// map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
|
|
144
|
-
// catchError((err, caught) => {
|
|
145
|
-
// this.alertService.showStickyMessage(err, 'Ошибка при завершении', MessageSeverity.error);
|
|
146
|
-
// return EMPTY;
|
|
147
|
-
// })
|
|
148
|
-
// );
|
|
149
|
-
// })
|
|
150
|
-
// )));
|
|
151
|
-
//
|
|
152
|
-
// cancelCompetition$ = createEffect(() => (this.actions$.pipe(
|
|
153
|
-
// ofType(ECompetitionHeaderActions.CancelCompetition),
|
|
154
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
155
|
-
// switchMap(([, competitionId]) => {
|
|
156
|
-
// return this.competitionHeaderService.cancel(competitionId).pipe(
|
|
157
|
-
// map((result: any) => CompetitionHeaderActions.competitionChangeStatusSuccess()),
|
|
158
|
-
// catchError((err, caught) => {
|
|
159
|
-
// this.alertService.showStickyMessage(err, 'Ошибка при отмене', MessageSeverity.error);
|
|
160
|
-
// return EMPTY;
|
|
161
|
-
// })
|
|
162
|
-
// );
|
|
163
|
-
// })
|
|
164
|
-
// )));
|
|
165
|
-
//
|
|
166
|
-
// cancelCompetitionWithValidation$ = createEffect(() => this.actions$.pipe(
|
|
167
|
-
// ofType(ECompetitionHeaderActions.CancelCompetitionWithValidation),
|
|
168
|
-
// map((action: { versionId: string }) => action.versionId),
|
|
169
|
-
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
170
|
-
// tap(([versionId, competitionId]) =>
|
|
171
|
-
// window.location.href = `/m-data/minfin/selection/edit/cancel?competitionId=${competitionId}&versionId=${versionId}`)
|
|
172
|
-
// ), {dispatch: false});
|
|
173
|
-
//
|
|
174
|
-
// competitionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
|
|
175
|
-
// ofType(ECompetitionHeaderActions.CompetitionChangeStatusSuccess),
|
|
176
|
-
// tap(() => window.location.reload())
|
|
177
|
-
// ), {dispatch: false});
|
|
178
|
-
constructor(competitionHeaderService, actions$, store) {
|
|
15
|
+
constructor(competitionHeaderService, actions$, store, alertService) {
|
|
179
16
|
this.competitionHeaderService = competitionHeaderService;
|
|
180
17
|
this.actions$ = actions$;
|
|
181
18
|
this.store = store;
|
|
19
|
+
this.alertService = alertService;
|
|
20
|
+
this.loadCompetitionHeader$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.LoadCompetitionHeader), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
|
|
21
|
+
return this.competitionHeaderService.getHeader(competitionId).pipe(map((result) => CompetitionHeaderActions.loadCompetitionHeaderSuccess({ competitionHeader: result })), catchError((err) => {
|
|
22
|
+
this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
23
|
+
return EMPTY;
|
|
24
|
+
}));
|
|
25
|
+
})));
|
|
26
|
+
this.deleteCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([versionId, competitionId]) => {
|
|
27
|
+
return this.competitionHeaderService.deleteVersion(competitionId, versionId).pipe(map((result) => CompetitionHeaderActions.deleteCompetitionVersionSuccess({ versionId })), catchError((err) => {
|
|
28
|
+
this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
29
|
+
return EMPTY;
|
|
30
|
+
}));
|
|
31
|
+
})));
|
|
32
|
+
this.deleteCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.DeleteCompetitionVersionSuccess), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}`)), { dispatch: false });
|
|
33
|
+
this.createCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersion), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
|
|
34
|
+
return this.competitionHeaderService.createVersion(competitionId).pipe(map((result) => CompetitionHeaderActions.createCompetitionVersionSuccess({ versionId: result })), catchError((err) => {
|
|
35
|
+
this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
36
|
+
return EMPTY;
|
|
37
|
+
}));
|
|
38
|
+
})));
|
|
39
|
+
this.createCompetitionVersionSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CreateCompetitionVersionSuccess), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/application/competitions/item?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
|
|
40
|
+
this.competitionVersionChangeStatus$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatus), map((action) => action), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([action, competitionId]) => {
|
|
41
|
+
return this.competitionHeaderService.versionChangeStatus(competitionId, action.versionId, action.status).pipe(map((result) => {
|
|
42
|
+
return CompetitionHeaderActions.competitionVersionChangeStatusSuccess({
|
|
43
|
+
versionId: action.versionId,
|
|
44
|
+
status: action.status
|
|
45
|
+
});
|
|
46
|
+
}), catchError((err) => {
|
|
47
|
+
this.alertService.showMessage(err, null, MessageSeverity.error);
|
|
48
|
+
return EMPTY;
|
|
49
|
+
}));
|
|
50
|
+
})));
|
|
51
|
+
// competitionVersionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(
|
|
52
|
+
// ofType(ECompetitionHeaderActions.CompetitionVersionChangeStatusSuccess),
|
|
53
|
+
// map((action: { versionId: string, status: CompetitionVersionStatusEnum }) => action),
|
|
54
|
+
// withLatestFrom(this.store.pipe(select(selectCompetitionId))),
|
|
55
|
+
// tap(([action, competitionId]) => {
|
|
56
|
+
// if (action.status === CompetitionVersionStatusEnum.Validation) {
|
|
57
|
+
// window.location.href = `/m-data/minfin/selection/edit?competitionId=${competitionId}&versionId=${action.versionId}`;
|
|
58
|
+
// } else {
|
|
59
|
+
// window.location.reload();
|
|
60
|
+
// }
|
|
61
|
+
// })
|
|
62
|
+
// ), { dispatch: false });
|
|
63
|
+
this.selectCompetitionVersion$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.SelectCompetitionVersion), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => {
|
|
64
|
+
const newUri = Utilities.updateQueryStringParameter(window.location.href, 'versionId', versionId);
|
|
65
|
+
window.location.href = newUri;
|
|
66
|
+
})), { dispatch: false });
|
|
67
|
+
this.activateCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.ActivateCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
|
|
68
|
+
return this.competitionHeaderService.activate(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
|
|
69
|
+
this.alertService.showStickyMessage(err, 'Ошибка активации', MessageSeverity.error);
|
|
70
|
+
return EMPTY;
|
|
71
|
+
}));
|
|
72
|
+
}))));
|
|
73
|
+
this.pauseCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.PauseCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
|
|
74
|
+
return this.competitionHeaderService.pause(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
|
|
75
|
+
this.alertService.showStickyMessage(err, 'Ошибка приостановки', MessageSeverity.error);
|
|
76
|
+
return EMPTY;
|
|
77
|
+
}));
|
|
78
|
+
}))));
|
|
79
|
+
this.completeCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CompleteCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
|
|
80
|
+
return this.competitionHeaderService.complete(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
|
|
81
|
+
this.alertService.showStickyMessage(err, 'Ошибка при завершении', MessageSeverity.error);
|
|
82
|
+
return EMPTY;
|
|
83
|
+
}));
|
|
84
|
+
}))));
|
|
85
|
+
this.cancelCompetition$ = createEffect(() => (this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetition), withLatestFrom(this.store.pipe(select(selectCompetitionId))), switchMap(([, competitionId]) => {
|
|
86
|
+
return this.competitionHeaderService.cancel(competitionId).pipe(map((result) => CompetitionHeaderActions.competitionChangeStatusSuccess()), catchError((err, caught) => {
|
|
87
|
+
this.alertService.showStickyMessage(err, 'Ошибка при отмене', MessageSeverity.error);
|
|
88
|
+
return EMPTY;
|
|
89
|
+
}));
|
|
90
|
+
}))));
|
|
91
|
+
this.cancelCompetitionWithValidation$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CancelCompetitionWithValidation), map((action) => action.versionId), withLatestFrom(this.store.pipe(select(selectCompetitionId))), tap(([versionId, competitionId]) => window.location.href = `/m-data/minfin/selection/edit/cancel?competitionId=${competitionId}&versionId=${versionId}`)), { dispatch: false });
|
|
92
|
+
this.competitionChangeStatusSuccess$ = createEffect(() => this.actions$.pipe(ofType(ECompetitionHeaderActions.CompetitionChangeStatusSuccess), tap(() => window.location.reload())), { dispatch: false });
|
|
182
93
|
}
|
|
183
94
|
}
|
|
184
|
-
CompetitionHeaderEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, deps: [{ token: i1.CompetitionHeaderService }, { token: i2.Actions }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
95
|
+
CompetitionHeaderEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, deps: [{ token: i1.CompetitionHeaderService }, { token: i2.Actions }, { token: i3.Store }, { token: i4.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
185
96
|
CompetitionHeaderEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects });
|
|
186
97
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: CompetitionHeaderEffects, decorators: [{
|
|
187
98
|
type: Injectable
|
|
188
|
-
}], ctorParameters: function () { return [{ type: i1.CompetitionHeaderService }, { type: i2.Actions }, { type: i3.Store }]; } });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtY29tcGV0aXRpb24vc3JjL2xpYi9tb2R1bGVzL2NvbXBldGl0aW9uLWhlYWRlci9zdG9yZS9jb21wZXRpdGlvbi1oZWFkZXIuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7OztBQVN6QyxXQUFXO0FBQ1gsa0JBQWtCO0FBQ2xCLGtDQUFrQztBQUNsQyxxQkFBcUI7QUFDckIseUJBQXlCO0FBQ3pCLGNBQWM7QUFDZCxtQ0FBbUM7QUFJbkMsTUFBTSxPQUFPLHdCQUF3QjtJQUVuQyxrRUFBa0U7SUFDbEUsNkRBQTZEO0lBQzdELGtFQUFrRTtJQUNsRSx1Q0FBdUM7SUFDdkMsMEVBQTBFO0lBQzFFLDRJQUE0STtJQUM1SSw4QkFBOEI7SUFDOUIsMkVBQTJFO0lBQzNFLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixFQUFFO0lBQ0YscUVBQXFFO0lBQ3JFLGdFQUFnRTtJQUNoRSw4REFBOEQ7SUFDOUQsa0VBQWtFO0lBQ2xFLGdEQUFnRDtJQUNoRCx5RkFBeUY7SUFDekYsMkdBQTJHO0lBQzNHLDhCQUE4QjtJQUM5QiwyRUFBMkU7SUFDM0Usd0JBQXdCO0lBQ3hCLFdBQVc7SUFDWCxTQUFTO0lBQ1QsVUFBVTtJQUNWLEVBQUU7SUFDRiw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQ3ZFLGtFQUFrRTtJQUNsRSx1SEFBdUg7SUFDdkgseUJBQXlCO0lBQ3pCLEVBQUU7SUFDRixxRUFBcUU7SUFDckUsZ0VBQWdFO0lBQ2hFLGtFQUFrRTtJQUNsRSx1Q0FBdUM7SUFDdkMsOEVBQThFO0lBQzlFLGtIQUFrSDtJQUNsSCw4QkFBOEI7SUFDOUIsMkVBQTJFO0lBQzNFLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixFQUFFO0lBQ0YsNEVBQTRFO0lBQzVFLHVFQUF1RTtJQUN2RSw4REFBOEQ7SUFDOUQsa0VBQWtFO0lBQ2xFLHdDQUF3QztJQUN4QyxxSEFBcUg7SUFDckgseUJBQXlCO0lBQ3pCLEVBQUU7SUFDRiwyRUFBMkU7SUFDM0Usc0VBQXNFO0lBQ3RFLDBGQUEwRjtJQUMxRixrRUFBa0U7SUFDbEUsNkNBQTZDO0lBQzdDLHFIQUFxSDtJQUNySCxtQ0FBbUM7SUFDbkMsa0ZBQWtGO0lBQ2xGLHlDQUF5QztJQUN6QyxrQ0FBa0M7SUFDbEMsY0FBYztJQUNkLFlBQVk7SUFDWiw4QkFBOEI7SUFDOUIsMkVBQTJFO0lBQzNFLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsU0FBUztJQUNULFVBQVU7SUFDVixFQUFFO0lBQ0Ysb0ZBQW9GO0lBQ3BGLCtFQUErRTtJQUMvRSw0RkFBNEY7SUFDNUYsb0VBQW9FO0lBQ3BFLHlDQUF5QztJQUN6Qyx5RUFBeUU7SUFDekUsK0hBQStIO0lBQy9ILGlCQUFpQjtJQUNqQixvQ0FBb0M7SUFDcEMsVUFBVTtJQUNWLFNBQVM7SUFDVCw2QkFBNkI7SUFDN0IsRUFBRTtJQUNGLHFFQUFxRTtJQUNyRSxnRUFBZ0U7SUFDaEUsOERBQThEO0lBQzlELGtFQUFrRTtJQUNsRSwwQ0FBMEM7SUFDMUMseUdBQXlHO0lBQ3pHLHFDQUFxQztJQUNyQyxPQUFPO0lBQ1AseUJBQXlCO0lBQ3pCLEVBQUU7SUFDRixpRUFBaUU7SUFDakUsMkRBQTJEO0lBQzNELGtFQUFrRTtJQUNsRSx1Q0FBdUM7SUFDdkMseUVBQXlFO0lBQ3pFLHlGQUF5RjtJQUN6RixzQ0FBc0M7SUFDdEMsK0ZBQStGO0lBQy9GLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsU0FBUztJQUNULE9BQU87SUFDUCxPQUFPO0lBQ1AsRUFBRTtJQUNGLDhEQUE4RDtJQUM5RCx3REFBd0Q7SUFDeEQsa0VBQWtFO0lBQ2xFLHVDQUF1QztJQUN2QyxzRUFBc0U7SUFDdEUseUZBQXlGO0lBQ3pGLHNDQUFzQztJQUN0QyxrR0FBa0c7SUFDbEcsd0JBQXdCO0lBQ3hCLFdBQVc7SUFDWCxTQUFTO0lBQ1QsT0FBTztJQUNQLE9BQU87SUFDUCxFQUFFO0lBQ0YsaUVBQWlFO0lBQ2pFLDJEQUEyRDtJQUMzRCxrRUFBa0U7SUFDbEUsdUNBQXVDO0lBQ3ZDLHlFQUF5RTtJQUN6RSx5RkFBeUY7SUFDekYsc0NBQXNDO0lBQ3RDLG9HQUFvRztJQUNwRyx3QkFBd0I7SUFDeEIsV0FBVztJQUNYLFNBQVM7SUFDVCxPQUFPO0lBQ1AsT0FBTztJQUNQLEVBQUU7SUFDRiwrREFBK0Q7SUFDL0QseURBQXlEO0lBQ3pELGtFQUFrRTtJQUNsRSx1Q0FBdUM7SUFDdkMsdUVBQXVFO0lBQ3ZFLHlGQUF5RjtJQUN6RixzQ0FBc0M7SUFDdEMsZ0dBQWdHO0lBQ2hHLHdCQUF3QjtJQUN4QixXQUFXO0lBQ1gsU0FBUztJQUNULE9BQU87SUFDUCxPQUFPO0lBQ1AsRUFBRTtJQUNGLDRFQUE0RTtJQUM1RSx1RUFBdUU7SUFDdkUsOERBQThEO0lBQzlELGtFQUFrRTtJQUNsRSx3Q0FBd0M7SUFDeEMsMkhBQTJIO0lBQzNILHlCQUF5QjtJQUN6QixFQUFFO0lBQ0YsMkVBQTJFO0lBQzNFLHNFQUFzRTtJQUN0RSx3Q0FBd0M7SUFDeEMseUJBQXlCO0lBRXpCLFlBQW9CLHdCQUFrRCxFQUNsRCxRQUFpQixFQUNqQixLQUFZO1FBRlosNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87SUFHaEMsQ0FBQzs7c0hBNUtVLHdCQUF3QjswSEFBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcclxuaW1wb3J0IHtzZWxlY3QsIFN0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbi8vIGltcG9ydCB7RU1QVFl9IGZyb20gJ3J4anMnO1xyXG4vLyBpbXBvcnQge2NhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbi8vIGltcG9ydCAqIGFzIENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucyBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuLy8gaW1wb3J0IHtjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uLCBFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zfSBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuLy8gaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclZlcnNpb25Nb2RlbH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLWhlYWRlci12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2NvbXBldGl0aW9uLWhlYWRlci5zZXJ2aWNlJztcclxuLy8gaW1wb3J0IHtcclxuLy8gICBBbGVydFNlcnZpY2UsXHJcbi8vICAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSxcclxuLy8gICBNZXNzYWdlU2V2ZXJpdHksXHJcbi8vICAgc2VsZWN0Q29tcGV0aXRpb25JZCxcclxuLy8gICBVdGlsaXRpZXNcclxuLy8gfSBmcm9tICdteXJ0ZXgtbWYtdWktY29tcG9zaXRlJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb21wZXRpdGlvbkhlYWRlckVmZmVjdHMge1xyXG5cclxuICAvLyBsb2FkQ29tcGV0aXRpb25IZWFkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkxvYWRDb21wZXRpdGlvbkhlYWRlciksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5nZXRIZWFkZXIoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAvLyAgICAgICBtYXAoKHJlc3VsdDogQ29tcGV0aXRpb25IZWFkZXJWZXJzaW9uTW9kZWwpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5sb2FkQ29tcGV0aXRpb25IZWFkZXJTdWNjZXNzKHtjb21wZXRpdGlvbkhlYWRlcjogcmVzdWx0fSkpLFxyXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyLCBudWxsLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KSkpO1xyXG4gIC8vXHJcbiAgLy8gZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5EZWxldGVDb21wZXRpdGlvblZlcnNpb24pLFxyXG4gIC8vICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5kZWxldGVWZXJzaW9uKGNvbXBldGl0aW9uSWQsIHZlcnNpb25JZCkucGlwZShcclxuICAvLyAgICAgICBtYXAoKHJlc3VsdDogYm9vbGVhbikgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MoeyB2ZXJzaW9uSWQgfSkpLFxyXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyLCBudWxsLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KSkpO1xyXG4gIC8vXHJcbiAgLy8gZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuRGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uU3VjY2VzcyksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICB0YXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvYXBwbGljYXRpb24vY29tcGV0aXRpb25zL2l0ZW0/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9YClcclxuICAvLyApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcbiAgLy9cclxuICAvLyBjcmVhdGVDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5jcmVhdGVWZXJzaW9uKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IHN0cmluZykgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MoeyB2ZXJzaW9uSWQ6IHJlc3VsdCB9KSksXHJcbiAgLy8gICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgLy8gICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgICAgKTtcclxuICAvLyAgIH0pKSk7XHJcbiAgLy9cclxuICAvLyBjcmVhdGVDb21wZXRpdGlvblZlcnNpb25TdWNjZXNzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5DcmVhdGVDb21wZXRpdGlvblZlcnNpb25TdWNjZXNzKSxcclxuICAvLyAgIG1hcCgoYWN0aW9uOiB7IHZlcnNpb25JZDogc3RyaW5nIH0pID0+IGFjdGlvbi52ZXJzaW9uSWQpLFxyXG4gIC8vICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gIC8vICAgdGFwKChbdmVyc2lvbklkLCBjb21wZXRpdGlvbklkXSkgPT5cclxuICAvLyAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL2FwcGxpY2F0aW9uL2NvbXBldGl0aW9ucy9pdGVtP2NvbXBldGl0aW9uSWQ9JHtjb21wZXRpdGlvbklkfSZ2ZXJzaW9uSWQ9JHt2ZXJzaW9uSWR9YClcclxuICAvLyApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcbiAgLy9cclxuICAvLyBjb21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1cyksXHJcbiAgLy8gICBtYXAoKGFjdGlvbjogeyB2ZXJzaW9uSWQ6IHN0cmluZywgc3RhdHVzOiBDb21wZXRpdGlvblZlcnNpb25TdGF0dXNFbnVtIH0pID0+IGFjdGlvbiksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFthY3Rpb24sIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS52ZXJzaW9uQ2hhbmdlU3RhdHVzKGNvbXBldGl0aW9uSWQsIGFjdGlvbi52ZXJzaW9uSWQsIGFjdGlvbi5zdGF0dXMpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAvLyAgICAgICAgIHJldHVybiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzU3VjY2Vzcyh7XHJcbiAgLy8gICAgICAgICAgIHZlcnNpb25JZDogYWN0aW9uLnZlcnNpb25JZCxcclxuICAvLyAgICAgICAgICAgc3RhdHVzOiBhY3Rpb24uc3RhdHVzXHJcbiAgLy8gICAgICAgICB9KTtcclxuICAvLyAgICAgICB9KSxcclxuICAvLyAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dNZXNzYWdlKGVyciwgbnVsbCwgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAvLyAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgfSkpKTtcclxuICAvL1xyXG4gIC8vICAgY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKSxcclxuICAvLyAgICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcsIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSB9KSA9PiBhY3Rpb24pLFxyXG4gIC8vICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICAgIHRhcCgoW2FjdGlvbiwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAvLyAgICAgICBpZiAoYWN0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5WYWxpZGF0aW9uKSB7XHJcbiAgLy8gICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdD9jb21wZXRpdGlvbklkPSR7Y29tcGV0aXRpb25JZH0mdmVyc2lvbklkPSR7YWN0aW9uLnZlcnNpb25JZH1gO1xyXG4gIC8vICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KVxyXG4gIC8vICAgKSwgeyBkaXNwYXRjaDogZmFsc2UgfSk7XHJcbiAgLy9cclxuICAvLyBzZWxlY3RDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLlNlbGVjdENvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgLy8gICBtYXAoKGFjdGlvbjogeyB2ZXJzaW9uSWQ6IHN0cmluZyB9KSA9PiBhY3Rpb24udmVyc2lvbklkKSxcclxuICAvLyAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAvLyAgIHRhcCgoW3ZlcnNpb25JZCwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAvLyAgICAgY29uc3QgbmV3VXJpID0gVXRpbGl0aWVzLnVwZGF0ZVF1ZXJ5U3RyaW5nUGFyYW1ldGVyKHdpbmRvdy5sb2NhdGlvbi5ocmVmLCAndmVyc2lvbklkJywgdmVyc2lvbklkKTtcclxuICAvLyAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBuZXdVcmk7XHJcbiAgLy8gICB9KVxyXG4gIC8vICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuICAvL1xyXG4gIC8vIGFjdGl2YXRlQ29tcGV0aXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+ICh0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5BY3RpdmF0ZUNvbXBldGl0aW9uKSxcclxuICAvLyAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAvLyAgIHN3aXRjaE1hcCgoWywgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAvLyAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmFjdGl2YXRlKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcygpKSxcclxuICAvLyAgICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd1N0aWNreU1lc3NhZ2UoZXJyLCAn0J7RiNC40LHQutCwINCw0LrRgtC40LLQsNGG0LjQuCcsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgLy8gICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgLy8gICAgICAgfSlcclxuICAvLyAgICAgKTtcclxuICAvLyAgIH0pXHJcbiAgLy8gKSkpO1xyXG4gIC8vXHJcbiAgLy8gcGF1c2VDb21wZXRpdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gKHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLlBhdXNlQ29tcGV0aXRpb24pLFxyXG4gIC8vICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gIC8vICAgc3dpdGNoTWFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UucGF1c2UoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAvLyAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuY29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKCkpLFxyXG4gIC8vICAgICAgIGNhdGNoRXJyb3IoKGVyciwgY2F1Z2h0KSA9PiB7XHJcbiAgLy8gICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93U3RpY2t5TWVzc2FnZShlcnIsICfQntGI0LjQsdC60LAg0L/RgNC40L7RgdGC0LDQvdC+0LLQutC4JywgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAvLyAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAvLyAgICAgICB9KVxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgfSlcclxuICAvLyApKSk7XHJcbiAgLy9cclxuICAvLyBjb21wbGV0ZUNvbXBldGl0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiAodGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQ29tcGxldGVDb21wZXRpdGlvbiksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5jb21wbGV0ZShjb21wZXRpdGlvbklkKS5waXBlKFxyXG4gIC8vICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5jb21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MoKSksXHJcbiAgLy8gICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAvLyAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dTdGlja3lNZXNzYWdlKGVyciwgJ9Ce0YjQuNCx0LrQsCDQv9GA0Lgg0LfQsNCy0LXRgNGI0LXQvdC40LgnLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KVxyXG4gIC8vICkpKTtcclxuICAvL1xyXG4gIC8vIGNhbmNlbENvbXBldGl0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiAodGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQ2FuY2VsQ29tcGV0aXRpb24pLFxyXG4gIC8vICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gIC8vICAgc3dpdGNoTWFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UuY2FuY2VsKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgLy8gICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcygpKSxcclxuICAvLyAgICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gIC8vICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd1N0aWNreU1lc3NhZ2UoZXJyLCAn0J7RiNC40LHQutCwINC/0YDQuCDQvtGC0LzQtdC90LUnLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gIC8vICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gIC8vICAgICAgIH0pXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9KVxyXG4gIC8vICkpKTtcclxuICAvL1xyXG4gIC8vIGNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAvLyAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24pLFxyXG4gIC8vICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgLy8gICB0YXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PlxyXG4gIC8vICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdC9jYW5jZWw/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9JnZlcnNpb25JZD0ke3ZlcnNpb25JZH1gKVxyXG4gIC8vICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuICAvL1xyXG4gIC8vIGNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gIC8vICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQ29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKSxcclxuICAvLyAgIHRhcCgoKSA9PiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkpXHJcbiAgLy8gKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXBldGl0aW9uSGVhZGVyU2VydmljZTogQ29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXHJcbiAgICAgICAgICAgICAgLy8gcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxyXG4gICkge1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
99
|
+
}], ctorParameters: function () { return [{ type: i1.CompetitionHeaderService }, { type: i2.Actions }, { type: i3.Store }, { type: i4.AlertService }]; } });
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGV0aXRpb24taGVhZGVyLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtbWYtY29tcGV0aXRpb24vc3JjL2xpYi9tb2R1bGVzL2NvbXBldGl0aW9uLWhlYWRlci9zdG9yZS9jb21wZXRpdGlvbi1oZWFkZXIuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBVSxZQUFZLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQVEsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMzQixPQUFPLEVBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sS0FBSyx3QkFBd0IsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RSxPQUFPLEVBQWtDLHlCQUF5QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHeEcsT0FBTyxFQUdMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsU0FBUyxFQUNWLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUloQyxNQUFNLE9BQU8sd0JBQXdCO0lBdUtuQyxZQUFvQix3QkFBa0QsRUFDbEQsUUFBaUIsRUFDakIsS0FBWSxFQUNaLFlBQTBCO1FBSDFCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osaUJBQVksR0FBWixZQUFZLENBQWM7UUF4SzlDLDJCQUFzQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FD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QUMsQ0FBQztRQUVKLHFDQUFnQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdEUsTUFBTSxDQUFDLHlCQUF5QixDQUFDLCtCQUErQixDQUFDLEVBQ2pFLEdBQUcsQ0FBQyxDQUFDLE1BQTZCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFDeEQsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFDNUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxzREFBc0QsYUFBYSxjQUFjLFNBQVMsRUFBRSxDQUFDLENBQ3ZILEVBQUUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUV0QixvQ0FBK0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3JFLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyw4QkFBOEIsQ0FBQyxFQUNoRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUNwQyxFQUFFLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFPdEIsQ0FBQzs7c0hBNUtVLHdCQUF3QjswSEFBeEIsd0JBQXdCOzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0FjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcclxuaW1wb3J0IHtzZWxlY3QsIFN0b3JlfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7RU1QVFl9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucyBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuaW1wb3J0IHtjYW5jZWxDb21wZXRpdGlvbldpdGhWYWxpZGF0aW9uLCBFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zfSBmcm9tICcuL2NvbXBldGl0aW9uLWhlYWRlci5hY3Rpb25zJztcclxuaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclZlcnNpb25Nb2RlbH0gZnJvbSAnLi4vbW9kZWxzL2NvbXBldGl0aW9uLWhlYWRlci12ZXJzaW9uLm1vZGVsJztcclxuaW1wb3J0IHtDb21wZXRpdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2NvbXBldGl0aW9uLWhlYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBBbGVydFNlcnZpY2UsXHJcbiAgQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSxcclxuICBNZXNzYWdlU2V2ZXJpdHksXHJcbiAgc2VsZWN0Q29tcGV0aXRpb25JZCxcclxuICBVdGlsaXRpZXNcclxufSBmcm9tICdteXJ0ZXgtbWYtdWktY29tcG9zaXRlJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb21wZXRpdGlvbkhlYWRlckVmZmVjdHMge1xyXG5cclxuICBsb2FkQ29tcGV0aXRpb25IZWFkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkxvYWRDb21wZXRpdGlvbkhlYWRlciksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5nZXRIZWFkZXIoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAgICAgICBtYXAoKHJlc3VsdDogQ29tcGV0aXRpb25IZWFkZXJWZXJzaW9uTW9kZWwpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5sb2FkQ29tcGV0aXRpb25IZWFkZXJTdWNjZXNzKHtjb21wZXRpdGlvbkhlYWRlcjogcmVzdWx0fSkpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd01lc3NhZ2UoZXJyLCBudWxsLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KSkpO1xyXG5cclxuICBkZWxldGVDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgICBtYXAoKGFjdGlvbjogeyB2ZXJzaW9uSWQ6IHN0cmluZyB9KSA9PiBhY3Rpb24udmVyc2lvbklkKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAgIHN3aXRjaE1hcCgoW3ZlcnNpb25JZCwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmRlbGV0ZVZlcnNpb24oY29tcGV0aXRpb25JZCwgdmVyc2lvbklkKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBib29sZWFuKSA9PiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuZGVsZXRlQ29tcGV0aXRpb25WZXJzaW9uU3VjY2Vzcyh7IHZlcnNpb25JZCB9KSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKSk7XHJcblxyXG4gIGRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkRlbGV0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MpLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgdGFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4gd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgL2FwcGxpY2F0aW9uL2NvbXBldGl0aW9ucy9pdGVtP2NvbXBldGl0aW9uSWQ9JHtjb21wZXRpdGlvbklkfWApXHJcbiAgKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBjcmVhdGVDb21wZXRpdGlvblZlcnNpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvbiksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5jcmVhdGVWZXJzaW9uKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXN1bHQ6IHN0cmluZykgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MoeyB2ZXJzaW9uSWQ6IHJlc3VsdCB9KSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKSk7XHJcblxyXG4gIGNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNyZWF0ZUNvbXBldGl0aW9uVmVyc2lvblN1Y2Nlc3MpLFxyXG4gICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICB0YXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PlxyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvYXBwbGljYXRpb24vY29tcGV0aXRpb25zL2l0ZW0/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9JnZlcnNpb25JZD0ke3ZlcnNpb25JZH1gKVxyXG4gICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuXHJcbiAgY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXMpLFxyXG4gICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcsIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSB9KSA9PiBhY3Rpb24pLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgc3dpdGNoTWFwKChbYWN0aW9uLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UudmVyc2lvbkNoYW5nZVN0YXR1cyhjb21wZXRpdGlvbklkLCBhY3Rpb24udmVyc2lvbklkLCBhY3Rpb24uc3RhdHVzKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uVmVyc2lvbkNoYW5nZVN0YXR1c1N1Y2Nlc3Moe1xyXG4gICAgICAgICAgICB2ZXJzaW9uSWQ6IGFjdGlvbi52ZXJzaW9uSWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogYWN0aW9uLnN0YXR1c1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93TWVzc2FnZShlcnIsIG51bGwsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKSk7XHJcblxyXG4gICAgLy8gY29tcGV0aXRpb25WZXJzaW9uQ2hhbmdlU3RhdHVzU3VjY2VzcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgLy8gICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvblZlcnNpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKSxcclxuICAgIC8vICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcsIHN0YXR1czogQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bSB9KSA9PiBhY3Rpb24pLFxyXG4gICAgLy8gICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICAvLyAgIHRhcCgoW2FjdGlvbiwgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgIC8vICAgICBpZiAoYWN0aW9uLnN0YXR1cyA9PT0gQ29tcGV0aXRpb25WZXJzaW9uU3RhdHVzRW51bS5WYWxpZGF0aW9uKSB7XHJcbiAgICAvLyAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdD9jb21wZXRpdGlvbklkPSR7Y29tcGV0aXRpb25JZH0mdmVyc2lvbklkPSR7YWN0aW9uLnZlcnNpb25JZH1gO1xyXG4gICAgLy8gICAgIH0gZWxzZSB7XHJcbiAgICAvLyAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KVxyXG4gICAgLy8gKSwgeyBkaXNwYXRjaDogZmFsc2UgfSk7XHJcblxyXG4gIHNlbGVjdENvbXBldGl0aW9uVmVyc2lvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuU2VsZWN0Q29tcGV0aXRpb25WZXJzaW9uKSxcclxuICAgIG1hcCgoYWN0aW9uOiB7IHZlcnNpb25JZDogc3RyaW5nIH0pID0+IGFjdGlvbi52ZXJzaW9uSWQpLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgdGFwKChbdmVyc2lvbklkLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdVcmkgPSBVdGlsaXRpZXMudXBkYXRlUXVlcnlTdHJpbmdQYXJhbWV0ZXIod2luZG93LmxvY2F0aW9uLmhyZWYsICd2ZXJzaW9uSWQnLCB2ZXJzaW9uSWQpO1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG5ld1VyaTtcclxuICAgIH0pXHJcbiAgKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBhY3RpdmF0ZUNvbXBldGl0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiAodGhpcy5hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuQWN0aXZhdGVDb21wZXRpdGlvbiksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICBzd2l0Y2hNYXAoKFssIGNvbXBldGl0aW9uSWRdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbXBldGl0aW9uSGVhZGVyU2VydmljZS5hY3RpdmF0ZShjb21wZXRpdGlvbklkKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5jb21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MoKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dTdGlja3lNZXNzYWdlKGVyciwgJ9Ce0YjQuNCx0LrQsCDQsNC60YLQuNCy0LDRhtC40LgnLCBNZXNzYWdlU2V2ZXJpdHkuZXJyb3IpO1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KVxyXG4gICkpKTtcclxuXHJcbiAgcGF1c2VDb21wZXRpdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gKHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLlBhdXNlQ29tcGV0aXRpb24pLFxyXG4gICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RDb21wZXRpdGlvbklkKSkpLFxyXG4gICAgc3dpdGNoTWFwKChbLCBjb21wZXRpdGlvbklkXSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb21wZXRpdGlvbkhlYWRlclNlcnZpY2UucGF1c2UoY29tcGV0aXRpb25JZCkucGlwZShcclxuICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiBDb21wZXRpdGlvbkhlYWRlckFjdGlvbnMuY29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzKCkpLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVyciwgY2F1Z2h0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zaG93U3RpY2t5TWVzc2FnZShlcnIsICfQntGI0LjQsdC60LAg0L/RgNC40L7RgdGC0LDQvdC+0LLQutC4JywgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSlcclxuICApKSk7XHJcblxyXG4gIGNvbXBsZXRlQ29tcGV0aXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+ICh0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wbGV0ZUNvbXBldGl0aW9uKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAgIHN3aXRjaE1hcCgoWywgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmNvbXBsZXRlKGNvbXBldGl0aW9uSWQpLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLmNvbXBldGl0aW9uQ2hhbmdlU3RhdHVzU3VjY2VzcygpKSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnIsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2hvd1N0aWNreU1lc3NhZ2UoZXJyLCAn0J7RiNC40LHQutCwINC/0YDQuCDQt9Cw0LLQtdGA0YjQtdC90LjQuCcsIE1lc3NhZ2VTZXZlcml0eS5lcnJvcik7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pXHJcbiAgKSkpO1xyXG5cclxuICBjYW5jZWxDb21wZXRpdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gKHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNhbmNlbENvbXBldGl0aW9uKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUucGlwZShzZWxlY3Qoc2VsZWN0Q29tcGV0aXRpb25JZCkpKSxcclxuICAgIHN3aXRjaE1hcCgoWywgY29tcGV0aXRpb25JZF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlLmNhbmNlbChjb21wZXRpdGlvbklkKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IENvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5jb21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MoKSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNob3dTdGlja3lNZXNzYWdlKGVyciwgJ9Ce0YjQuNCx0LrQsCDQv9GA0Lgg0L7RgtC80LXQvdC1JywgTWVzc2FnZVNldmVyaXR5LmVycm9yKTtcclxuICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSlcclxuICApKSk7XHJcblxyXG4gIGNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQ29tcGV0aXRpb25IZWFkZXJBY3Rpb25zLkNhbmNlbENvbXBldGl0aW9uV2l0aFZhbGlkYXRpb24pLFxyXG4gICAgbWFwKChhY3Rpb246IHsgdmVyc2lvbklkOiBzdHJpbmcgfSkgPT4gYWN0aW9uLnZlcnNpb25JZCksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdENvbXBldGl0aW9uSWQpKSksXHJcbiAgICB0YXAoKFt2ZXJzaW9uSWQsIGNvbXBldGl0aW9uSWRdKSA9PlxyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvbS1kYXRhL21pbmZpbi9zZWxlY3Rpb24vZWRpdC9jYW5jZWw/Y29tcGV0aXRpb25JZD0ke2NvbXBldGl0aW9uSWR9JnZlcnNpb25JZD0ke3ZlcnNpb25JZH1gKVxyXG4gICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuXHJcbiAgY29tcGV0aXRpb25DaGFuZ2VTdGF0dXNTdWNjZXNzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUNvbXBldGl0aW9uSGVhZGVyQWN0aW9ucy5Db21wZXRpdGlvbkNoYW5nZVN0YXR1c1N1Y2Nlc3MpLFxyXG4gICAgdGFwKCgpID0+IHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKSlcclxuICApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcGV0aXRpb25IZWFkZXJTZXJ2aWNlOiBDb21wZXRpdGlvbkhlYWRlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcclxuICAgICAgICAgICAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|