@sunbird-cb/utils-v2 0.0.19 → 0.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sunbird-cb-utils-v2.umd.js +48 -7
- package/bundles/sunbird-cb-utils-v2.umd.js.map +1 -1
- package/bundles/sunbird-cb-utils-v2.umd.min.js +1 -1
- package/bundles/sunbird-cb-utils-v2.umd.min.js.map +1 -1
- package/esm2015/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.component.js +5 -3
- package/esm2015/lib/services/event.service.js +44 -5
- package/esm5/lib/helpers/horizontal-scroller-v2/horizontal-scroller-v2.component.js +5 -3
- package/esm5/lib/services/event.service.js +44 -5
- package/fesm2015/sunbird-cb-utils-v2.js +48 -7
- package/fesm2015/sunbird-cb-utils-v2.js.map +1 -1
- package/fesm5/sunbird-cb-utils-v2.js +49 -8
- package/fesm5/sunbird-cb-utils-v2.js.map +1 -1
- package/lib/services/event.service.d.ts +3 -0
- package/package.json +1 -1
- package/sunbird-cb-utils-v2.metadata.json +1 -1
|
@@ -11,6 +11,7 @@ var EventService = (function () {
|
|
|
11
11
|
function EventService(environment, utilitySvc) {
|
|
12
12
|
this.utilitySvc = utilitySvc;
|
|
13
13
|
this.todaysEvents = [];
|
|
14
|
+
this.todaysLiveEvents = [];
|
|
14
15
|
this.eventsSubject = new Subject();
|
|
15
16
|
this.events$ = this.eventsSubject.asObservable();
|
|
16
17
|
this.eventsChatbotSubject = new Subject();
|
|
@@ -141,16 +142,26 @@ var EventService = (function () {
|
|
|
141
142
|
var min = stime.substr(2, 3);
|
|
142
143
|
return date + " " + hour + min;
|
|
143
144
|
};
|
|
145
|
+
EventService.prototype.sortItemByTime = function (eventsdata) {
|
|
146
|
+
return eventsdata.sort((function (a, b) {
|
|
147
|
+
return (a.eventDate === b.eventDate) ? 0 : b.eventDate ? -1 : 1;
|
|
148
|
+
}));
|
|
149
|
+
};
|
|
144
150
|
EventService.prototype.setEventListData = function (eventObj) {
|
|
145
151
|
var _this = this;
|
|
146
152
|
if (eventObj !== undefined) {
|
|
147
153
|
this.todaysEvents = [];
|
|
154
|
+
this.todaysLiveEvents = [];
|
|
148
155
|
var data_1 = eventObj;
|
|
149
156
|
var isEventLive_1 = false;
|
|
150
157
|
var isEventRecording_1 = false;
|
|
158
|
+
var isEventPast_1 = false;
|
|
159
|
+
var isEventFuture_1 = false;
|
|
151
160
|
Object.keys(data_1).forEach((function (index) {
|
|
152
161
|
isEventRecording_1 = false;
|
|
153
162
|
isEventLive_1 = false;
|
|
163
|
+
isEventPast_1 = false;
|
|
164
|
+
isEventFuture_1 = false;
|
|
154
165
|
var obj = data_1[index];
|
|
155
166
|
var floor = Math.floor;
|
|
156
167
|
var hours = floor(obj.duration / 60);
|
|
@@ -186,9 +197,21 @@ var EventService = (function () {
|
|
|
186
197
|
else if (today >= eventendDate) {
|
|
187
198
|
isEventRecording_1 = true;
|
|
188
199
|
isEventLive_1 = false;
|
|
200
|
+
if (moment(today).isAfter(eventendDate) && moment(today).isAfter(eventDate)) {
|
|
201
|
+
isEventPast_1 = true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
if (moment(today).isBefore(eventDate) && moment(today).isBefore(eventendDate)) {
|
|
206
|
+
isEventFuture_1 = true;
|
|
207
|
+
}
|
|
189
208
|
}
|
|
190
209
|
var eventDataObj = {
|
|
210
|
+
eventDate: eventDate,
|
|
211
|
+
eventendDate: eventendDate,
|
|
191
212
|
isEventLive: isEventLive_1,
|
|
213
|
+
isEventFuture: isEventFuture_1,
|
|
214
|
+
isEventPast: isEventPast_1,
|
|
192
215
|
isEventRecording: isEventRecording_1,
|
|
193
216
|
event: obj,
|
|
194
217
|
eventName: obj.name,
|
|
@@ -204,15 +227,30 @@ var EventService = (function () {
|
|
|
204
227
|
pastevent: false,
|
|
205
228
|
};
|
|
206
229
|
var isToday = _this.compareDate(obj.startDate);
|
|
207
|
-
if (isToday
|
|
230
|
+
if (isToday) {
|
|
208
231
|
_this.todaysEvents.push(eventDataObj);
|
|
209
232
|
}
|
|
233
|
+
if (isToday && isEventLive_1) {
|
|
234
|
+
_this.todaysLiveEvents.push(eventDataObj);
|
|
235
|
+
}
|
|
210
236
|
}));
|
|
211
|
-
this.
|
|
212
|
-
|
|
213
|
-
}));
|
|
237
|
+
this.todaysLiveEvents = this.sortItemByTime(this.todaysLiveEvents);
|
|
238
|
+
this.todaysEvents = this.getTodaysEvents(this.todaysEvents);
|
|
214
239
|
}
|
|
215
240
|
};
|
|
241
|
+
EventService.prototype.getTodaysEvents = function (eventData) {
|
|
242
|
+
var liveEvents = [];
|
|
243
|
+
var pastEvents = [];
|
|
244
|
+
var futureEvents = [];
|
|
245
|
+
liveEvents = this.todaysLiveEvents;
|
|
246
|
+
pastEvents = eventData.filter((function (pastEvent) { return pastEvent.isEventPast; }));
|
|
247
|
+
futureEvents = eventData.filter((function (futureEvent) { return futureEvent.isEventFuture; }));
|
|
248
|
+
liveEvents = this.sortItemByTime(liveEvents);
|
|
249
|
+
futureEvents = this.sortItemByTime(futureEvents);
|
|
250
|
+
pastEvents = this.sortItemByTime(pastEvents);
|
|
251
|
+
this.todaysEvents = tslib_1.__spread(liveEvents, futureEvents, pastEvents);
|
|
252
|
+
return this.todaysEvents;
|
|
253
|
+
};
|
|
216
254
|
EventService.decorators = [
|
|
217
255
|
{ type: Injectable, args: [{
|
|
218
256
|
providedIn: 'root',
|
|
@@ -228,6 +266,7 @@ var EventService = (function () {
|
|
|
228
266
|
export { EventService };
|
|
229
267
|
if (false) {
|
|
230
268
|
EventService.prototype.todaysEvents;
|
|
269
|
+
EventService.prototype.todaysLiveEvents;
|
|
231
270
|
EventService.prototype.eventsSubject;
|
|
232
271
|
EventService.prototype.events$;
|
|
233
272
|
EventService.prototype.eventsChatbotSubject;
|
|
@@ -239,4 +278,4 @@ if (false) {
|
|
|
239
278
|
EventService.prototype.environment;
|
|
240
279
|
EventService.prototype.utilitySvc;
|
|
241
280
|
}
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTs7O0FBQzNCO0lBbUJFLHNCQUN5QixXQUFnQixFQUMvQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQWpCcEMsaUJBQVksR0FBUSxFQUFFLENBQUE7UUFFZCxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQ3ZELFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTFDLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQzlELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRXhELDBCQUFxQixHQUFHLElBQUksT0FBTyxFQUEyQixDQUFBO1FBQy9ELG9CQUFlLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFBO1FBRTFELG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDekQsaUJBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBT3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFBO0lBRWhDLENBQUM7SUFFRCxvQ0FB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QUFFLE1BQU07aUJBQ25COzs7Z0RBa0JJLE1BQU0sU0FBQyxhQUFhO2dCQXhCaEIsY0FBYzs7O3VCQUh2QjtDQXdSQyxBQWpSRCxJQWlSQztTQTlRWSxZQUFZOztJQUN2QixvQ0FBc0I7SUFFdEIscUNBQThEO0lBQzlELCtCQUFrRDtJQUVsRCw0Q0FBcUU7SUFDckUsc0NBQWdFO0lBRWhFLDZDQUFzRTtJQUN0RSx1Q0FBa0U7SUFFbEUsdUNBQWdFO0lBQ2hFLG9DQUF5RDtJQUV6RCxtQ0FBZ0I7SUFHZCxrQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcclxuaW1wb3J0IHsgV3NFdmVudHMgfSBmcm9tICcuL2V2ZW50Lm1vZGVsJ1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJ1xyXG4vKiB0c2xpbnQ6ZGlzYWJsZSovXHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCdcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xyXG4gIHRvZGF5c0V2ZW50czogYW55ID0gW11cclxuICBcclxuICBwcml2YXRlIGV2ZW50c1N1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBldmVudHMkID0gdGhpcy5ldmVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzQ2hhdGJvdFN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBjaGF0Ym90RXZlbnRzJCA9IHRoaXMuZXZlbnRzQ2hhdGJvdFN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNHZXRTdGFydFN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBnZXRTdGFydEV2ZW50cyQgPSB0aGlzLmV2ZW50c0dldFN0YXJ0U3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c1BSU3ViamVjdCA9IG5ldyBTdWJqZWN0PFdzRXZlbnRzLklXc0V2ZW50czxhbnk+PigpXHJcbiAgcHVibGljIGdldFBSRXZlbnRzJCA9IHRoaXMuZXZlbnRzUFJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIGVudmlyb25tZW50OiBhbnlcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVN2YzogVXRpbGl0eVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnRcclxuICAgIC8vIHRoaXMuZm9jdXNDaGFuZ2VFdmVudExpc3RlbmVyKClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgZXZlbnQucGFnZUNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoZXZlbnQucGFnZUNvbnRleHQpXHJcbiAgICB0aGlzLmV2ZW50c1N1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoQ2hhdGJvdEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzQ2hhdGJvdFN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG4gIGRpc3BhdGNoR2V0U3RhcnRlZEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzR2V0U3RhcnRTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaFBsYXRmb3JtUmF0aW5nRXZlbnQ8VD4oZXZlbnQ6IFdzRXZlbnRzLklXc0V2ZW50czxUPikge1xyXG4gICAgdGhpcy5ldmVudHNQUlN1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG5cclxuICAvLyBoZWxwZXIgZnVuY3Rpb25zXHJcbiAgcmFpc2VJbnRlcmFjdFRlbGVtZXRyeShlZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeUVkYXRhLCBvYmplY3Q6IGFueSwgcGFnZUNvbnRleHQ/OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0Pih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVkYXRhLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBwYWdlQ29udGV4dDogdGhpcy5nZXRDb250ZXh0KHBhZ2VDb250ZXh0KSxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkludGVyYWN0LFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiAnJyxcclxuICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHJhaXNlRmVlZGJhY2tUZWxlbWV0cnkoZWRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlFZGF0YSwgb2JqZWN0OiBhbnksIGZyb20/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGlzcGF0Y2hFdmVudDxXc0V2ZW50cy5JV3NFdmVudFRlbGVtZXRyeUludGVyYWN0Pih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGVkYXRhLFxyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkZlZWRiYWNrLFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiBmcm9tIHx8ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gUmFpc2UgY3VzdG9tIGltcHJlc3Npb24gZXZlbnRzIGVnOm9uIHRhYiBjaGFuZ2VcclxuICByYWlzZUN1c3RvbUltcHJlc3Npb24ob2JqZWN0OiBhbnksIHBhZ2VDb250ZXh0PzogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0KSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbXByZXNzaW9uPih7XHJcbiAgICAgIGV2ZW50VHlwZTogV3NFdmVudHMuV3NFdmVudFR5cGUuVGVsZW1ldHJ5LFxyXG4gICAgICBldmVudExvZ0xldmVsOiBXc0V2ZW50cy5Xc0V2ZW50TG9nTGV2ZWwuSW5mbyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iamVjdCxcclxuICAgICAgICBwYWdlQ29udGV4dDogdGhpcy5nZXRDb250ZXh0KHBhZ2VDb250ZXh0KSxcclxuICAgICAgICBldmVudFN1YlR5cGU6IFdzRXZlbnRzLkVudW1UZWxlbWV0cnlTdWJUeXBlLkltcHJlc3Npb24sXHJcbiAgICAgIH0sXHJcbiAgICAgIGZyb206ICcnLFxyXG4gICAgICB0bzogJ1RlbGVtZXRyeScsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLy8gcHJpdmF0ZSBmb2N1c0NoYW5nZUV2ZW50TGlzdGVuZXIoKSB7XHJcbiAgLy8gICBmcm9tRXZlbnQod2luZG93LCAnZm9jdXMnKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gIC8vICAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoJ2ZvY3VzJywgJ2dhaW5lZCcsIHt9KVxyXG4gIC8vICAgfSlcclxuICAvLyAgIGZyb21FdmVudCh3aW5kb3csICdibHVyJykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KCdmb2N1cycsICdsb3N0Jywge30pXHJcbiAgLy8gICB9KVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGdldCB0aGUgY29udGV4dCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGVsZW1ldHJ5IGludGVyYWN0IGV2ZW50XHJcbiAgcHJpdmF0ZSBnZXRDb250ZXh0KHBhZ2VDb250ZXh0OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQgfCB1bmRlZmluZWQpOiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQge1xyXG4gICAgY29uc3Qgcm91dGVEYXRhQ29udGV4dCA9IHRoaXMudXRpbGl0eVN2Yy5yb3V0ZURhdGFcclxuICAgIC8vIGluaXRpYWxpemUgd2l0aCB0aGUgcm91dGUgZGF0YSBjb25maWd1cmF0aW9uIC0gY3VycmVudCByb3V0ZSdzIHBhZ2VJRCAmIG1vZHVsZVxyXG4gICAgY29uc3QgZmluYWxDb250ZXh0OiBXc0V2ZW50cy5JVGVsZW1ldHJ5UGFnZUNvbnRleHQgPSB7XHJcbiAgICAgIHBhZ2VJZDogcm91dGVEYXRhQ29udGV4dC5wYWdlSWQsXHJcbiAgICAgIG1vZHVsZTogcm91dGVEYXRhQ29udGV4dC5tb2R1bGUsXHJcbiAgICB9XHJcbiAgICBpZiAocGFnZUNvbnRleHQpIHtcclxuICAgICAgLy8gaWYgY29udGV4dCBoYXMgcGFnZUlkRXh0LCBhcHBlbmQgaXQgdG8gdGhlIHJvdXRlJ3MgcGFnZUlkXHJcbiAgICAgIGlmIChwYWdlQ29udGV4dC5wYWdlSWRFeHQpIHtcclxuICAgICAgICBmaW5hbENvbnRleHQucGFnZUlkID0gYCR7cm91dGVEYXRhQ29udGV4dC5wYWdlSWR9XyR7cGFnZUNvbnRleHQucGFnZUlkRXh0fWBcclxuICAgICAgfSBlbHNlIGlmIChwYWdlQ29udGV4dC5wYWdlSWQpIHtcclxuICAgICAgICAvLyBlbHNlIGNvbnRleHQgaGFzIHBhZ2VJZCwgb3ZlcnJpZGUgaXQgdG8gdGhlIGZpbmFsIHBhZ2VJRFxyXG4gICAgICAgIGZpbmFsQ29udGV4dC5wYWdlSWQgPSBwYWdlQ29udGV4dC5wYWdlSWRcclxuICAgICAgfVxyXG4gICAgICAvLyBpZiBjb250ZXh0IGhhcyBtb2R1bGUsIG92ZXJyaWRlIGl0IHRvIHRoZSBmaW5hbCBtb2R1bGVcclxuICAgICAgaWYgKHBhZ2VDb250ZXh0Lm1vZHVsZSkge1xyXG4gICAgICAgIGZpbmFsQ29udGV4dC5tb2R1bGUgPSBwYWdlQ29udGV4dC5tb2R1bGVcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmaW5hbENvbnRleHRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVUYWJUZWxlbWV0cnkoc3ViVHlwZTogc3RyaW5nLCBkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5VGFiRGF0YSwgb2JqZWN0PzphbnkpIHtcclxuICAgIC8vIHJhaXNlIGEgdGFiIGNsaWNrIGludGVyYWN0IGV2ZW50XHJcbiAgICB0aGlzLnJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoXHJcbiAgICAgIHtcclxuICAgICAgICBzdWJUeXBlLFxyXG4gICAgICAgIHR5cGU6IFdzRXZlbnRzLkVudW1JbnRlcmFjdFR5cGVzLkNMSUNLLFxyXG4gICAgICAgIGlkOiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIC8vIGNvbnRleHQ6IHtcclxuICAgICAgICAvLyAgIHBvc2l0aW9uOiBkYXRhLmluZGV4LFxyXG4gICAgICAgIC8vIH0sXHJcbiAgICAgICAgLi4ub2JqZWN0XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgIH0pXHJcblxyXG4gICAgLy8gcmFpc2UgYSB0YWIgY2xpY2sgaW1wcmVzc2lvbiBldmVudFxyXG4gICAgdGhpcy5yYWlzZUN1c3RvbUltcHJlc3Npb24oe1xyXG4gICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBkYXRhLmluZGV4LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iamVjdFxyXG4gICAgICB9LHtcclxuICAgICAgcGFnZUlkRXh0OiBgJHtfLmNhbWVsQ2FzZShkYXRhLmxhYmVsKX0tdGFiYCxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRQdWJsaWNVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbWFpblVybCA9IHVybC5zcGxpdCgnL2NvbnRlbnQnKS5wb3AoKSB8fCAnJ1xyXG4gICAgcmV0dXJuIGAke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEhvc3R9LyR7dGhpcy5lbnZpcm9ubWVudC5jb250ZW50QnVja2V0fS9jb250ZW50JHttYWluVXJsfWBcclxuICB9XHJcblxyXG4gIGFsbEV2ZW50RGF0ZUZvcm1hdChkYXRldGltZTogYW55KSB7XHJcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldERhdGUoKVxyXG4gICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRGdWxsWWVhcigpXHJcbiAgICBjb25zdCBtb250aCA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRNb250aCgpXHJcbiAgICBjb25zdCBob3VycyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRIb3VycygpXHJcbiAgICBjb25zdCBtaW51dGVzID0gbmV3IERhdGUoZGF0ZXRpbWUpLmdldE1pbnV0ZXMoKVxyXG4gICAgY29uc3Qgc2Vjb25kcyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRTZWNvbmRzKClcclxuICAgIGNvbnN0IGZvcm1hdGVkRGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcywgc2Vjb25kcywgMClcclxuICAgIC8vIGxldCBmb3JtYXQgPSAnWVlZWS1NTS1ERCBoaDptbSBhJ1xyXG4gICAgLy8gaWYgKCF0aW1lQWxsb3cpIHtcclxuICAgIGNvbnN0IGZvcm1hdCA9ICdZWVlZLU1NLUREJ1xyXG4gICAgLy8gfVxyXG4gICAgY29uc3QgcmVhZGFibGVEYXRlTW9udGggPSBtb21lbnQoZm9ybWF0ZWREYXRlKS5mb3JtYXQoZm9ybWF0KVxyXG4gICAgY29uc3QgZmluYWxEYXRlVGltZVZhbHVlID0gYCR7cmVhZGFibGVEYXRlTW9udGh9YFxyXG4gICAgcmV0dXJuIGZpbmFsRGF0ZVRpbWVWYWx1ZVxyXG4gIH1cclxuXHJcbiAgY29tcGFyZURhdGUoc3RhcnREYXRlOiBhbnkpIHtcclxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcclxuXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6cHJlZmVyLXRlbXBsYXRlXHJcbiAgICBjb25zdCBkYXkgPSAgKCcwJyArIChuZXcgRGF0ZSgpLmdldERhdGUoKSkpLnNsaWNlKC0yKVxyXG4gICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKVxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci10ZW1wbGF0ZVxyXG4gICAgY29uc3QgbW9udGggPSAoJzAnICsgKG5vdy5nZXRNb250aCgpICsgMSkpLnNsaWNlKC0yKVxyXG4gICAgY29uc3QgdG9kYXlzZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWBcclxuICAgIGlmIChzdGFydERhdGUgPT09IHRvZGF5c2RhdGUpICB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIGN1c3RvbURhdGVGb3JtYXQoZGF0ZTogYW55LCB0aW1lOiBhbnkpIHtcclxuICAgIGNvbnN0IHN0aW1lID0gdGltZS5zcGxpdCgnKycpWzBdXHJcbiAgICBjb25zdCBob3VyID0gc3RpbWUuc3Vic3RyKDAsIDIpXHJcbiAgICBjb25zdCBtaW4gPSBzdGltZS5zdWJzdHIoMiwgMylcclxuICAgIHJldHVybiBgJHtkYXRlfSAke2hvdXJ9JHttaW59YFxyXG4gfVxyXG5cclxuXHJcbiBzZXRFdmVudExpc3REYXRhKGV2ZW50T2JqOiBhbnkpIHtcclxuICBpZiAoZXZlbnRPYmogIT09IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSBbXVxyXG4gICAgY29uc3QgZGF0YSA9IGV2ZW50T2JqXHJcbiAgICBsZXQgaXNFdmVudExpdmUgOiBib29sZWFuID0gZmFsc2VcclxuICAgIGxldCBpc0V2ZW50UmVjb3JkaW5nIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgIC8vIGNvbnNvbGUubG9nKCdzdHJpcCBjb21wJywgZGF0YSlcclxuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgXHJcbiAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgIGNvbnN0IG9iaiA9IGRhdGFbaW5kZXhdXHJcbiAgICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vclxyXG4gICAgICBjb25zdCBob3VycyA9IGZsb29yKG9iai5kdXJhdGlvbiAvIDYwKVxyXG4gICAgICBjb25zdCBtaW51dGVzID0gb2JqLmR1cmF0aW9uICUgNjBcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSAoaG91cnMgPT09IDApID8gKChtaW51dGVzID09PSAwKSA/ICctLS0nIDogYCR7bWludXRlc30gbWludXRlc2ApIDogKG1pbnV0ZXMgPT09IDApID8gKGhvdXJzID09PSAxKSA/XHJcbiAgICAgICAgYCR7aG91cnN9IGhvdXJgIDogYCR7aG91cnN9IGhvdXJzYCA6IChob3VycyA9PT0gMSkgPyBgJHtob3Vyc30gaG91ciAke21pbnV0ZXN9IG1pbnV0ZXNgIDpcclxuICAgICAgICBgJHtob3Vyc30gaG91cnMgJHttaW51dGVzfSBtaW51dGVzYFxyXG4gICAgICBjb25zdCBjcmVhdG9yZGF0YSA9IG9iai5jcmVhdG9yRGV0YWlscyAhPT0gdW5kZWZpbmVkID8gb2JqLmNyZWF0b3JEZXRhaWxzIDogW11cclxuICAgICAgY29uc3Qgc3RyID0gY3JlYXRvcmRhdGEgJiYgY3JlYXRvcmRhdGEubGVuZ3RoID4gMCA/IGNyZWF0b3JkYXRhLnJlcGxhY2UoL1xcXFwvZywgJycpIDogW11cclxuICAgICAgY29uc3QgY3JlYXRvckRldGFpbHMgPSBzdHIgJiYgc3RyLmxlbmd0aCA+IDAgPyBKU09OLnBhcnNlKHN0cikgOiBjcmVhdG9yZGF0YVxyXG5cclxuICAgICAgY29uc3Qgc3RpbWUgPSBvYmouc3RhcnRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgaG91ciA9IHN0aW1lLnN1YnN0cigwLCAyKVxyXG4gICAgICBjb25zdCBtaW4gPSBzdGltZS5zdWJzdHIoMiwgMylcclxuICAgICAgY29uc3Qgc3RhcnR0aW1lID0gYCR7aG91cn0ke21pbn1gXHJcblxyXG4gICAgICBjb25zdCBldGltZSA9IG9iai5lbmRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgZWhvdXIgPSBldGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgY29uc3QgZW1pbiA9IGV0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgICBjb25zdCBlbmR0aW1lID0gYCR7ZWhvdXJ9JHtlbWlufWBcclxuICAgICAgY29uc3QgZXZlbnREYXRlID0gdGhpcy5jdXN0b21EYXRlRm9ybWF0KG9iai5zdGFydERhdGUsIG9iai5zdGFydFRpbWUpXHJcbiAgICAgIGNvbnN0IGV2ZW50ZW5kRGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouZW5kRGF0ZSwgb2JqLmVuZFRpbWUpXHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcclxuICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQobm93KS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW0nKVxyXG4gICAgICBpZiAobW9tZW50KHRvZGF5KS5pc0JldHdlZW4oZXZlbnREYXRlLCBldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IGZhbHNlXHJcbiAgICAgICAgaXNFdmVudExpdmUgPSB0cnVlXHJcbiAgICAgICAgaWYgKHRvZGF5ID49IGV2ZW50ZW5kRGF0ZSkge1xyXG4gICAgICAgICAgaWYgKG9iai5yZWNvcmRlZExpbmtzICYmIG9iai5yZWNvcmRlZExpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0b2RheSA+PSBldmVudGVuZERhdGUpIHtcclxuICAgICAgICBpc0V2ZW50UmVjb3JkaW5nID0gdHJ1ZVxyXG4gICAgICAgIGlzRXZlbnRMaXZlID0gZmFsc2VcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBldmVudERhdGFPYmogPSB7XHJcbiAgICAgICAgaXNFdmVudExpdmUsXHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyxcclxuICAgICAgICBldmVudDogb2JqLFxyXG4gICAgICAgIGV2ZW50TmFtZTogb2JqLm5hbWUsXHJcbiAgICAgICAgZXZlbnRTdGFydFRpbWU6IHN0YXJ0dGltZSxcclxuICAgICAgICBldmVudEVuZFRpbWU6IGVuZHRpbWUsXHJcbiAgICAgICAgZXZlbnRTdGFydERhdGU6IG9iai5zdGFydERhdGUsXHJcbiAgICAgICAgZXZlbnRDcmVhdGVkT246IHRoaXMuYWxsRXZlbnREYXRlRm9ybWF0KG9iai5jcmVhdGVkT24pLFxyXG4gICAgICAgIGV2ZW50RHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIGV2ZW50am9pbmVkOiBjcmVhdG9yRGV0YWlscy5sZW5ndGgsXHJcbiAgICAgICAgZXZlbnRUaHVtYm5haWw6IG9iai5hcHBJY29uICYmIChvYmouYXBwSWNvbiAhPT0gbnVsbCB8fCBvYmouYXBwSWNvbiAhPT0gdW5kZWZpbmVkKSA/XHJcbiAgICAgICAgICB0aGlzLmdldFB1YmxpY1VybChvYmouYXBwSWNvbikgOlxyXG4gICAgICAgICAgJy9hc3NldHMvaWNvbnMvRXZlbnRzX2RlZmF1bHQucG5nJyxcclxuICAgICAgICBwYXN0ZXZlbnQ6IGZhbHNlLFxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBpc1RvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZShvYmouc3RhcnREYXRlKVxyXG4gICAgICBpZiAoaXNUb2RheSAmJiBpc0V2ZW50TGl2ZSkge1xyXG4gICAgICAgIHRoaXMudG9kYXlzRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgdGhpcy50b2RheXNFdmVudHMgPSB0aGlzLnRvZGF5c0V2ZW50cy5zb3J0KChhOmFueSwgYjphbnkpPT4ge1xyXG4gICAgICByZXR1cm4gKGEuaXNFdmVudExpdmUgPT09IGIuaXNFdmVudExpdmUpPyAwIDogYi5pc0V2ZW50TGl2ZT8gLTEgOiAxO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbn1cclxuIl19
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzdW5iaXJkLWNiL3V0aWxzLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V2ZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQ3RCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTs7O0FBQzNCO0lBb0JFLHNCQUN5QixXQUFnQixFQUMvQixVQUEwQjtRQUExQixlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQWxCcEMsaUJBQVksR0FBUSxFQUFFLENBQUE7UUFDdEIscUJBQWdCLEdBQVEsRUFBRSxDQUFBO1FBRWxCLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDdkQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUMseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDOUQsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFeEQsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQTJCLENBQUE7UUFDL0Qsb0JBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFMUQsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQTtRQUN6RCxpQkFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUE7UUFPdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxX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QUFDLFVBQUMsU0FBYyxJQUFLLE9BQUEsU0FBUyxDQUFDLFdBQVcsRUFBckIsQ0FBcUIsRUFBQyxDQUFBO1FBQ3hFLFlBQVksR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFDLFVBQUMsV0FBZ0IsSUFBSyxPQUFBLFdBQVcsQ0FBQyxhQUFhLEVBQXpCLENBQXlCLEVBQUMsQ0FBQTtRQUNoRixVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM1QyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUM1QyxJQUFJLENBQUMsWUFBWSxvQkFBUSxVQUFVLEVBQUssWUFBWSxFQUFLLFVBQVUsQ0FBQyxDQUFBO1FBRXBFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQTtJQUMxQixDQUFDOztnQkF2VEYsVUFBVSxTQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7O2dEQW1CSSxNQUFNLFNBQUMsYUFBYTtnQkF6QmhCLGNBQWM7Ozt1QkFIdkI7Q0FnVUMsQUF6VEQsSUF5VEM7U0F0VFksWUFBWTs7SUFDdkIsb0NBQXNCO0lBQ3RCLHdDQUEwQjtJQUUxQixxQ0FBOEQ7SUFDOUQsK0JBQWtEO0lBRWxELDRDQUFxRTtJQUNyRSxzQ0FBZ0U7SUFFaEUsNkNBQXNFO0lBQ3RFLHVDQUFrRTtJQUVsRSx1Q0FBZ0U7SUFDaEUsb0NBQXlEO0lBRXpELG1DQUFnQjtJQUdkLGtDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBXc0V2ZW50cyB9IGZyb20gJy4vZXZlbnQubW9kZWwnXHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnLi91dGlsaXR5LnNlcnZpY2UnXHJcbi8qIHRzbGludDpkaXNhYmxlKi9cclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV2ZW50U2VydmljZSB7XHJcbiAgdG9kYXlzRXZlbnRzOiBhbnkgPSBbXVxyXG4gIHRvZGF5c0xpdmVFdmVudHM6IGFueSA9IFtdXHJcbiAgXHJcbiAgcHJpdmF0ZSBldmVudHNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgZXZlbnRzJCA9IHRoaXMuZXZlbnRzU3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBwcml2YXRlIGV2ZW50c0NoYXRib3RTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgY2hhdGJvdEV2ZW50cyQgPSB0aGlzLmV2ZW50c0NoYXRib3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXHJcblxyXG4gIHByaXZhdGUgZXZlbnRzR2V0U3RhcnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8V3NFdmVudHMuSVdzRXZlbnRzPGFueT4+KClcclxuICBwdWJsaWMgZ2V0U3RhcnRFdmVudHMkID0gdGhpcy5ldmVudHNHZXRTdGFydFN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuXHJcbiAgcHJpdmF0ZSBldmVudHNQUlN1YmplY3QgPSBuZXcgU3ViamVjdDxXc0V2ZW50cy5JV3NFdmVudHM8YW55Pj4oKVxyXG4gIHB1YmxpYyBnZXRQUkV2ZW50cyQgPSB0aGlzLmV2ZW50c1BSU3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cclxuICBlbnZpcm9ubWVudDogYW55XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIGVudmlyb25tZW50OiBhbnksXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTdmM6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50XHJcbiAgICAvLyB0aGlzLmZvY3VzQ2hhbmdlRXZlbnRMaXN0ZW5lcigpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaEV2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIGV2ZW50LnBhZ2VDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KGV2ZW50LnBhZ2VDb250ZXh0KVxyXG4gICAgdGhpcy5ldmVudHNTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaENoYXRib3RFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICB0aGlzLmV2ZW50c0NoYXRib3RTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBkaXNwYXRjaEdldFN0YXJ0ZWRFdmVudDxUPihldmVudDogV3NFdmVudHMuSVdzRXZlbnRzPFQ+KSB7XHJcbiAgICB0aGlzLmV2ZW50c0dldFN0YXJ0U3ViamVjdC5uZXh0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgZGlzcGF0Y2hQbGF0Zm9ybVJhdGluZ0V2ZW50PFQ+KGV2ZW50OiBXc0V2ZW50cy5JV3NFdmVudHM8VD4pIHtcclxuICAgIHRoaXMuZXZlbnRzUFJTdWJqZWN0Lm5leHQoZXZlbnQpXHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gaGVscGVyIGZ1bmN0aW9uc1xyXG4gIHJhaXNlSW50ZXJhY3RUZWxlbWV0cnkoZWRhdGE6IFdzRXZlbnRzLklUZWxlbWV0cnlFZGF0YSwgb2JqZWN0OiBhbnksIHBhZ2VDb250ZXh0PzogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0KSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oe1xyXG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBlZGF0YSxcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgcGFnZUNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChwYWdlQ29udGV4dCksXHJcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbnRlcmFjdCxcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogJycsXHJcbiAgICAgIHRvOiAnVGVsZW1ldHJ5JyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICByYWlzZUZlZWRiYWNrVGVsZW1ldHJ5KGVkYXRhOiBXc0V2ZW50cy5JVGVsZW1ldHJ5RWRhdGEsIG9iamVjdDogYW55LCBmcm9tPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQ8V3NFdmVudHMuSVdzRXZlbnRUZWxlbWV0cnlJbnRlcmFjdD4oe1xyXG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBlZGF0YSxcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5GZWVkYmFjayxcclxuICAgICAgfSxcclxuICAgICAgZnJvbTogZnJvbSB8fCAnJyxcclxuICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIFJhaXNlIGN1c3RvbSBpbXByZXNzaW9uIGV2ZW50cyBlZzpvbiB0YWIgY2hhbmdlXHJcbiAgcmFpc2VDdXN0b21JbXByZXNzaW9uKG9iamVjdDogYW55LCBwYWdlQ29udGV4dD86IFdzRXZlbnRzLklUZWxlbWV0cnlQYWdlQ29udGV4dCkge1xyXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50PFdzRXZlbnRzLklXc0V2ZW50VGVsZW1ldHJ5SW1wcmVzc2lvbj4oe1xyXG4gICAgICBldmVudFR5cGU6IFdzRXZlbnRzLldzRXZlbnRUeXBlLlRlbGVtZXRyeSxcclxuICAgICAgZXZlbnRMb2dMZXZlbDogV3NFdmVudHMuV3NFdmVudExvZ0xldmVsLkluZm8sXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBvYmplY3QsXHJcbiAgICAgICAgcGFnZUNvbnRleHQ6IHRoaXMuZ2V0Q29udGV4dChwYWdlQ29udGV4dCksXHJcbiAgICAgICAgZXZlbnRTdWJUeXBlOiBXc0V2ZW50cy5FbnVtVGVsZW1ldHJ5U3ViVHlwZS5JbXByZXNzaW9uLFxyXG4gICAgICB9LFxyXG4gICAgICBmcm9tOiAnJyxcclxuICAgICAgdG86ICdUZWxlbWV0cnknLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZm9jdXNDaGFuZ2VFdmVudExpc3RlbmVyKCkge1xyXG4gIC8vICAgZnJvbUV2ZW50KHdpbmRvdywgJ2ZvY3VzJykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAvLyAgICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KCdmb2N1cycsICdnYWluZWQnLCB7fSlcclxuICAvLyAgIH0pXHJcbiAgLy8gICBmcm9tRXZlbnQod2luZG93LCAnYmx1cicpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMucmFpc2VJbnRlcmFjdFRlbGVtZXRyeSgnZm9jdXMnLCAnbG9zdCcsIHt9KVxyXG4gIC8vICAgfSlcclxuICAvLyB9XHJcblxyXG4gIC8vIE1ldGhvZCB0byBnZXQgdGhlIGNvbnRleHQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRlbGVtZXRyeSBpbnRlcmFjdCBldmVudFxyXG4gIHByaXZhdGUgZ2V0Q29udGV4dChwYWdlQ29udGV4dDogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0IHwgdW5kZWZpbmVkKTogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0IHtcclxuICAgIGNvbnN0IHJvdXRlRGF0YUNvbnRleHQgPSB0aGlzLnV0aWxpdHlTdmMucm91dGVEYXRhXHJcbiAgICAvLyBpbml0aWFsaXplIHdpdGggdGhlIHJvdXRlIGRhdGEgY29uZmlndXJhdGlvbiAtIGN1cnJlbnQgcm91dGUncyBwYWdlSUQgJiBtb2R1bGVcclxuICAgIGNvbnN0IGZpbmFsQ29udGV4dDogV3NFdmVudHMuSVRlbGVtZXRyeVBhZ2VDb250ZXh0ID0ge1xyXG4gICAgICBwYWdlSWQ6IHJvdXRlRGF0YUNvbnRleHQucGFnZUlkLFxyXG4gICAgICBtb2R1bGU6IHJvdXRlRGF0YUNvbnRleHQubW9kdWxlLFxyXG4gICAgfVxyXG4gICAgaWYgKHBhZ2VDb250ZXh0KSB7XHJcbiAgICAgIC8vIGlmIGNvbnRleHQgaGFzIHBhZ2VJZEV4dCwgYXBwZW5kIGl0IHRvIHRoZSByb3V0ZSdzIHBhZ2VJZFxyXG4gICAgICBpZiAocGFnZUNvbnRleHQucGFnZUlkRXh0KSB7XHJcbiAgICAgICAgZmluYWxDb250ZXh0LnBhZ2VJZCA9IGAke3JvdXRlRGF0YUNvbnRleHQucGFnZUlkfV8ke3BhZ2VDb250ZXh0LnBhZ2VJZEV4dH1gXHJcbiAgICAgIH0gZWxzZSBpZiAocGFnZUNvbnRleHQucGFnZUlkKSB7XHJcbiAgICAgICAgLy8gZWxzZSBjb250ZXh0IGhhcyBwYWdlSWQsIG92ZXJyaWRlIGl0IHRvIHRoZSBmaW5hbCBwYWdlSURcclxuICAgICAgICBmaW5hbENvbnRleHQucGFnZUlkID0gcGFnZUNvbnRleHQucGFnZUlkXHJcbiAgICAgIH1cclxuICAgICAgLy8gaWYgY29udGV4dCBoYXMgbW9kdWxlLCBvdmVycmlkZSBpdCB0byB0aGUgZmluYWwgbW9kdWxlXHJcbiAgICAgIGlmIChwYWdlQ29udGV4dC5tb2R1bGUpIHtcclxuICAgICAgICBmaW5hbENvbnRleHQubW9kdWxlID0gcGFnZUNvbnRleHQubW9kdWxlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmluYWxDb250ZXh0XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlVGFiVGVsZW1ldHJ5KHN1YlR5cGU6IHN0cmluZywgZGF0YTogV3NFdmVudHMuSVRlbGVtZXRyeVRhYkRhdGEsIG9iamVjdD86YW55KSB7XHJcbiAgICAvLyByYWlzZSBhIHRhYiBjbGljayBpbnRlcmFjdCBldmVudFxyXG4gICAgdGhpcy5yYWlzZUludGVyYWN0VGVsZW1ldHJ5KFxyXG4gICAgICB7XHJcbiAgICAgICAgc3ViVHlwZSxcclxuICAgICAgICB0eXBlOiBXc0V2ZW50cy5FbnVtSW50ZXJhY3RUeXBlcy5DTElDSyxcclxuICAgICAgICBpZDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICAvLyBjb250ZXh0OiB7XHJcbiAgICAgICAgLy8gICBwb3NpdGlvbjogZGF0YS5pbmRleCxcclxuICAgICAgICAvLyB9LFxyXG4gICAgICAgIC4uLm9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICB9KVxyXG5cclxuICAgIC8vIHJhaXNlIGEgdGFiIGNsaWNrIGltcHJlc3Npb24gZXZlbnRcclxuICAgIHRoaXMucmFpc2VDdXN0b21JbXByZXNzaW9uKHtcclxuICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogZGF0YS5pbmRleCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5vYmplY3RcclxuICAgICAgfSx7XHJcbiAgICAgIHBhZ2VJZEV4dDogYCR7Xy5jYW1lbENhc2UoZGF0YS5sYWJlbCl9LXRhYmAsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0UHVibGljVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1haW5VcmwgPSB1cmwuc3BsaXQoJy9jb250ZW50JykucG9wKCkgfHwgJydcclxuICAgIHJldHVybiBgJHt0aGlzLmVudmlyb25tZW50LmNvbnRlbnRIb3N0fS8ke3RoaXMuZW52aXJvbm1lbnQuY29udGVudEJ1Y2tldH0vY29udGVudCR7bWFpblVybH1gXHJcbiAgfVxyXG5cclxuICBhbGxFdmVudERhdGVGb3JtYXQoZGF0ZXRpbWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXREYXRlKClcclxuICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0RnVsbFllYXIoKVxyXG4gICAgY29uc3QgbW9udGggPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0TW9udGgoKVxyXG4gICAgY29uc3QgaG91cnMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0SG91cnMoKVxyXG4gICAgY29uc3QgbWludXRlcyA9IG5ldyBEYXRlKGRhdGV0aW1lKS5nZXRNaW51dGVzKClcclxuICAgIGNvbnN0IHNlY29uZHMgPSBuZXcgRGF0ZShkYXRldGltZSkuZ2V0U2Vjb25kcygpXHJcbiAgICBjb25zdCBmb3JtYXRlZERhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF0ZSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIDApXHJcbiAgICAvLyBsZXQgZm9ybWF0ID0gJ1lZWVktTU0tREQgaGg6bW0gYSdcclxuICAgIC8vIGlmICghdGltZUFsbG93KSB7XHJcbiAgICBjb25zdCBmb3JtYXQgPSAnWVlZWS1NTS1ERCdcclxuICAgIC8vIH1cclxuICAgIGNvbnN0IHJlYWRhYmxlRGF0ZU1vbnRoID0gbW9tZW50KGZvcm1hdGVkRGF0ZSkuZm9ybWF0KGZvcm1hdClcclxuICAgIGNvbnN0IGZpbmFsRGF0ZVRpbWVWYWx1ZSA9IGAke3JlYWRhYmxlRGF0ZU1vbnRofWBcclxuICAgIHJldHVybiBmaW5hbERhdGVUaW1lVmFsdWVcclxuICB9XHJcblxyXG4gIGNvbXBhcmVEYXRlKHN0YXJ0RGF0ZTogYW55KSB7XHJcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpXHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci10ZW1wbGF0ZVxyXG4gICAgY29uc3QgZGF5ID0gICgnMCcgKyAobmV3IERhdGUoKS5nZXREYXRlKCkpKS5zbGljZSgtMilcclxuICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKClcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItdGVtcGxhdGVcclxuICAgIGNvbnN0IG1vbnRoID0gKCcwJyArIChub3cuZ2V0TW9udGgoKSArIDEpKS5zbGljZSgtMilcclxuICAgIGNvbnN0IHRvZGF5c2RhdGUgPSBgJHt5ZWFyfS0ke21vbnRofS0ke2RheX1gXHJcbiAgICBpZiAoc3RhcnREYXRlID09PSB0b2RheXNkYXRlKSAge1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBjdXN0b21EYXRlRm9ybWF0KGRhdGU6IGFueSwgdGltZTogYW55KSB7XHJcbiAgICBjb25zdCBzdGltZSA9IHRpbWUuc3BsaXQoJysnKVswXVxyXG4gICAgY29uc3QgaG91ciA9IHN0aW1lLnN1YnN0cigwLCAyKVxyXG4gICAgY29uc3QgbWluID0gc3RpbWUuc3Vic3RyKDIsIDMpXHJcbiAgICByZXR1cm4gYCR7ZGF0ZX0gJHtob3VyfSR7bWlufWBcclxuIH1cclxuIHNvcnRJdGVtQnlUaW1lKGV2ZW50c2RhdGE6IGFueSkge1xyXG4gIHJldHVybiBldmVudHNkYXRhLnNvcnQoKGE6YW55LCBiOmFueSk9PiB7XHJcbiAgICByZXR1cm4gKGEuZXZlbnREYXRlID09PSBiLmV2ZW50RGF0ZSk/IDAgOiBiLmV2ZW50RGF0ZT8gLTEgOiAxO1xyXG4gIH0pO1xyXG59XHJcblxyXG5cclxuIHNldEV2ZW50TGlzdERhdGEoZXZlbnRPYmo6IGFueSkge1xyXG4gIGlmIChldmVudE9iaiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLnRvZGF5c0V2ZW50cyA9IFtdXHJcbiAgICB0aGlzLnRvZGF5c0xpdmVFdmVudHMgPSBbXVxyXG4gICAgY29uc3QgZGF0YSA9IGV2ZW50T2JqXHJcbiAgICBsZXQgaXNFdmVudExpdmUgOiBib29sZWFuID0gZmFsc2VcclxuICAgIGxldCBpc0V2ZW50UmVjb3JkaW5nIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgICBsZXQgaXNFdmVudFBhc3QgOiBib29sZWFuID0gZmFsc2VcclxuICAgIGxldCBpc0V2ZW50RnV0dXJlIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgIC8vIGNvbnNvbGUubG9nKCdzdHJpcCBjb21wJywgZGF0YSlcclxuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goKGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgXHJcbiAgICAgIGlzRXZlbnRSZWNvcmRpbmcgPSBmYWxzZVxyXG4gICAgICBpc0V2ZW50TGl2ZSA9IGZhbHNlXHJcbiAgICAgIGlzRXZlbnRQYXN0ID0gZmFsc2VcclxuICAgICAgaXNFdmVudEZ1dHVyZSA9IGZhbHNlXHJcbiAgICAgIGNvbnN0IG9iaiA9IGRhdGFbaW5kZXhdXHJcbiAgICAgIGNvbnN0IGZsb29yID0gTWF0aC5mbG9vclxyXG4gICAgICBjb25zdCBob3VycyA9IGZsb29yKG9iai5kdXJhdGlvbiAvIDYwKVxyXG4gICAgICBjb25zdCBtaW51dGVzID0gb2JqLmR1cmF0aW9uICUgNjBcclxuICAgICAgY29uc3QgZHVyYXRpb24gPSAoaG91cnMgPT09IDApID8gKChtaW51dGVzID09PSAwKSA/ICctLS0nIDogYCR7bWludXRlc30gbWludXRlc2ApIDogKG1pbnV0ZXMgPT09IDApID8gKGhvdXJzID09PSAxKSA/XHJcbiAgICAgICAgYCR7aG91cnN9IGhvdXJgIDogYCR7aG91cnN9IGhvdXJzYCA6IChob3VycyA9PT0gMSkgPyBgJHtob3Vyc30gaG91ciAke21pbnV0ZXN9IG1pbnV0ZXNgIDpcclxuICAgICAgICBgJHtob3Vyc30gaG91cnMgJHttaW51dGVzfSBtaW51dGVzYFxyXG4gICAgICBjb25zdCBjcmVhdG9yZGF0YSA9IG9iai5jcmVhdG9yRGV0YWlscyAhPT0gdW5kZWZpbmVkID8gb2JqLmNyZWF0b3JEZXRhaWxzIDogW11cclxuICAgICAgY29uc3Qgc3RyID0gY3JlYXRvcmRhdGEgJiYgY3JlYXRvcmRhdGEubGVuZ3RoID4gMCA/IGNyZWF0b3JkYXRhLnJlcGxhY2UoL1xcXFwvZywgJycpIDogW11cclxuICAgICAgY29uc3QgY3JlYXRvckRldGFpbHMgPSBzdHIgJiYgc3RyLmxlbmd0aCA+IDAgPyBKU09OLnBhcnNlKHN0cikgOiBjcmVhdG9yZGF0YVxyXG5cclxuICAgICAgY29uc3Qgc3RpbWUgPSBvYmouc3RhcnRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgaG91ciA9IHN0aW1lLnN1YnN0cigwLCAyKVxyXG4gICAgICBjb25zdCBtaW4gPSBzdGltZS5zdWJzdHIoMiwgMylcclxuICAgICAgY29uc3Qgc3RhcnR0aW1lID0gYCR7aG91cn0ke21pbn1gXHJcblxyXG4gICAgICBjb25zdCBldGltZSA9IG9iai5lbmRUaW1lLnNwbGl0KCcrJylbMF1cclxuICAgICAgY29uc3QgZWhvdXIgPSBldGltZS5zdWJzdHIoMCwgMilcclxuICAgICAgY29uc3QgZW1pbiA9IGV0aW1lLnN1YnN0cigyLCAzKVxyXG4gICAgICBjb25zdCBlbmR0aW1lID0gYCR7ZWhvdXJ9JHtlbWlufWBcclxuICAgICAgY29uc3QgZXZlbnREYXRlID0gdGhpcy5jdXN0b21EYXRlRm9ybWF0KG9iai5zdGFydERhdGUsIG9iai5zdGFydFRpbWUpXHJcbiAgICAgIGNvbnN0IGV2ZW50ZW5kRGF0ZSA9IHRoaXMuY3VzdG9tRGF0ZUZvcm1hdChvYmouZW5kRGF0ZSwgb2JqLmVuZFRpbWUpXHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcclxuICAgICAgY29uc3QgdG9kYXkgPSBtb21lbnQobm93KS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW0nKVxyXG4gICAgICBpZiAobW9tZW50KHRvZGF5KS5pc0JldHdlZW4oZXZlbnREYXRlLCBldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IGZhbHNlXHJcbiAgICAgICAgaXNFdmVudExpdmUgPSB0cnVlXHJcbiAgICAgICAgaWYgKHRvZGF5ID49IGV2ZW50ZW5kRGF0ZSkge1xyXG4gICAgICAgICAgaWYgKG9iai5yZWNvcmRlZExpbmtzICYmIG9iai5yZWNvcmRlZExpbmtzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgaXNFdmVudFJlY29yZGluZyA9IHRydWVcclxuICAgICAgICAgICAgaXNFdmVudExpdmUgPSBmYWxzZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0b2RheSA+PSBldmVudGVuZERhdGUpIHtcclxuICAgICAgICBpc0V2ZW50UmVjb3JkaW5nID0gdHJ1ZVxyXG4gICAgICAgIGlzRXZlbnRMaXZlID0gZmFsc2VcclxuICAgICAgICBpZihtb21lbnQodG9kYXkpLmlzQWZ0ZXIoZXZlbnRlbmREYXRlKSAmJiBtb21lbnQodG9kYXkpLmlzQWZ0ZXIoZXZlbnREYXRlKSkge1xyXG4gICAgICAgICAgaXNFdmVudFBhc3QgPSB0cnVlXHJcbiAgICAgICAgfSBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZihtb21lbnQodG9kYXkpLmlzQmVmb3JlKGV2ZW50RGF0ZSkgJiYgbW9tZW50KHRvZGF5KS5pc0JlZm9yZShldmVudGVuZERhdGUpKSB7XHJcbiAgICAgICAgICBpc0V2ZW50RnV0dXJlID0gdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb25zdCBldmVudERhdGFPYmogPSB7XHJcbiAgICAgICAgZXZlbnREYXRlLFxyXG4gICAgICAgIGV2ZW50ZW5kRGF0ZSxcclxuICAgICAgICBpc0V2ZW50TGl2ZSxcclxuICAgICAgICBpc0V2ZW50RnV0dXJlLFxyXG4gICAgICAgIGlzRXZlbnRQYXN0LFxyXG4gICAgICAgIGlzRXZlbnRSZWNvcmRpbmcsXHJcbiAgICAgICAgZXZlbnQ6IG9iaixcclxuICAgICAgICBldmVudE5hbWU6IG9iai5uYW1lLFxyXG4gICAgICAgIGV2ZW50U3RhcnRUaW1lOiBzdGFydHRpbWUsXHJcbiAgICAgICAgZXZlbnRFbmRUaW1lOiBlbmR0aW1lLFxyXG4gICAgICAgIGV2ZW50U3RhcnREYXRlOiBvYmouc3RhcnREYXRlLFxyXG4gICAgICAgIGV2ZW50Q3JlYXRlZE9uOiB0aGlzLmFsbEV2ZW50RGF0ZUZvcm1hdChvYmouY3JlYXRlZE9uKSxcclxuICAgICAgICBldmVudER1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBldmVudGpvaW5lZDogY3JlYXRvckRldGFpbHMubGVuZ3RoLFxyXG4gICAgICAgIGV2ZW50VGh1bWJuYWlsOiBvYmouYXBwSWNvbiAmJiAob2JqLmFwcEljb24gIT09IG51bGwgfHwgb2JqLmFwcEljb24gIT09IHVuZGVmaW5lZCkgP1xyXG4gICAgICAgICAgdGhpcy5nZXRQdWJsaWNVcmwob2JqLmFwcEljb24pIDpcclxuICAgICAgICAgICcvYXNzZXRzL2ljb25zL0V2ZW50c19kZWZhdWx0LnBuZycsXHJcbiAgICAgICAgcGFzdGV2ZW50OiBmYWxzZSxcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBpc1RvZGF5ID0gdGhpcy5jb21wYXJlRGF0ZShvYmouc3RhcnREYXRlKVxyXG4gICAgICBpZiAoaXNUb2RheSkge1xyXG4gICAgICAgIHRoaXMudG9kYXlzRXZlbnRzLnB1c2goZXZlbnREYXRhT2JqKVxyXG4gICAgICB9XHJcbiAgICAgIGlmKGlzVG9kYXkgJiYgaXNFdmVudExpdmUpIHtcclxuICAgICAgICB0aGlzLnRvZGF5c0xpdmVFdmVudHMucHVzaChldmVudERhdGFPYmopXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy50b2RheXNMaXZlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZSh0aGlzLnRvZGF5c0xpdmVFdmVudHMpXHJcbiAgICB0aGlzLnRvZGF5c0V2ZW50cyA9IHRoaXMuZ2V0VG9kYXlzRXZlbnRzKHRoaXMudG9kYXlzRXZlbnRzKVxyXG4gIH1cclxuICB9XHJcbiAgZ2V0VG9kYXlzRXZlbnRzKGV2ZW50RGF0YTogYW55KSB7XHJcbiAgICBsZXQgbGl2ZUV2ZW50czogYW55ID0gW11cclxuICAgIGxldCBwYXN0RXZlbnRzOiBhbnkgPSBbXVxyXG4gICAgbGV0IGZ1dHVyZUV2ZW50czogYW55ID0gW11cclxuXHJcbiAgICBsaXZlRXZlbnRzID0gdGhpcy50b2RheXNMaXZlRXZlbnRzXHJcbiAgICBwYXN0RXZlbnRzID0gZXZlbnREYXRhLmZpbHRlcigocGFzdEV2ZW50OiBhbnkpID0+IHBhc3RFdmVudC5pc0V2ZW50UGFzdClcclxuICAgIGZ1dHVyZUV2ZW50cyA9IGV2ZW50RGF0YS5maWx0ZXIoKGZ1dHVyZUV2ZW50OiBhbnkpID0+IGZ1dHVyZUV2ZW50LmlzRXZlbnRGdXR1cmUpXHJcbiAgICBsaXZlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZShsaXZlRXZlbnRzKVxyXG4gICAgZnV0dXJlRXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZShmdXR1cmVFdmVudHMpXHJcbiAgICBwYXN0RXZlbnRzID0gdGhpcy5zb3J0SXRlbUJ5VGltZShwYXN0RXZlbnRzKVxyXG4gICAgdGhpcy50b2RheXNFdmVudHMgID0gWy4uLmxpdmVFdmVudHMsIC4uLmZ1dHVyZUV2ZW50cywgLi4ucGFzdEV2ZW50c11cclxuICAgIFxyXG4gICAgcmV0dXJuIHRoaXMudG9kYXlzRXZlbnRzXHJcbiAgfVxyXG4gIFxyXG59XHJcbiJdfQ==
|
|
@@ -1866,6 +1866,7 @@ class EventService {
|
|
|
1866
1866
|
constructor(environment, utilitySvc) {
|
|
1867
1867
|
this.utilitySvc = utilitySvc;
|
|
1868
1868
|
this.todaysEvents = [];
|
|
1869
|
+
this.todaysLiveEvents = [];
|
|
1869
1870
|
this.eventsSubject = new Subject();
|
|
1870
1871
|
this.events$ = this.eventsSubject.asObservable();
|
|
1871
1872
|
this.eventsChatbotSubject = new Subject();
|
|
@@ -1996,15 +1997,25 @@ class EventService {
|
|
|
1996
1997
|
const min = stime.substr(2, 3);
|
|
1997
1998
|
return `${date} ${hour}${min}`;
|
|
1998
1999
|
}
|
|
2000
|
+
sortItemByTime(eventsdata) {
|
|
2001
|
+
return eventsdata.sort(((a, b) => {
|
|
2002
|
+
return (a.eventDate === b.eventDate) ? 0 : b.eventDate ? -1 : 1;
|
|
2003
|
+
}));
|
|
2004
|
+
}
|
|
1999
2005
|
setEventListData(eventObj) {
|
|
2000
2006
|
if (eventObj !== undefined) {
|
|
2001
2007
|
this.todaysEvents = [];
|
|
2008
|
+
this.todaysLiveEvents = [];
|
|
2002
2009
|
const data = eventObj;
|
|
2003
2010
|
let isEventLive = false;
|
|
2004
2011
|
let isEventRecording = false;
|
|
2012
|
+
let isEventPast = false;
|
|
2013
|
+
let isEventFuture = false;
|
|
2005
2014
|
Object.keys(data).forEach(((index) => {
|
|
2006
2015
|
isEventRecording = false;
|
|
2007
2016
|
isEventLive = false;
|
|
2017
|
+
isEventPast = false;
|
|
2018
|
+
isEventFuture = false;
|
|
2008
2019
|
const obj = data[index];
|
|
2009
2020
|
const floor = Math.floor;
|
|
2010
2021
|
const hours = floor(obj.duration / 60);
|
|
@@ -2040,9 +2051,21 @@ class EventService {
|
|
|
2040
2051
|
else if (today >= eventendDate) {
|
|
2041
2052
|
isEventRecording = true;
|
|
2042
2053
|
isEventLive = false;
|
|
2054
|
+
if (moment(today).isAfter(eventendDate) && moment(today).isAfter(eventDate)) {
|
|
2055
|
+
isEventPast = true;
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
else {
|
|
2059
|
+
if (moment(today).isBefore(eventDate) && moment(today).isBefore(eventendDate)) {
|
|
2060
|
+
isEventFuture = true;
|
|
2061
|
+
}
|
|
2043
2062
|
}
|
|
2044
2063
|
const eventDataObj = {
|
|
2064
|
+
eventDate,
|
|
2065
|
+
eventendDate,
|
|
2045
2066
|
isEventLive,
|
|
2067
|
+
isEventFuture,
|
|
2068
|
+
isEventPast,
|
|
2046
2069
|
isEventRecording,
|
|
2047
2070
|
event: obj,
|
|
2048
2071
|
eventName: obj.name,
|
|
@@ -2058,14 +2081,29 @@ class EventService {
|
|
|
2058
2081
|
pastevent: false,
|
|
2059
2082
|
};
|
|
2060
2083
|
const isToday = this.compareDate(obj.startDate);
|
|
2061
|
-
if (isToday
|
|
2084
|
+
if (isToday) {
|
|
2062
2085
|
this.todaysEvents.push(eventDataObj);
|
|
2063
2086
|
}
|
|
2087
|
+
if (isToday && isEventLive) {
|
|
2088
|
+
this.todaysLiveEvents.push(eventDataObj);
|
|
2089
|
+
}
|
|
2064
2090
|
}));
|
|
2065
|
-
this.
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2091
|
+
this.todaysLiveEvents = this.sortItemByTime(this.todaysLiveEvents);
|
|
2092
|
+
this.todaysEvents = this.getTodaysEvents(this.todaysEvents);
|
|
2093
|
+
}
|
|
2094
|
+
}
|
|
2095
|
+
getTodaysEvents(eventData) {
|
|
2096
|
+
let liveEvents = [];
|
|
2097
|
+
let pastEvents = [];
|
|
2098
|
+
let futureEvents = [];
|
|
2099
|
+
liveEvents = this.todaysLiveEvents;
|
|
2100
|
+
pastEvents = eventData.filter(((pastEvent) => pastEvent.isEventPast));
|
|
2101
|
+
futureEvents = eventData.filter(((futureEvent) => futureEvent.isEventFuture));
|
|
2102
|
+
liveEvents = this.sortItemByTime(liveEvents);
|
|
2103
|
+
futureEvents = this.sortItemByTime(futureEvents);
|
|
2104
|
+
pastEvents = this.sortItemByTime(pastEvents);
|
|
2105
|
+
this.todaysEvents = [...liveEvents, ...futureEvents, ...pastEvents];
|
|
2106
|
+
return this.todaysEvents;
|
|
2069
2107
|
}
|
|
2070
2108
|
}
|
|
2071
2109
|
EventService.decorators = [
|
|
@@ -2080,6 +2118,7 @@ EventService.ctorParameters = () => [
|
|
|
2080
2118
|
/** @nocollapse */ EventService.ngInjectableDef = ɵɵdefineInjectable({ factory: function EventService_Factory() { return new EventService(ɵɵinject("environment"), ɵɵinject(UtilityService)); }, token: EventService, providedIn: "root" });
|
|
2081
2119
|
if (false) {
|
|
2082
2120
|
EventService.prototype.todaysEvents;
|
|
2121
|
+
EventService.prototype.todaysLiveEvents;
|
|
2083
2122
|
EventService.prototype.eventsSubject;
|
|
2084
2123
|
EventService.prototype.events$;
|
|
2085
2124
|
EventService.prototype.eventsChatbotSubject;
|
|
@@ -2222,8 +2261,10 @@ class HorizontalScrollerV2Component {
|
|
|
2222
2261
|
this.defaultMaxWidgets = this.defaultMaxWidgets ? this.widgetsLength < this.defaultMaxWidgets ?
|
|
2223
2262
|
this.widgetsLength : this.defaultMaxWidgets : this.defaultMaxWidgets;
|
|
2224
2263
|
arrLength = this.defaultMaxWidgets / arrLength;
|
|
2225
|
-
|
|
2226
|
-
|
|
2264
|
+
if (arrLength !== Infinity) {
|
|
2265
|
+
for (let i = 0; i < arrLength; i += 1) {
|
|
2266
|
+
this.bottomDotsArray.push(i);
|
|
2267
|
+
}
|
|
2227
2268
|
}
|
|
2228
2269
|
}
|
|
2229
2270
|
}
|