@datarailsshared/datarailsshared 1.6.367 → 1.6.369

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.
@@ -46,12 +46,12 @@ function DrCronFieldComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
46
46
  i0.ɵɵproperty("ngTemplateOutlet", _r3);
47
47
  } }
48
48
  function DrCronFieldComponent_ng_template_3_ng_template_0_Template(rf, ctx) { if (rf & 1) {
49
- const _r27 = i0.ɵɵgetCurrentView();
49
+ const _r26 = i0.ɵɵgetCurrentView();
50
50
  i0.ɵɵelementStart(0, "span");
51
51
  i0.ɵɵtext(1, "Repeat every quarter on");
52
52
  i0.ɵɵelementEnd();
53
53
  i0.ɵɵelementStart(2, "dr-select", 21);
54
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_0_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r26.cronModel.month = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_0_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.onSelectionChange()); });
54
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_0_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.cronModel.month = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_0_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.onSelectionChange()); });
55
55
  i0.ɵɵelementEnd();
56
56
  i0.ɵɵelementStart(3, "span");
57
57
  i0.ɵɵtext(4, "month of the quarter");
@@ -62,12 +62,12 @@ function DrCronFieldComponent_ng_template_3_ng_template_0_Template(rf, ctx) { if
62
62
  i0.ɵɵproperty("ngModel", ctx_r13.cronModel.month)("items", ctx_r13.MONTH_OF_QUARTER_ARRAY);
63
63
  } }
64
64
  function DrCronFieldComponent_ng_template_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
65
- const _r30 = i0.ɵɵgetCurrentView();
65
+ const _r29 = i0.ɵɵgetCurrentView();
66
66
  i0.ɵɵelementStart(0, "span");
67
67
  i0.ɵɵtext(1, "Repeat every");
68
68
  i0.ɵɵelementEnd();
69
69
  i0.ɵɵelementStart(2, "dr-select", 22);
70
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_2_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r29 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r29.cronModel.everyXHours = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_2_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r30); const ctx_r31 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r31.onSelectionChange()); });
70
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_2_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.cronModel.everyXHours = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_2_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r29); const ctx_r30 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r30.onSelectionChange()); });
71
71
  i0.ɵɵelementEnd();
72
72
  i0.ɵɵelementStart(3, "span");
73
73
  i0.ɵɵtext(4, "hour(s)");
@@ -78,12 +78,12 @@ function DrCronFieldComponent_ng_template_3_ng_template_2_Template(rf, ctx) { if
78
78
  i0.ɵɵproperty("ngModel", ctx_r15.cronModel.everyXHours)("items", ctx_r15.HOURS_DIVISIBLE_INTO_DAY);
79
79
  } }
80
80
  function DrCronFieldComponent_ng_template_3_ng_template_4_Template(rf, ctx) { if (rf & 1) {
81
- const _r33 = i0.ɵɵgetCurrentView();
81
+ const _r32 = i0.ɵɵgetCurrentView();
82
82
  i0.ɵɵelementStart(0, "span");
83
83
  i0.ɵɵtext(1, "Repeat every");
84
84
  i0.ɵɵelementEnd();
85
85
  i0.ɵɵelementStart(2, "dr-select", 23);
86
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_4_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r32.cronModel.dayOfWeek = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_4_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r34 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r34.onSelectionChange()); });
86
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_4_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r32); const ctx_r31 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r31.cronModel.dayOfWeek = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_4_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r32); const ctx_r33 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r33.onSelectionChange()); });
87
87
  i0.ɵɵelementEnd();
88
88
  } if (rf & 2) {
89
89
  const ctx_r17 = i0.ɵɵnextContext(2);
@@ -91,21 +91,21 @@ function DrCronFieldComponent_ng_template_3_ng_template_4_Template(rf, ctx) { if
91
91
  i0.ɵɵproperty("ngModel", ctx_r17.cronModel.dayOfWeek)("items", ctx_r17.DAY_OF_WEEK_ARRAY);
92
92
  } }
93
93
  function DrCronFieldComponent_ng_template_3_ng_template_6_Template(rf, ctx) { if (rf & 1) {
94
- const _r36 = i0.ɵɵgetCurrentView();
94
+ const _r35 = i0.ɵɵgetCurrentView();
95
95
  i0.ɵɵelementStart(0, "dr-select", 24);
96
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_6_Template_dr_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r35.cronModel.dayOfMonth = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_6_Template_dr_select_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r37 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r37.onSelectionChange()); });
96
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_6_Template_dr_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r34 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r34.cronModel.dayOfMonth = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_6_Template_dr_select_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r35); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.onSelectionChange()); });
97
97
  i0.ɵɵelementEnd();
98
98
  } if (rf & 2) {
99
99
  const ctx_r19 = i0.ɵɵnextContext(2);
100
100
  i0.ɵɵproperty("ngModel", ctx_r19.cronModel.dayOfMonth)("items", ctx_r19.DAY_OF_MONTH_ARRAY)("searchable", true);
101
101
  } }
102
102
  function DrCronFieldComponent_ng_template_3_ng_template_8_Template(rf, ctx) { if (rf & 1) {
103
- const _r39 = i0.ɵɵgetCurrentView();
103
+ const _r38 = i0.ɵɵgetCurrentView();
104
104
  i0.ɵɵelementStart(0, "span");
105
105
  i0.ɵɵtext(1, "Repeat every");
106
106
  i0.ɵɵelementEnd();
107
107
  i0.ɵɵelementStart(2, "dr-select", 25);
108
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_8_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r39); const ctx_r38 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r38.cronModel.month = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_8_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r39); const ctx_r40 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r40.onSelectionChange()); });
108
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_8_Template_dr_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r37.cronModel.month = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_8_Template_dr_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r38); const ctx_r39 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r39.onSelectionChange()); });
109
109
  i0.ɵɵelementEnd();
110
110
  } if (rf & 2) {
111
111
  const ctx_r21 = i0.ɵɵnextContext(2);
@@ -117,56 +117,85 @@ function DrCronFieldComponent_ng_template_3_dr_radio_group_11_dr_radio_button_1_
117
117
  i0.ɵɵtext(1);
118
118
  i0.ɵɵelementEnd();
119
119
  } if (rf & 2) {
120
- const option_r42 = ctx.$implicit;
121
- i0.ɵɵproperty("value", option_r42.value);
122
- i0.ɵɵattribute("data-analytics", "dr-cron-field_radio-button-" + option_r42.value);
120
+ const option_r41 = ctx.$implicit;
121
+ i0.ɵɵproperty("value", option_r41.value);
122
+ i0.ɵɵattribute("data-analytics", "dr-cron-field_radio-button-" + option_r41.value);
123
123
  i0.ɵɵadvance(1);
124
- i0.ɵɵtextInterpolate1(" ", option_r42.label, " ");
124
+ i0.ɵɵtextInterpolate1(" ", option_r41.label, " ");
125
125
  } }
126
126
  function DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template(rf, ctx) { if (rf & 1) {
127
- const _r44 = i0.ɵɵgetCurrentView();
127
+ const _r43 = i0.ɵɵgetCurrentView();
128
128
  i0.ɵɵelementStart(0, "dr-radio-group", 26);
129
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template_dr_radio_group_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r44); const ctx_r43 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r43.cronModel.every = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template_dr_radio_group_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r44); const ctx_r45 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r45.onEveryChange($event)); });
129
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template_dr_radio_group_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r43); const ctx_r42 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r42.onEveryChange($event)); });
130
130
  i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_3_dr_radio_group_11_dr_radio_button_1_Template, 2, 3, "dr-radio-button", 27);
131
131
  i0.ɵɵelementEnd();
132
132
  } if (rf & 2) {
133
133
  const ctx_r22 = i0.ɵɵnextContext(2);
134
- i0.ɵɵproperty("ngModel", ctx_r22.cronModel.every);
134
+ i0.ɵɵproperty("ngModel", ctx_r22.isAdvancedMode ? "advanced" : ctx_r22.cronModel.every);
135
135
  i0.ɵɵadvance(1);
136
136
  i0.ɵɵproperty("ngForOf", ctx_r22.cronEditorPeriodArray);
137
137
  } }
138
- function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_2_Template(rf, ctx) { if (rf & 1) {
138
+ function DrCronFieldComponent_ng_template_3_div_12_div_6_Template(rf, ctx) { if (rf & 1) {
139
+ i0.ɵɵelementStart(0, "div", 34);
140
+ i0.ɵɵtext(1);
141
+ i0.ɵɵelementEnd();
142
+ } if (rf & 2) {
143
+ const ctx_r44 = i0.ɵɵnextContext(3);
144
+ i0.ɵɵadvance(1);
145
+ i0.ɵɵtextInterpolate(ctx_r44.advancedError);
146
+ } }
147
+ function DrCronFieldComponent_ng_template_3_div_12_Template(rf, ctx) { if (rf & 1) {
148
+ const _r46 = i0.ɵɵgetCurrentView();
149
+ i0.ɵɵelementStart(0, "div", 29)(1, "div", 30);
150
+ i0.ɵɵtext(2, " Use crontab to set custom time intervals for sync frequency, such as every two weeks at 10:05. ");
151
+ i0.ɵɵelementEnd();
152
+ i0.ɵɵelementStart(3, "div", 31);
153
+ i0.ɵɵtext(4, "Enter your cron expression:");
154
+ i0.ɵɵelementEnd();
155
+ i0.ɵɵelementStart(5, "dr-input", 32);
156
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_div_12_Template_dr_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r45.advancedCron = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_div_12_Template_dr_input_ngModelChange_5_listener() { i0.ɵɵrestoreView(_r46); const ctx_r47 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r47.onAdvancedChange()); });
157
+ i0.ɵɵelementEnd();
158
+ i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_div_12_div_6_Template, 2, 1, "div", 33);
159
+ i0.ɵɵelementEnd();
160
+ } if (rf & 2) {
161
+ const ctx_r23 = i0.ɵɵnextContext(2);
162
+ i0.ɵɵadvance(5);
163
+ i0.ɵɵproperty("ngModel", ctx_r23.advancedCron);
164
+ i0.ɵɵadvance(1);
165
+ i0.ɵɵproperty("ngIf", ctx_r23.advancedError);
166
+ } }
167
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
139
168
  i0.ɵɵelementContainer(0, 8);
140
169
  } if (rf & 2) {
141
- i0.ɵɵnextContext(2);
170
+ i0.ɵɵnextContext(3);
142
171
  const _r12 = i0.ɵɵreference(1);
143
172
  i0.ɵɵproperty("ngTemplateOutlet", _r12);
144
173
  } }
145
- function DrCronFieldComponent_ng_template_3_ng_container_12_span_3_Template(rf, ctx) { if (rf & 1) {
174
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_span_3_Template(rf, ctx) { if (rf & 1) {
146
175
  i0.ɵɵelementStart(0, "span");
147
176
  i0.ɵɵtext(1, "Repeat every day");
148
177
  i0.ɵɵelementEnd();
149
178
  } }
150
- function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_4_Template(rf, ctx) { if (rf & 1) {
179
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_4_Template(rf, ctx) { if (rf & 1) {
151
180
  i0.ɵɵelementContainer(0, 8);
152
181
  } if (rf & 2) {
153
- i0.ɵɵnextContext(2);
182
+ i0.ɵɵnextContext(3);
154
183
  const _r14 = i0.ɵɵreference(3);
155
184
  i0.ɵɵproperty("ngTemplateOutlet", _r14);
156
185
  } }
157
- function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_5_Template(rf, ctx) { if (rf & 1) {
186
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
158
187
  i0.ɵɵelementContainer(0, 8);
159
188
  } if (rf & 2) {
160
- i0.ɵɵnextContext(2);
189
+ i0.ɵɵnextContext(3);
161
190
  const _r16 = i0.ɵɵreference(5);
162
191
  i0.ɵɵproperty("ngTemplateOutlet", _r16);
163
192
  } }
164
- function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
193
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
165
194
  i0.ɵɵelementContainerStart(0);
166
195
  i0.ɵɵelementContainer(1, 8)(2, 8);
167
196
  i0.ɵɵelementContainerEnd();
168
197
  } if (rf & 2) {
169
- i0.ɵɵnextContext(2);
198
+ i0.ɵɵnextContext(3);
170
199
  const _r20 = i0.ɵɵreference(9);
171
200
  const _r18 = i0.ɵɵreference(7);
172
201
  i0.ɵɵadvance(1);
@@ -174,7 +203,7 @@ function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_6_Templ
174
203
  i0.ɵɵadvance(1);
175
204
  i0.ɵɵproperty("ngTemplateOutlet", _r18);
176
205
  } }
177
- function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_7_Template(rf, ctx) { if (rf & 1) {
206
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_7_Template(rf, ctx) { if (rf & 1) {
178
207
  i0.ɵɵelementContainerStart(0);
179
208
  i0.ɵɵelementStart(1, "span");
180
209
  i0.ɵɵtext(2, "Repeat on");
@@ -185,13 +214,13 @@ function DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_7_Templ
185
214
  i0.ɵɵelementEnd();
186
215
  i0.ɵɵelementContainerEnd();
187
216
  } if (rf & 2) {
188
- i0.ɵɵnextContext(2);
217
+ i0.ɵɵnextContext(3);
189
218
  const _r18 = i0.ɵɵreference(7);
190
219
  i0.ɵɵadvance(3);
191
220
  i0.ɵɵproperty("ngTemplateOutlet", _r18);
192
221
  } }
193
- function DrCronFieldComponent_ng_template_3_ng_container_12_div_8_Template(rf, ctx) { if (rf & 1) {
194
- i0.ɵɵelementStart(0, "div", 29)(1, "span");
222
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_div_8_Template(rf, ctx) { if (rf & 1) {
223
+ i0.ɵɵelementStart(0, "div", 37)(1, "span");
195
224
  i0.ɵɵtext(2, "on");
196
225
  i0.ɵɵelementEnd();
197
226
  i0.ɵɵelementContainer(3, 8);
@@ -199,184 +228,195 @@ function DrCronFieldComponent_ng_template_3_ng_container_12_div_8_Template(rf, c
199
228
  i0.ɵɵtext(5, "day of the month");
200
229
  i0.ɵɵelementEnd()();
201
230
  } if (rf & 2) {
202
- i0.ɵɵnextContext(2);
231
+ i0.ɵɵnextContext(3);
203
232
  const _r18 = i0.ɵɵreference(7);
204
233
  i0.ɵɵadvance(3);
205
234
  i0.ɵɵproperty("ngTemplateOutlet", _r18);
206
235
  } }
207
- function DrCronFieldComponent_ng_template_3_ng_container_12_Template(rf, ctx) { if (rf & 1) {
208
- const _r54 = i0.ɵɵgetCurrentView();
236
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_Template(rf, ctx) { if (rf & 1) {
237
+ const _r59 = i0.ɵɵgetCurrentView();
209
238
  i0.ɵɵelementContainerStart(0);
210
- i0.ɵɵelementStart(1, "div", 29);
211
- i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_2_Template, 1, 1, "ng-container", 30);
212
- i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_container_12_span_3_Template, 2, 0, "span", 31);
213
- i0.ɵɵtemplate(4, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_4_Template, 1, 1, "ng-container", 30);
214
- i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_5_Template, 1, 1, "ng-container", 30);
215
- i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_6_Template, 3, 2, "ng-container", 31);
216
- i0.ɵɵtemplate(7, DrCronFieldComponent_ng_template_3_ng_container_12_ng_container_7_Template, 6, 1, "ng-container", 31);
217
- i0.ɵɵelementEnd();
218
- i0.ɵɵtemplate(8, DrCronFieldComponent_ng_template_3_ng_container_12_div_8_Template, 6, 1, "div", 32);
219
- i0.ɵɵelementStart(9, "div", 33)(10, "span", 34);
239
+ i0.ɵɵelementStart(1, "div", 37);
240
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_2_Template, 1, 1, "ng-container", 38);
241
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_span_3_Template, 2, 0, "span", 20);
242
+ i0.ɵɵtemplate(4, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_4_Template, 1, 1, "ng-container", 38);
243
+ i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_5_Template, 1, 1, "ng-container", 38);
244
+ i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_6_Template, 3, 2, "ng-container", 20);
245
+ i0.ɵɵtemplate(7, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_ng_container_7_Template, 6, 1, "ng-container", 20);
246
+ i0.ɵɵelementEnd();
247
+ i0.ɵɵtemplate(8, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_div_8_Template, 6, 1, "div", 39);
248
+ i0.ɵɵelementStart(9, "div", 40)(10, "span", 41);
220
249
  i0.ɵɵtext(11, "at");
221
250
  i0.ɵɵelementEnd();
222
- i0.ɵɵelementStart(12, "dr-time-picker", 35);
223
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_12_Template_dr_time_picker_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r54); const ctx_r53 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r53.onTimePickerChange($event)); });
251
+ i0.ɵɵelementStart(12, "dr-time-picker", 42);
252
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_Template_dr_time_picker_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r58.onTimePickerChange($event)); });
224
253
  i0.ɵɵelementEnd()();
225
254
  i0.ɵɵelementContainerEnd();
226
255
  } if (rf & 2) {
227
- const ctx_r23 = i0.ɵɵnextContext(2);
256
+ const ctx_r48 = i0.ɵɵnextContext(3);
228
257
  i0.ɵɵadvance(2);
229
- i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.QUARTER);
258
+ i0.ɵɵproperty("ngIf", ctx_r48.cronModel.every === ctx_r48.cronEditorPeriod.QUARTER);
230
259
  i0.ɵɵadvance(1);
231
- i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.DAY);
260
+ i0.ɵɵproperty("ngIf", ctx_r48.cronModel.every === ctx_r48.cronEditorPeriod.DAY);
232
261
  i0.ɵɵadvance(1);
233
- i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.HOUR);
262
+ i0.ɵɵproperty("ngIf", ctx_r48.cronModel.every === ctx_r48.cronEditorPeriod.HOUR);
234
263
  i0.ɵɵadvance(1);
235
- i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.WEEK);
264
+ i0.ɵɵproperty("ngIf", ctx_r48.cronModel.every === ctx_r48.cronEditorPeriod.WEEK);
236
265
  i0.ɵɵadvance(1);
237
- i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.YEAR);
266
+ i0.ɵɵproperty("ngIf", ctx_r48.cronModel.every === ctx_r48.cronEditorPeriod.YEAR);
238
267
  i0.ɵɵadvance(1);
239
- i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.MONTH);
268
+ i0.ɵɵproperty("ngIf", ctx_r48.cronModel.every === ctx_r48.cronEditorPeriod.MONTH);
240
269
  i0.ɵɵadvance(1);
241
- i0.ɵɵproperty("ngIf", ctx_r23.cronModel.every === ctx_r23.cronEditorPeriod.QUARTER);
270
+ i0.ɵɵproperty("ngIf", ctx_r48.cronModel.every === ctx_r48.cronEditorPeriod.QUARTER);
242
271
  i0.ɵɵadvance(4);
243
- i0.ɵɵproperty("ngModel", ctx_r23.cronModel);
272
+ i0.ɵɵproperty("ngModel", ctx_r48.cronModel);
244
273
  } }
245
- function DrCronFieldComponent_ng_template_3_ng_template_13_div_0_Template(rf, ctx) { if (rf & 1) {
246
- i0.ɵɵelementStart(0, "div", 37);
274
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
275
+ i0.ɵɵelementStart(0, "div", 44);
247
276
  i0.ɵɵelementContainer(1, 8);
248
277
  i0.ɵɵelementEnd();
249
278
  } if (rf & 2) {
250
- i0.ɵɵnextContext(2);
279
+ i0.ɵɵnextContext(3);
251
280
  const _r12 = i0.ɵɵreference(1);
252
281
  i0.ɵɵadvance(1);
253
282
  i0.ɵɵproperty("ngTemplateOutlet", _r12);
254
283
  } }
255
- function DrCronFieldComponent_ng_template_3_ng_template_13_span_2_Template(rf, ctx) { if (rf & 1) {
284
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_span_2_Template(rf, ctx) { if (rf & 1) {
256
285
  i0.ɵɵelementStart(0, "span");
257
286
  i0.ɵɵtext(1, " Repeat every day ");
258
287
  i0.ɵɵelementEnd();
259
288
  } }
260
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_3_Template(rf, ctx) { if (rf & 1) {
289
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
261
290
  i0.ɵɵelementContainer(0, 8);
262
291
  } if (rf & 2) {
263
- i0.ɵɵnextContext(2);
292
+ i0.ɵɵnextContext(3);
264
293
  const _r14 = i0.ɵɵreference(3);
265
294
  i0.ɵɵproperty("ngTemplateOutlet", _r14);
266
295
  } }
267
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_4_Template(rf, ctx) { if (rf & 1) {
296
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_4_Template(rf, ctx) { if (rf & 1) {
268
297
  i0.ɵɵelementContainer(0, 8);
269
298
  } if (rf & 2) {
270
- i0.ɵɵnextContext(2);
299
+ i0.ɵɵnextContext(3);
271
300
  const _r16 = i0.ɵɵreference(5);
272
301
  i0.ɵɵproperty("ngTemplateOutlet", _r16);
273
302
  } }
274
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_1_Template(rf, ctx) { if (rf & 1) {
303
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_1_Template(rf, ctx) { if (rf & 1) {
275
304
  i0.ɵɵelementStart(0, "span");
276
305
  i0.ɵɵtext(1, "Repeat on ");
277
306
  i0.ɵɵelementEnd();
278
307
  } }
279
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_2_Template(rf, ctx) { if (rf & 1) {
308
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_2_Template(rf, ctx) { if (rf & 1) {
280
309
  i0.ɵɵelementStart(0, "span");
281
310
  i0.ɵɵtext(1, "on ");
282
311
  i0.ɵɵelementEnd();
283
312
  } }
284
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
313
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
285
314
  i0.ɵɵelementContainer(0, 8);
286
315
  } if (rf & 2) {
287
- i0.ɵɵnextContext(3);
316
+ i0.ɵɵnextContext(4);
288
317
  const _r20 = i0.ɵɵreference(9);
289
318
  i0.ɵɵproperty("ngTemplateOutlet", _r20);
290
319
  } }
291
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_5_Template(rf, ctx) { if (rf & 1) {
320
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_5_Template(rf, ctx) { if (rf & 1) {
292
321
  i0.ɵɵelementStart(0, "span");
293
322
  i0.ɵɵtext(1, "day of every month ");
294
323
  i0.ɵɵelementEnd();
295
324
  } }
296
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_6_Template(rf, ctx) { if (rf & 1) {
325
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_6_Template(rf, ctx) { if (rf & 1) {
297
326
  i0.ɵɵelementStart(0, "span");
298
327
  i0.ɵɵtext(1, "day of the month ");
299
328
  i0.ɵɵelementEnd();
300
329
  } }
301
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_Template(rf, ctx) { if (rf & 1) {
330
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
302
331
  i0.ɵɵelementContainerStart(0);
303
- i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_1_Template, 2, 0, "span", 31);
304
- i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_2_Template, 2, 0, "span", 31);
305
- i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_ng_container_3_Template, 1, 1, "ng-container", 30);
332
+ i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_1_Template, 2, 0, "span", 20);
333
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_2_Template, 2, 0, "span", 20);
334
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_ng_container_3_Template, 1, 1, "ng-container", 38);
306
335
  i0.ɵɵelementContainer(4, 8);
307
- i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_5_Template, 2, 0, "span", 31);
308
- i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_span_6_Template, 2, 0, "span", 31);
336
+ i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_5_Template, 2, 0, "span", 20);
337
+ i0.ɵɵtemplate(6, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_span_6_Template, 2, 0, "span", 20);
309
338
  i0.ɵɵelementContainerEnd();
310
339
  } if (rf & 2) {
311
- i0.ɵɵnextContext(2);
340
+ i0.ɵɵnextContext(3);
312
341
  const _r18 = i0.ɵɵreference(7);
313
- const ctx_r59 = i0.ɵɵnextContext();
342
+ const ctx_r64 = i0.ɵɵnextContext();
314
343
  i0.ɵɵadvance(1);
315
- i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.MONTH);
344
+ i0.ɵɵproperty("ngIf", ctx_r64.cronModel.every === ctx_r64.cronEditorPeriod.MONTH);
316
345
  i0.ɵɵadvance(1);
317
- i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.QUARTER);
346
+ i0.ɵɵproperty("ngIf", ctx_r64.cronModel.every === ctx_r64.cronEditorPeriod.QUARTER);
318
347
  i0.ɵɵadvance(1);
319
- i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.YEAR);
348
+ i0.ɵɵproperty("ngIf", ctx_r64.cronModel.every === ctx_r64.cronEditorPeriod.YEAR);
320
349
  i0.ɵɵadvance(1);
321
350
  i0.ɵɵproperty("ngTemplateOutlet", _r18);
322
351
  i0.ɵɵadvance(1);
323
- i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.MONTH);
352
+ i0.ɵɵproperty("ngIf", ctx_r64.cronModel.every === ctx_r64.cronEditorPeriod.MONTH);
324
353
  i0.ɵɵadvance(1);
325
- i0.ɵɵproperty("ngIf", ctx_r59.cronModel.every === ctx_r59.cronEditorPeriod.QUARTER);
354
+ i0.ɵɵproperty("ngIf", ctx_r64.cronModel.every === ctx_r64.cronEditorPeriod.QUARTER);
326
355
  } }
327
- function DrCronFieldComponent_ng_template_3_ng_template_13_ng_template_14_Template(rf, ctx) { if (rf & 1) {
356
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_template_14_Template(rf, ctx) { if (rf & 1) {
328
357
  i0.ɵɵtext(0);
329
358
  } if (rf & 2) {
330
- const item_r67 = ctx.item;
331
- const ctx_r61 = i0.ɵɵnextContext(3);
332
- i0.ɵɵtextInterpolate1(" ", ctx_r61.LOCAL_TIME_ZONE_OFFSET !== ctx_r61.cronModel.timeZone ? item_r67.label : "Local Time", " ");
359
+ const item_r72 = ctx.item;
360
+ const ctx_r66 = i0.ɵɵnextContext(4);
361
+ i0.ɵɵtextInterpolate1(" ", ctx_r66.LOCAL_TIME_ZONE_OFFSET !== ctx_r66.cronModel.timeZone ? item_r72.label : "Local Time", " ");
333
362
  } }
334
- function DrCronFieldComponent_ng_template_3_ng_template_13_Template(rf, ctx) { if (rf & 1) {
335
- const _r69 = i0.ɵɵgetCurrentView();
336
- i0.ɵɵtemplate(0, DrCronFieldComponent_ng_template_3_ng_template_13_div_0_Template, 2, 1, "div", 36);
337
- i0.ɵɵelementStart(1, "div", 37);
338
- i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_template_13_span_2_Template, 2, 0, "span", 31);
339
- i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_3_Template, 1, 1, "ng-container", 30);
340
- i0.ɵɵtemplate(4, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_4_Template, 1, 1, "ng-container", 30);
341
- i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_template_13_ng_container_5_Template, 7, 6, "ng-container", 31);
342
- i0.ɵɵelementStart(6, "span", 34);
363
+ function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template(rf, ctx) { if (rf & 1) {
364
+ const _r74 = i0.ɵɵgetCurrentView();
365
+ i0.ɵɵtemplate(0, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_div_0_Template, 2, 1, "div", 43);
366
+ i0.ɵɵelementStart(1, "div", 44);
367
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_span_2_Template, 2, 0, "span", 20);
368
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_3_Template, 1, 1, "ng-container", 38);
369
+ i0.ɵɵtemplate(4, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_4_Template, 1, 1, "ng-container", 38);
370
+ i0.ɵɵtemplate(5, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_container_5_Template, 7, 6, "ng-container", 20);
371
+ i0.ɵɵelementStart(6, "span", 41);
343
372
  i0.ɵɵtext(7, "at");
344
373
  i0.ɵɵelementEnd();
345
- i0.ɵɵelementStart(8, "dr-input", 38);
346
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r68 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r68.cronModel.hour = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_8_listener() { i0.ɵɵrestoreView(_r69); const ctx_r70 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r70.onSelectionChange()); });
374
+ i0.ɵɵelementStart(8, "dr-input", 45);
375
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r74); const ctx_r73 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r73.cronModel.hour = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_input_ngModelChange_8_listener() { i0.ɵɵrestoreView(_r74); const ctx_r75 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r75.onSelectionChange()); });
347
376
  i0.ɵɵelementEnd();
348
- i0.ɵɵelementStart(9, "span", 39);
377
+ i0.ɵɵelementStart(9, "span", 46);
349
378
  i0.ɵɵtext(10, ":");
350
379
  i0.ɵɵelementEnd();
351
- i0.ɵɵelementStart(11, "dr-input", 40);
352
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r71 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r71.cronModel.minute = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_input_ngModelChange_11_listener() { i0.ɵɵrestoreView(_r69); const ctx_r72 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r72.onSelectionChange()); });
380
+ i0.ɵɵelementStart(11, "dr-input", 47);
381
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_input_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r74); const ctx_r76 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r76.cronModel.minute = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_input_ngModelChange_11_listener() { i0.ɵɵrestoreView(_r74); const ctx_r77 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r77.onSelectionChange()); });
353
382
  i0.ɵɵelementEnd();
354
- i0.ɵɵelementStart(12, "dr-select", 41);
355
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r73 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r73.cronModel.timePeriod = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_12_listener() { i0.ɵɵrestoreView(_r69); const ctx_r74 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r74.onSelectionChange()); });
383
+ i0.ɵɵelementStart(12, "dr-select", 48);
384
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_select_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r74); const ctx_r78 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r78.cronModel.timePeriod = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_select_ngModelChange_12_listener() { i0.ɵɵrestoreView(_r74); const ctx_r79 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r79.onSelectionChange()); });
356
385
  i0.ɵɵelementEnd();
357
- i0.ɵɵelementStart(13, "dr-select", 42);
358
- i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r69); const ctx_r75 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r75.cronModel.timeZone = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_template_13_Template_dr_select_ngModelChange_13_listener() { i0.ɵɵrestoreView(_r69); const ctx_r76 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r76.onSelectionChange()); });
359
- i0.ɵɵtemplate(14, DrCronFieldComponent_ng_template_3_ng_template_13_ng_template_14_Template, 1, 1, "ng-template", null, 43, i0.ɵɵtemplateRefExtractor);
386
+ i0.ɵɵelementStart(13, "dr-select", 49);
387
+ i0.ɵɵlistener("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_select_ngModelChange_13_listener($event) { i0.ɵɵrestoreView(_r74); const ctx_r80 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r80.cronModel.timeZone = $event); })("ngModelChange", function DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template_dr_select_ngModelChange_13_listener() { i0.ɵɵrestoreView(_r74); const ctx_r81 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r81.onSelectionChange()); });
388
+ i0.ɵɵtemplate(14, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_ng_template_14_Template, 1, 1, "ng-template", null, 50, i0.ɵɵtemplateRefExtractor);
360
389
  i0.ɵɵelementEnd()();
361
390
  } if (rf & 2) {
362
- const ctx_r25 = i0.ɵɵnextContext(2);
363
- i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.QUARTER);
391
+ const ctx_r50 = i0.ɵɵnextContext(3);
392
+ i0.ɵɵproperty("ngIf", ctx_r50.cronModel.every === ctx_r50.cronEditorPeriod.QUARTER);
364
393
  i0.ɵɵadvance(2);
365
- i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.DAY);
394
+ i0.ɵɵproperty("ngIf", ctx_r50.cronModel.every === ctx_r50.cronEditorPeriod.DAY);
366
395
  i0.ɵɵadvance(1);
367
- i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.HOUR);
396
+ i0.ɵɵproperty("ngIf", ctx_r50.cronModel.every === ctx_r50.cronEditorPeriod.HOUR);
368
397
  i0.ɵɵadvance(1);
369
- i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every === ctx_r25.cronEditorPeriod.WEEK);
398
+ i0.ɵɵproperty("ngIf", ctx_r50.cronModel.every === ctx_r50.cronEditorPeriod.WEEK);
370
399
  i0.ɵɵadvance(1);
371
- i0.ɵɵproperty("ngIf", ctx_r25.cronModel.every !== ctx_r25.cronEditorPeriod.WEEK && ctx_r25.cronModel.every !== ctx_r25.cronEditorPeriod.HOUR && ctx_r25.cronModel.every !== ctx_r25.cronEditorPeriod.DAY);
400
+ i0.ɵɵproperty("ngIf", ctx_r50.cronModel.every !== ctx_r50.cronEditorPeriod.WEEK && ctx_r50.cronModel.every !== ctx_r50.cronEditorPeriod.HOUR && ctx_r50.cronModel.every !== ctx_r50.cronEditorPeriod.DAY);
372
401
  i0.ɵɵadvance(3);
373
- i0.ɵɵproperty("ngModel", ctx_r25.cronModel.hour)("mask", "00")("min", 1)("max", 12);
402
+ i0.ɵɵproperty("ngModel", ctx_r50.cronModel.hour)("mask", "00")("min", 0)("max", 12);
374
403
  i0.ɵɵadvance(3);
375
- i0.ɵɵproperty("ngModel", ctx_r25.cronModel.minute)("mask", "00")("min", 0)("max", 59);
404
+ i0.ɵɵproperty("ngModel", ctx_r50.cronModel.minute)("mask", "00")("min", 0)("max", 59);
376
405
  i0.ɵɵadvance(1);
377
- i0.ɵɵproperty("ngModel", ctx_r25.cronModel.timePeriod)("items", ctx_r25.CRON_TIME_PERIOD_ARRAY);
406
+ i0.ɵɵproperty("ngModel", ctx_r50.cronModel.timePeriod)("items", ctx_r50.CRON_TIME_PERIOD_ARRAY);
407
+ i0.ɵɵadvance(1);
408
+ i0.ɵɵproperty("ngModel", ctx_r50.cronModel.timeZone)("items", ctx_r50.GMT_OFFSETS)("textView", true);
409
+ } }
410
+ function DrCronFieldComponent_ng_template_3_ng_container_13_Template(rf, ctx) { if (rf & 1) {
411
+ i0.ɵɵelementContainerStart(0);
412
+ i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_3_ng_container_13_ng_container_1_Template, 13, 8, "ng-container", 35);
413
+ i0.ɵɵtemplate(2, DrCronFieldComponent_ng_template_3_ng_container_13_ng_template_2_Template, 16, 18, "ng-template", null, 36, i0.ɵɵtemplateRefExtractor);
414
+ i0.ɵɵelementContainerEnd();
415
+ } if (rf & 2) {
416
+ const _r49 = i0.ɵɵreference(3);
417
+ const ctx_r24 = i0.ɵɵnextContext(2);
378
418
  i0.ɵɵadvance(1);
379
- i0.ɵɵproperty("ngModel", ctx_r25.cronModel.timeZone)("items", ctx_r25.GMT_OFFSETS)("textView", true);
419
+ i0.ɵɵproperty("ngIf", ctx_r24.multiRowMode)("ngIfElse", _r49);
380
420
  } }
381
421
  function DrCronFieldComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
382
422
  i0.ɵɵtemplate(0, DrCronFieldComponent_ng_template_3_ng_template_0_Template, 5, 2, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
@@ -386,18 +426,19 @@ function DrCronFieldComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
386
426
  i0.ɵɵtemplate(8, DrCronFieldComponent_ng_template_3_ng_template_8_Template, 3, 2, "ng-template", null, 16, i0.ɵɵtemplateRefExtractor);
387
427
  i0.ɵɵelementStart(10, "div", 17);
388
428
  i0.ɵɵtemplate(11, DrCronFieldComponent_ng_template_3_dr_radio_group_11_Template, 2, 2, "dr-radio-group", 18);
389
- i0.ɵɵtemplate(12, DrCronFieldComponent_ng_template_3_ng_container_12_Template, 13, 8, "ng-container", 19);
390
- i0.ɵɵtemplate(13, DrCronFieldComponent_ng_template_3_ng_template_13_Template, 16, 18, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
429
+ i0.ɵɵtemplate(12, DrCronFieldComponent_ng_template_3_div_12_Template, 7, 2, "div", 19);
430
+ i0.ɵɵtemplate(13, DrCronFieldComponent_ng_template_3_ng_container_13_Template, 4, 2, "ng-container", 20);
391
431
  i0.ɵɵelementEnd();
392
432
  } if (rf & 2) {
393
- const _r24 = i0.ɵɵreference(14);
394
433
  const ctx_r4 = i0.ɵɵnextContext();
395
434
  i0.ɵɵadvance(10);
396
435
  i0.ɵɵclassProp("cron-configuration--multi-row", ctx_r4.multiRowMode);
397
436
  i0.ɵɵadvance(1);
398
437
  i0.ɵɵproperty("ngIf", !ctx_r4.hidePeriodSelector);
399
438
  i0.ɵɵadvance(1);
400
- i0.ɵɵproperty("ngIf", ctx_r4.multiRowMode)("ngIfElse", _r24);
439
+ i0.ɵɵproperty("ngIf", ctx_r4.isAdvancedMode);
440
+ i0.ɵɵadvance(1);
441
+ i0.ɵɵproperty("ngIf", !ctx_r4.isAdvancedMode);
401
442
  } }
402
443
  export class DrCronFieldComponent {
403
444
  set value(value) {
@@ -426,6 +467,7 @@ export class DrCronFieldComponent {
426
467
  this.hidePeriodSelector = false;
427
468
  this.flatMode = false;
428
469
  this.multiRowMode = false;
470
+ this.allowAdvanced = false;
429
471
  this.DAY_OF_MONTH_ARRAY = DAY_OF_MONTH_ARRAY;
430
472
  this.MONTH_OF_QUARTER_ARRAY = MONTH_OF_QUARTER_ARRAY;
431
473
  this.MONTH_OF_YEAR_ARRAY = MONTH_OF_YEAR_ARRAY;
@@ -435,6 +477,9 @@ export class DrCronFieldComponent {
435
477
  this.LOCAL_TIME_ZONE_OFFSET = LOCAL_TIME_ZONE_OFFSET;
436
478
  this.GMT_OFFSETS = GMT_OFFSETS;
437
479
  this.cronEditorPeriod = CronEditorPeriod;
480
+ this.isAdvancedMode = false;
481
+ this.advancedCron = '';
482
+ this.advancedError = null;
438
483
  this.onChange = () => { };
439
484
  this.onTouched = () => { };
440
485
  }
@@ -446,6 +491,9 @@ export class DrCronFieldComponent {
446
491
  value: period,
447
492
  label: capitalize(getCronTypeAsPeriodLabel(period)),
448
493
  }));
494
+ if (this.allowAdvanced) {
495
+ this.cronEditorPeriodArray.push({ value: 'advanced', label: 'Advanced' });
496
+ }
449
497
  }
450
498
  registerOnChange(fn) {
451
499
  this.onChange = fn;
@@ -465,6 +513,15 @@ export class DrCronFieldComponent {
465
513
  this.cdr.markForCheck();
466
514
  }
467
515
  update() {
516
+ if (this.isAdvancedMode) {
517
+ this.validateAdvancedCron();
518
+ if (!this.advancedError) {
519
+ this.visibleString = this.advancedCron;
520
+ this.onChange(this.advancedCron);
521
+ }
522
+ this.cdr.markForCheck();
523
+ return;
524
+ }
468
525
  this.valueObject.valueObject = this.cronModel;
469
526
  this.visibleString = this.valueObject.getReadableString();
470
527
  this.cdr.markForCheck();
@@ -475,6 +532,14 @@ export class DrCronFieldComponent {
475
532
  this.cronModel = this.valueObject.valueObject;
476
533
  }
477
534
  onEveryChange($event) {
535
+ if ($event === 'advanced') {
536
+ this.isAdvancedMode = true;
537
+ this.advancedCron = '';
538
+ this.advancedError = null;
539
+ return;
540
+ }
541
+ this.isAdvancedMode = false;
542
+ this.advancedError = null;
478
543
  const tempValueObject = new CronEditor(CronEditorDefaultConfigByPeriod[$event](this.fiscalYearStart), this.fiscalYearStart);
479
544
  this.cronModel = tempValueObject.valueObject;
480
545
  this.onSelectionChange();
@@ -491,24 +556,36 @@ export class DrCronFieldComponent {
491
556
  this.update();
492
557
  }
493
558
  }
559
+ onAdvancedChange() {
560
+ this.validateAdvancedCron();
561
+ this.onSelectionChange();
562
+ }
563
+ validateAdvancedCron() {
564
+ if (!this.validateCron) {
565
+ this.advancedError = null;
566
+ return;
567
+ }
568
+ const validation = this.validateCron(this.advancedCron);
569
+ this.advancedError = validation.valid ? null : validation.error_message;
570
+ }
494
571
  /** @nocollapse */ static { this.ɵfac = function DrCronFieldComponent_Factory(t) { return new (t || DrCronFieldComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
495
572
  /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: DrCronFieldComponent, selectors: [["dr-cron-field"]], hostVars: 3, hostBindings: function DrCronFieldComponent_HostBindings(rf, ctx) { if (rf & 2) {
496
573
  i0.ɵɵattribute("id", ctx.hostId);
497
574
  i0.ɵɵclassProp("disabled", ctx.disabled);
498
- } }, inputs: { id: "id", disabled: "disabled", allowedPeriods: "allowedPeriods", fiscalYearStart: "fiscalYearStart", popoverPosition: "popoverPosition", hidePeriodSelector: ["hidePeriodSelector", "hidePeriodSelector", booleanAttribute], flatMode: ["flatMode", "flatMode", booleanAttribute], multiRowMode: ["multiRowMode", "multiRowMode", booleanAttribute] }, standalone: true, features: [i0.ɵɵProvidersFeature([
575
+ } }, inputs: { id: "id", disabled: "disabled", allowedPeriods: "allowedPeriods", fiscalYearStart: "fiscalYearStart", popoverPosition: "popoverPosition", hidePeriodSelector: ["hidePeriodSelector", "hidePeriodSelector", booleanAttribute], flatMode: ["flatMode", "flatMode", booleanAttribute], multiRowMode: ["multiRowMode", "multiRowMode", booleanAttribute], allowAdvanced: ["allowAdvanced", "allowAdvanced", booleanAttribute], validateCron: "validateCron" }, standalone: true, features: [i0.ɵɵProvidersFeature([
499
576
  {
500
577
  provide: NG_VALUE_ACCESSOR,
501
578
  useExisting: forwardRef((() => DrCronFieldComponent)),
502
579
  multi: true,
503
580
  },
504
- ]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 2, consts: [["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange", 4, "ngIf", "ngIfElse"], ["recurrencePopover", ""], ["cronConfiguration", ""], ["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange"], ["prefixIcon", "", 1, "dr-icon-date"], ["suffixIcon", "", 1, "dr-icon-arrow-down"], [1, "recurrence-popup"], [1, "recurrence-popup__body"], [3, "ngTemplateOutlet"], [1, "recurrence-popup__footer"], ["data-analytics", "dr-cron-field_button-cancel", "theme", "secondary", 3, "click"], ["data-analytics", "dr-cron-field_button-save", 3, "click"], ["quarterConfig", ""], ["hourConfig", ""], ["weekConfig", ""], ["dayOfMonthSelector", ""], ["yearMonthSelector", ""], [1, "cron-configuration"], ["data-analytics", "dr-cron-field_radio-group-period", "class", "cron-configuration__every", "name", "every", 3, "ngModel", "ngModelChange", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["singleRowMode", ""], ["data-analytics", "dr-cron-field_select-quarter-month", "aria-label", "Quarter month", "bindLabel", "label", "bindValue", "value", 1, "month-of-quarter", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-every-x-hours", "aria-label", "Hour interval", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-week", "aria-label", "Day of week", "bindLabel", "label", "bindValue", "value", 1, "day-of-week", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-month", "aria-label", "Day of month", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "searchable", "ngModelChange"], ["data-analytics", "dr-cron-field_select-month", "aria-label", "Month", "bindLabel", "label", "bindValue", "value", 1, "month-of-year", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-group-period", "name", "every", 1, "cron-configuration__every", 3, "ngModel", "ngModelChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "cron-configuration__section", "cron-configuration__row"], [3, "ngTemplateOutlet", 4, "ngIf"], [4, "ngIf"], ["class", "cron-configuration__section cron-configuration__row", 4, "ngIf"], [1, "cron-configuration__section", "cron-configuration__row", "cron-configuration__row--time"], [1, "time-prefix"], [3, "ngModel", "ngModelChange"], ["class", "cron-configuration__section", 4, "ngIf"], [1, "cron-configuration__section"], ["data-analytics", "dr-cron-field_input-hour", "aria-label", "Hour", "type", "number", 1, "hours-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], [1, "time-dots"], ["data-analytics", "dr-cron-field_input-minute", "aria-label", "Minute", "type", "number", 1, "minutes-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], ["data-analytics", "dr-cron-field_select-time-period", "aria-label", "Time period", 1, "time-period-selector", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-timezone", "aria-label", "Time zone", "bindLabel", "label", "bindValue", "value", 1, "gmt-offsets", 3, "ngModel", "items", "textView", "ngModelChange"], ["labelTemplate", ""]], template: function DrCronFieldComponent_Template(rf, ctx) { if (rf & 1) {
581
+ ]), i0.ɵɵInputTransformsFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 2, consts: [["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange", 4, "ngIf", "ngIfElse"], ["recurrencePopover", ""], ["cronConfiguration", ""], ["data-analytics", "dr-cron-field_input-main", "aria-label", "Schedule", "placeholder", "Select...", 3, "id", "ngModel", "drPopover", "drPopoverPosition", "disabled", "readonly", "click", "ngModelChange"], ["prefixIcon", "", 1, "dr-icon-date"], ["suffixIcon", "", 1, "dr-icon-arrow-down"], [1, "recurrence-popup"], [1, "recurrence-popup__body"], [3, "ngTemplateOutlet"], [1, "recurrence-popup__footer"], ["data-analytics", "dr-cron-field_button-cancel", "theme", "secondary", 3, "click"], ["data-analytics", "dr-cron-field_button-save", 3, "click"], ["quarterConfig", ""], ["hourConfig", ""], ["weekConfig", ""], ["dayOfMonthSelector", ""], ["yearMonthSelector", ""], [1, "cron-configuration"], ["data-analytics", "dr-cron-field_radio-group-period", "class", "cron-configuration__every", "name", "every", 3, "ngModel", "ngModelChange", 4, "ngIf"], ["class", "cron-configuration__advanced", 4, "ngIf"], [4, "ngIf"], ["data-analytics", "dr-cron-field_select-quarter-month", "aria-label", "Quarter month", "bindLabel", "label", "bindValue", "value", 1, "month-of-quarter", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-every-x-hours", "aria-label", "Hour interval", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-week", "aria-label", "Day of week", "bindLabel", "label", "bindValue", "value", 1, "day-of-week", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-day-of-month", "aria-label", "Day of month", "bindLabel", "label", "bindValue", "value", 1, "day-of-month", 3, "ngModel", "items", "searchable", "ngModelChange"], ["data-analytics", "dr-cron-field_select-month", "aria-label", "Month", "bindLabel", "label", "bindValue", "value", 1, "month-of-year", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-group-period", "name", "every", 1, "cron-configuration__every", 3, "ngModel", "ngModelChange"], ["data-analytics", "dr-cron-field_radio-button-0", 3, "value", 4, "ngFor", "ngForOf"], ["data-analytics", "dr-cron-field_radio-button-0", 3, "value"], [1, "cron-configuration__advanced"], [1, "cron-configuration__advanced-note"], [1, "cron-configuration__advanced-label"], ["data-analytics", "dr-cron-field_input-advanced", 3, "ngModel", "ngModelChange"], ["class", "cron-configuration__advanced-error", 4, "ngIf"], [1, "cron-configuration__advanced-error"], [4, "ngIf", "ngIfElse"], ["singleRowMode", ""], [1, "cron-configuration__section", "cron-configuration__row"], [3, "ngTemplateOutlet", 4, "ngIf"], ["class", "cron-configuration__section cron-configuration__row", 4, "ngIf"], [1, "cron-configuration__section", "cron-configuration__row", "cron-configuration__row--time"], [1, "time-prefix"], [3, "ngModel", "ngModelChange"], ["class", "cron-configuration__section", 4, "ngIf"], [1, "cron-configuration__section"], ["data-analytics", "dr-cron-field_input-hour", "aria-label", "Hour", "type", "number", 1, "hours-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], [1, "time-dots"], ["data-analytics", "dr-cron-field_input-minute", "aria-label", "Minute", "type", "number", 1, "minutes-input", 3, "ngModel", "mask", "min", "max", "ngModelChange"], ["data-analytics", "dr-cron-field_select-time-period", "aria-label", "Time period", 1, "time-period-selector", 3, "ngModel", "items", "ngModelChange"], ["data-analytics", "dr-cron-field_select-timezone", "aria-label", "Time zone", "bindLabel", "label", "bindValue", "value", 1, "gmt-offsets", 3, "ngModel", "items", "textView", "ngModelChange"], ["labelTemplate", ""]], template: function DrCronFieldComponent_Template(rf, ctx) { if (rf & 1) {
505
582
  i0.ɵɵtemplate(0, DrCronFieldComponent_dr_input_0_Template, 3, 6, "dr-input", 0);
506
583
  i0.ɵɵtemplate(1, DrCronFieldComponent_ng_template_1_Template, 8, 1, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
507
- i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_Template, 15, 5, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
584
+ i0.ɵɵtemplate(3, DrCronFieldComponent_ng_template_3_Template, 14, 5, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
508
585
  } if (rf & 2) {
509
586
  const _r3 = i0.ɵɵreference(4);
510
587
  i0.ɵɵproperty("ngIf", !ctx.flatMode)("ngIfElse", _r3);
511
- } }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, FormsModule, i2.NgControlStatus, i2.NgModel, DrTooltipModule, DrInputsModule, i3.DrButtonComponent, i4.RadioButtonComponent, i5.RadioGroupComponent, i6.DrInputComponent, i7.DrSelectComponent, DrPopoverModule, i8.DrPopoverDirective, TimePickerComponent], styles: ["[_nghost-%COMP%] dr-input[_ngcontent-%COMP%] , [_nghost-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer[_ngcontent-%COMP%]{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer[_ngcontent-%COMP%] dr-button[_ngcontent-%COMP%]{margin-left:12px}.cron-configuration[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .month-of-quarter[_ngcontent-%COMP%]{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-week[_ngcontent-%COMP%]{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .month-of-year[_ngcontent-%COMP%]{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-month[_ngcontent-%COMP%]{width:75px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .hours-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .minutes-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .time-period-selector[_ngcontent-%COMP%]{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:4px}.cron-configuration[_ngcontent-%COMP%] .time-dots[_ngcontent-%COMP%]{margin:0 4px}.cron-configuration[_ngcontent-%COMP%] .gmt-offsets[_ngcontent-%COMP%]{margin-left:16px}.cron-configuration--multi-row[_ngcontent-%COMP%]{width:auto}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row--time[_ngcontent-%COMP%]{margin-top:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:0}"], changeDetection: 0 }); }
588
+ } }, dependencies: [CommonModule, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, FormsModule, i2.NgControlStatus, i2.NgModel, DrTooltipModule, DrInputsModule, i3.DrButtonComponent, i4.RadioButtonComponent, i5.RadioGroupComponent, i6.DrInputComponent, i7.DrSelectComponent, DrPopoverModule, i8.DrPopoverDirective, TimePickerComponent], styles: ["[_nghost-%COMP%] dr-input[_ngcontent-%COMP%] , [_nghost-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body[_ngcontent-%COMP%]{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer[_ngcontent-%COMP%]{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer[_ngcontent-%COMP%] dr-button[_ngcontent-%COMP%]{margin-left:12px}.cron-configuration[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .month-of-quarter[_ngcontent-%COMP%]{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-week[_ngcontent-%COMP%]{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .month-of-year[_ngcontent-%COMP%]{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration[_ngcontent-%COMP%] .day-of-month[_ngcontent-%COMP%]{width:75px;flex-shrink:0;margin:0 8px}.cron-configuration[_ngcontent-%COMP%] .hours-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .minutes-input[_ngcontent-%COMP%]{width:62px;flex-shrink:0}.cron-configuration[_ngcontent-%COMP%] .time-period-selector[_ngcontent-%COMP%]{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:4px}.cron-configuration[_ngcontent-%COMP%] .time-dots[_ngcontent-%COMP%]{margin:0 4px}.cron-configuration[_ngcontent-%COMP%] .gmt-offsets[_ngcontent-%COMP%]{margin-left:16px}.cron-configuration__advanced[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.cron-configuration__advanced[_ngcontent-%COMP%] dr-input[_ngcontent-%COMP%] input{cursor:text}.cron-configuration__advanced-error[_ngcontent-%COMP%]{color:#bf1d30}.cron-configuration--multi-row[_ngcontent-%COMP%]{width:auto}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .cron-configuration__row--time[_ngcontent-%COMP%]{margin-top:8px}.cron-configuration--multi-row[_ngcontent-%COMP%] .time-prefix[_ngcontent-%COMP%]{margin-left:0}"], changeDetection: 0 }); }
512
589
  }
513
590
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrCronFieldComponent, [{
514
591
  type: Component,
@@ -518,7 +595,7 @@ export class DrCronFieldComponent {
518
595
  useExisting: forwardRef((() => DrCronFieldComponent)),
519
596
  multi: true,
520
597
  },
521
- ], imports: [CommonModule, FormsModule, DrTooltipModule, DrInputsModule, DrPopoverModule, TimePickerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dr-input\n [id]=\"id\"\n data-analytics=\"dr-cron-field_input-main\"\n aria-label=\"Schedule\"\n *ngIf=\"!flatMode; else cronConfiguration\"\n placeholder=\"Select...\"\n (click)=\"!disabled ? openPopover() : null\"\n [(ngModel)]=\"visibleString\"\n [drPopover]=\"!disabled ? recurrencePopover : null\"\n [drPopoverPosition]=\"popoverPosition\"\n [disabled]=\"disabled\"\n [readonly]=\"true\">\n <i class=\"dr-icon-date\" prefixIcon></i>\n <i class=\"dr-icon-arrow-down\" suffixIcon></i>\n</dr-input>\n\n<ng-template #recurrencePopover let-closePopover=\"closePopover\">\n <div class=\"recurrence-popup\">\n <div class=\"recurrence-popup__body\">\n <ng-container [ngTemplateOutlet]=\"cronConfiguration\"></ng-container>\n </div>\n <div class=\"recurrence-popup__footer\">\n <dr-button data-analytics=\"dr-cron-field_button-cancel\" theme=\"secondary\" (click)=\"closePopover()\">Cancel</dr-button>\n <dr-button data-analytics=\"dr-cron-field_button-save\" (click)=\"update(); closePopover()\">Save</dr-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cronConfiguration>\n <ng-template #quarterConfig>\n <span>Repeat every quarter on</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-quarter-month\"\n aria-label=\"Quarter month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_QUARTER_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-quarter\"></dr-select>\n <span>month of the quarter</span>\n </ng-template>\n\n <ng-template #hourConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-every-x-hours\"\n aria-label=\"Hour interval\"\n [(ngModel)]=\"cronModel.everyXHours\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"HOURS_DIVISIBLE_INTO_DAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n <span>hour(s)</span>\n </ng-template>\n\n <ng-template #weekConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-week\"\n aria-label=\"Day of week\"\n [(ngModel)]=\"cronModel.dayOfWeek\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_WEEK_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-week\">\n </dr-select>\n </ng-template>\n\n <ng-template #dayOfMonthSelector>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-month\"\n aria-label=\"Day of month\"\n [(ngModel)]=\"cronModel.dayOfMonth\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_MONTH_ARRAY\"\n [searchable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n </ng-template>\n\n <ng-template #yearMonthSelector>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-month\"\n aria-label=\"Month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_YEAR_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-year\">\n </dr-select>\n </ng-template>\n\n <div class=\"cron-configuration\" [class.cron-configuration--multi-row]=\"multiRowMode\">\n <dr-radio-group\n data-analytics=\"dr-cron-field_radio-group-period\"\n *ngIf=\"!hidePeriodSelector\"\n class=\"cron-configuration__every\"\n [(ngModel)]=\"cronModel.every\"\n (ngModelChange)=\"onEveryChange($event)\"\n name=\"every\">\n <dr-radio-button\n *ngFor=\"let option of cronEditorPeriodArray\"\n [value]=\"option.value\"\n [attr.data-analytics]=\"'dr-cron-field_radio-button-' + option.value\">\n {{ option.label }}\n </dr-radio-button>\n </dr-radio-group>\n\n <ng-container *ngIf=\"multiRowMode; else singleRowMode\">\n <div class=\"cron-configuration__section cron-configuration__row\">\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\"\n [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\">Repeat every day</span>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\" [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\" [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\">\n <ng-container [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">\n <span>Repeat on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of every month</span>\n </ng-container>\n </div>\n\n <div class=\"cron-configuration__section cron-configuration__row\" *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">\n <span>on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of the month</span>\n </div>\n\n <div class=\"cron-configuration__section cron-configuration__row cron-configuration__row--time\">\n <span class=\"time-prefix\">at</span>\n <dr-time-picker [ngModel]=\"cronModel\" (ngModelChange)=\"onTimePickerChange($event)\"> </dr-time-picker>\n </div>\n </ng-container>\n\n <ng-template #singleRowMode>\n <div *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\" class=\"cron-configuration__section\">\n <ng-container [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n </div>\n <div class=\"cron-configuration__section\">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\"> Repeat every day </span>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\" [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\" [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n\n <ng-container\n *ngIf=\"\n cronModel.every !== cronEditorPeriod.WEEK &&\n cronModel.every !== cronEditorPeriod.HOUR &&\n cronModel.every !== cronEditorPeriod.DAY\n \">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">Repeat on </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">on </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\"\n [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">day of every month </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">day of the month </span>\n </ng-container>\n <span class=\"time-prefix\">at</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-hour\"\n aria-label=\"Hour\"\n [(ngModel)]=\"cronModel.hour\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"1\"\n [max]=\"12\"\n type=\"number\"\n class=\"hours-input\">\n </dr-input>\n <span class=\"time-dots\">:</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-minute\"\n aria-label=\"Minute\"\n [(ngModel)]=\"cronModel.minute\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"59\"\n type=\"number\"\n class=\"minutes-input\">\n </dr-input>\n <dr-select\n data-analytics=\"dr-cron-field_select-time-period\"\n aria-label=\"Time period\"\n [(ngModel)]=\"cronModel.timePeriod\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"CRON_TIME_PERIOD_ARRAY\"\n class=\"time-period-selector\"></dr-select>\n <dr-select\n data-analytics=\"dr-cron-field_select-timezone\"\n aria-label=\"Time zone\"\n [(ngModel)]=\"cronModel.timeZone\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"GMT_OFFSETS\"\n [textView]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"gmt-offsets\">\n <ng-template #labelTemplate let-item=\"item\">\n {{ LOCAL_TIME_ZONE_OFFSET !== cronModel.timeZone ? item.label : 'Local Time' }}\n </ng-template>\n </dr-select>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host dr-input::ng-deep,:host dr-input::ng-deep input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer dr-button{margin-left:12px}.cron-configuration{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section span{flex-shrink:0}.cron-configuration .month-of-quarter{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration .day-of-week{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration .month-of-year{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration .day-of-month{width:75px;flex-shrink:0;margin:0 8px}.cron-configuration .hours-input{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration .minutes-input{width:62px;flex-shrink:0}.cron-configuration .time-period-selector{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration .time-prefix{margin-left:4px}.cron-configuration .time-dots{margin:0 4px}.cron-configuration .gmt-offsets{margin-left:16px}.cron-configuration--multi-row{width:auto}.cron-configuration--multi-row .cron-configuration__row{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row .cron-configuration__row--time{margin-top:8px}.cron-configuration--multi-row .time-prefix{margin-left:0}\n"] }]
598
+ ], imports: [CommonModule, FormsModule, DrTooltipModule, DrInputsModule, DrPopoverModule, TimePickerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dr-input\n [id]=\"id\"\n data-analytics=\"dr-cron-field_input-main\"\n aria-label=\"Schedule\"\n *ngIf=\"!flatMode; else cronConfiguration\"\n placeholder=\"Select...\"\n (click)=\"!disabled ? openPopover() : null\"\n [(ngModel)]=\"visibleString\"\n [drPopover]=\"!disabled ? recurrencePopover : null\"\n [drPopoverPosition]=\"popoverPosition\"\n [disabled]=\"disabled\"\n [readonly]=\"true\">\n <i class=\"dr-icon-date\" prefixIcon></i>\n <i class=\"dr-icon-arrow-down\" suffixIcon></i>\n</dr-input>\n\n<ng-template #recurrencePopover let-closePopover=\"closePopover\">\n <div class=\"recurrence-popup\">\n <div class=\"recurrence-popup__body\">\n <ng-container [ngTemplateOutlet]=\"cronConfiguration\"></ng-container>\n </div>\n <div class=\"recurrence-popup__footer\">\n <dr-button data-analytics=\"dr-cron-field_button-cancel\" theme=\"secondary\" (click)=\"closePopover()\">Cancel</dr-button>\n <dr-button data-analytics=\"dr-cron-field_button-save\" (click)=\"update(); closePopover()\">Save</dr-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #cronConfiguration>\n <ng-template #quarterConfig>\n <span>Repeat every quarter on</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-quarter-month\"\n aria-label=\"Quarter month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_QUARTER_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-quarter\"></dr-select>\n <span>month of the quarter</span>\n </ng-template>\n\n <ng-template #hourConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-every-x-hours\"\n aria-label=\"Hour interval\"\n [(ngModel)]=\"cronModel.everyXHours\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"HOURS_DIVISIBLE_INTO_DAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n <span>hour(s)</span>\n </ng-template>\n\n <ng-template #weekConfig>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-week\"\n aria-label=\"Day of week\"\n [(ngModel)]=\"cronModel.dayOfWeek\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_WEEK_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-week\">\n </dr-select>\n </ng-template>\n\n <ng-template #dayOfMonthSelector>\n <dr-select\n data-analytics=\"dr-cron-field_select-day-of-month\"\n aria-label=\"Day of month\"\n [(ngModel)]=\"cronModel.dayOfMonth\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"DAY_OF_MONTH_ARRAY\"\n [searchable]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"day-of-month\">\n </dr-select>\n </ng-template>\n\n <ng-template #yearMonthSelector>\n <span>Repeat every</span>\n <dr-select\n data-analytics=\"dr-cron-field_select-month\"\n aria-label=\"Month\"\n [(ngModel)]=\"cronModel.month\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"MONTH_OF_YEAR_ARRAY\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"month-of-year\">\n </dr-select>\n </ng-template>\n\n <div class=\"cron-configuration\" [class.cron-configuration--multi-row]=\"multiRowMode\">\n <dr-radio-group\n data-analytics=\"dr-cron-field_radio-group-period\"\n *ngIf=\"!hidePeriodSelector\"\n class=\"cron-configuration__every\"\n [ngModel]=\"isAdvancedMode ? 'advanced' : cronModel.every\"\n (ngModelChange)=\"onEveryChange($event)\"\n name=\"every\">\n <dr-radio-button\n data-analytics=\"dr-cron-field_radio-button-0\"\n *ngFor=\"let option of cronEditorPeriodArray\"\n [value]=\"option.value\"\n [attr.data-analytics]=\"'dr-cron-field_radio-button-' + option.value\">\n {{ option.label }}\n </dr-radio-button>\n </dr-radio-group>\n <div *ngIf=\"isAdvancedMode\" class=\"cron-configuration__advanced\">\n <div class=\"cron-configuration__advanced-note\">\n Use crontab to set custom time intervals for sync frequency, such as every two weeks at 10:05.\n </div>\n <div class=\"cron-configuration__advanced-label\">Enter your cron expression:</div>\n <dr-input\n data-analytics=\"dr-cron-field_input-advanced\"\n [(ngModel)]=\"advancedCron\"\n (ngModelChange)=\"onAdvancedChange()\">\n </dr-input>\n <div *ngIf=\"advancedError\" class=\"cron-configuration__advanced-error\">{{ advancedError }}</div>\n </div>\n\n <ng-container *ngIf=\"!isAdvancedMode\">\n <ng-container *ngIf=\"multiRowMode; else singleRowMode\">\n <div class=\"cron-configuration__section cron-configuration__row\">\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\"\n [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\">Repeat every day</span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\"\n [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\"\n [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\">\n <ng-container [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">\n <span>Repeat on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of every month</span>\n </ng-container>\n </div>\n\n <div\n class=\"cron-configuration__section cron-configuration__row\"\n *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">\n <span>on</span>\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n <span>day of the month</span>\n </div>\n\n <div class=\"cron-configuration__section cron-configuration__row cron-configuration__row--time\">\n <span class=\"time-prefix\">at</span>\n <dr-time-picker [ngModel]=\"cronModel\" (ngModelChange)=\"onTimePickerChange($event)\"> </dr-time-picker>\n </div>\n </ng-container>\n\n <ng-template #singleRowMode>\n <div *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\" class=\"cron-configuration__section\">\n <ng-container [ngTemplateOutlet]=\"quarterConfig\"></ng-container>\n </div>\n <div class=\"cron-configuration__section\">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.DAY\"> Repeat every day </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.HOUR\"\n [ngTemplateOutlet]=\"hourConfig\"></ng-container>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.WEEK\"\n [ngTemplateOutlet]=\"weekConfig\"></ng-container>\n\n <ng-container\n *ngIf=\"\n cronModel.every !== cronEditorPeriod.WEEK &&\n cronModel.every !== cronEditorPeriod.HOUR &&\n cronModel.every !== cronEditorPeriod.DAY\n \">\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">Repeat on </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">on </span>\n <ng-container\n *ngIf=\"cronModel.every === cronEditorPeriod.YEAR\"\n [ngTemplateOutlet]=\"yearMonthSelector\"></ng-container>\n\n <ng-container [ngTemplateOutlet]=\"dayOfMonthSelector\"></ng-container>\n\n <span *ngIf=\"cronModel.every === cronEditorPeriod.MONTH\">day of every month </span>\n <span *ngIf=\"cronModel.every === cronEditorPeriod.QUARTER\">day of the month </span>\n </ng-container>\n <span class=\"time-prefix\">at</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-hour\"\n aria-label=\"Hour\"\n [(ngModel)]=\"cronModel.hour\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"12\"\n type=\"number\"\n class=\"hours-input\">\n </dr-input>\n <span class=\"time-dots\">:</span>\n <dr-input\n data-analytics=\"dr-cron-field_input-minute\"\n aria-label=\"Minute\"\n [(ngModel)]=\"cronModel.minute\"\n (ngModelChange)=\"onSelectionChange()\"\n [mask]=\"'00'\"\n [min]=\"0\"\n [max]=\"59\"\n type=\"number\"\n class=\"minutes-input\">\n </dr-input>\n <dr-select\n data-analytics=\"dr-cron-field_select-time-period\"\n aria-label=\"Time period\"\n [(ngModel)]=\"cronModel.timePeriod\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"CRON_TIME_PERIOD_ARRAY\"\n class=\"time-period-selector\"></dr-select>\n <dr-select\n data-analytics=\"dr-cron-field_select-timezone\"\n aria-label=\"Time zone\"\n [(ngModel)]=\"cronModel.timeZone\"\n (ngModelChange)=\"onSelectionChange()\"\n [items]=\"GMT_OFFSETS\"\n [textView]=\"true\"\n bindLabel=\"label\"\n bindValue=\"value\"\n class=\"gmt-offsets\">\n <ng-template #labelTemplate let-item=\"item\">\n {{ LOCAL_TIME_ZONE_OFFSET !== cronModel.timeZone ? item.label : 'Local Time' }}\n </ng-template>\n </dr-select>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n", styles: [":host dr-input::ng-deep,:host dr-input::ng-deep input{cursor:pointer;text-overflow:ellipsis}.recurrence-popup__body{display:flex;flex-direction:column;flex-grow:1;padding:16px 32px}.recurrence-popup__footer{display:flex;align-items:center;padding:8px 16px;border-top:1px solid #dfe0e3;justify-content:flex-end}.recurrence-popup__footer dr-button{margin-left:12px}.cron-configuration{display:flex;flex-direction:column;width:640px;height:auto;font-size:14px;line-height:24px;font-weight:400}.cron-configuration__every{display:flex;align-items:center;width:100%;margin:16px 0;gap:24px}.cron-configuration__section{display:flex;align-items:center;flex-wrap:nowrap;margin-bottom:8px}.cron-configuration__section span{flex-shrink:0}.cron-configuration .month-of-quarter{width:65px;flex-shrink:0;margin:0 8px}.cron-configuration .day-of-week{width:132px;flex-shrink:0;margin:0 8px}.cron-configuration .month-of-year{width:125px;flex-shrink:0;margin:0 0 0 8px}.cron-configuration .day-of-month{width:75px;flex-shrink:0;margin:0 8px}.cron-configuration .hours-input{width:62px;flex-shrink:0;margin-left:8px}.cron-configuration .minutes-input{width:62px;flex-shrink:0}.cron-configuration .time-period-selector{width:64px;flex-shrink:0;margin-left:8px}.cron-configuration .time-prefix{margin-left:4px}.cron-configuration .time-dots{margin:0 4px}.cron-configuration .gmt-offsets{margin-left:16px}.cron-configuration__advanced{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.cron-configuration__advanced dr-input::ng-deep input{cursor:text}.cron-configuration__advanced-error{color:#bf1d30}.cron-configuration--multi-row{width:auto}.cron-configuration--multi-row .cron-configuration__row{display:flex;align-items:center;gap:8px}.cron-configuration--multi-row .cron-configuration__row--time{margin-top:8px}.cron-configuration--multi-row .time-prefix{margin-left:0}\n"] }]
522
599
  }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { id: [{
523
600
  type: Input
524
601
  }], hostId: [{
@@ -544,5 +621,10 @@ export class DrCronFieldComponent {
544
621
  }], multiRowMode: [{
545
622
  type: Input,
546
623
  args: [{ transform: booleanAttribute }]
624
+ }], allowAdvanced: [{
625
+ type: Input,
626
+ args: [{ transform: booleanAttribute }]
627
+ }], validateCron: [{
628
+ type: Input
547
629
  }] }); })();
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItY3Jvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jcm9uLWZpZWxkL2RyLWNyb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY3Jvbi1maWVsZC9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxjQUFjLEVBQ2QsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixtQkFBbUIsR0FFdEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNILGVBQWUsRUFDZixVQUFVLEVBQ1YsK0JBQStCLEVBQy9CLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBRXhCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDM0J0RixtQ0FXc0I7SUFMbEIsd0tBQVMsa0NB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b0hBQUUsZUFBZSx5QkFBRSxtQkFBbUI7O3VGQUtqRyxvQkFBb0I7Y0FmaEMsU0FBUzsyQkFDSSxlQUFlLGNBQ2IsSUFBSSxhQUNMO29CQUNQO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLHFCQUFxQixFQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDZDtpQkFDSixXQUNRLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxtQkFDMUYsdUJBQXVCLENBQUMsTUFBTTtvRUFLdEMsRUFBRTtrQkFBVixLQUFLO1lBQ2tCLE1BQU07a0JBQTdCLFdBQVc7bUJBQUMsU0FBUztZQUlmLFFBQVE7a0JBRmQsS0FBSzs7a0JBQ0wsV0FBVzttQkFBQyxnQkFBZ0I7WUFHcEIsY0FBYztrQkFBdEIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ2tDLGtCQUFrQjtrQkFBekQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUNFLFFBQVE7a0JBQS9DLEtBQUs7bUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFDRSxZQUFZO2tCQUFuRCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBEcklucHV0c01vZHVsZSxcbiAgICBHTVRfT0ZGU0VUUyxcbiAgICBMT0NBTF9USU1FX1pPTkVfT0ZGU0VULFxuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgVGltZXBpY2tlck1vZGVsLFxufSBmcm9tICcuLi9kci1pbnB1dHMnO1xuaW1wb3J0IHtcbiAgICBBTExPV0VEX1BFUklPRFMsXG4gICAgQ3JvbkVkaXRvcixcbiAgICBDcm9uRWRpdG9yRGVmYXVsdENvbmZpZ0J5UGVyaW9kLFxuICAgIENyb25FZGl0b3JQZXJpb2QsXG4gICAgQ3JvblRpbWVQZXJpb2QsXG4gICAgREFZX09GX01PTlRIX0FSUkFZLFxuICAgIERBWV9PRl9XRUVLX0FSUkFZLFxuICAgIGdldENyb25UeXBlQXNQZXJpb2RMYWJlbCxcbiAgICBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVksXG4gICAgSUNyb25FZGl0b3IsXG4gICAgTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWSxcbiAgICBNT05USF9PRl9ZRUFSX0FSUkFZLFxufSBmcm9tICcuL2RyLWNyb24tZmllbGQuZWRpdG9yJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Bvc2l0aW9uJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRHJUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vZHItdG9vbHRpcC9kci10b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBEclBvcG92ZXJNb2R1bGUgfSBmcm9tICcuLi9kci1wb3BvdmVyL2RyLXBvcG92ZXIubW9kdWxlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItY3Jvbi1maWVsZCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEckNyb25GaWVsZENvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEclRvb2x0aXBNb2R1bGUsIERySW5wdXRzTW9kdWxlLCBEclBvcG92ZXJNb2R1bGUsIFRpbWVQaWNrZXJDb21wb25lbnRdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERyQ3JvbkZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaG9zdElkID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kaXNhYmxlZCcpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBhbGxvd2VkUGVyaW9kczogQ3JvbkVkaXRvclBlcmlvZFtdID0gQUxMT1dFRF9QRVJJT0RTO1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJTdGFydDogbnVtYmVyID0gMTtcbiAgICBASW5wdXQoKSBwb3BvdmVyUG9zaXRpb246IFBvc2l0aW9uID0gJ2JvdHRvbS1sZWZ0JztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGlkZVBlcmlvZFNlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZsYXRNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG11bHRpUm93TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IERBWV9PRl9NT05USF9BUlJBWSA9IERBWV9PRl9NT05USF9BUlJBWTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWSA9IE1PTlRIX09GX1FVQVJURVJfQVJSQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IE1PTlRIX09GX1lFQVJfQVJSQVkgPSBNT05USF9PRl9ZRUFSX0FSUkFZO1xuICAgIHB1YmxpYyByZWFkb25seSBEQVlfT0ZfV0VFS19BUlJBWSA9IERBWV9PRl9XRUVLX0FSUkFZO1xuICAgIHB1YmxpYyByZWFkb25seSBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVkgPSBIT1VSU19ESVZJU0lCTEVfSU5UT19EQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IENST05fVElNRV9QRVJJT0RfQVJSQVkgPSBbQ3JvblRpbWVQZXJpb2QuQU0sIENyb25UaW1lUGVyaW9kLlBNXTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTE9DQUxfVElNRV9aT05FX09GRlNFVCA9IExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQ7XG4gICAgcHVibGljIHJlYWRvbmx5IEdNVF9PRkZTRVRTID0gR01UX09GRlNFVFM7XG4gICAgcHVibGljIHJlYWRvbmx5IGNyb25FZGl0b3JQZXJpb2QgPSBDcm9uRWRpdG9yUGVyaW9kO1xuXG4gICAgcHVibGljIGNyb25FZGl0b3JQZXJpb2RBcnJheTogeyB2YWx1ZTogQ3JvbkVkaXRvclBlcmlvZDsgbGFiZWw6IHN0cmluZyB9W107XG4gICAgcHVibGljIHZpc2libGVTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgdmFsdWVPYmplY3Q6IENyb25FZGl0b3I7XG4gICAgcHVibGljIGNyb25Nb2RlbDogSUNyb25FZGl0b3I7XG5cbiAgICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVTdHJpbmcgPSAnJztcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVPYmplY3QudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy52aXNpYmxlU3RyaW5nID0gdGhpcy52YWx1ZU9iamVjdC5nZXRSZWFkYWJsZVN0cmluZygpO1xuICAgICAgICBpZiAodGhpcy5mbGF0TW9kZSAmJiAhdGhpcy5jcm9uTW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGhpcy52YWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBnZXQgdmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPYmplY3QudmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWVPYmplY3QgPSBuZXcgQ3JvbkVkaXRvcihudWxsLCB0aGlzLmZpc2NhbFllYXJTdGFydCk7XG4gICAgICAgIHRoaXMudmFsdWVPYmplY3QuZXZlcnkgPSB0aGlzLmFsbG93ZWRQZXJpb2RzW3RoaXMuYWxsb3dlZFBlcmlvZHMubGVuZ3RoIC0gMV0gPz8gQ3JvbkVkaXRvclBlcmlvZC5ZRUFSO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgICAgIHRoaXMuY3JvbkVkaXRvclBlcmlvZEFycmF5ID0gdGhpcy5hbGxvd2VkUGVyaW9kcy5tYXAoKHBlcmlvZCkgPT4gKHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogcGVyaW9kLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBjYXBpdGFsaXplKGdldENyb25UeXBlQXNQZXJpb2RMYWJlbChwZXJpb2QpKSxcbiAgICAgICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5mbGF0TW9kZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jcm9uTW9kZWwgPSB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlU3RyaW5nID0gdGhpcy52YWx1ZU9iamVjdC5nZXRSZWFkYWJsZVN0cmluZygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKCkge1xuICAgICAgICB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0ID0gdGhpcy5jcm9uTW9kZWw7XG4gICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMudmFsdWVPYmplY3QuZ2V0UmVhZGFibGVTdHJpbmcoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZU9iamVjdC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5Qb3BvdmVyKCkge1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXZlcnlDaGFuZ2UoJGV2ZW50OiBDcm9uRWRpdG9yUGVyaW9kKSB7XG4gICAgICAgIGNvbnN0IHRlbXBWYWx1ZU9iamVjdCA9IG5ldyBDcm9uRWRpdG9yKFxuICAgICAgICAgICAgQ3JvbkVkaXRvckRlZmF1bHRDb25maWdCeVBlcmlvZFskZXZlbnRdKHRoaXMuZmlzY2FsWWVhclN0YXJ0KSxcbiAgICAgICAgICAgIHRoaXMuZmlzY2FsWWVhclN0YXJ0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRlbXBWYWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRpbWVQaWNrZXJDaGFuZ2UodGltZTogVGltZXBpY2tlck1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLmhvdXIgPSB0aW1lLmhvdXI7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLm1pbnV0ZSA9IHRpbWUubWludXRlO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbC50aW1lUGVyaW9kID0gdGltZS50aW1lUGVyaW9kIGFzIENyb25UaW1lUGVyaW9kO1xuICAgICAgICB0aGlzLmNyb25Nb2RlbC50aW1lWm9uZSA9IHRpbWUudGltZVpvbmU7XG4gICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLmZsYXRNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRyLWlucHV0XG4gICAgW2lkXT1cImlkXCJcbiAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfaW5wdXQtbWFpblwiXG4gICAgYXJpYS1sYWJlbD1cIlNjaGVkdWxlXCJcbiAgICAqbmdJZj1cIiFmbGF0TW9kZTsgZWxzZSBjcm9uQ29uZmlndXJhdGlvblwiXG4gICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QuLi5cIlxuICAgIChjbGljayk9XCIhZGlzYWJsZWQgPyBvcGVuUG9wb3ZlcigpIDogbnVsbFwiXG4gICAgWyhuZ01vZGVsKV09XCJ2aXNpYmxlU3RyaW5nXCJcbiAgICBbZHJQb3BvdmVyXT1cIiFkaXNhYmxlZCA/IHJlY3VycmVuY2VQb3BvdmVyIDogbnVsbFwiXG4gICAgW2RyUG9wb3ZlclBvc2l0aW9uXT1cInBvcG92ZXJQb3NpdGlvblwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbcmVhZG9ubHldPVwidHJ1ZVwiPlxuICAgIDxpIGNsYXNzPVwiZHItaWNvbi1kYXRlXCIgcHJlZml4SWNvbj48L2k+XG4gICAgPGkgY2xhc3M9XCJkci1pY29uLWFycm93LWRvd25cIiBzdWZmaXhJY29uPjwvaT5cbjwvZHItaW5wdXQ+XG5cbjxuZy10ZW1wbGF0ZSAjcmVjdXJyZW5jZVBvcG92ZXIgbGV0LWNsb3NlUG9wb3Zlcj1cImNsb3NlUG9wb3ZlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyZWN1cnJlbmNlLXBvcHVwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWN1cnJlbmNlLXBvcHVwX19ib2R5XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNyb25Db25maWd1cmF0aW9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdXJyZW5jZS1wb3B1cF9fZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZHItYnV0dG9uIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9idXR0b24tY2FuY2VsXCIgdGhlbWU9XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwiY2xvc2VQb3BvdmVyKClcIj5DYW5jZWw8L2RyLWJ1dHRvbj5cbiAgICAgICAgICAgIDxkci1idXR0b24gZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2J1dHRvbi1zYXZlXCIgKGNsaWNrKT1cInVwZGF0ZSgpOyBjbG9zZVBvcG92ZXIoKVwiPlNhdmU8L2RyLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Nyb25Db25maWd1cmF0aW9uPlxuICAgIDxuZy10ZW1wbGF0ZSAjcXVhcnRlckNvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5IHF1YXJ0ZXIgb248L3NwYW4+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtcXVhcnRlci1tb250aFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiUXVhcnRlciBtb250aFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5tb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJNT05USF9PRl9RVUFSVEVSX0FSUkFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9udGgtb2YtcXVhcnRlclwiPjwvZHItc2VsZWN0PlxuICAgICAgICA8c3Bhbj5tb250aCBvZiB0aGUgcXVhcnRlcjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNob3VyQ29uZmlnPlxuICAgICAgICA8c3Bhbj5SZXBlYXQgZXZlcnk8L3NwYW4+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtZXZlcnkteC1ob3Vyc1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiSG91ciBpbnRlcnZhbFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5ldmVyeVhIb3Vyc1wiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJIT1VSU19ESVZJU0lCTEVfSU5UT19EQVlcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXktb2YtbW9udGhcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgICAgIDxzcGFuPmhvdXIocyk8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjd2Vla0NvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LWRheS1vZi13ZWVrXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEYXkgb2Ygd2Vla1wiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5kYXlPZldlZWtcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiREFZX09GX1dFRUtfQVJSQVlcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXktb2Ytd2Vla1wiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICNkYXlPZk1vbnRoU2VsZWN0b3I+XG4gICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtZGF5LW9mLW1vbnRoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJEYXkgb2YgbW9udGhcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZGF5T2ZNb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJEQVlfT0ZfTU9OVEhfQVJSQVlcIlxuICAgICAgICAgICAgW3NlYXJjaGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImRheS1vZi1tb250aFwiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICN5ZWFyTW9udGhTZWxlY3Rvcj5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LW1vbnRoXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb250aFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5tb250aFwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgIFtpdGVtc109XCJNT05USF9PRl9ZRUFSX0FSUkFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibW9udGgtb2YteWVhclwiPlxuICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvblwiIFtjbGFzcy5jcm9uLWNvbmZpZ3VyYXRpb24tLW11bHRpLXJvd109XCJtdWx0aVJvd01vZGVcIj5cbiAgICAgICAgPGRyLXJhZGlvLWdyb3VwXG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfcmFkaW8tZ3JvdXAtcGVyaW9kXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVQZXJpb2RTZWxlY3RvclwiXG4gICAgICAgICAgICBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fZXZlcnlcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZXZlcnlcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25FdmVyeUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIG5hbWU9XCJldmVyeVwiPlxuICAgICAgICAgICAgPGRyLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY3JvbkVkaXRvclBlcmlvZEFycmF5XCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWFuYWx5dGljc109XCInZHItY3Jvbi1maWVsZF9yYWRpby1idXR0b24tJyArIG9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9kci1yYWRpby1idXR0b24+XG4gICAgICAgIDwvZHItcmFkaW8tZ3JvdXA+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpUm93TW9kZTsgZWxzZSBzaW5nbGVSb3dNb2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicXVhcnRlckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLkRBWVwiPlJlcGVhdCBldmVyeSBkYXk8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG91ckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuV0VFS1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndlZWtDb25maWdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLllFQVJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ5ZWFyTW9udGhTZWxlY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRheU9mTW9udGhTZWxlY3RvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5NT05USFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5SZXBlYXQgb248L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPmRheSBvZiBldmVyeSBtb250aDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93XCIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPm9uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4+ZGF5IG9mIHRoZSBtb250aDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93IGNyb24tY29uZmlndXJhdGlvbl9fcm93LS10aW1lXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXByZWZpeFwiPmF0PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkci10aW1lLXBpY2tlciBbbmdNb2RlbF09XCJjcm9uTW9kZWxcIiAobmdNb2RlbENoYW5nZSk9XCJvblRpbWVQaWNrZXJDaGFuZ2UoJGV2ZW50KVwiPiA8L2RyLXRpbWUtcGlja2VyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlUm93TW9kZT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJxdWFydGVyQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX3NlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5EQVlcIj4gUmVwZWF0IGV2ZXJ5IGRheSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaG91ckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuV0VFS1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndlZWtDb25maWdcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyb25Nb2RlbC5ldmVyeSAhPT0gY3JvbkVkaXRvclBlcmlvZC5XRUVLICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBjcm9uTW9kZWwuZXZlcnkgIT09IGNyb25FZGl0b3JQZXJpb2QuSE9VUiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY3Jvbk1vZGVsLmV2ZXJ5ICE9PSBjcm9uRWRpdG9yUGVyaW9kLkRBWVxuICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuTU9OVEhcIj5SZXBlYXQgb24gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCI+b24gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5ZRUFSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInllYXJNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXlPZk1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5NT05USFwiPmRheSBvZiBldmVyeSBtb250aCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIj5kYXkgb2YgdGhlIG1vbnRoIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcHJlZml4XCI+YXQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRyLWlucHV0XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9pbnB1dC1ob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhvdXJcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5ob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFttYXNrXT1cIicwMCdcIlxuICAgICAgICAgICAgICAgICAgICBbbWluXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjEyXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaG91cnMtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICA8L2RyLWlucHV0PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1kb3RzXCI+Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2lucHV0LW1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNaW51dGVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5taW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW21hc2tdPVwiJzAwJ1wiXG4gICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhdPVwiNTlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaW51dGVzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgPC9kci1pbnB1dD5cbiAgICAgICAgICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtdGltZS1wZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiVGltZSBwZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC50aW1lUGVyaW9kXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJDUk9OX1RJTUVfUEVSSU9EX0FSUkFZXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1lLXBlcmlvZC1zZWxlY3RvclwiPjwvZHItc2VsZWN0PlxuICAgICAgICAgICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC10aW1lem9uZVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaW1lIHpvbmVcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC50aW1lWm9uZVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiR01UX09GRlNFVFNcIlxuICAgICAgICAgICAgICAgICAgICBbdGV4dFZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdtdC1vZmZzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQgIT09IGNyb25Nb2RlbC50aW1lWm9uZSA/IGl0ZW0ubGFiZWwgOiAnTG9jYWwgVGltZScgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2RyLXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
630
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItY3Jvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1jcm9uLWZpZWxkL2RyLWNyb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItY3Jvbi1maWVsZC9kci1jcm9uLWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDSCxjQUFjLEVBQ2QsV0FBVyxFQUNYLHNCQUFzQixFQUN0QixtQkFBbUIsR0FFdEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNILGVBQWUsRUFDZixVQUFVLEVBQ1YsK0JBQStCLEVBQy9CLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsd0JBQXdCLEVBRXhCLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDdEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDM0J0RixtQ0FXc0I7SUFMbEIsd0tBQVMsa0NB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VzttQkFBQyxTQUFTO1lBSWYsUUFBUTtrQkFGZCxLQUFLOztrQkFDTCxXQUFXO21CQUFDLGdCQUFnQjtZQUdwQixjQUFjO2tCQUF0QixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDa0Msa0JBQWtCO2tCQUF6RCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBQ0UsUUFBUTtrQkFBL0MsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUNFLFlBQVk7a0JBQW5ELEtBQUs7bUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFDRSxhQUFhO2tCQUFwRCxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBQzdCLFlBQVk7a0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIERySW5wdXRzTW9kdWxlLFxuICAgIEdNVF9PRkZTRVRTLFxuICAgIExPQ0FMX1RJTUVfWk9ORV9PRkZTRVQsXG4gICAgVGltZVBpY2tlckNvbXBvbmVudCxcbiAgICBUaW1lcGlja2VyTW9kZWwsXG59IGZyb20gJy4uL2RyLWlucHV0cyc7XG5pbXBvcnQge1xuICAgIEFMTE9XRURfUEVSSU9EUyxcbiAgICBDcm9uRWRpdG9yLFxuICAgIENyb25FZGl0b3JEZWZhdWx0Q29uZmlnQnlQZXJpb2QsXG4gICAgQ3JvbkVkaXRvclBlcmlvZCxcbiAgICBDcm9uVGltZVBlcmlvZCxcbiAgICBEQVlfT0ZfTU9OVEhfQVJSQVksXG4gICAgREFZX09GX1dFRUtfQVJSQVksXG4gICAgZ2V0Q3JvblR5cGVBc1BlcmlvZExhYmVsLFxuICAgIEhPVVJTX0RJVklTSUJMRV9JTlRPX0RBWSxcbiAgICBJQ3JvbkVkaXRvcixcbiAgICBNT05USF9PRl9RVUFSVEVSX0FSUkFZLFxuICAgIE1PTlRIX09GX1lFQVJfQVJSQVksXG59IGZyb20gJy4vZHItY3Jvbi1maWVsZC5lZGl0b3InO1xuaW1wb3J0IHsgUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvcG9zaXRpb24nO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEclRvb2x0aXBNb2R1bGUgfSBmcm9tICcuLi9kci10b29sdGlwL2RyLXRvb2x0aXAubW9kdWxlJztcbmltcG9ydCB7IERyUG9wb3Zlck1vZHVsZSB9IGZyb20gJy4uL2RyLXBvcG92ZXIvZHItcG9wb3Zlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1jcm9uLWZpZWxkJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyQ3JvbkZpZWxkQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIERyVG9vbHRpcE1vZHVsZSwgRHJJbnB1dHNNb2R1bGUsIERyUG9wb3Zlck1vZHVsZSwgVGltZVBpY2tlckNvbXBvbmVudF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWNyb24tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLWNyb24tZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRHJDcm9uRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBASW5wdXQoKSBpZD86IHN0cmluZztcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKSBob3N0SWQgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkJylcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGFsbG93ZWRQZXJpb2RzOiBDcm9uRWRpdG9yUGVyaW9kW10gPSBBTExPV0VEX1BFUklPRFM7XG4gICAgQElucHV0KCkgZmlzY2FsWWVhclN0YXJ0OiBudW1iZXIgPSAxO1xuICAgIEBJbnB1dCgpIHBvcG92ZXJQb3NpdGlvbjogUG9zaXRpb24gPSAnYm90dG9tLWxlZnQnO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoaWRlUGVyaW9kU2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZmxhdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgbXVsdGlSb3dNb2RlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGFsbG93QWR2YW5jZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB2YWxpZGF0ZUNyb24/OiAoY3Jvbjogc3RyaW5nKSA9PiB7IHZhbGlkOiBib29sZWFuOyBlcnJvcl9tZXNzYWdlPzogc3RyaW5nIH07XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgREFZX09GX01PTlRIX0FSUkFZID0gREFZX09GX01PTlRIX0FSUkFZO1xuICAgIHB1YmxpYyByZWFkb25seSBNT05USF9PRl9RVUFSVEVSX0FSUkFZID0gTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgTU9OVEhfT0ZfWUVBUl9BUlJBWSA9IE1PTlRIX09GX1lFQVJfQVJSQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IERBWV9PRl9XRUVLX0FSUkFZID0gREFZX09GX1dFRUtfQVJSQVk7XG4gICAgcHVibGljIHJlYWRvbmx5IEhPVVJTX0RJVklTSUJMRV9JTlRPX0RBWSA9IEhPVVJTX0RJVklTSUJMRV9JTlRPX0RBWTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgQ1JPTl9USU1FX1BFUklPRF9BUlJBWSA9IFtDcm9uVGltZVBlcmlvZC5BTSwgQ3JvblRpbWVQZXJpb2QuUE1dO1xuICAgIHB1YmxpYyByZWFkb25seSBMT0NBTF9USU1FX1pPTkVfT0ZGU0VUID0gTE9DQUxfVElNRV9aT05FX09GRlNFVDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgR01UX09GRlNFVFMgPSBHTVRfT0ZGU0VUUztcbiAgICBwdWJsaWMgcmVhZG9ubHkgY3JvbkVkaXRvclBlcmlvZCA9IENyb25FZGl0b3JQZXJpb2Q7XG5cbiAgICBwdWJsaWMgY3JvbkVkaXRvclBlcmlvZEFycmF5OiB7IHZhbHVlOiBDcm9uRWRpdG9yUGVyaW9kIHwgJ2FkdmFuY2VkJzsgbGFiZWw6IHN0cmluZyB9W107XG4gICAgcHVibGljIHZpc2libGVTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgdmFsdWVPYmplY3Q6IENyb25FZGl0b3I7XG4gICAgcHVibGljIGNyb25Nb2RlbDogSUNyb25FZGl0b3I7XG4gICAgcHVibGljIGlzQWR2YW5jZWRNb2RlID0gZmFsc2U7XG4gICAgcHVibGljIGFkdmFuY2VkQ3JvbiA9ICcnO1xuICAgIHB1YmxpYyBhZHZhbmNlZEVycm9yOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZU9iamVjdC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGVTdHJpbmcgPSB0aGlzLnZhbHVlT2JqZWN0LmdldFJlYWRhYmxlU3RyaW5nKCk7XG4gICAgICAgIGlmICh0aGlzLmZsYXRNb2RlICYmICF0aGlzLmNyb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5jcm9uTW9kZWwgPSB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZU9iamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuICAgIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZU9iamVjdCA9IG5ldyBDcm9uRWRpdG9yKG51bGwsIHRoaXMuZmlzY2FsWWVhclN0YXJ0KTtcbiAgICAgICAgdGhpcy52YWx1ZU9iamVjdC5ldmVyeSA9IHRoaXMuYWxsb3dlZFBlcmlvZHNbdGhpcy5hbGxvd2VkUGVyaW9kcy5sZW5ndGggLSAxXSA/PyBDcm9uRWRpdG9yUGVyaW9kLllFQVI7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGhpcy52YWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgdGhpcy5jcm9uRWRpdG9yUGVyaW9kQXJyYXkgPSB0aGlzLmFsbG93ZWRQZXJpb2RzLm1hcCgocGVyaW9kKSA9PiAoe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBwZXJpb2QsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGNhcGl0YWxpemUoZ2V0Q3JvblR5cGVBc1BlcmlvZExhYmVsKHBlcmlvZCkpLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICBpZiAodGhpcy5hbGxvd0FkdmFuY2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNyb25FZGl0b3JQZXJpb2RBcnJheS5wdXNoKHsgdmFsdWU6ICdhZHZhbmNlZCcsIGxhYmVsOiAnQWR2YW5jZWQnIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuZmxhdE1vZGUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGhpcy52YWx1ZU9iamVjdC52YWx1ZU9iamVjdDtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMudmFsdWVPYmplY3QuZ2V0UmVhZGFibGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNBZHZhbmNlZE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVBZHZhbmNlZENyb24oKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5hZHZhbmNlZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlU3RyaW5nID0gdGhpcy5hZHZhbmNlZENyb247XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmFkdmFuY2VkQ3Jvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0ID0gdGhpcy5jcm9uTW9kZWw7XG4gICAgICAgIHRoaXMudmlzaWJsZVN0cmluZyA9IHRoaXMudmFsdWVPYmplY3QuZ2V0UmVhZGFibGVTdHJpbmcoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZU9iamVjdC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5Qb3BvdmVyKCkge1xuICAgICAgICB0aGlzLmNyb25Nb2RlbCA9IHRoaXMudmFsdWVPYmplY3QudmFsdWVPYmplY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXZlcnlDaGFuZ2UoJGV2ZW50OiBDcm9uRWRpdG9yUGVyaW9kIHwgJ2FkdmFuY2VkJykge1xuICAgICAgICBpZiAoJGV2ZW50ID09PSAnYWR2YW5jZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmlzQWR2YW5jZWRNb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZWRDcm9uID0gJyc7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VkRXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNBZHZhbmNlZE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hZHZhbmNlZEVycm9yID0gbnVsbDtcbiAgICAgICAgY29uc3QgdGVtcFZhbHVlT2JqZWN0ID0gbmV3IENyb25FZGl0b3IoXG4gICAgICAgICAgICBDcm9uRWRpdG9yRGVmYXVsdENvbmZpZ0J5UGVyaW9kWyRldmVudF0odGhpcy5maXNjYWxZZWFyU3RhcnQpLFxuICAgICAgICAgICAgdGhpcy5maXNjYWxZZWFyU3RhcnQsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsID0gdGVtcFZhbHVlT2JqZWN0LnZhbHVlT2JqZWN0O1xuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVGltZVBpY2tlckNoYW5nZSh0aW1lOiBUaW1lcGlja2VyTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcm9uTW9kZWwuaG91ciA9IHRpbWUuaG91cjtcbiAgICAgICAgdGhpcy5jcm9uTW9kZWwubWludXRlID0gdGltZS5taW51dGU7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLnRpbWVQZXJpb2QgPSB0aW1lLnRpbWVQZXJpb2QgYXMgQ3JvblRpbWVQZXJpb2Q7XG4gICAgICAgIHRoaXMuY3Jvbk1vZGVsLnRpbWVab25lID0gdGltZS50aW1lWm9uZTtcbiAgICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdGlvbkNoYW5nZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZmxhdE1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BZHZhbmNlZENoYW5nZSgpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZUFkdmFuY2VkQ3JvbigpO1xuICAgICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUFkdmFuY2VkQ3JvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ3Jvbikge1xuICAgICAgICAgICAgdGhpcy5hZHZhbmNlZEVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSB0aGlzLnZhbGlkYXRlQ3Jvbih0aGlzLmFkdmFuY2VkQ3Jvbik7XG4gICAgICAgIHRoaXMuYWR2YW5jZWRFcnJvciA9IHZhbGlkYXRpb24udmFsaWQgPyBudWxsIDogdmFsaWRhdGlvbi5lcnJvcl9tZXNzYWdlO1xuICAgIH1cbn1cbiIsIjxkci1pbnB1dFxuICAgIFtpZF09XCJpZFwiXG4gICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX2lucHV0LW1haW5cIlxuICAgIGFyaWEtbGFiZWw9XCJTY2hlZHVsZVwiXG4gICAgKm5nSWY9XCIhZmxhdE1vZGU7IGVsc2UgY3JvbkNvbmZpZ3VyYXRpb25cIlxuICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0Li4uXCJcbiAgICAoY2xpY2spPVwiIWRpc2FibGVkID8gb3BlblBvcG92ZXIoKSA6IG51bGxcIlxuICAgIFsobmdNb2RlbCldPVwidmlzaWJsZVN0cmluZ1wiXG4gICAgW2RyUG9wb3Zlcl09XCIhZGlzYWJsZWQgPyByZWN1cnJlbmNlUG9wb3ZlciA6IG51bGxcIlxuICAgIFtkclBvcG92ZXJQb3NpdGlvbl09XCJwb3BvdmVyUG9zaXRpb25cIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3JlYWRvbmx5XT1cInRydWVcIj5cbiAgICA8aSBjbGFzcz1cImRyLWljb24tZGF0ZVwiIHByZWZpeEljb24+PC9pPlxuICAgIDxpIGNsYXNzPVwiZHItaWNvbi1hcnJvdy1kb3duXCIgc3VmZml4SWNvbj48L2k+XG48L2RyLWlucHV0PlxuXG48bmctdGVtcGxhdGUgI3JlY3VycmVuY2VQb3BvdmVyIGxldC1jbG9zZVBvcG92ZXI9XCJjbG9zZVBvcG92ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVjdXJyZW5jZS1wb3B1cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicmVjdXJyZW5jZS1wb3B1cF9fYm9keVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjcm9uQ29uZmlndXJhdGlvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlY3VycmVuY2UtcG9wdXBfX2Zvb3RlclwiPlxuICAgICAgICAgICAgPGRyLWJ1dHRvbiBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfYnV0dG9uLWNhbmNlbFwiIHRoZW1lPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlUG9wb3ZlcigpXCI+Q2FuY2VsPC9kci1idXR0b24+XG4gICAgICAgICAgICA8ZHItYnV0dG9uIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9idXR0b24tc2F2ZVwiIChjbGljayk9XCJ1cGRhdGUoKTsgY2xvc2VQb3BvdmVyKClcIj5TYXZlPC9kci1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjcm9uQ29uZmlndXJhdGlvbj5cbiAgICA8bmctdGVtcGxhdGUgI3F1YXJ0ZXJDb25maWc+XG4gICAgICAgIDxzcGFuPlJlcGVhdCBldmVyeSBxdWFydGVyIG9uPC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LXF1YXJ0ZXItbW9udGhcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlF1YXJ0ZXIgbW9udGhcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwubW9udGhcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiTU9OVEhfT0ZfUVVBUlRFUl9BUlJBWVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vbnRoLW9mLXF1YXJ0ZXJcIj48L2RyLXNlbGVjdD5cbiAgICAgICAgPHNwYW4+bW9udGggb2YgdGhlIHF1YXJ0ZXI8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjaG91ckNvbmZpZz5cbiAgICAgICAgPHNwYW4+UmVwZWF0IGV2ZXJ5PC9zcGFuPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LWV2ZXJ5LXgtaG91cnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkhvdXIgaW50ZXJ2YWxcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZXZlcnlYSG91cnNcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiSE9VUlNfRElWSVNJQkxFX0lOVE9fREFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF5LW9mLW1vbnRoXCI+XG4gICAgICAgIDwvZHItc2VsZWN0PlxuICAgICAgICA8c3Bhbj5ob3VyKHMpPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI3dlZWtDb25maWc+XG4gICAgICAgIDxzcGFuPlJlcGVhdCBldmVyeTwvc3Bhbj5cbiAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC1kYXktb2Ytd2Vla1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGF5IG9mIHdlZWtcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwuZGF5T2ZXZWVrXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cIkRBWV9PRl9XRUVLX0FSUkFZXCJcbiAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF5LW9mLXdlZWtcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZGF5T2ZNb250aFNlbGVjdG9yPlxuICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfc2VsZWN0LWRheS1vZi1tb250aFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiRGF5IG9mIG1vbnRoXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3Jvbk1vZGVsLmRheU9mTW9udGhcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiREFZX09GX01PTlRIX0FSUkFZXCJcbiAgICAgICAgICAgIFtzZWFyY2hhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJkYXktb2YtbW9udGhcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjeWVhck1vbnRoU2VsZWN0b3I+XG4gICAgICAgIDxzcGFuPlJlcGVhdCBldmVyeTwvc3Bhbj5cbiAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3NlbGVjdC1tb250aFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiTW9udGhcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjcm9uTW9kZWwubW9udGhcIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICBbaXRlbXNdPVwiTU9OVEhfT0ZfWUVBUl9BUlJBWVwiXG4gICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vbnRoLW9mLXllYXJcIj5cbiAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25cIiBbY2xhc3MuY3Jvbi1jb25maWd1cmF0aW9uLS1tdWx0aS1yb3ddPVwibXVsdGlSb3dNb2RlXCI+XG4gICAgICAgIDxkci1yYWRpby1ncm91cFxuICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3JhZGlvLWdyb3VwLXBlcmlvZFwiXG4gICAgICAgICAgICAqbmdJZj1cIiFoaWRlUGVyaW9kU2VsZWN0b3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX2V2ZXJ5XCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cImlzQWR2YW5jZWRNb2RlID8gJ2FkdmFuY2VkJyA6IGNyb25Nb2RlbC5ldmVyeVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkV2ZXJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgbmFtZT1cImV2ZXJ5XCI+XG4gICAgICAgICAgICA8ZHItcmFkaW8tYnV0dG9uXG4gICAgICAgICAgICAgICAgZGF0YS1hbmFseXRpY3M9XCJkci1jcm9uLWZpZWxkX3JhZGlvLWJ1dHRvbi0wXCJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGNyb25FZGl0b3JQZXJpb2RBcnJheVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hbmFseXRpY3NdPVwiJ2RyLWNyb24tZmllbGRfcmFkaW8tYnV0dG9uLScgKyBvcHRpb24udmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZHItcmFkaW8tYnV0dG9uPlxuICAgICAgICA8L2RyLXJhZGlvLWdyb3VwPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNBZHZhbmNlZE1vZGVcIiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fYWR2YW5jZWRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX2FkdmFuY2VkLW5vdGVcIj5cbiAgICAgICAgICAgICAgICBVc2UgY3JvbnRhYiB0byBzZXQgY3VzdG9tIHRpbWUgaW50ZXJ2YWxzIGZvciBzeW5jIGZyZXF1ZW5jeSwgc3VjaCBhcyBldmVyeSB0d28gd2Vla3MgYXQgMTA6MDUuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX2FkdmFuY2VkLWxhYmVsXCI+RW50ZXIgeW91ciBjcm9uIGV4cHJlc3Npb246PC9kaXY+XG4gICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfaW5wdXQtYWR2YW5jZWRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYWR2YW5jZWRDcm9uXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkFkdmFuY2VkQ2hhbmdlKClcIj5cbiAgICAgICAgICAgIDwvZHItaW5wdXQ+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWR2YW5jZWRFcnJvclwiIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19hZHZhbmNlZC1lcnJvclwiPnt7IGFkdmFuY2VkRXJyb3IgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0FkdmFuY2VkTW9kZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpUm93TW9kZTsgZWxzZSBzaW5nbGVSb3dNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fc2VjdGlvbiBjcm9uLWNvbmZpZ3VyYXRpb25fX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInF1YXJ0ZXJDb25maWdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuREFZXCI+UmVwZWF0IGV2ZXJ5IGRheTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuSE9VUlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJob3VyQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLldFRUtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwid2Vla0NvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLllFQVJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwieWVhck1vbnRoU2VsZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuTU9OVEhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlJlcGVhdCBvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5kYXkgb2YgZXZlcnkgbW9udGg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNyb24tY29uZmlndXJhdGlvbl9fc2VjdGlvbiBjcm9uLWNvbmZpZ3VyYXRpb25fX3Jvd1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+b248L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPmRheSBvZiB0aGUgbW9udGg8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uIGNyb24tY29uZmlndXJhdGlvbl9fcm93IGNyb24tY29uZmlndXJhdGlvbl9fcm93LS10aW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1wcmVmaXhcIj5hdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRyLXRpbWUtcGlja2VyIFtuZ01vZGVsXT1cImNyb25Nb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGltZVBpY2tlckNoYW5nZSgkZXZlbnQpXCI+IDwvZHItdGltZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVSb3dNb2RlPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuUVVBUlRFUlwiIGNsYXNzPVwiY3Jvbi1jb25maWd1cmF0aW9uX19zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicXVhcnRlckNvbmZpZ1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcm9uLWNvbmZpZ3VyYXRpb25fX3NlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuREFZXCI+IFJlcGVhdCBldmVyeSBkYXkgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhvdXJDb25maWdcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcm9uTW9kZWwuZXZlcnkgPT09IGNyb25FZGl0b3JQZXJpb2QuV0VFS1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3ZWVrQ29uZmlnXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcm9uTW9kZWwuZXZlcnkgIT09IGNyb25FZGl0b3JQZXJpb2QuV0VFSyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb25Nb2RlbC5ldmVyeSAhPT0gY3JvbkVkaXRvclBlcmlvZC5IT1VSICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvbk1vZGVsLmV2ZXJ5ICE9PSBjcm9uRWRpdG9yUGVyaW9kLkRBWVxuICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5NT05USFwiPlJlcGVhdCBvbiA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNyb25Nb2RlbC5ldmVyeSA9PT0gY3JvbkVkaXRvclBlcmlvZC5RVUFSVEVSXCI+b24gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLllFQVJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInllYXJNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5T2ZNb250aFNlbGVjdG9yXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLk1PTlRIXCI+ZGF5IG9mIGV2ZXJ5IG1vbnRoIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY3Jvbk1vZGVsLmV2ZXJ5ID09PSBjcm9uRWRpdG9yUGVyaW9kLlFVQVJURVJcIj5kYXkgb2YgdGhlIG1vbnRoIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1wcmVmaXhcIj5hdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRyLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWFuYWx5dGljcz1cImRyLWNyb24tZmllbGRfaW5wdXQtaG91clwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiSG91clwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5ob3VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hc2tdPVwiJzAwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaG91cnMtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kci1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLWRvdHNcIj46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZHItaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9pbnB1dC1taW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIk1pbnV0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC5taW51dGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFza109XCInMDAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIjU5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtaW51dGVzLWlucHV0XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZHItaW5wdXQ+XG4gICAgICAgICAgICAgICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtdGltZS1wZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlRpbWUgcGVyaW9kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3Jvbk1vZGVsLnRpbWVQZXJpb2RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiQ1JPTl9USU1FX1BFUklPRF9BUlJBWVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRpbWUtcGVyaW9kLXNlbGVjdG9yXCI+PC9kci1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYW5hbHl0aWNzPVwiZHItY3Jvbi1maWVsZF9zZWxlY3QtdGltZXpvbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlRpbWUgem9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNyb25Nb2RlbC50aW1lWm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJHTVRfT0ZGU0VUU1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGV4dFZpZXddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdtdC1vZmZzZXRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xhYmVsVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgTE9DQUxfVElNRV9aT05FX09GRlNFVCAhPT0gY3Jvbk1vZGVsLnRpbWVab25lID8gaXRlbS5sYWJlbCA6ICdMb2NhbCBUaW1lJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kci1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=