vcomply-workflow-engine 3.0.278 → 3.0.279

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -2
  2. package/esm2020/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +310 -123
  3. package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +128 -64
  4. package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +2 -2
  5. package/esm2020/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +2 -2
  6. package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +2 -2
  7. package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +2 -2
  8. package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +2 -2
  9. package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +2 -2
  10. package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +2 -2
  11. package/esm2020/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.mjs +26 -11
  12. package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +2 -2
  13. package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +2 -2
  14. package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +21 -8
  15. package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +2 -2
  16. package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +5 -3
  17. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +113 -23
  18. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +60 -21
  19. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-container/frequency-dialog-container.component.mjs +53 -43
  20. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +64 -25
  21. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +63 -20
  22. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +65 -23
  23. package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +2 -2
  24. package/esm2020/lib/workflow-policy/workflow-policy.component.mjs +2 -2
  25. package/esm2020/lib/workflow-risk/workflow-risk.component.mjs +365 -131
  26. package/fesm2015/vcomply-workflow-engine.mjs +1304 -537
  27. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  28. package/fesm2020/vcomply-workflow-engine.mjs +1320 -541
  29. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  30. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +1 -1
  31. package/lib/sharedComponents/frequency/frequency-on-completion-of/frequency-on-completion-of.component.d.ts +1 -1
  32. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as moment from 'moment';
2
+ import moment from 'moment/moment';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../frequency/frequency.service";
5
5
  import * as i2 from "../frequency-dialog-top/frequency-dialog-top.component";
@@ -28,17 +28,20 @@ export class FrequencyDialogMonthlyComponent {
28
28
  ngOnInit() {
29
29
  this.frequencyInfo = Object.assign(this.frequencyService?.frequencyInfo);
30
30
  this.monthNameArray = [...new Set(this.frequencyService?.monthArray)];
31
- this.shortMonth = this.frequencyService?.monthArray.map(month => month.substring(0, 3));
32
- console.log("this.frequencyData ==>", this.frequencyData);
33
- if (this.frequencyData?.pattern != '' && parseInt(this.frequencyData?.pattern.split('~')[0]) === 3) {
31
+ this.shortMonth = this.frequencyService?.monthArray.map((month) => month.substring(0, 3));
32
+ console.log('this.frequencyData ==>', this.frequencyData);
33
+ if (this.frequencyData?.pattern != '' &&
34
+ parseInt(this.frequencyData?.pattern.split('~')[0]) === 3) {
34
35
  this.populateFrequency();
35
36
  }
36
37
  this.getMonthlyFrequency();
37
38
  }
38
39
  populateFrequency() {
39
40
  const patternInfo = this.frequencyData?.pattern.split('~');
40
- console.log("patternInfo ==>", patternInfo, this.frequencyData);
41
- this.selectedMonthly = patternInfo[2].split(',').map((ele) => Number(ele) - 1);
41
+ console.log('patternInfo ==>', patternInfo, this.frequencyData);
42
+ this.selectedMonthly = patternInfo[2]
43
+ .split(',')
44
+ .map((ele) => Number(ele) - 1);
42
45
  // const lifecycleInfo = this.frequencyData?.lifecycle.split('~~');
43
46
  this.monthlyInterval = this.frequencyData?.failedTime;
44
47
  this.monthlyWindow = this.frequencyData?.window;
@@ -72,12 +75,12 @@ export class FrequencyDialogMonthlyComponent {
72
75
  this.getMonthlyFrequency();
73
76
  }
74
77
  onTimeChanged(event) {
75
- console.log("time event =>", event);
78
+ console.log('time event =>', event);
76
79
  this.monthlyInterval = event;
77
80
  this.getMonthlyFrequency();
78
81
  }
79
82
  onMonthSelected(event) {
80
- console.log("evnet", event);
83
+ console.log('evnet', event);
81
84
  if (event.checked) {
82
85
  this.selectedMonthly.push(event.index);
83
86
  }
@@ -100,18 +103,21 @@ export class FrequencyDialogMonthlyComponent {
100
103
  break;
101
104
  }
102
105
  if (event.startFrom.toString().length > 10) {
103
- console.log("start 1111");
106
+ console.log('start 1111');
104
107
  this.startDate = Math.floor(event.startFrom / 1000);
105
108
  }
106
109
  else {
107
- console.log("start 11112222");
110
+ console.log('start 11112222');
108
111
  this.startDate = Math.floor(event.startFrom);
109
112
  }
110
- let endByDate = Math.floor(this.frequencyService.changeTimeZone(new Date())?.getTime() / 1000 + 86400000);
113
+ let endByDate = Math.floor(this.frequencyService.changeTimeZone(new Date())?.getTime() / 1000 +
114
+ 86400000);
111
115
  console.log('strat date ====>', this.startDate);
112
116
  console.log('end date', endByDate);
113
117
  if (event.type === 0) {
114
- endByDate = event.endsBy ? moment(event.endsBy + ' 00:00:00', 'DD-MMM-YYYY HH:mm:ss').unix() : endByDate;
118
+ endByDate = event.endsBy
119
+ ? moment(event.endsBy + ' 00:00:00', 'DD-MMM-YYYY HH:mm:ss').unix()
120
+ : endByDate;
115
121
  console.log('endByDate', endByDate);
116
122
  }
117
123
  this.monthlyLifeCycleStart = new Date(this.startDate * 1000);
@@ -134,7 +140,8 @@ export class FrequencyDialogMonthlyComponent {
134
140
  this.selectedMonthly = this.selectedMonthly.sort((n1, n2) => n1 - n2);
135
141
  const monthIndex = this.selectedMonthly.map((ele) => ele + 1);
136
142
  this.frequencyInfo.placeholder = this.getFrequencyPlaceholder(Number(this.monthlyInput));
137
- this.frequencyInfo.pattern = 3 + '~' + this.monthlyInput + '~' + monthIndex + '~' + '0';
143
+ this.frequencyInfo.pattern =
144
+ 3 + '~' + this.monthlyInput + '~' + monthIndex + '~' + '0';
138
145
  this.frequencyInfo.case = 'month';
139
146
  this.frequencyInfo.failedAfter = this.monthlyFailed;
140
147
  this.frequencyInfo.window = this.monthlyWindow;
@@ -145,36 +152,68 @@ export class FrequencyDialogMonthlyComponent {
145
152
  this.frequencyInfo.reportId = 0;
146
153
  this.frequencyInfo.continuous_failed_days = this.monthlyDeactivatedValue;
147
154
  this.frequencyDetails.emit(this.frequencyInfo);
148
- console.log(" this.frequencyInfo ==>", this.frequencyInfo);
155
+ console.log(' this.frequencyInfo ==>', this.frequencyInfo);
149
156
  }
150
157
  getFrequencyPlaceholder(monthlyInput) {
151
- console.log("monthlyInput ==>", monthlyInput);
158
+ console.log('monthlyInput ==>', monthlyInput);
152
159
  const selectedMonth = this.selectedMonthly.map((ele) => {
153
160
  return this.shortMonth[ele];
154
161
  });
155
162
  let placeholder = '';
156
163
  if (monthlyInput === 1) {
157
- placeholder = '1st of every ' + selectedMonth.join(', ') + ' by ' + this.monthlyInterval;
164
+ placeholder =
165
+ '1st of every ' +
166
+ selectedMonth.join(', ') +
167
+ ' by ' +
168
+ this.monthlyInterval;
158
169
  }
159
170
  else if (monthlyInput === 2) {
160
- placeholder = '2nd of every ' + selectedMonth.join(', ') + ' by ' + this.monthlyInterval;
171
+ placeholder =
172
+ '2nd of every ' +
173
+ selectedMonth.join(', ') +
174
+ ' by ' +
175
+ this.monthlyInterval;
161
176
  }
162
177
  else if (monthlyInput === 3) {
163
- placeholder = '3rd of every ' + selectedMonth.join(', ') + ' by ' + this.monthlyInterval;
178
+ placeholder =
179
+ '3rd of every ' +
180
+ selectedMonth.join(', ') +
181
+ ' by ' +
182
+ this.monthlyInterval;
164
183
  }
165
184
  else if (monthlyInput === 21 || monthlyInput === 31) {
166
- placeholder = monthlyInput + 'st of every ' + selectedMonth.join(', ') + ' by ' + this.monthlyInterval;
185
+ placeholder =
186
+ monthlyInput +
187
+ 'st of every ' +
188
+ selectedMonth.join(', ') +
189
+ ' by ' +
190
+ this.monthlyInterval;
167
191
  }
168
192
  else if (monthlyInput === 22) {
169
- placeholder = monthlyInput + 'nd of every ' + selectedMonth.join(', ') + ' by ' + this.monthlyInterval;
193
+ placeholder =
194
+ monthlyInput +
195
+ 'nd of every ' +
196
+ selectedMonth.join(', ') +
197
+ ' by ' +
198
+ this.monthlyInterval;
170
199
  }
171
200
  else if (monthlyInput === 23) {
172
- placeholder = monthlyInput + 'rd of every ' + selectedMonth.join(', ') + ' by ' + this.monthlyInterval;
201
+ placeholder =
202
+ monthlyInput +
203
+ 'rd of every ' +
204
+ selectedMonth.join(', ') +
205
+ ' by ' +
206
+ this.monthlyInterval;
173
207
  }
174
208
  else if (monthlyInput > 3) {
175
- placeholder = monthlyInput + 'th of every ' + selectedMonth.join(', ') + ' by ' + this.monthlyInterval;
176
- }
177
- console.log("placeholder ==>", placeholder);
209
+ placeholder =
210
+ monthlyInput +
211
+ 'th of every ' +
212
+ selectedMonth.join(', ') +
213
+ ' by ' +
214
+ this.monthlyInterval;
215
+ }
216
+ console.log('placeholder ==>', placeholder);
178
217
  return placeholder;
179
218
  }
180
219
  }
@@ -192,4 +231,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
192
231
  }], frequencyDetails: [{
193
232
  type: Output
194
233
  }] } });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkvZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkvZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7OztBQU9qQyxNQUFNLE9BQU8sK0JBQStCO0lBeUIxQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZCN0MsU0FBSSxHQUFNLEVBQUUsQ0FBQztRQUV0QixvQkFBZSxHQUFHLFVBQVUsQ0FBQztRQUM3QixpQkFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzNFLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRWxCLDBCQUFxQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLDRCQUF1QixHQUFH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IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseS5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lEaWFsb2dNb250aGx5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgbW9kZTogYW55PScnO1xyXG5cclxuICBtb250aGx5SW50ZXJ2YWwgPSAnMTE6MDAgcG0nO1xyXG4gIG1vbnRobHlJbnB1dCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jaGFuZ2VUaW1lWm9uZShuZXcgRGF0ZSgpKT8uZ2V0RGF0ZSgpO1xyXG4gIG1vbnRobHlGYWlsZWQgPSA1O1xyXG4gIG1vbnRobHlXaW5kb3cgPSA3O1xyXG5cclxuICBtb250aGx5TGlmZUN5Y2xlU3RhcnQgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk7XHJcbiAgbW9udGhseUxpZmVDeWNsZUVuZFRpbWUgPSBuZXcgRGF0ZSh0aGlzLm1vbnRobHlMaWZlQ3ljbGVTdGFydC5nZXRUaW1lKCkgKyA4NjQwMDAwMCk7XHJcbiAgbW9udGhseUxpZmVjeWNsZU9jY3VyYW5jZSA9IDEwO1xyXG4gIG1vbnRobHlTZWxldGVkTGlmZWN5Y2xlVHlwZSA9IDI7XHJcbiAgc2VsZWN0ZWRNb250aGx5ID0gWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMV07XHJcbiAgbW9udGhseURlYWN0aXZhdGVkVmFsdWUgPSAxMDtcclxuICBmcmVxdWVuY3lJbmZvOiBhbnk7XHJcbiAgbW9udGhOYW1lQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBzaG9ydE1vbnRoOkFycmF5PHN0cmluZz4gPSBbXTtcclxuXHJcbiAgbGlmZWN5Y2xlRGV0YWlsczogYW55ID0gJzAwMDAtMDAtMDB+fjAnO1xyXG5cclxuICBASW5wdXQoKSBzdGFydERhdGUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcclxuICBASW5wdXQoKSBmcmVxdWVuY3lEYXRhOiBhbnk7XHJcbiAgQE91dHB1dCgpIGZyZXF1ZW5jeURldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8gPSBPYmplY3QuYXNzaWduKHRoaXMuZnJlcXVlbmN5U2VydmljZT8uZnJlcXVlbmN5SW5mbyk7XHJcbiAgICB0aGlzLm1vbnRoTmFtZUFycmF5ID0gWy4uLm5ldyBTZXQodGhpcy5mcmVxdWVuY3lTZXJ2aWNlPy5tb250aEFycmF5KV07XHJcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2U/Lm1vbnRoQXJyYXkubWFwKG1vbnRoID0+IG1vbnRoLnN1YnN0cmluZygwLCAzKSk7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuZnJlcXVlbmN5RGF0YSA9PT5cIiwgdGhpcy5mcmVxdWVuY3lEYXRhKVxyXG4gICAgaWYodGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuICE9ICcnICYmIHBhcnNlSW50KHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybi5zcGxpdCgnficpWzBdKSA9PT0gMykge1xyXG4gICAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldE1vbnRobHlGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIHBvcHVsYXRlRnJlcXVlbmN5KCkge1xyXG4gICAgY29uc3QgcGF0dGVybkluZm8gPSB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4uc3BsaXQoJ34nKTtcclxuICAgIGNvbnNvbGUubG9nKFwicGF0dGVybkluZm8gPT0+XCIsIHBhdHRlcm5JbmZvLCB0aGlzLmZyZXF1ZW5jeURhdGEpXHJcbiAgICB0aGlzLnNlbGVjdGVkTW9udGhseSA9IHBhdHRlcm5JbmZvWzJdLnNwbGl0KCcsJykubWFwKChlbGU6IGFueSkgPT4gTnVtYmVyKGVsZSkgLSAxKVxyXG4gICAgLy8gY29uc3QgbGlmZWN5Y2xlSW5mbyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ubGlmZWN5Y2xlLnNwbGl0KCd+ficpO1xyXG4gICAgdGhpcy5tb250aGx5SW50ZXJ2YWwgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmZhaWxlZFRpbWU7XHJcbiAgICB0aGlzLm1vbnRobHlXaW5kb3cgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LndpbmRvdztcclxuICAgIHRoaXMubW9udGhseUlucHV0ID0gTnVtYmVyKHBhdHRlcm5JbmZvWzFdKTtcclxuICAgIC8vIGlmKE51bWJlcihsaWZlY3ljbGVJbmZvWzFdKSA+IDApIHtcclxuICAgIC8vICAgdGhpcy5tb250aGx5TGlmZWN5Y2xlT2NjdXJhbmNlID0gTnVtYmVyKGxpZmVjeWNsZUluZm9bMV0pO1xyXG4gICAgLy8gfVxyXG4gIFxyXG4gICAgdGhpcy5tb250aGx5TGlmZWN5Y2xlT2NjdXJhbmNlID0gTnVtYmVyKHBhdHRlcm5JbmZvWzFdKTtcclxuICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5zdGFydERhdGVcclxuICAgIHRoaXMubW9udGhseUxpZmVDeWNsZVN0YXJ0ID0gbmV3IERhdGUodGhpcy5mcmVxdWVuY3lEYXRhPy5zdGFydERhdGUgKiAxMDAwKTtcclxuICAgIHRoaXMubW9udGhseUZhaWxlZCA9IHRoaXMuZnJlcXVlbmN5RGF0YT8uZmFpbGVkO1xyXG4gICAgdGhpcy5tb250aGx5RGVhY3RpdmF0ZWRWYWx1ZSA9IHRoaXMuZnJlcXVlbmN5RGF0YT8uY29udGludW91c19mYWlsZWRfZGF5c1xyXG4gICAgLy8gaWYoIGxpZmVjeWNsZUluZm9bMF0gIT09ICcwMDAwLTAwLTAwJykge1xyXG4gICAgLy8gICBjb25zdCBkYXRlU2VsZWN0ZWQgPSBtb21lbnQobGlmZWN5Y2xlSW5mb1swXSArICcgMTE6NTkgcG0nLCAnREQtTU1NTS1ZWVlZIEhIOm1tIGEnKS51bml4KClcclxuICAgIC8vICAgdGhpcy5tb250aGx5TGlmZUN5Y2xlRW5kVGltZSA9IG5ldyBEYXRlKGRhdGVTZWxlY3RlZCAqIDEwMDApO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5saWZlY3ljbGU7XHJcbiAgICBpZiggIHRoaXMuZnJlcXVlbmN5RGF0YT8ubGlmZWN5Y2xlID09ICcwMDAwLTAwLTAwfn4wJykge1xyXG4gICAgICB0aGlzLm1vbnRobHlTZWxldGVkTGlmZWN5Y2xlVHlwZSA9IDI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgLy8gaWYobGlmZWN5Y2xlSW5mb1swXSAhPT0gJzAwMDAtMDAtMDAnKSB7XHJcbiAgICAvLyAgIHRoaXMubW9udGhseVNlbGV0ZWRMaWZlY3ljbGVUeXBlID0gMDtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGhseVNlbGV0ZWRMaWZlY3ljbGVUeXBlID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbHVlQ2hhbmdlZEZpcnN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdldmVudCA9PT4nLCBldmVudCk7XHJcbiAgICB0aGlzLm1vbnRobHlJbnB1dCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5nZXRNb250aGx5RnJlcXVlbmN5KCk7XHJcbiAgIH1cclxuXHJcbiAgIG9uVGltZUNoYW5nZWQoZXZlbnQ6c3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInRpbWUgZXZlbnQgPT5cIiwgZXZlbnQpXHJcbiAgICB0aGlzLm1vbnRobHlJbnRlcnZhbCA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRNb250aGx5RnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBcclxuICBvbk1vbnRoU2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJldm5ldFwiLCBldmVudClcclxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XHJcbiAgICAgdGhpcy5zZWxlY3RlZE1vbnRobHkucHVzaChldmVudC5pbmRleCk7XHJcbiAgIH0gZWxzZSB7XHJcbiAgICAgdGhpcy5zZWxlY3RlZE1vbnRobHkgPSB0aGlzLnNlbGVjdGVkTW9udGhseS5maWx0ZXIoKGVsZSkgPT4gZWxlICE9PSBldmVudC5pbmRleCk7XHJcbiAgIH1cclxuICAgdGhpcy5nZXRNb250aGx5RnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBsaWZlY3ljbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2V2ZW50PT0+JywgZXZlbnQpO1xyXG5cclxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gZXZlbnQuZW5kc0J5ICsgJ35+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSAnMDAwMC0wMC0wMH5+JyArIGV2ZW50LmVuZGFmdGVyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gJzAwMDAtMDAtMDB+fjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LnN0YXJ0RnJvbS50b1N0cmluZygpLmxlbmd0aCA+IDEwKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwic3RhcnQgMTExMVwiKVxyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoZXZlbnQuc3RhcnRGcm9tIC8gMTAwMCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInN0YXJ0IDExMTEyMjIyXCIpXHJcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gTWF0aC5mbG9vcihldmVudC5zdGFydEZyb20pO1xyXG4gICAgfVxyXG4gICAgbGV0IGVuZEJ5RGF0ZSA9IE1hdGguZmxvb3IodGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXRUaW1lKCkgLyAxMDAwICsgODY0MDAwMDApO1xyXG4gICAgY29uc29sZS5sb2coJ3N0cmF0IGRhdGUgPT09PT4nLCB0aGlzLnN0YXJ0RGF0ZSk7XHJcbiAgICBjb25zb2xlLmxvZygnZW5kIGRhdGUnLCBlbmRCeURhdGUpO1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09IDApIHtcclxuICAgICAgZW5kQnlEYXRlID0gZXZlbnQuZW5kc0J5ID8gbW9tZW50KGV2ZW50LmVuZHNCeSArICcgMDA6MDA6MDAnLCAnREQtTU1NLVlZWVkgSEg6bW06c3MnKS51bml4KCkgOiBlbmRCeURhdGU7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdlbmRCeURhdGUnLCBlbmRCeURhdGUpO1xyXG4gICAgICBcclxuICAgIH1cclxuICAgIHRoaXMubW9udGhseUxpZmVDeWNsZVN0YXJ0ID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUgKiAxMDAwKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5mYWlsZWRfdGltZV91dGMgPSBlbmRCeURhdGU7XHJcbiAgICB0aGlzLmdldE1vbnRobHlGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdkZWFjdGl2YXRlZCcpIHtcclxuICAgICAgdGhpcy5tb250aGx5RGVhY3RpdmF0ZWRWYWx1ZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnY29tcGxldGVkJykge1xyXG4gICAgICB0aGlzLm1vbnRobHlXaW5kb3cgPSBldmVudC52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGhseUZhaWxlZCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRNb250aGx5RnJlcXVlbmN5KCk7XHJcbn1cclxuXHJcbiAgZ2V0TW9udGhseUZyZXF1ZW5jeSgpe1xyXG4gICAgdGhpcy5zZWxlY3RlZE1vbnRobHkgPSB0aGlzLnNlbGVjdGVkTW9udGhseS5zb3J0KChuMSwgbjIpID0+IG4xIC0gbjIpOyAgIFxyXG4gICAgY29uc3QgbW9udGhJbmRleCA9IHRoaXMuc2VsZWN0ZWRNb250aGx5Lm1hcCgoZWxlKSA9PiBlbGUgKyAxKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5wbGFjZWhvbGRlciA9IHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoTnVtYmVyKHRoaXMubW9udGhseUlucHV0KSk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGF0dGVybiA9IDMgKyAnficgKyB0aGlzLm1vbnRobHlJbnB1dCArICd+JyArIG1vbnRoSW5kZXggKyAnficgKyAnMCc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uY2FzZSA9ICdtb250aCc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uZmFpbGVkQWZ0ZXIgPSB0aGlzLm1vbnRobHlGYWlsZWQ7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ud2luZG93ID0gdGhpcy5tb250aGx5V2luZG93O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnRpbWVJbjEyaHIgPSB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4yNEhyID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVGcm9tMTJoVG8yNGgodGhpcy5tb250aGx5SW50ZXJ2YWwpO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmxpZmVjeWNsZURldGFpbHMgPSB0aGlzLmxpZmVjeWNsZURldGFpbHM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uc3RhcnRGcm9tID0gTWF0aC5mbG9vcih0aGlzLm1vbnRobHlMaWZlQ3ljbGVTdGFydC5nZXRUaW1lKCkvMTAwMCk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucmVwb3J0SWQgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSB0aGlzLm1vbnRobHlEZWFjdGl2YXRlZFZhbHVlO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmVtaXQodGhpcy5mcmVxdWVuY3lJbmZvKTtcclxuICAgIGNvbnNvbGUubG9nKFwiIHRoaXMuZnJlcXVlbmN5SW5mbyA9PT5cIiwgIHRoaXMuZnJlcXVlbmN5SW5mbyk7XHJcbiAgfVxyXG5cclxuICBnZXRGcmVxdWVuY3lQbGFjZWhvbGRlcihtb250aGx5SW5wdXQ6IG51bWJlcikge1xyXG4gICAgY29uc29sZS5sb2coXCJtb250aGx5SW5wdXQgPT0+XCIsIG1vbnRobHlJbnB1dClcclxuICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSB0aGlzLnNlbGVjdGVkTW9udGhseS5tYXAoKGVsZSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5zaG9ydE1vbnRoW2VsZV07XHJcbiAgICB9KTtcclxuICAgIGxldCBwbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgaWYgKG1vbnRobHlJbnB1dCA9PT0gMSkge1xyXG4gICAgIHBsYWNlaG9sZGVyID0gJzFzdCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgdGhpcy5tb250aGx5SW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKG1vbnRobHlJbnB1dCA9PT0gMikge1xyXG4gICAgIHBsYWNlaG9sZGVyID0gJzJuZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgdGhpcy5tb250aGx5SW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKG1vbnRobHlJbnB1dCA9PT0gMykge1xyXG4gICAgIHBsYWNlaG9sZGVyID0gJzNyZCBvZiBldmVyeSAnICsgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICsgJyBieSAnICsgdGhpcy5tb250aGx5SW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKG1vbnRobHlJbnB1dCA9PT0gMjEgfHwgbW9udGhseUlucHV0ID09PSAzMSkge1xyXG4gICAgIHBsYWNlaG9sZGVyID0gbW9udGhseUlucHV0ICsgJ3N0IG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAobW9udGhseUlucHV0ID09PSAyMikge1xyXG4gICAgIHBsYWNlaG9sZGVyID0gbW9udGhseUlucHV0ICsgJ25kIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAobW9udGhseUlucHV0ID09PSAyMykge1xyXG4gICAgIHBsYWNlaG9sZGVyID0gbW9udGhseUlucHV0ICsgJ3JkIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAobW9udGhseUlucHV0ID4gMykge1xyXG4gICAgIHBsYWNlaG9sZGVyID0gbW9udGhseUlucHV0ICsgJ3RoIG9mIGV2ZXJ5ICcgKyBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgKyAnIGJ5ICcgKyB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKFwicGxhY2Vob2xkZXIgPT0+XCIsIHBsYWNlaG9sZGVyKVxyXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBGUkVRVUVOQ1k6PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy10b3A+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy10b3A+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWNoZWNrYm94LWxpc3Q+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1jaGVja2JveC1saXN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBFTUFJTCBOT1RJRklDQVRJT046PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuXHJcbjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLW1vbnRobHlcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+UkVBU1NFU1NNRU5UIEZSRVFVRU5DWTo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLW1vbnRobHktaXRlbSB2eC1tYi01XCI+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLXRvcFxyXG4gICAgICAgICAgICBbaWRdPVwiMlwiXHJcbiAgICAgICAgICAgIFtpbnB1dFRpbWVdPVwibW9udGhseUludGVydmFsXCJcclxuICAgICAgICAgICAgW29jY3VycmVuY2VGaXJzdF09XCJtb250aGx5SW5wdXRcIlxyXG4gICAgICAgICAgICBbZnJlcXVlbmN5VHlwZV09XCIzXCJcclxuICAgICAgICAgICAgKHRpbWVDaGFuZ2VkKT1cIm9uVGltZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWRGaXJzdCk9XCJ2YWx1ZUNoYW5nZWRGaXJzdCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy10b3A+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWNoZWNrYm94LWxpc3RcclxuICAgICAgICAgICAgW2lkXT1cIjJcIlxyXG4gICAgICAgICAgICBbbGlzdEFycmF5XT1cIm1vbnRoTmFtZUFycmF5XCJcclxuICAgICAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRNb250aGx5XCJcclxuICAgICAgICAgICAgKHNlbGVjdGVkQ2hlY2tib3gpPVwib25Nb250aFNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICA8L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWNoZWNrYm94LWxpc3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+UkVBU1NFU1NNRU5UIEVNQUlMIE5PVElGSUNBVElPTjo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLW1vbnRobHktaXRlbSB2eC1tYi01XCI+XHJcbiAgICAgICAgPCEtLSA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT4gLS0+XHJcbiAgICAgICAgPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlIFxyXG4gICAgICAgICAgICBbaWRdID0gJzInXHJcbiAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxyXG4gICAgICAgICAgICBbcGFnZU5hbWVdPVwiJ21vbnRobHknXCJcclxuICAgICAgICAgICAgW2RlYWN0aXZhdGVWYWx1ZV09XCJtb250aGx5RGVhY3RpdmF0ZWRWYWx1ZVwiXHJcbiAgICAgICAgICAgIFtpc0RlYWN0aXZhdGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbY29tcGxldGVkVmFsdWVdPVwibW9udGhseVdpbmRvd1wiXHJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID48L2FwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkvZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkvZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPbkMsTUFBTSxPQUFPLCtCQUErQjtJQTBCMUMsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6QjdDLFNBQUksR0FBUSxFQUFFLENBQUM7UUFFeEIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsaUJBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzRSxrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUVsQiwwQkFBcUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSw0QkFBdUIsR0FBRyxJQUFJ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O2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRnJlcXVlbmN5U2VydmljZSB9IGZyb20gJy4uLy4uL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XHJcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktZGlhbG9nLW1vbnRobHkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseS5jb21wb25lbnQubGVzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5RGlhbG9nTW9udGhseUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgbW9kZTogYW55ID0gJyc7XHJcblxyXG4gIG1vbnRobHlJbnRlcnZhbCA9ICcxMTowMCBwbSc7XHJcbiAgbW9udGhseUlucHV0ID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCkpPy5nZXREYXRlKCk7XHJcbiAgbW9udGhseUZhaWxlZCA9IDU7XHJcbiAgbW9udGhseVdpbmRvdyA9IDc7XHJcblxyXG4gIG1vbnRobHlMaWZlQ3ljbGVTdGFydCA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jaGFuZ2VUaW1lWm9uZShuZXcgRGF0ZSgpKTtcclxuICBtb250aGx5TGlmZUN5Y2xlRW5kVGltZSA9IG5ldyBEYXRlKFxyXG4gICAgdGhpcy5tb250aGx5TGlmZUN5Y2xlU3RhcnQuZ2V0VGltZSgpICsgODY0MDAwMDBcclxuICApO1xyXG4gIG1vbnRobHlMaWZlY3ljbGVPY2N1cmFuY2UgPSAxMDtcclxuICBtb250aGx5U2VsZXRlZExpZmVjeWNsZVR5cGUgPSAyO1xyXG4gIHNlbGVjdGVkTW9udGhseSA9IFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTFdO1xyXG4gIG1vbnRobHlEZWFjdGl2YXRlZFZhbHVlID0gMTA7XHJcbiAgZnJlcXVlbmN5SW5mbzogYW55O1xyXG4gIG1vbnRoTmFtZUFycmF5OiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgc2hvcnRNb250aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG5cclxuICBsaWZlY3ljbGVEZXRhaWxzOiBhbnkgPSAnMDAwMC0wMC0wMH5+MCc7XHJcblxyXG4gIEBJbnB1dCgpIHN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xyXG4gIEBJbnB1dCgpIGZyZXF1ZW5jeURhdGE6IGFueTtcclxuICBAT3V0cHV0KCkgZnJlcXVlbmN5RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvID0gT2JqZWN0LmFzc2lnbih0aGlzLmZyZXF1ZW5jeVNlcnZpY2U/LmZyZXF1ZW5jeUluZm8pO1xyXG4gICAgdGhpcy5tb250aE5hbWVBcnJheSA9IFsuLi5uZXcgU2V0KHRoaXMuZnJlcXVlbmN5U2VydmljZT8ubW9udGhBcnJheSldO1xyXG4gICAgdGhpcy5zaG9ydE1vbnRoID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlPy5tb250aEFycmF5Lm1hcCgobW9udGgpID0+XHJcbiAgICAgIG1vbnRoLnN1YnN0cmluZygwLCAzKVxyXG4gICAgKTtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmZyZXF1ZW5jeURhdGEgPT0+JywgdGhpcy5mcmVxdWVuY3lEYXRhKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuICE9ICcnICYmXHJcbiAgICAgIHBhcnNlSW50KHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybi5zcGxpdCgnficpWzBdKSA9PT0gM1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucG9wdWxhdGVGcmVxdWVuY3koKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0TW9udGhseUZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVGcmVxdWVuY3koKSB7XHJcbiAgICBjb25zdCBwYXR0ZXJuSW5mbyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybi5zcGxpdCgnficpO1xyXG4gICAgY29uc29sZS5sb2coJ3BhdHRlcm5JbmZvID09PicsIHBhdHRlcm5JbmZvLCB0aGlzLmZyZXF1ZW5jeURhdGEpO1xyXG4gICAgdGhpcy5zZWxlY3RlZE1vbnRobHkgPSBwYXR0ZXJuSW5mb1syXVxyXG4gICAgICAuc3BsaXQoJywnKVxyXG4gICAgICAubWFwKChlbGU6IGFueSkgPT4gTnVtYmVyKGVsZSkgLSAxKTtcclxuICAgIC8vIGNvbnN0IGxpZmVjeWNsZUluZm8gPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmxpZmVjeWNsZS5zcGxpdCgnfn4nKTtcclxuICAgIHRoaXMubW9udGhseUludGVydmFsID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5mYWlsZWRUaW1lO1xyXG4gICAgdGhpcy5tb250aGx5V2luZG93ID0gdGhpcy5mcmVxdWVuY3lEYXRhPy53aW5kb3c7XHJcbiAgICB0aGlzLm1vbnRobHlJbnB1dCA9IE51bWJlcihwYXR0ZXJuSW5mb1sxXSk7XHJcbiAgICAvLyBpZihOdW1iZXIobGlmZWN5Y2xlSW5mb1sxXSkgPiAwKSB7XHJcbiAgICAvLyAgIHRoaXMubW9udGhseUxpZmVjeWNsZU9jY3VyYW5jZSA9IE51bWJlcihsaWZlY3ljbGVJbmZvWzFdKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICB0aGlzLm1vbnRobHlMaWZlY3ljbGVPY2N1cmFuY2UgPSBOdW1iZXIocGF0dGVybkluZm9bMV0pO1xyXG4gICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LnN0YXJ0RGF0ZTtcclxuICAgIHRoaXMubW9udGhseUxpZmVDeWNsZVN0YXJ0ID0gbmV3IERhdGUodGhpcy5mcmVxdWVuY3lEYXRhPy5zdGFydERhdGUgKiAxMDAwKTtcclxuICAgIHRoaXMubW9udGhseUZhaWxlZCA9IHRoaXMuZnJlcXVlbmN5RGF0YT8uZmFpbGVkO1xyXG4gICAgdGhpcy5tb250aGx5RGVhY3RpdmF0ZWRWYWx1ZSA9IHRoaXMuZnJlcXVlbmN5RGF0YT8uY29udGludW91c19mYWlsZWRfZGF5cztcclxuICAgIC8vIGlmKCBsaWZlY3ljbGVJbmZvWzBdICE9PSAnMDAwMC0wMC0wMCcpIHtcclxuICAgIC8vICAgY29uc3QgZGF0ZVNlbGVjdGVkID0gbW9tZW50KGxpZmVjeWNsZUluZm9bMF0gKyAnIDExOjU5IHBtJywgJ0RELU1NTU0tWVlZWSBISDptbSBhJykudW5peCgpXHJcbiAgICAvLyAgIHRoaXMubW9udGhseUxpZmVDeWNsZUVuZFRpbWUgPSBuZXcgRGF0ZShkYXRlU2VsZWN0ZWQgKiAxMDAwKTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMubGlmZWN5Y2xlRGV0YWlscyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ubGlmZWN5Y2xlO1xyXG4gICAgaWYgKHRoaXMuZnJlcXVlbmN5RGF0YT8ubGlmZWN5Y2xlID09ICcwMDAwLTAwLTAwfn4wJykge1xyXG4gICAgICB0aGlzLm1vbnRobHlTZWxldGVkTGlmZWN5Y2xlVHlwZSA9IDI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBpZihsaWZlY3ljbGVJbmZvWzBdICE9PSAnMDAwMC0wMC0wMCcpIHtcclxuICAgICAgLy8gICB0aGlzLm1vbnRobHlTZWxldGVkTGlmZWN5Y2xlVHlwZSA9IDA7XHJcbiAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGhseVNlbGV0ZWRMaWZlY3ljbGVUeXBlID0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbHVlQ2hhbmdlZEZpcnN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdldmVudCA9PT4nLCBldmVudCk7XHJcbiAgICB0aGlzLm1vbnRobHlJbnB1dCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgdGhpcy5nZXRNb250aGx5RnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBvblRpbWVDaGFuZ2VkKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnNvbGUubG9nKCd0aW1lIGV2ZW50ID0+JywgZXZlbnQpO1xyXG4gICAgdGhpcy5tb250aGx5SW50ZXJ2YWwgPSBldmVudDtcclxuICAgIHRoaXMuZ2V0TW9udGhseUZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb25Nb250aFNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdldm5ldCcsIGV2ZW50KTtcclxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aGx5LnB1c2goZXZlbnQuaW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRobHkgPSB0aGlzLnNlbGVjdGVkTW9udGhseS5maWx0ZXIoXHJcbiAgICAgICAgKGVsZSkgPT4gZWxlICE9PSBldmVudC5pbmRleFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRNb250aGx5RnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBsaWZlY3ljbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2V2ZW50PT0+JywgZXZlbnQpO1xyXG5cclxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlIDA6XHJcbiAgICAgICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gZXZlbnQuZW5kc0J5ICsgJ35+MCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMTpcclxuICAgICAgICB0aGlzLmxpZmVjeWNsZURldGFpbHMgPSAnMDAwMC0wMC0wMH5+JyArIGV2ZW50LmVuZGFmdGVyO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy5saWZlY3ljbGVEZXRhaWxzID0gJzAwMDAtMDAtMDB+fjAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LnN0YXJ0RnJvbS50b1N0cmluZygpLmxlbmd0aCA+IDEwKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdzdGFydCAxMTExJyk7XHJcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gTWF0aC5mbG9vcihldmVudC5zdGFydEZyb20gLyAxMDAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdzdGFydCAxMTExMjIyMicpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IE1hdGguZmxvb3IoZXZlbnQuc3RhcnRGcm9tKTtcclxuICAgIH1cclxuICAgIGxldCBlbmRCeURhdGUgPSBNYXRoLmZsb29yKFxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKSk/LmdldFRpbWUoKSAvIDEwMDAgK1xyXG4gICAgICAgIDg2NDAwMDAwXHJcbiAgICApO1xyXG4gICAgY29uc29sZS5sb2coJ3N0cmF0IGRhdGUgPT09PT4nLCB0aGlzLnN0YXJ0RGF0ZSk7XHJcbiAgICBjb25zb2xlLmxvZygnZW5kIGRhdGUnLCBlbmRCeURhdGUpO1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09IDApIHtcclxuICAgICAgZW5kQnlEYXRlID0gZXZlbnQuZW5kc0J5XHJcbiAgICAgICAgPyBtb21lbnQoZXZlbnQuZW5kc0J5ICsgJyAwMDowMDowMCcsICdERC1NTU0tWVlZWSBISDptbTpzcycpLnVuaXgoKVxyXG4gICAgICAgIDogZW5kQnlEYXRlO1xyXG4gICAgICBjb25zb2xlLmxvZygnZW5kQnlEYXRlJywgZW5kQnlEYXRlKTtcclxuICAgIH1cclxuICAgIHRoaXMubW9udGhseUxpZmVDeWNsZVN0YXJ0ID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUgKiAxMDAwKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5mYWlsZWRfdGltZV91dGMgPSBlbmRCeURhdGU7XHJcbiAgICB0aGlzLmdldE1vbnRobHlGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdkZWFjdGl2YXRlZCcpIHtcclxuICAgICAgdGhpcy5tb250aGx5RGVhY3RpdmF0ZWRWYWx1ZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnY29tcGxldGVkJykge1xyXG4gICAgICB0aGlzLm1vbnRobHlXaW5kb3cgPSBldmVudC52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubW9udGhseUZhaWxlZCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRNb250aGx5RnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBnZXRNb250aGx5RnJlcXVlbmN5KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1vbnRobHkgPSB0aGlzLnNlbGVjdGVkTW9udGhseS5zb3J0KChuMSwgbjIpID0+IG4xIC0gbjIpO1xyXG4gICAgY29uc3QgbW9udGhJbmRleCA9IHRoaXMuc2VsZWN0ZWRNb250aGx5Lm1hcCgoZWxlKSA9PiBlbGUgKyAxKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5wbGFjZWhvbGRlciA9IHRoaXMuZ2V0RnJlcXVlbmN5UGxhY2Vob2xkZXIoXHJcbiAgICAgIE51bWJlcih0aGlzLm1vbnRobHlJbnB1dClcclxuICAgICk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGF0dGVybiA9XHJcbiAgICAgIDMgKyAnficgKyB0aGlzLm1vbnRobHlJbnB1dCArICd+JyArIG1vbnRoSW5kZXggKyAnficgKyAnMCc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uY2FzZSA9ICdtb250aCc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uZmFpbGVkQWZ0ZXIgPSB0aGlzLm1vbnRobHlGYWlsZWQ7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ud2luZG93ID0gdGhpcy5tb250aGx5V2luZG93O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnRpbWVJbjEyaHIgPSB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4yNEhyID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLnRpbWVGcm9tMTJoVG8yNGgoXHJcbiAgICAgIHRoaXMubW9udGhseUludGVydmFsXHJcbiAgICApO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmxpZmVjeWNsZURldGFpbHMgPSB0aGlzLmxpZmVjeWNsZURldGFpbHM7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uc3RhcnRGcm9tID0gTWF0aC5mbG9vcihcclxuICAgICAgdGhpcy5tb250aGx5TGlmZUN5Y2xlU3RhcnQuZ2V0VGltZSgpIC8gMTAwMFxyXG4gICAgKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5yZXBvcnRJZCA9IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uY29udGludW91c19mYWlsZWRfZGF5cyA9IHRoaXMubW9udGhseURlYWN0aXZhdGVkVmFsdWU7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZW1pdCh0aGlzLmZyZXF1ZW5jeUluZm8pO1xyXG4gICAgY29uc29sZS5sb2coJyB0aGlzLmZyZXF1ZW5jeUluZm8gPT0+JywgdGhpcy5mcmVxdWVuY3lJbmZvKTtcclxuICB9XHJcblxyXG4gIGdldEZyZXF1ZW5jeVBsYWNlaG9sZGVyKG1vbnRobHlJbnB1dDogbnVtYmVyKSB7XHJcbiAgICBjb25zb2xlLmxvZygnbW9udGhseUlucHV0ID09PicsIG1vbnRobHlJbnB1dCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZE1vbnRoID0gdGhpcy5zZWxlY3RlZE1vbnRobHkubWFwKChlbGUpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2hvcnRNb250aFtlbGVdO1xyXG4gICAgfSk7XHJcbiAgICBsZXQgcGxhY2Vob2xkZXIgPSAnJztcclxuICAgIGlmIChtb250aGx5SW5wdXQgPT09IDEpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICcxc3Qgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMubW9udGhseUludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChtb250aGx5SW5wdXQgPT09IDIpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICcybmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMubW9udGhseUludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChtb250aGx5SW5wdXQgPT09IDMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgICczcmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMubW9udGhseUludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChtb250aGx5SW5wdXQgPT09IDIxIHx8IG1vbnRobHlJbnB1dCA9PT0gMzEpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIG1vbnRobHlJbnB1dCArXHJcbiAgICAgICAgJ3N0IG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIH0gZWxzZSBpZiAobW9udGhseUlucHV0ID09PSAyMikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9XHJcbiAgICAgICAgbW9udGhseUlucHV0ICtcclxuICAgICAgICAnbmQgb2YgZXZlcnkgJyArXHJcbiAgICAgICAgc2VsZWN0ZWRNb250aC5qb2luKCcsICcpICtcclxuICAgICAgICAnIGJ5ICcgK1xyXG4gICAgICAgIHRoaXMubW9udGhseUludGVydmFsO1xyXG4gICAgfSBlbHNlIGlmIChtb250aGx5SW5wdXQgPT09IDIzKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID1cclxuICAgICAgICBtb250aGx5SW5wdXQgK1xyXG4gICAgICAgICdyZCBvZiBldmVyeSAnICtcclxuICAgICAgICBzZWxlY3RlZE1vbnRoLmpvaW4oJywgJykgK1xyXG4gICAgICAgICcgYnkgJyArXHJcbiAgICAgICAgdGhpcy5tb250aGx5SW50ZXJ2YWw7XHJcbiAgICB9IGVsc2UgaWYgKG1vbnRobHlJbnB1dCA+IDMpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPVxyXG4gICAgICAgIG1vbnRobHlJbnB1dCArXHJcbiAgICAgICAgJ3RoIG9mIGV2ZXJ5ICcgK1xyXG4gICAgICAgIHNlbGVjdGVkTW9udGguam9pbignLCAnKSArXHJcbiAgICAgICAgJyBieSAnICtcclxuICAgICAgICB0aGlzLm1vbnRobHlJbnRlcnZhbDtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdwbGFjZWhvbGRlciA9PT4nLCBwbGFjZWhvbGRlcik7XHJcbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRlJFUVVFTkNZOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseS1pdGVtIHZ4LW1iLTVcIj5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctdG9wPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctdG9wPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1jaGVja2JveC1saXN0PjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctY2hlY2tib3gtbGlzdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRU1BSUwgTk9USUZJQ0FUSU9OOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctbW9udGhseS1pdGVtIHZ4LW1iLTVcIj5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBGUkVRVUVOQ1k6PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy10b3BcclxuICAgICAgICAgICAgW2lkXT1cIjJcIlxyXG4gICAgICAgICAgICBbaW5wdXRUaW1lXT1cIm1vbnRobHlJbnRlcnZhbFwiXHJcbiAgICAgICAgICAgIFtvY2N1cnJlbmNlRmlyc3RdPVwibW9udGhseUlucHV0XCJcclxuICAgICAgICAgICAgW2ZyZXF1ZW5jeVR5cGVdPVwiM1wiXHJcbiAgICAgICAgICAgICh0aW1lQ2hhbmdlZCk9XCJvblRpbWVDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2VkRmlyc3QpPVwidmFsdWVDaGFuZ2VkRmlyc3QoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctdG9wPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1jaGVja2JveC1saXN0XHJcbiAgICAgICAgICAgIFtpZF09XCIyXCJcclxuICAgICAgICAgICAgW2xpc3RBcnJheV09XCJtb250aE5hbWVBcnJheVwiXHJcbiAgICAgICAgICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkTW9udGhseVwiXHJcbiAgICAgICAgICAgIChzZWxlY3RlZENoZWNrYm94KT1cIm9uTW9udGhTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1jaGVja2JveC1saXN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBFTUFJTCBOT1RJRklDQVRJT046PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1tb250aGx5LWl0ZW0gdngtbWItNVwiPlxyXG4gICAgICAgIDwhLS0gPGFwcC1mcmVxdWVuY3ktZGlhbG9nLWR1ZS1kYXRlPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+IC0tPlxyXG4gICAgICAgIDxhcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZSBcclxuICAgICAgICAgICAgW2lkXSA9ICcyJ1xyXG4gICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgW3BhZ2VOYW1lXT1cIidtb250aGx5J1wiXHJcbiAgICAgICAgICAgIFtkZWFjdGl2YXRlVmFsdWVdPVwibW9udGhseURlYWN0aXZhdGVkVmFsdWVcIlxyXG4gICAgICAgICAgICBbaXNEZWFjdGl2YXRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2NvbXBsZXRlZFZhbHVlXT1cIm1vbnRobHlXaW5kb3dcIlxyXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -1,5 +1,5 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import * as moment from 'moment';
1
+ import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
+ import moment from 'moment/moment';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../frequency/frequency.service";
5
5
  import * as i2 from "@angular/forms";
@@ -25,13 +25,17 @@ export class FrequencyDialogOneTimeComponent {
25
25
  }
26
26
  ngOnInit() {
27
27
  this.dateConfig = this.frequencyService.dateConfig;
28
- this.dateConfig['min'] = this.frequencyService.changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))?.getDate()?.toString();
28
+ this.dateConfig['min'] = this.frequencyService
29
+ .changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))
30
+ ?.getDate()
31
+ ?.toString();
29
32
  this.frequencyInfo = Object.assign(this.frequencyService.frequencyInfo);
30
- this.shortMonth = this.frequencyService.monthArray.map(month => month.substring(0, 3));
33
+ this.shortMonth = this.frequencyService.monthArray.map((month) => month.substring(0, 3));
31
34
  this.selectedDate = moment(this.todayDate);
32
- console.log("this.dateConfig ", this.dateConfig, this.todayDate);
33
- console.log("this.frequencyData ==>", this.frequencyData, this.frequencyData?.pattern.split('~'));
34
- if (this.frequencyData?.pattern != '' && this.frequencyData?.pattern.split('~')[0] === '0') {
35
+ console.log('this.dateConfig ', this.dateConfig, this.todayDate);
36
+ console.log('this.frequencyData ==>', this.frequencyData, this.frequencyData?.pattern.split('~'));
37
+ if (this.frequencyData?.pattern != '' &&
38
+ this.frequencyData?.pattern.split('~')[0] === '0') {
35
39
  this.populateFrequency();
36
40
  }
37
41
  else {
@@ -40,15 +44,16 @@ export class FrequencyDialogOneTimeComponent {
40
44
  }
41
45
  populateFrequency() {
42
46
  const patternInfo = this.frequencyData?.pattern.split('~');
43
- console.log("patternInfo ==>", patternInfo);
44
- const timeStamp = moment(`${patternInfo[3]}-${patternInfo[2]}-${patternInfo[1]} ${this.frequencyData?.failedTime}`, "DD-MM-YYYY HH:mm a").unix();
45
- console.log("timeStamp -->", timeStamp);
47
+ console.log('patternInfo ==>', patternInfo);
48
+ const timeStamp = moment(`${patternInfo[3]}-${patternInfo[2]}-${patternInfo[1]} ${this.frequencyData?.failedTime}`, 'DD-MM-YYYY HH:mm a').unix();
49
+ console.log('timeStamp -->', timeStamp);
46
50
  this.todayDate = new Date(timeStamp * 1000);
47
51
  this.selectedDate = moment(this.todayDate);
48
52
  this.oneTimeFailed = this.frequencyData?.failed;
49
53
  this.oneTimeWindow = this.frequencyData?.window;
50
54
  this.oneTimeStartTime = this.frequencyData?.failedTime;
51
- this.oneTimeSelected = patternInfo[1] + '~' + patternInfo[2] + '~' + patternInfo[3];
55
+ this.oneTimeSelected =
56
+ patternInfo[1] + '~' + patternInfo[2] + '~' + patternInfo[3];
52
57
  this.dateObjectData = new Date(moment(this.oneTimeSelected + ' ' + this.oneTimeStartTime, 'YYYY~MM~DD HH:mm:ss').unix() * 1000);
53
58
  this.getOneTimeFrequency();
54
59
  }
@@ -73,15 +78,23 @@ export class FrequencyDialogOneTimeComponent {
73
78
  this.getOneTimeFrequency();
74
79
  }
75
80
  onTimeChanged(event) {
76
- console.log("event sring", event);
81
+ console.log('event sring', event);
77
82
  console.log(this.dateObjectData);
78
83
  this.oneTimeStartTime = event;
79
84
  if (typeof this.dateObjectData == 'object') {
80
85
  this.dateObjectData = moment(this.dateObjectData).toDate();
81
86
  }
82
87
  console.log(this.dateObjectData);
83
- let timeStamp = moment(this.dateObjectData.getDate() + '-' + (this.dateObjectData.getMonth() + 1) + '-' + this.dateObjectData.getFullYear() + ' ' + this.oneTimeStartTime, 'DD-MM-YYYY hh:mm a').unix();
84
- this.oneTimeSelected = moment(timeStamp * 1000).format('YYYY~MM~DDTHH:mm:ssZ').split('T')[0];
88
+ let timeStamp = moment(this.dateObjectData.getDate() +
89
+ '-' +
90
+ (this.dateObjectData.getMonth() + 1) +
91
+ '-' +
92
+ this.dateObjectData.getFullYear() +
93
+ ' ' +
94
+ this.oneTimeStartTime, 'DD-MM-YYYY hh:mm a').unix();
95
+ this.oneTimeSelected = moment(timeStamp * 1000)
96
+ .format('YYYY~MM~DDTHH:mm:ssZ')
97
+ .split('T')[0];
85
98
  console.log('timeStamp', timeStamp, this.oneTimeSelected);
86
99
  this.getOneTimeFrequency();
87
100
  }
@@ -90,10 +103,18 @@ export class FrequencyDialogOneTimeComponent {
90
103
  const newDate = moment(event.date).unix();
91
104
  this.dateObjectData = new Date(newDate * 1000);
92
105
  this.todayDate = this.dateObjectData;
93
- let timeStamp = moment(this.dateObjectData.getDate() + '-' + (this.dateObjectData.getMonth() + 1) + '-' + this.dateObjectData.getFullYear() + ' ' + this.oneTimeStartTime, 'DD-MM-YYYY hh:mm a').unix();
106
+ let timeStamp = moment(this.dateObjectData.getDate() +
107
+ '-' +
108
+ (this.dateObjectData.getMonth() + 1) +
109
+ '-' +
110
+ this.dateObjectData.getFullYear() +
111
+ ' ' +
112
+ this.oneTimeStartTime, 'DD-MM-YYYY hh:mm a').unix();
94
113
  // tslint:disable-next-line: no-console
95
114
  console.log('timeStamp', timeStamp, Date.now() / 1000, Date.now() / 1000 > timeStamp);
96
- this.oneTimeSelected = event.date.format('YYYY~MM~DDTHH:mm:ssZ').split('T')[0];
115
+ this.oneTimeSelected = event.date
116
+ .format('YYYY~MM~DDTHH:mm:ssZ')
117
+ .split('T')[0];
97
118
  // tslint:disable-next-line: no-console
98
119
  console.log(event.date.format('YYYY~MM~DDTHH:mm:ssZ'));
99
120
  this.getOneTimeFrequency();
@@ -105,9 +126,31 @@ export class FrequencyDialogOneTimeComponent {
105
126
  this.selectedDate = moment(this.todayDate);
106
127
  // tslint:disable-next-line: max-line-length
107
128
  this.frequencyInfo.placeholder =
108
- 'One Time ' + this.todayDate.getDate() + ' ' + this.shortMonth[this.todayDate.getMonth()] + ' ' + this.todayDate.getFullYear() + ' by ' + this.oneTimeStartTime;
129
+ 'One Time ' +
130
+ this.todayDate.getDate() +
131
+ ' ' +
132
+ this.shortMonth[this.todayDate.getMonth()] +
133
+ ' ' +
134
+ this.todayDate.getFullYear() +
135
+ ' by ' +
136
+ this.oneTimeStartTime;
109
137
  this.frequencyInfo.pattern =
110
- 0 + '~' + (this.oneTimeSelected === '' ? this.frequencyService.changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))?.getFullYear() + '~' + (this.frequencyService.changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))?.getMonth() + 1) + '~' + this.frequencyService.changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))?.getDate() : this.oneTimeSelected);
138
+ 0 +
139
+ '~' +
140
+ (this.oneTimeSelected === ''
141
+ ? this.frequencyService
142
+ .changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))
143
+ ?.getFullYear() +
144
+ '~' +
145
+ (this.frequencyService
146
+ .changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))
147
+ ?.getMonth() +
148
+ 1) +
149
+ '~' +
150
+ this.frequencyService
151
+ .changeTimeZone(new Date()?.setDate(new Date()?.getDate() + 1))
152
+ ?.getDate()
153
+ : this.oneTimeSelected);
111
154
  this.frequencyInfo.case = 'oneTime';
112
155
  this.frequencyInfo.failedAfter = this.oneTimeFailed;
113
156
  this.frequencyInfo.window = this.oneTimeWindow;
@@ -116,7 +159,7 @@ export class FrequencyDialogOneTimeComponent {
116
159
  this.frequencyInfo.failed_time_utc = 0;
117
160
  this.frequencyInfo.reportId = 0;
118
161
  this.frequencyDetails.emit(this.frequencyInfo);
119
- console.log(" this.frequencyInfo ==>", this.frequencyInfo);
162
+ console.log(' this.frequencyInfo ==>', this.frequencyInfo);
120
163
  }
121
164
  }
122
165
  FrequencyDialogOneTimeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FrequencyDialogOneTimeComponent, deps: [{ token: i1.FrequencyService }], target: i0.ɵɵFactoryTarget.Component });
@@ -134,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
134
177
  }], frequencyDetails: [{
135
178
  type: Output
136
179
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS1kaWFsb2cvZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS9mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lL2ZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUYsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBUWpDLE1BQU0sT0FBTywrQkFBK0I7SUF3QzFDLFlBQ1UsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFwQjVDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixxQkFBZ0IsR0FBUSxVQUFVLENBQUM7UUFDbkMsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFFckIsY0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRy9GLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQy9CLG1CQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsWUFBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFHakUsU0FBSSxHQUFNLEVBQUUsQ0FBQztRQUVaLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFJL0MsQ0FBQztJQUVQLFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNuSSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2hFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNqRyxJQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO1lBQ3pGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO2FBQU07WUFDTCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtJQUVILENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUMzQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxFQUFFLG9CQUFvQixDQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEosT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQTtRQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQTtRQUN0RCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDL0gsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVU7UUFDckIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDbEM7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQVk7UUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxRQUFRLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzVEO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFDbEosb0JBQW9CLENBQ3JCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVCxJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzVGLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFFL0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBRWpCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUMvQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNyQyxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUNsSixvQkFBb0IsQ0FDckIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNULHVDQUF1QztRQUN2QyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLEdBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFL0UsdUNBQXVDO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBRS9CLENBQUM7SUFFQyxtQkFBbUI7UUFDakIsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbEQ7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDMUMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVztZQUM1QixXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNsSyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU87WUFDeEIsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4WCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN0RCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM5RCxDQUFDOzs0SEEzSlUsK0JBQStCO2dIQUEvQiwrQkFBK0IsNFJDWDVDLGs1SEEwREE7MkZEL0NhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSwrQkFBK0I7dUdBd0JoQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBZWQsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5RGlhbG9nT25lVGltZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy8gdGltZURhdGEgPSAnMTE6NTkgcG0nO1xyXG4gIC8vIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICAvLyBkYXRlcGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG5cclxuICAvLyBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvLyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAvLyB9XHJcblxyXG4gIC8vIG9wZW5EYXRlUGlja2VyKCkge1xyXG4gIC8vICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcclxuICAvLyAgIHRoaXMuZGF0ZXBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gIC8vIH1cclxuICBcclxuICAvLyBjbG9zZURhdGVwaWNrZXIoKSB7XHJcbiAgLy8gICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAvLyAgIHRoaXMuZGF0ZXBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICAvLyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBkYXRlcGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIHNob3dEYXRlRXJyb3IgPSBmYWxzZTtcclxuICBvbmVUaW1lRmFpbGVkID0gNTtcclxuICBvbmVUaW1lV2luZG93ID0gMTU7XHJcbiAgb25lVGltZVN0YXJ0VGltZTogYW55ID0gJzExOjAwIHBtJztcclxuICBvbmVUaW1lU2VsZWN0ZWQgPSAnJztcclxuICBkYXRlQ29uZmlnOiBhbnk7XHJcbiAgdG9kYXlEYXRlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCk/LnNldERhdGUobmV3IERhdGUoKT8uZ2V0RGF0ZSgpKzEpKTtcclxuICAvLyB0b2RheURhdGUgPSAnZnJpIEphbiAyMCAyMDIzIDIzOjQwOjA5IEdNVCswNTMwIChJbmRpYSBTdGFuZGFyZCBUaW1lKSc7XHJcbiAgZnJlcXVlbmN5SW5mbzogYW55O1xyXG4gIHNob3J0TW9udGg6IEFycmF5PHN0cmluZz4gPSBbXTtcclxuICBkYXRlT2JqZWN0RGF0YSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jaGFuZ2VUaW1lWm9uZShuZXcgRGF0ZSgpPy5zZXREYXRlKG5ldyBEYXRlKCk/LmdldERhdGUoKSsxKSk7XHJcbiAgbWluRGF0ZSA9IG1vbWVudChEYXRlLm5vdygpKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKT8uc3BsaXQoJyAnKVswXTtcclxuICBzZWxlY3RlZERhdGU6IGFueTtcclxuICBASW5wdXQoKSBmcmVxdWVuY3lEYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgbW9kZTogYW55PScnO1xyXG5cclxuICBAT3V0cHV0KCkgZnJlcXVlbmN5RGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZnJlcXVlbmN5U2VydmljZTogRnJlcXVlbmN5U2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRlQ29uZmlnID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmRhdGVDb25maWc7XHJcbiAgICB0aGlzLmRhdGVDb25maWdbJ21pbiddID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCk/LnNldERhdGUobmV3IERhdGUoKT8uZ2V0RGF0ZSgpKzEpKT8uZ2V0RGF0ZSgpPy50b1N0cmluZygpO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvID0gT2JqZWN0LmFzc2lnbih0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZnJlcXVlbmN5SW5mbyk7XHJcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAobW9udGggPT4gbW9udGguc3Vic3RyaW5nKDAsIDMpKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbW9tZW50KHRoaXMudG9kYXlEYXRlKTtcclxuICAgIGNvbnNvbGUubG9nKFwidGhpcy5kYXRlQ29uZmlnIFwiLCB0aGlzLmRhdGVDb25maWcsIHRoaXMudG9kYXlEYXRlKVxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmZyZXF1ZW5jeURhdGEgPT0+XCIsIHRoaXMuZnJlcXVlbmN5RGF0YSwgdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuLnNwbGl0KCd+JykpXHJcbiAgICBpZih0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4gIT0gJycgJiYgdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuLnNwbGl0KCd+JylbMF0gPT09ICcwJykge1xyXG4gICAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldE9uZVRpbWVGcmVxdWVuY3koKTtcclxuICAgIH1cclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcG9wdWxhdGVGcmVxdWVuY3koKSB7XHJcbiAgICBjb25zdCBwYXR0ZXJuSW5mbyA9IHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybi5zcGxpdCgnficpO1xyXG4gICAgY29uc29sZS5sb2coXCJwYXR0ZXJuSW5mbyA9PT5cIiwgcGF0dGVybkluZm8pXHJcbiAgICBjb25zdCB0aW1lU3RhbXAgPSBtb21lbnQoYCR7cGF0dGVybkluZm9bM119LSR7cGF0dGVybkluZm9bMl19LSR7cGF0dGVybkluZm9bMV19ICR7dGhpcy5mcmVxdWVuY3lEYXRhPy5mYWlsZWRUaW1lfWAsIFwiREQtTU0tWVlZWSBISDptbSBhXCIgKS51bml4KCk7XHJcbiAgICBjb25zb2xlLmxvZyhcInRpbWVTdGFtcCAgLS0+XCIsIHRpbWVTdGFtcClcclxuICAgIHRoaXMudG9kYXlEYXRlID0gbmV3IERhdGUodGltZVN0YW1wICogMTAwMClcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbW9tZW50KHRoaXMudG9kYXlEYXRlKVxyXG4gICAgdGhpcy5vbmVUaW1lRmFpbGVkID0gdGhpcy5mcmVxdWVuY3lEYXRhPy5mYWlsZWQ7XHJcbiAgICB0aGlzLm9uZVRpbWVXaW5kb3cgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LndpbmRvdztcclxuICAgIHRoaXMub25lVGltZVN0YXJ0VGltZSA9IHRoaXMuZnJlcXVlbmN5RGF0YT8uZmFpbGVkVGltZVxyXG4gICAgdGhpcy5vbmVUaW1lU2VsZWN0ZWQgPSBwYXR0ZXJuSW5mb1sxXSArICd+JyArIHBhdHRlcm5JbmZvWzJdICsgJ34nICsgcGF0dGVybkluZm9bM11cclxuICAgIHRoaXMuZGF0ZU9iamVjdERhdGEgPSBuZXcgRGF0ZShtb21lbnQodGhpcy5vbmVUaW1lU2VsZWN0ZWQgKyAnICcgKyB0aGlzLm9uZVRpbWVTdGFydFRpbWUsICdZWVlZfk1NfkREIEhIOm1tOnNzJykudW5peCgpICogMTAwMClcclxuICAgIHRoaXMuZ2V0T25lVGltZUZyZXF1ZW5jeSgpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgICBjb25zdCBuZXdEYXRlID0gbW9tZW50KHRoaXMudG9kYXlEYXRlKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5tb3ZlQ2FsZW5kYXJUbyhuZXdEYXRlKSAgXHJcbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgfVxyXG4gIGNsb3NlRGF0ZXBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkuY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZXBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgIGlmIChldmVudC50eXBlID09PSAnY29tcGxldGVkJykge1xyXG4gICAgICB0aGlzLm9uZVRpbWVXaW5kb3cgPSBldmVudC52YWx1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub25lVGltZUZhaWxlZCA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbG9zZURhdGVwaWNrZXIoKTtcclxuICAgIHRoaXMuZ2V0T25lVGltZUZyZXF1ZW5jeSgpO1xyXG59XHJcblxyXG5vblRpbWVDaGFuZ2VkKGV2ZW50OnN0cmluZykge1xyXG4gIGNvbnNvbGUubG9nKFwiZXZlbnQgc3JpbmdcIiwgZXZlbnQpO1xyXG4gIGNvbnNvbGUubG9nKHRoaXMuZGF0ZU9iamVjdERhdGEpO1xyXG5cclxuICAgIHRoaXMub25lVGltZVN0YXJ0VGltZSA9IGV2ZW50O1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGVPYmplY3REYXRhID09ICdvYmplY3QnKSB7XHJcbiAgICAgIHRoaXMuZGF0ZU9iamVjdERhdGEgPSBtb21lbnQodGhpcy5kYXRlT2JqZWN0RGF0YSkudG9EYXRlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGVPYmplY3REYXRhKTtcclxuICAgIGxldCB0aW1lU3RhbXAgPSBtb21lbnQoXHJcbiAgICAgIHRoaXMuZGF0ZU9iamVjdERhdGEuZ2V0RGF0ZSgpICsgJy0nICsgKHRoaXMuZGF0ZU9iamVjdERhdGEuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgdGhpcy5kYXRlT2JqZWN0RGF0YS5nZXRGdWxsWWVhcigpICsgJyAnICsgdGhpcy5vbmVUaW1lU3RhcnRUaW1lLFxyXG4gICAgICAnREQtTU0tWVlZWSBoaDptbSBhJ1xyXG4gICAgKS51bml4KCk7XHJcbiAgICB0aGlzLm9uZVRpbWVTZWxlY3RlZCA9IG1vbWVudCh0aW1lU3RhbXAgKiAxMDAwKS5mb3JtYXQoJ1lZWVl+TU1+RERUSEg6bW06c3NaJykuc3BsaXQoJ1QnKVswXVxyXG4gICAgY29uc29sZS5sb2coJ3RpbWVTdGFtcCcsIHRpbWVTdGFtcCwgdGhpcy5vbmVUaW1lU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5nZXRPbmVUaW1lRnJlcXVlbmN5KCk7XHJcbiAgICBcclxufVxyXG5cclxuZGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcblxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBldmVudC5kYXRlO1xyXG4gICAgY29uc3QgbmV3RGF0ZSA9IG1vbWVudChldmVudC5kYXRlKS51bml4KCk7XHJcblxyXG4gICAgdGhpcy5kYXRlT2JqZWN0RGF0YSA9IG5ldyBEYXRlKG5ld0RhdGUgKiAxMDAwKTtcclxuICAgIHRoaXMudG9kYXlEYXRlID0gdGhpcy5kYXRlT2JqZWN0RGF0YTtcclxuICAgIGxldCB0aW1lU3RhbXAgPSBtb21lbnQoXHJcbiAgICAgIHRoaXMuZGF0ZU9iamVjdERhdGEuZ2V0RGF0ZSgpICsgJy0nICsgKHRoaXMuZGF0ZU9iamVjdERhdGEuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgdGhpcy5kYXRlT2JqZWN0RGF0YS5nZXRGdWxsWWVhcigpICsgJyAnICsgdGhpcy5vbmVUaW1lU3RhcnRUaW1lLFxyXG4gICAgICAnREQtTU0tWVlZWSBoaDptbSBhJ1xyXG4gICAgKS51bml4KCk7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcclxuICAgIGNvbnNvbGUubG9nKCd0aW1lU3RhbXAnLCB0aW1lU3RhbXAsIERhdGUubm93KCkgLyAxMDAwLCBEYXRlLm5vdygpIC8gMTAwMCA+IHRpbWVTdGFtcCk7XHJcbiAgICB0aGlzLm9uZVRpbWVTZWxlY3RlZCA9ICBldmVudC5kYXRlLmZvcm1hdCgnWVlZWX5NTX5ERFRISDptbTpzc1onKS5zcGxpdCgnVCcpWzBdXHJcbiAgIFxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICBjb25zb2xlLmxvZyhldmVudC5kYXRlLmZvcm1hdCgnWVlZWX5NTX5ERFRISDptbTpzc1onKSk7XHJcbiAgICB0aGlzLmdldE9uZVRpbWVGcmVxdWVuY3koKTtcclxuXHJcbn1cclxuXHJcbiAgZ2V0T25lVGltZUZyZXF1ZW5jeSgpIHtcclxuICAgIGlmICh0aGlzLm9uZVRpbWVTZWxlY3RlZCAhPT0gJycpIHtcclxuICAgICAgdGhpcy50b2RheURhdGUgPSBtb21lbnQodGhpcy50b2RheURhdGUpLnRvRGF0ZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBtb21lbnQodGhpcy50b2RheURhdGUpXHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnBsYWNlaG9sZGVyID1cclxuICAgICAgJ09uZSBUaW1lICcgKyB0aGlzLnRvZGF5RGF0ZS5nZXREYXRlKCkgKyAnICcgKyB0aGlzLnNob3J0TW9udGhbdGhpcy50b2RheURhdGUuZ2V0TW9udGgoKV0gKyAnICcgKyB0aGlzLnRvZGF5RGF0ZS5nZXRGdWxsWWVhcigpICsgJyBieSAnICsgdGhpcy5vbmVUaW1lU3RhcnRUaW1lO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnBhdHRlcm4gPVxyXG4gICAgICAwICsgJ34nICsgKHRoaXMub25lVGltZVNlbGVjdGVkID09PSAnJyA/IHRoaXMuZnJlcXVlbmN5U2VydmljZS5jaGFuZ2VUaW1lWm9uZShuZXcgRGF0ZSgpPy5zZXREYXRlKG5ldyBEYXRlKCk/LmdldERhdGUoKSsxKSk/LmdldEZ1bGxZZWFyKCkgKyAnficgKyAodGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCk/LnNldERhdGUobmV3IERhdGUoKT8uZ2V0RGF0ZSgpKzEpKT8uZ2V0TW9udGgoKSArIDEpICsgJ34nICsgdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCk/LnNldERhdGUobmV3IERhdGUoKT8uZ2V0RGF0ZSgpKzEpKT8uZ2V0RGF0ZSgpIDogdGhpcy5vbmVUaW1lU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmNhc2UgPSAnb25lVGltZSc7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uZmFpbGVkQWZ0ZXIgPSB0aGlzLm9uZVRpbWVGYWlsZWQ7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ud2luZG93ID0gdGhpcy5vbmVUaW1lV2luZG93O1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnRpbWVJbjEyaHIgPSB0aGlzLm9uZVRpbWVTdGFydFRpbWU7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8udGltZUluMjRIciA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS50aW1lRnJvbTEyaFRvMjRoKHRoaXMub25lVGltZVN0YXJ0VGltZSk7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8uZmFpbGVkX3RpbWVfdXRjID0gMDtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5yZXBvcnRJZCA9IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeURldGFpbHMuZW1pdCh0aGlzLmZyZXF1ZW5jeUluZm8pO1xyXG4gICAgY29uc29sZS5sb2coXCIgdGhpcy5mcmVxdWVuY3lJbmZvID09PlwiLCAgdGhpcy5mcmVxdWVuY3lJbmZvKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+UkVBU1NFU1NNRU5UIEZSRVFVRU5DWTo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lLWl0ZW0gdngtcC0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXJcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjYWxlbmRhci1pY29uIHZ4LWZzLTE0IHZ4LXR4dC1ibHVlXCI+JiN4ZTkyZDs8L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGVQaWNrZXJcIiAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVcIj5cclxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyICNkYXRlUGlja2VyIHBsYWNlaG9sZGVyPSdTZWxlY3QgRGF0ZScgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIiAoY2xpY2spPVwiY2xvc2VEYXRlcGlja2VyKClcIj48L2RwLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXIoKVwiICpuZ0lmPVwiZGF0ZXBpY2tlck92ZXJsYXlcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1wci0zXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGFyaWEtbGFiZWw9XCIxMmhyIGZvcm1hdFwiIFtuZ3hUaW1lcGlja2VyXT1cImRhaWx5VGltZVwiIHBsYWNlaG9sZGVyPVwiMTE6NTkgUE1cIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC10eHQtYmx1ZVwiPiYjeGU5NTU7PC9pPlxyXG4gICAgICAgICAgICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2RhaWx5VGltZT48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBFTUFJTCBOT1RJRklDQVRJT046PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS1pdGVtIHZ4LW1iLTVcIj5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZVwiICpuZ0lmPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRlJFUVVFTkNZOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUtaXRlbSB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNhbGVuZGFyLWljb24gdngtZnMtMTQgdngtdHh0LWJsdWVcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJkYXRlUGlja2VyXCIgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEYXRlXCI+IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlUGlja2VyXCIgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwidG9kYXlEYXRlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5J1wiIFtwbGFjZWhvbGRlcl09XCJ0b2RheURhdGUgfCBkYXRlOiAnZGQgTU1NIHl5eXknXCIgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIiByZWFkb25seT5cclxuICAgICAgICAgICAgPCEtLSA8ZHAtZGF0ZS1waWNrZXIgI2RhdGVQaWNrZXIgcGxhY2Vob2xkZXI9J1NlbGVjdCBEYXRlJyAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXIoKVwiPjwvZHAtZGF0ZS1waWNrZXI+IC0tPlxyXG4gICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcclxuICAgICAgICAgICAgICAgICNkYXRlUGlja2VyXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ3N0YXJ0LWRhdGUtJyArIDZcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRvZGF5RGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvcGVuRGF0ZVBpY2tlcigpO2RhdGVDaGFuZ2UoJGV2ZW50KTsgc2hvd0RhdGVFcnJvciA9IGZhbHNlOyBkYXRlcGlja2VyT3ZlcmxheSA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgKGNsaWNrKT1cImNsb3NlRGF0ZXBpY2tlcigpXCIgKm5nSWY9XCJkYXRlcGlja2VyT3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktZW5kIHZ4LXByLTNcIj5cclxuICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBhcmlhLWxhYmVsPVwiMTJociBmb3JtYXRcIiBbbmd4VGltZXBpY2tlcl09XCJkYWlseVRpbWVcIiBwbGFjZWhvbGRlcj1cIjExOjU5IFBNXCI+IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBhcmlhLWxhYmVsPVwiMTJociBmb3JtYXRcIiBbKG5nTW9kZWwpXT1cIm9uZVRpbWVTdGFydFRpbWVcIiAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVGltZVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWVcIj4mI3hlOTU1OzwvaT4gLS0+XHJcbiAgICAgICAgICAgIDxuZ3gtbWF0ZXJpYWwtdGltZXBpY2tlciBbaG91cnNPbmx5XT1cInRydWVcIiAodGltZUNoYW5nZWQpPVwib25UaW1lQ2hhbmdlZCgkZXZlbnQpXCIgI2RhaWx5VGltZT48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBFTUFJTCBOT1RJRklDQVRJT046PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS1pdGVtIHZ4LW1iLTVcIj5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGVcclxuICAgICAgICAgICAgW2lkXSA9ICc2J1xyXG4gICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgW3BhZ2VOYW1lXT1cIidvbmUtdGltZSdcIlxyXG4gICAgICAgICAgICBbaXNEZWFjdGl2YXRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtjb21wbGV0ZWRWYWx1ZV09XCJvbmVUaW1lV2luZG93XCJcclxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS1kaWFsb2cvZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS9mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3NoYXJlZENvbXBvbmVudHMvZnJlcXVlbmN5LWRpYWxvZy9mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lL2ZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxNQUFNLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQU9uQyxNQUFNLE9BQU8sK0JBQStCO0lBNEMxQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZCdEQsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLHFCQUFnQixHQUFRLFVBQVUsQ0FBQztRQUNuQyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUVyQixjQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FDOUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FB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QkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsK0JBQStCO3VHQXdCaEIsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQW1CZCxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lEaWFsb2dPbmVUaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvLyB0aW1lRGF0YSA9ICcxMTo1OSBwbSc7XHJcbiAgLy8gQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIC8vIGRhdGVwaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcblxyXG4gIC8vIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIC8vIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gb3BlbkRhdGVQaWNrZXIoKSB7XHJcbiAgLy8gICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xyXG4gIC8vICAgdGhpcy5kYXRlcGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBjbG9zZURhdGVwaWNrZXIoKSB7XHJcbiAgLy8gICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAvLyAgIHRoaXMuZGF0ZXBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICAvLyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInKSBkYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBkYXRlcGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIHNob3dEYXRlRXJyb3IgPSBmYWxzZTtcclxuICBvbmVUaW1lRmFpbGVkID0gNTtcclxuICBvbmVUaW1lV2luZG93ID0gMTU7XHJcbiAgb25lVGltZVN0YXJ0VGltZTogYW55ID0gJzExOjAwIHBtJztcclxuICBvbmVUaW1lU2VsZWN0ZWQgPSAnJztcclxuICBkYXRlQ29uZmlnOiBhbnk7XHJcbiAgdG9kYXlEYXRlID0gdGhpcy5mcmVxdWVuY3lTZXJ2aWNlLmNoYW5nZVRpbWVab25lKFxyXG4gICAgbmV3IERhdGUoKT8uc2V0RGF0ZShuZXcgRGF0ZSgpPy5nZXREYXRlKCkgKyAxKVxyXG4gICk7XHJcbiAgLy8gdG9kYXlEYXRlID0gJ2ZyaSBKYW4gMjAgMjAyMyAyMzo0MDowOSBHTVQrMDUzMCAoSW5kaWEgU3RhbmRhcmQgVGltZSknO1xyXG4gIGZyZXF1ZW5jeUluZm86IGFueTtcclxuICBzaG9ydE1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgZGF0ZU9iamVjdERhdGEgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuY2hhbmdlVGltZVpvbmUoXHJcbiAgICBuZXcgRGF0ZSgpPy5zZXREYXRlKG5ldyBEYXRlKCk/LmdldERhdGUoKSArIDEpXHJcbiAgKTtcclxuICBtaW5EYXRlID0gbW9tZW50KERhdGUubm93KCkpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpPy5zcGxpdCgnICcpWzBdO1xyXG4gIHNlbGVjdGVkRGF0ZTogYW55O1xyXG4gIEBJbnB1dCgpIGZyZXF1ZW5jeURhdGE6IGFueTtcclxuICBASW5wdXQoKSBtb2RlOiBhbnkgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIGZyZXF1ZW5jeURldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmVxdWVuY3lTZXJ2aWNlOiBGcmVxdWVuY3lTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0ZUNvbmZpZyA9IHRoaXMuZnJlcXVlbmN5U2VydmljZS5kYXRlQ29uZmlnO1xyXG4gICAgdGhpcy5kYXRlQ29uZmlnWydtaW4nXSA9IHRoaXMuZnJlcXVlbmN5U2VydmljZVxyXG4gICAgICAuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKT8uc2V0RGF0ZShuZXcgRGF0ZSgpPy5nZXREYXRlKCkgKyAxKSlcclxuICAgICAgPy5nZXREYXRlKClcclxuICAgICAgPy50b1N0cmluZygpO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvID0gT2JqZWN0LmFzc2lnbih0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZnJlcXVlbmN5SW5mbyk7XHJcbiAgICB0aGlzLnNob3J0TW9udGggPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UubW9udGhBcnJheS5tYXAoKG1vbnRoKSA9PlxyXG4gICAgICBtb250aC5zdWJzdHJpbmcoMCwgMylcclxuICAgICk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG1vbWVudCh0aGlzLnRvZGF5RGF0ZSk7XHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXRlQ29uZmlnICcsIHRoaXMuZGF0ZUNvbmZpZywgdGhpcy50b2RheURhdGUpO1xyXG4gICAgY29uc29sZS5sb2coXHJcbiAgICAgICd0aGlzLmZyZXF1ZW5jeURhdGEgPT0+JyxcclxuICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhLFxyXG4gICAgICB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4uc3BsaXQoJ34nKVxyXG4gICAgKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5mcmVxdWVuY3lEYXRhPy5wYXR0ZXJuICE9ICcnICYmXHJcbiAgICAgIHRoaXMuZnJlcXVlbmN5RGF0YT8ucGF0dGVybi5zcGxpdCgnficpWzBdID09PSAnMCdcclxuICAgICkge1xyXG4gICAgICB0aGlzLnBvcHVsYXRlRnJlcXVlbmN5KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldE9uZVRpbWVGcmVxdWVuY3koKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvcHVsYXRlRnJlcXVlbmN5KCkge1xyXG4gICAgY29uc3QgcGF0dGVybkluZm8gPSB0aGlzLmZyZXF1ZW5jeURhdGE/LnBhdHRlcm4uc3BsaXQoJ34nKTtcclxuICAgIGNvbnNvbGUubG9nKCdwYXR0ZXJuSW5mbyA9PT4nLCBwYXR0ZXJuSW5mbyk7XHJcbiAgICBjb25zdCB0aW1lU3RhbXAgPSBtb21lbnQoXHJcbiAgICAgIGAke3BhdHRlcm5JbmZvWzNdfS0ke3BhdHRlcm5JbmZvWzJdfS0ke3BhdHRlcm5JbmZvWzFdfSAke3RoaXMuZnJlcXVlbmN5RGF0YT8uZmFpbGVkVGltZX1gLFxyXG4gICAgICAnREQtTU0tWVlZWSBISDptbSBhJ1xyXG4gICAgKS51bml4KCk7XHJcbiAgICBjb25zb2xlLmxvZygndGltZVN0YW1wICAtLT4nLCB0aW1lU3RhbXApO1xyXG4gICAgdGhpcy50b2RheURhdGUgPSBuZXcgRGF0ZSh0aW1lU3RhbXAgKiAxMDAwKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbW9tZW50KHRoaXMudG9kYXlEYXRlKTtcclxuICAgIHRoaXMub25lVGltZUZhaWxlZCA9IHRoaXMuZnJlcXVlbmN5RGF0YT8uZmFpbGVkO1xyXG4gICAgdGhpcy5vbmVUaW1lV2luZG93ID0gdGhpcy5mcmVxdWVuY3lEYXRhPy53aW5kb3c7XHJcbiAgICB0aGlzLm9uZVRpbWVTdGFydFRpbWUgPSB0aGlzLmZyZXF1ZW5jeURhdGE/LmZhaWxlZFRpbWU7XHJcbiAgICB0aGlzLm9uZVRpbWVTZWxlY3RlZCA9XHJcbiAgICAgIHBhdHRlcm5JbmZvWzFdICsgJ34nICsgcGF0dGVybkluZm9bMl0gKyAnficgKyBwYXR0ZXJuSW5mb1szXTtcclxuICAgIHRoaXMuZGF0ZU9iamVjdERhdGEgPSBuZXcgRGF0ZShcclxuICAgICAgbW9tZW50KFxyXG4gICAgICAgIHRoaXMub25lVGltZVNlbGVjdGVkICsgJyAnICsgdGhpcy5vbmVUaW1lU3RhcnRUaW1lLFxyXG4gICAgICAgICdZWVlZfk1NfkREIEhIOm1tOnNzJ1xyXG4gICAgICApLnVuaXgoKSAqIDEwMDBcclxuICAgICk7XHJcbiAgICB0aGlzLmdldE9uZVRpbWVGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIG9wZW5EYXRlUGlja2VyKCkge1xyXG4gICAgY29uc3QgbmV3RGF0ZSA9IG1vbWVudCh0aGlzLnRvZGF5RGF0ZSk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ubW92ZUNhbGVuZGFyVG8obmV3RGF0ZSk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlcGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgfVxyXG4gIGNsb3NlRGF0ZXBpY2tlcigpIHtcclxuICAgIHRoaXMuZGF0ZVBpY2tlci5hcGkuY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZXBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb21wbGV0ZWQnKSB7XHJcbiAgICAgIHRoaXMub25lVGltZVdpbmRvdyA9IGV2ZW50LnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vbmVUaW1lRmFpbGVkID0gZXZlbnQudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsb3NlRGF0ZXBpY2tlcigpO1xyXG4gICAgdGhpcy5nZXRPbmVUaW1lRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBvblRpbWVDaGFuZ2VkKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnNvbGUubG9nKCdldmVudCBzcmluZycsIGV2ZW50KTtcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0ZU9iamVjdERhdGEpO1xyXG5cclxuICAgIHRoaXMub25lVGltZVN0YXJ0VGltZSA9IGV2ZW50O1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRhdGVPYmplY3REYXRhID09ICdvYmplY3QnKSB7XHJcbiAgICAgIHRoaXMuZGF0ZU9iamVjdERhdGEgPSBtb21lbnQodGhpcy5kYXRlT2JqZWN0RGF0YSkudG9EYXRlKCk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRhdGVPYmplY3REYXRhKTtcclxuICAgIGxldCB0aW1lU3RhbXAgPSBtb21lbnQoXHJcbiAgICAgIHRoaXMuZGF0ZU9iamVjdERhdGEuZ2V0RGF0ZSgpICtcclxuICAgICAgICAnLScgK1xyXG4gICAgICAgICh0aGlzLmRhdGVPYmplY3REYXRhLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICB0aGlzLmRhdGVPYmplY3REYXRhLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAgICcgJyArXHJcbiAgICAgICAgdGhpcy5vbmVUaW1lU3RhcnRUaW1lLFxyXG4gICAgICAnREQtTU0tWVlZWSBoaDptbSBhJ1xyXG4gICAgKS51bml4KCk7XHJcbiAgICB0aGlzLm9uZVRpbWVTZWxlY3RlZCA9IG1vbWVudCh0aW1lU3RhbXAgKiAxMDAwKVxyXG4gICAgICAuZm9ybWF0KCdZWVlZfk1NfkREVEhIOm1tOnNzWicpXHJcbiAgICAgIC5zcGxpdCgnVCcpWzBdO1xyXG4gICAgY29uc29sZS5sb2coJ3RpbWVTdGFtcCcsIHRpbWVTdGFtcCwgdGhpcy5vbmVUaW1lU2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5nZXRPbmVUaW1lRnJlcXVlbmN5KCk7XHJcbiAgfVxyXG5cclxuICBkYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZXZlbnQuZGF0ZTtcclxuICAgIGNvbnN0IG5ld0RhdGUgPSBtb21lbnQoZXZlbnQuZGF0ZSkudW5peCgpO1xyXG5cclxuICAgIHRoaXMuZGF0ZU9iamVjdERhdGEgPSBuZXcgRGF0ZShuZXdEYXRlICogMTAwMCk7XHJcbiAgICB0aGlzLnRvZGF5RGF0ZSA9IHRoaXMuZGF0ZU9iamVjdERhdGE7XHJcbiAgICBsZXQgdGltZVN0YW1wID0gbW9tZW50KFxyXG4gICAgICB0aGlzLmRhdGVPYmplY3REYXRhLmdldERhdGUoKSArXHJcbiAgICAgICAgJy0nICtcclxuICAgICAgICAodGhpcy5kYXRlT2JqZWN0RGF0YS5nZXRNb250aCgpICsgMSkgK1xyXG4gICAgICAgICctJyArXHJcbiAgICAgICAgdGhpcy5kYXRlT2JqZWN0RGF0YS5nZXRGdWxsWWVhcigpICtcclxuICAgICAgICAnICcgK1xyXG4gICAgICAgIHRoaXMub25lVGltZVN0YXJ0VGltZSxcclxuICAgICAgJ0RELU1NLVlZWVkgaGg6bW0gYSdcclxuICAgICkudW5peCgpO1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICBjb25zb2xlLmxvZyhcclxuICAgICAgJ3RpbWVTdGFtcCcsXHJcbiAgICAgIHRpbWVTdGFtcCxcclxuICAgICAgRGF0ZS5ub3coKSAvIDEwMDAsXHJcbiAgICAgIERhdGUubm93KCkgLyAxMDAwID4gdGltZVN0YW1wXHJcbiAgICApO1xyXG4gICAgdGhpcy5vbmVUaW1lU2VsZWN0ZWQgPSBldmVudC5kYXRlXHJcbiAgICAgIC5mb3JtYXQoJ1lZWVl+TU1+RERUSEg6bW06c3NaJylcclxuICAgICAgLnNwbGl0KCdUJylbMF07XHJcblxyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXHJcbiAgICBjb25zb2xlLmxvZyhldmVudC5kYXRlLmZvcm1hdCgnWVlZWX5NTX5ERFRISDptbTpzc1onKSk7XHJcbiAgICB0aGlzLmdldE9uZVRpbWVGcmVxdWVuY3koKTtcclxuICB9XHJcblxyXG4gIGdldE9uZVRpbWVGcmVxdWVuY3koKSB7XHJcbiAgICBpZiAodGhpcy5vbmVUaW1lU2VsZWN0ZWQgIT09ICcnKSB7XHJcbiAgICAgIHRoaXMudG9kYXlEYXRlID0gbW9tZW50KHRoaXMudG9kYXlEYXRlKS50b0RhdGUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbW9tZW50KHRoaXMudG9kYXlEYXRlKTtcclxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGxhY2Vob2xkZXIgPVxyXG4gICAgICAnT25lIFRpbWUgJyArXHJcbiAgICAgIHRoaXMudG9kYXlEYXRlLmdldERhdGUoKSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMuc2hvcnRNb250aFt0aGlzLnRvZGF5RGF0ZS5nZXRNb250aCgpXSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMudG9kYXlEYXRlLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnIGJ5ICcgK1xyXG4gICAgICB0aGlzLm9uZVRpbWVTdGFydFRpbWU7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucGF0dGVybiA9XHJcbiAgICAgIDAgK1xyXG4gICAgICAnficgK1xyXG4gICAgICAodGhpcy5vbmVUaW1lU2VsZWN0ZWQgPT09ICcnXHJcbiAgICAgICAgPyB0aGlzLmZyZXF1ZW5jeVNlcnZpY2VcclxuICAgICAgICAgICAgLmNoYW5nZVRpbWVab25lKG5ldyBEYXRlKCk/LnNldERhdGUobmV3IERhdGUoKT8uZ2V0RGF0ZSgpICsgMSkpXHJcbiAgICAgICAgICAgID8uZ2V0RnVsbFllYXIoKSArXHJcbiAgICAgICAgICAnficgK1xyXG4gICAgICAgICAgKHRoaXMuZnJlcXVlbmN5U2VydmljZVxyXG4gICAgICAgICAgICAuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKT8uc2V0RGF0ZShuZXcgRGF0ZSgpPy5nZXREYXRlKCkgKyAxKSlcclxuICAgICAgICAgICAgPy5nZXRNb250aCgpICtcclxuICAgICAgICAgICAgMSkgK1xyXG4gICAgICAgICAgJ34nICtcclxuICAgICAgICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxyXG4gICAgICAgICAgICAuY2hhbmdlVGltZVpvbmUobmV3IERhdGUoKT8uc2V0RGF0ZShuZXcgRGF0ZSgpPy5nZXREYXRlKCkgKyAxKSlcclxuICAgICAgICAgICAgPy5nZXREYXRlKClcclxuICAgICAgICA6IHRoaXMub25lVGltZVNlbGVjdGVkKTtcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby5jYXNlID0gJ29uZVRpbWUnO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZEFmdGVyID0gdGhpcy5vbmVUaW1lRmFpbGVkO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLndpbmRvdyA9IHRoaXMub25lVGltZVdpbmRvdztcclxuICAgIHRoaXMuZnJlcXVlbmN5SW5mby50aW1lSW4xMmhyID0gdGhpcy5vbmVUaW1lU3RhcnRUaW1lO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLnRpbWVJbjI0SHIgPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UudGltZUZyb20xMmhUbzI0aChcclxuICAgICAgdGhpcy5vbmVUaW1lU3RhcnRUaW1lXHJcbiAgICApO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lJbmZvLmZhaWxlZF90aW1lX3V0YyA9IDA7XHJcbiAgICB0aGlzLmZyZXF1ZW5jeUluZm8ucmVwb3J0SWQgPSAwO1xyXG4gICAgdGhpcy5mcmVxdWVuY3lEZXRhaWxzLmVtaXQodGhpcy5mcmVxdWVuY3lJbmZvKTtcclxuICAgIGNvbnNvbGUubG9nKCcgdGhpcy5mcmVxdWVuY3lJbmZvID09PicsIHRoaXMuZnJlcXVlbmN5SW5mbyk7XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tYi0xXCI+UkVBU1NFU1NNRU5UIEZSRVFVRU5DWTo8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktZGlhbG9nLW9uZS10aW1lLWl0ZW0gdngtcC0zIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXJcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjYWxlbmRhci1pY29uIHZ4LWZzLTE0IHZ4LXR4dC1ibHVlXCI+JiN4ZTkyZDs8L2k+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImRhdGVQaWNrZXJcIiAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVcIj5cclxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyICNkYXRlUGlja2VyIHBsYWNlaG9sZGVyPSdTZWxlY3QgRGF0ZScgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIiAoY2xpY2spPVwiY2xvc2VEYXRlcGlja2VyKClcIj48L2RwLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXIoKVwiICpuZ0lmPVwiZGF0ZXBpY2tlck92ZXJsYXlcIj48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1wci0zXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGFyaWEtbGFiZWw9XCIxMmhyIGZvcm1hdFwiIFtuZ3hUaW1lcGlja2VyXT1cImRhaWx5VGltZVwiIHBsYWNlaG9sZGVyPVwiMTE6NTkgUE1cIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy0xMiB2eC10eHQtYmx1ZVwiPiYjeGU5NTU7PC9pPlxyXG4gICAgICAgICAgICA8bmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIgI2RhaWx5VGltZT48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBFTUFJTCBOT1RJRklDQVRJT046PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS1pdGVtIHZ4LW1iLTVcIj5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+PC9hcHAtZnJlcXVlbmN5LWRpYWxvZy1kdWUtZGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4gLS0+XHJcblxyXG48ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZVwiICpuZ0lmPVwidHJ1ZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtdHQtdXBwZXJjYXNlIHZ4LW1iLTFcIj5SRUFTU0VTU01FTlQgRlJFUVVFTkNZOjwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1kaWFsb2ctb25lLXRpbWUtaXRlbSB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNhbGVuZGFyLWljb24gdngtZnMtMTQgdngtdHh0LWJsdWVcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgPCEtLSA8aW5wdXQgY2xhc3M9XCJkYXRlUGlja2VyXCIgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEYXRlXCI+IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlUGlja2VyXCIgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwidG9kYXlEYXRlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5J1wiIFtwbGFjZWhvbGRlcl09XCJ0b2RheURhdGUgfCBkYXRlOiAnZGQgTU1NIHl5eXknXCIgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIiByZWFkb25seT5cclxuICAgICAgICAgICAgPCEtLSA8ZHAtZGF0ZS1waWNrZXIgI2RhdGVQaWNrZXIgcGxhY2Vob2xkZXI9J1NlbGVjdCBEYXRlJyAoY2xpY2spPVwib3BlbkRhdGVQaWNrZXIoKVwiIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXIoKVwiPjwvZHAtZGF0ZS1waWNrZXI+IC0tPlxyXG4gICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcclxuICAgICAgICAgICAgICAgICNkYXRlUGlja2VyXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ3N0YXJ0LWRhdGUtJyArIDZcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRvZGF5RGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZERhdGVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJkYXRlQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvcGVuRGF0ZVBpY2tlcigpO2RhdGVDaGFuZ2UoJGV2ZW50KTsgc2hvd0RhdGVFcnJvciA9IGZhbHNlOyBkYXRlcGlja2VyT3ZlcmxheSA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgKGNsaWNrKT1cImNsb3NlRGF0ZXBpY2tlcigpXCIgKm5nSWY9XCJkYXRlcGlja2VyT3ZlcmxheVwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktZW5kIHZ4LXByLTNcIj5cclxuICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBhcmlhLWxhYmVsPVwiMTJociBmb3JtYXRcIiBbbmd4VGltZXBpY2tlcl09XCJkYWlseVRpbWVcIiBwbGFjZWhvbGRlcj1cIjExOjU5IFBNXCI+IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiByZWFkb25seSBhcmlhLWxhYmVsPVwiMTJociBmb3JtYXRcIiBbKG5nTW9kZWwpXT1cIm9uZVRpbWVTdGFydFRpbWVcIiAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVGltZVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWVcIj4mI3hlOTU1OzwvaT4gLS0+XHJcbiAgICAgICAgICAgIDxuZ3gtbWF0ZXJpYWwtdGltZXBpY2tlciBbaG91cnNPbmx5XT1cInRydWVcIiAodGltZUNoYW5nZWQpPVwib25UaW1lQ2hhbmdlZCgkZXZlbnQpXCIgI2RhaWx5VGltZT48L25neC1tYXRlcmlhbC10aW1lcGlja2VyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbWItMVwiPlJFQVNTRVNTTUVOVCBFTUFJTCBOT1RJRklDQVRJT046PC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LWRpYWxvZy1vbmUtdGltZS1pdGVtIHZ4LW1iLTVcIj5cclxuICAgICAgICA8YXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGVcclxuICAgICAgICAgICAgW2lkXSA9ICc2J1xyXG4gICAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcclxuICAgICAgICAgICAgW3BhZ2VOYW1lXT1cIidvbmUtdGltZSdcIlxyXG4gICAgICAgICAgICBbaXNEZWFjdGl2YXRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtjb21wbGV0ZWRWYWx1ZV09XCJvbmVUaW1lV2luZG93XCJcclxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvYXBwLWZyZXF1ZW5jeS1kaWFsb2ctZHVlLWRhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==