dts-backoffice-util 2.8.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/dts-backoffice-util.umd.js +419 -2359
- package/bundles/dts-backoffice-util.umd.js.map +1 -1
- package/esm2015/dts-backoffice-util.js +2 -6
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +15 -131
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +1 -125
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +19 -172
- package/esm2015/lib/dts-backoffice-util.module.js +2 -8
- package/esm2015/lib/interfaces/filter-range.interface.js +2 -47
- package/esm2015/lib/interfaces/totvs-response.interface.js +2 -16
- package/esm2015/lib/model/session-info.model.js +1 -116
- package/esm2015/lib/pipes/dts-date-format.pipe.js +2 -11
- package/esm2015/lib/services/breadcrumb-control.service.js +9 -44
- package/esm2015/lib/services/cache-params.service.js +10 -24
- package/esm2015/lib/services/menu-datasul.service.js +9 -18
- package/esm2015/lib/services/profile.service.js +17 -78
- package/esm2015/lib/services/report.service.js +20 -81
- package/esm2015/lib/services/session-info.service.js +12 -27
- package/esm2015/lib/services/translate.service.js +2 -15
- package/esm2015/lib/utils/date.util.js +1 -39
- package/esm2015/lib/utils/disclaimer.util.js +33 -317
- package/esm2015/lib/utils/field-validation.util.js +1 -96
- package/esm2015/lib/utils/file.util.js +7 -102
- package/esm2015/lib/utils/filter-range.util.js +1 -20
- package/esm2015/lib/utils/generic-functions.utils.js +12 -137
- package/esm2015/public-api.js +22 -25
- package/fesm2015/dts-backoffice-util.js +176 -1501
- package/fesm2015/dts-backoffice-util.js.map +1 -1
- package/package.json +9 -8
- package/CHANGELOG.md +0 -159
- package/bundles/dts-backoffice-util.umd.min.js +0 -2
- package/bundles/dts-backoffice-util.umd.min.js.map +0 -1
- package/esm5/dts-backoffice-util.js +0 -9
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +0 -448
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +0 -143
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +0 -434
- package/esm5/lib/dts-backoffice-util.module.js +0 -53
- package/esm5/lib/interfaces/filter-range.interface.js +0 -47
- package/esm5/lib/interfaces/totvs-response.interface.js +0 -16
- package/esm5/lib/model/session-info.model.js +0 -239
- package/esm5/lib/pipes/dts-date-format.pipe.js +0 -36
- package/esm5/lib/services/breadcrumb-control.service.js +0 -157
- package/esm5/lib/services/cache-params.service.js +0 -61
- package/esm5/lib/services/menu-datasul.service.js +0 -92
- package/esm5/lib/services/profile.service.js +0 -146
- package/esm5/lib/services/report.service.js +0 -137
- package/esm5/lib/services/session-info.service.js +0 -64
- package/esm5/lib/services/translate.service.js +0 -47
- package/esm5/lib/utils/date.util.js +0 -135
- package/esm5/lib/utils/disclaimer.util.js +0 -930
- package/esm5/lib/utils/field-validation.util.js +0 -358
- package/esm5/lib/utils/file.util.js +0 -262
- package/esm5/lib/utils/filter-range.util.js +0 -69
- package/esm5/lib/utils/generic-functions.utils.js +0 -358
- package/esm5/public-api.js +0 -37
- package/fesm5/dts-backoffice-util.js +0 -3944
- package/fesm5/dts-backoffice-util.js.map +0 -1
|
@@ -1,448 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
|
|
6
|
-
import { PoI18nService, PoNotificationService } from '@po-ui/ng-components';
|
|
7
|
-
import { ScheduleParameters } from './totvs-schedule-execution.model';
|
|
8
|
-
import { NgForm } from '@angular/forms';
|
|
9
|
-
import { TotvsScheduleExecutionService } from './totvs-schedule-execution.service';
|
|
10
|
-
var TotvsScheduleExecutionComponent = /** @class */ (function () {
|
|
11
|
-
function TotvsScheduleExecutionComponent(poI18nService, rpwService, poNotification) {
|
|
12
|
-
this.poI18nService = poI18nService;
|
|
13
|
-
this.rpwService = rpwService;
|
|
14
|
-
this.poNotification = poNotification;
|
|
15
|
-
this.programEMS5 = false;
|
|
16
|
-
this.programVersion = '';
|
|
17
|
-
this.disabledParams = false;
|
|
18
|
-
this.loading = false;
|
|
19
|
-
this.endExecution = new EventEmitter();
|
|
20
|
-
this.jsonObject = {};
|
|
21
|
-
this.literals = {};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* @return {?}
|
|
25
|
-
*/
|
|
26
|
-
TotvsScheduleExecutionComponent.prototype.ngOnInit = /**
|
|
27
|
-
* @return {?}
|
|
28
|
-
*/
|
|
29
|
-
function () {
|
|
30
|
-
/* VERIFICAR COMO FICARÁ A TRADUÇÃO
|
|
31
|
-
forkJoin(
|
|
32
|
-
this.poI18nService.getLiterals(),
|
|
33
|
-
this.poI18nService.getLiterals({ context: 'generalRpw' })
|
|
34
|
-
).subscribe(literals => {
|
|
35
|
-
literals.map(item => Object.assign(this.literals, item) );
|
|
36
|
-
this.setupComponents();
|
|
37
|
-
});*/
|
|
38
|
-
this.setupComponents();
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* @return {?}
|
|
42
|
-
*/
|
|
43
|
-
TotvsScheduleExecutionComponent.prototype.setupComponents = /**
|
|
44
|
-
* @return {?}
|
|
45
|
-
*/
|
|
46
|
-
function () {
|
|
47
|
-
this.executionTypeOptions = [
|
|
48
|
-
{ label: 'Executar Hoje', value: 1 },
|
|
49
|
-
{ label: 'Agendar Execução', value: 2 }
|
|
50
|
-
];
|
|
51
|
-
this.frequencyOptions = [
|
|
52
|
-
{ label: 'Uma vez no dia', value: 'no' },
|
|
53
|
-
{ label: 'Várias vezes no dia', value: 'yes' }
|
|
54
|
-
];
|
|
55
|
-
this.frequencyTypeOptions = [
|
|
56
|
-
{ label: 'Hora(s)', value: 'hour' },
|
|
57
|
-
{ label: 'Minuto(s)', value: 'minute' }
|
|
58
|
-
];
|
|
59
|
-
this.weeklyOptions = [
|
|
60
|
-
{ label: 'Domingo', value: 'Sunday' },
|
|
61
|
-
{ label: 'Segunda', value: 'Monday' },
|
|
62
|
-
{ label: 'Terça', value: 'Tuesday' },
|
|
63
|
-
{ label: 'Quarta', value: 'Wednesday' },
|
|
64
|
-
{ label: 'Quinta', value: 'Thursday' },
|
|
65
|
-
{ label: 'Sexta', value: 'Friday' },
|
|
66
|
-
{ label: 'Sábado', value: 'Saturday' }
|
|
67
|
-
];
|
|
68
|
-
this.zoomRpwServiceColumns = [
|
|
69
|
-
{ property: 'code', label: 'Servidor', type: 'string', width: '20%' },
|
|
70
|
-
{ property: 'name', label: 'Descrição', type: 'string', width: '80%' }
|
|
71
|
-
];
|
|
72
|
-
this.model = new ScheduleParameters();
|
|
73
|
-
this.model.executionType = 1;
|
|
74
|
-
this.model.repeatType = 1;
|
|
75
|
-
this.model.repeatExecution = false;
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* @param {?} schParam
|
|
79
|
-
* @return {?}
|
|
80
|
-
*/
|
|
81
|
-
TotvsScheduleExecutionComponent.prototype.setScheduleParameters = /**
|
|
82
|
-
* @param {?} schParam
|
|
83
|
-
* @return {?}
|
|
84
|
-
*/
|
|
85
|
-
function (schParam) {
|
|
86
|
-
if (!schParam) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
this.model = schParam;
|
|
90
|
-
};
|
|
91
|
-
/**
|
|
92
|
-
* @param {?} value
|
|
93
|
-
* @return {?}
|
|
94
|
-
*/
|
|
95
|
-
TotvsScheduleExecutionComponent.prototype.fieldRpwServiceFormat = /**
|
|
96
|
-
* @param {?} value
|
|
97
|
-
* @return {?}
|
|
98
|
-
*/
|
|
99
|
-
function (value) {
|
|
100
|
-
return value.code + " - " + value.name;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* @return {?}
|
|
104
|
-
*/
|
|
105
|
-
TotvsScheduleExecutionComponent.prototype.isExecutionSchedule = /**
|
|
106
|
-
* @return {?}
|
|
107
|
-
*/
|
|
108
|
-
function () {
|
|
109
|
-
return (this.model.executionType === 2);
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* @return {?}
|
|
113
|
-
*/
|
|
114
|
-
TotvsScheduleExecutionComponent.prototype.isRepeatExecution = /**
|
|
115
|
-
* @return {?}
|
|
116
|
-
*/
|
|
117
|
-
function () {
|
|
118
|
-
return this.model.repeatExecution;
|
|
119
|
-
};
|
|
120
|
-
/**
|
|
121
|
-
* @return {?}
|
|
122
|
-
*/
|
|
123
|
-
TotvsScheduleExecutionComponent.prototype.isFrenquency = /**
|
|
124
|
-
* @return {?}
|
|
125
|
-
*/
|
|
126
|
-
function () {
|
|
127
|
-
return (this.model.frequency === 'yes');
|
|
128
|
-
};
|
|
129
|
-
/**
|
|
130
|
-
* @return {?}
|
|
131
|
-
*/
|
|
132
|
-
TotvsScheduleExecutionComponent.prototype.changeRepeatExecution = /**
|
|
133
|
-
* @return {?}
|
|
134
|
-
*/
|
|
135
|
-
function () {
|
|
136
|
-
/** @type {?} */
|
|
137
|
-
var date = new Date();
|
|
138
|
-
if (!this.model.execAppointHourInit) {
|
|
139
|
-
this.model.execAppointHourInit = this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes());
|
|
140
|
-
}
|
|
141
|
-
if (!this.model.execAppointHourFinal) {
|
|
142
|
-
this.model.execAppointHourFinal = this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes());
|
|
143
|
-
}
|
|
144
|
-
this.model.selectWeeklys = [];
|
|
145
|
-
this.model.dayOfMonth = 0;
|
|
146
|
-
this.model.frequency = 'no';
|
|
147
|
-
this.model.frequencyType = 'hour';
|
|
148
|
-
this.model.frequencyValue = 0;
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* @return {?}
|
|
152
|
-
*/
|
|
153
|
-
TotvsScheduleExecutionComponent.prototype.changeExecutionType = /**
|
|
154
|
-
* @return {?}
|
|
155
|
-
*/
|
|
156
|
-
function () {
|
|
157
|
-
/** @type {?} */
|
|
158
|
-
var date = new Date();
|
|
159
|
-
this.model.execAppointDate = date;
|
|
160
|
-
this.model.execAppointHour = this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes());
|
|
161
|
-
};
|
|
162
|
-
/**
|
|
163
|
-
* @return {?}
|
|
164
|
-
*/
|
|
165
|
-
TotvsScheduleExecutionComponent.prototype.changeTypeFrequency = /**
|
|
166
|
-
* @return {?}
|
|
167
|
-
*/
|
|
168
|
-
function () {
|
|
169
|
-
};
|
|
170
|
-
/**
|
|
171
|
-
* @param {?} codTab
|
|
172
|
-
* @return {?}
|
|
173
|
-
*/
|
|
174
|
-
TotvsScheduleExecutionComponent.prototype.getActiveTab = /**
|
|
175
|
-
* @param {?} codTab
|
|
176
|
-
* @return {?}
|
|
177
|
-
*/
|
|
178
|
-
function (codTab) {
|
|
179
|
-
return (this.model.repeatType === codTab);
|
|
180
|
-
};
|
|
181
|
-
/**
|
|
182
|
-
* @param {?} codTab
|
|
183
|
-
* @return {?}
|
|
184
|
-
*/
|
|
185
|
-
TotvsScheduleExecutionComponent.prototype.setActiveTab = /**
|
|
186
|
-
* @param {?} codTab
|
|
187
|
-
* @return {?}
|
|
188
|
-
*/
|
|
189
|
-
function (codTab) {
|
|
190
|
-
this.model.repeatType = codTab;
|
|
191
|
-
};
|
|
192
|
-
/**
|
|
193
|
-
* @param {?} num
|
|
194
|
-
* @return {?}
|
|
195
|
-
*/
|
|
196
|
-
TotvsScheduleExecutionComponent.prototype.addZero = /**
|
|
197
|
-
* @param {?} num
|
|
198
|
-
* @return {?}
|
|
199
|
-
*/
|
|
200
|
-
function (num) {
|
|
201
|
-
/** @type {?} */
|
|
202
|
-
var str = "" + num;
|
|
203
|
-
if (num < 10) {
|
|
204
|
-
str = "0" + num;
|
|
205
|
-
}
|
|
206
|
-
return str;
|
|
207
|
-
};
|
|
208
|
-
/**
|
|
209
|
-
* @return {?}
|
|
210
|
-
*/
|
|
211
|
-
TotvsScheduleExecutionComponent.prototype.executeSchedule = /**
|
|
212
|
-
* @return {?}
|
|
213
|
-
*/
|
|
214
|
-
function () {
|
|
215
|
-
var _this = this;
|
|
216
|
-
if (this.disabledParams) {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
if (!this.validate()) {
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
this.jsonObject = {};
|
|
223
|
-
this.jsonObject.status = 'active';
|
|
224
|
-
this.jsonObject.processID = this.programName;
|
|
225
|
-
this.jsonObject.recurrent = this.model.repeatExecution;
|
|
226
|
-
this.jsonObject.executionParameter = {};
|
|
227
|
-
if (this.model.executionType === 1) {
|
|
228
|
-
/** @type {?} */
|
|
229
|
-
var date = new Date();
|
|
230
|
-
this.jsonObject.firstExecution = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + "T" + this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes()) + ":00.000Z";
|
|
231
|
-
}
|
|
232
|
-
if (this.model.executionType === 2) {
|
|
233
|
-
this.jsonObject.firstExecution = this.model.execAppointDate + "T" + this.model.execAppointHour + ":00.000Z";
|
|
234
|
-
}
|
|
235
|
-
this.jsonObject.executionParameter.parametros = [];
|
|
236
|
-
this.jsonObject.executionParameter.parametros[0] = { chave: 'rpwServer', valor: this.model.executionServer };
|
|
237
|
-
this.jsonObject.executionParameter.parametros[1] = { chave: 'RPW_PROGRAM', valor: this.externalName };
|
|
238
|
-
this.jsonObject.executionParameter.parametros[2] = { chave: 'RPW_PRG_EMS5', valor: this.programEMS5 ? 'yes' : 'no' };
|
|
239
|
-
this.jsonObject.executionParameter.parametros[3] = { chave: 'RPW_PRG_VERS', valor: this.programVersion };
|
|
240
|
-
this.jsonObject.executionParameter.parametros[4] = {};
|
|
241
|
-
this.jsonObject.executionParameter.parametros[4].parametros_negocio = this.parameters;
|
|
242
|
-
// Executa hoje ou agendada
|
|
243
|
-
this.rpwService.createExecution(this.jsonObject, this.loading).subscribe((/**
|
|
244
|
-
* @return {?}
|
|
245
|
-
*/
|
|
246
|
-
function () {
|
|
247
|
-
_this.poNotification.success('Agendamento realizado com sucesso !');
|
|
248
|
-
}));
|
|
249
|
-
if (this.model.repeatExecution) {
|
|
250
|
-
if (this.model.repeatType === 1) {
|
|
251
|
-
this.jsonObject.daily = {
|
|
252
|
-
hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
|
|
253
|
-
minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm')
|
|
254
|
-
};
|
|
255
|
-
}
|
|
256
|
-
if (this.model.repeatType === 2) {
|
|
257
|
-
this.jsonObject.weekly = {
|
|
258
|
-
hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
|
|
259
|
-
minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
|
|
260
|
-
daysOfWeek: this.model.selectWeeklys
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
if (this.model.repeatType === 3) {
|
|
264
|
-
this.jsonObject.monthly = {
|
|
265
|
-
hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
|
|
266
|
-
minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
|
|
267
|
-
day: this.model.dayOfMonth
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
if (this.isFrenquency()) {
|
|
271
|
-
this.jsonObject.rangeExecutions = {
|
|
272
|
-
frequency: {
|
|
273
|
-
type: this.model.frequencyType,
|
|
274
|
-
value: this.model.frequencyValue
|
|
275
|
-
},
|
|
276
|
-
rangeLimit: {
|
|
277
|
-
hour: this.getHourOrMinute(this.model.execAppointHourFinal, 'h'),
|
|
278
|
-
minute: this.getHourOrMinute(this.model.execAppointHourFinal, 'm')
|
|
279
|
-
}
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
// Executa a diária, semanal ou mensal
|
|
283
|
-
this.rpwService.createExecution(this.jsonObject, this.loading).subscribe((/**
|
|
284
|
-
* @return {?}
|
|
285
|
-
*/
|
|
286
|
-
function () {
|
|
287
|
-
}));
|
|
288
|
-
}
|
|
289
|
-
this.endExecution.emit(this.model);
|
|
290
|
-
};
|
|
291
|
-
/**
|
|
292
|
-
* @param {?} value
|
|
293
|
-
* @param {?} type
|
|
294
|
-
* @return {?}
|
|
295
|
-
*/
|
|
296
|
-
TotvsScheduleExecutionComponent.prototype.getHourOrMinute = /**
|
|
297
|
-
* @param {?} value
|
|
298
|
-
* @param {?} type
|
|
299
|
-
* @return {?}
|
|
300
|
-
*/
|
|
301
|
-
function (value, type) {
|
|
302
|
-
if (type === 'h') {
|
|
303
|
-
return +value.substring(0, 2);
|
|
304
|
-
}
|
|
305
|
-
if (type === 'm') {
|
|
306
|
-
return +value.substring(3, 6);
|
|
307
|
-
}
|
|
308
|
-
};
|
|
309
|
-
/**
|
|
310
|
-
* @param {?} hourInit
|
|
311
|
-
* @param {?} hourFinal
|
|
312
|
-
* @return {?}
|
|
313
|
-
*/
|
|
314
|
-
TotvsScheduleExecutionComponent.prototype.compareHour = /**
|
|
315
|
-
* @param {?} hourInit
|
|
316
|
-
* @param {?} hourFinal
|
|
317
|
-
* @return {?}
|
|
318
|
-
*/
|
|
319
|
-
function (hourInit, hourFinal) {
|
|
320
|
-
if (hourInit === hourFinal) {
|
|
321
|
-
return false;
|
|
322
|
-
}
|
|
323
|
-
if (this.getHourOrMinute(hourInit, 'h') < this.getHourOrMinute(hourFinal, 'h')) {
|
|
324
|
-
return true;
|
|
325
|
-
}
|
|
326
|
-
if (this.getHourOrMinute(hourInit, 'm') > this.getHourOrMinute(hourFinal, 'm')) {
|
|
327
|
-
return false;
|
|
328
|
-
}
|
|
329
|
-
return true;
|
|
330
|
-
};
|
|
331
|
-
/**
|
|
332
|
-
* @return {?}
|
|
333
|
-
*/
|
|
334
|
-
TotvsScheduleExecutionComponent.prototype.validate = /**
|
|
335
|
-
* @return {?}
|
|
336
|
-
*/
|
|
337
|
-
function () {
|
|
338
|
-
if (!this.scheduleExecutionForm.valid) {
|
|
339
|
-
this.poNotification.error('Verifique as inconsistências em tela.');
|
|
340
|
-
return false;
|
|
341
|
-
}
|
|
342
|
-
if (!this.model.executionServer) {
|
|
343
|
-
this.poNotification.error('Servidor de Execução não foi informado.');
|
|
344
|
-
return false;
|
|
345
|
-
}
|
|
346
|
-
if (this.isExecutionSchedule() && (!this.model.execAppointDate || !this.model.execAppointHour)) {
|
|
347
|
-
this.poNotification.error('Informar a data e a hora para agendamento da execução.');
|
|
348
|
-
return false;
|
|
349
|
-
}
|
|
350
|
-
if (this.model.repeatExecution) {
|
|
351
|
-
if (!this.model.execAppointHourInit) {
|
|
352
|
-
this.poNotification.error('Informar a hora de início para a execução.');
|
|
353
|
-
return false;
|
|
354
|
-
}
|
|
355
|
-
if (this.model.repeatType === 2 && (this.model.selectWeeklys.length === 0)) {
|
|
356
|
-
this.poNotification.error('Informar os dias da semana para a execução.');
|
|
357
|
-
return false;
|
|
358
|
-
}
|
|
359
|
-
if (this.model.repeatType === 3 && (!this.model.dayOfMonth)) {
|
|
360
|
-
this.poNotification.error('Informar o dia para a execução.');
|
|
361
|
-
return false;
|
|
362
|
-
}
|
|
363
|
-
if (this.isFrenquency()) {
|
|
364
|
-
if (!this.compareHour(this.model.execAppointHourInit, this.model.execAppointHourFinal)) {
|
|
365
|
-
this.poNotification.error('Hora Fim deve ser maior que Hora Início.');
|
|
366
|
-
return false;
|
|
367
|
-
}
|
|
368
|
-
if (this.model.frequencyValue === 0) {
|
|
369
|
-
this.poNotification.error('Informar a frequência de execução (A cada hora/minuto).');
|
|
370
|
-
return false;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
return true;
|
|
375
|
-
};
|
|
376
|
-
TotvsScheduleExecutionComponent.decorators = [
|
|
377
|
-
{ type: Component, args: [{
|
|
378
|
-
selector: 'app-totvs-schedule-execution',
|
|
379
|
-
template: "<form #scheduleExecutionForm=\"ngForm\">\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"executionType\"\r\n p-label=\"Data de Execu\u00E7\u00E3o\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.executionType\"\r\n [p-options]=\"executionTypeOptions\"\r\n (p-change)=\"changeExecutionType()\">\r\n </po-radio-group>\r\n\r\n <po-datepicker *ngIf=isExecutionSchedule()\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"model.execAppointDate\"\r\n p-label=\"Agendar para\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointDate\">\r\n </po-datepicker>\r\n\r\n <po-input *ngIf=isExecutionSchedule()\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHour\"\r\n p-label=\"Hora\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHour\">\r\n </po-input>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-lookup\r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"executionServer\"\r\n p-label=\"Servidor de Execu\u00E7\u00E3o\"\r\n p-placeholder=\"Servidor de Execu\u00E7\u00E3o\"\r\n [p-columns]=\"zoomRpwServiceColumns\"\r\n [p-field-format]=\"fieldRpwServiceFormat\"\r\n [p-filter-service]=\"rpwService\"\r\n p-field-label=\"name\"\r\n p-field-value=\"code\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.executionServer\">\r\n </po-lookup>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-switch\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"repeatExecution\"\r\n p-label=\"Repetir ocorr\u00EAncia ?\"\r\n p-label-off=\"N\u00E3o\"\r\n p-label-on=\"Sim\"\r\n [(ngModel)]=\"model.repeatExecution\"\r\n [p-disabled]=\"disabledParams\"\r\n (click)=\"changeRepeatExecution()\">\r\n </po-switch>\r\n </div>\r\n\r\n <div class=\"po-row\" *ngIf=\"isRepeatExecution()\">\r\n \r\n <po-tabs>\r\n\r\n <po-tab \r\n p-label=\"Di\u00E1ria\" \r\n [p-active]=\"getActiveTab(1)\" \r\n (p-click)=\"setActiveTab(1)\">\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyDaily\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n \r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"> \r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitDaily\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n \r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalDaily\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n \r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueDaily\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n \r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeDaily\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n\r\n <po-tab \r\n p-label=\"Semanal\"\r\n [p-active]=\"getActiveTab(2)\"\r\n (p-click)=\"setActiveTab(2)\">\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-multiselect\r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"selectWeeklys\"\r\n p-label=\"Dias da Semana\"\r\n p-placeholder=\"Escolha os dias da semana\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.selectWeeklys\"\r\n [p-options]=\"weeklyOptions\">\r\n </po-multiselect>\r\n </div>\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyWeekly\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitWeekly\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n\r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalWeekly\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n\r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueWeekly\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n\r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeWeekly\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n\r\n <po-tab \r\n p-label=\"Mensal\" \r\n [p-active]=\"getActiveTab(3)\" \r\n (p-click)=\"setActiveTab(3)\">\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-number\r\n class=\"po-sm-3 po-md-3 po-lg-3 po-xl-3\"\r\n name=\"dayOfMonth\"\r\n p-label=\"Dia do m\u00EAs\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"2\"\r\n p-min=\"0\"\r\n p-max=\"31\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.dayOfMonth\">\r\n </po-number>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyMonthly\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitMonthly\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n\r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalWeekly\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n\r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueWeekly\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n\r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeWeekly\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n </po-tabs>\r\n </div>\r\n\r\n <div class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\" style=\"padding-top: 15px;\">\r\n <po-button\r\n style=\"float: right;\"\r\n p-label=\"Gerar Agendamento RPW\"\r\n [p-disabled]=\"disabledParams\"\r\n (click)=\"executeSchedule()\">\r\n </po-button>\r\n </div>\r\n</form>\r\n",
|
|
380
|
-
styles: [""]
|
|
381
|
-
}] }
|
|
382
|
-
];
|
|
383
|
-
/** @nocollapse */
|
|
384
|
-
TotvsScheduleExecutionComponent.ctorParameters = function () { return [
|
|
385
|
-
{ type: PoI18nService },
|
|
386
|
-
{ type: TotvsScheduleExecutionService },
|
|
387
|
-
{ type: PoNotificationService }
|
|
388
|
-
]; };
|
|
389
|
-
TotvsScheduleExecutionComponent.propDecorators = {
|
|
390
|
-
scheduleExecutionForm: [{ type: ViewChild, args: ['scheduleExecutionForm', { static: true },] }],
|
|
391
|
-
programName: [{ type: Input }],
|
|
392
|
-
externalName: [{ type: Input }],
|
|
393
|
-
programEMS5: [{ type: Input }],
|
|
394
|
-
programVersion: [{ type: Input }],
|
|
395
|
-
parameters: [{ type: Input }],
|
|
396
|
-
disabledParams: [{ type: Input }],
|
|
397
|
-
loading: [{ type: Input }],
|
|
398
|
-
endExecution: [{ type: Output }]
|
|
399
|
-
};
|
|
400
|
-
return TotvsScheduleExecutionComponent;
|
|
401
|
-
}());
|
|
402
|
-
export { TotvsScheduleExecutionComponent };
|
|
403
|
-
if (false) {
|
|
404
|
-
/** @type {?} */
|
|
405
|
-
TotvsScheduleExecutionComponent.prototype.scheduleExecutionForm;
|
|
406
|
-
/** @type {?} */
|
|
407
|
-
TotvsScheduleExecutionComponent.prototype.programName;
|
|
408
|
-
/** @type {?} */
|
|
409
|
-
TotvsScheduleExecutionComponent.prototype.externalName;
|
|
410
|
-
/** @type {?} */
|
|
411
|
-
TotvsScheduleExecutionComponent.prototype.programEMS5;
|
|
412
|
-
/** @type {?} */
|
|
413
|
-
TotvsScheduleExecutionComponent.prototype.programVersion;
|
|
414
|
-
/** @type {?} */
|
|
415
|
-
TotvsScheduleExecutionComponent.prototype.parameters;
|
|
416
|
-
/** @type {?} */
|
|
417
|
-
TotvsScheduleExecutionComponent.prototype.disabledParams;
|
|
418
|
-
/** @type {?} */
|
|
419
|
-
TotvsScheduleExecutionComponent.prototype.loading;
|
|
420
|
-
/** @type {?} */
|
|
421
|
-
TotvsScheduleExecutionComponent.prototype.endExecution;
|
|
422
|
-
/** @type {?} */
|
|
423
|
-
TotvsScheduleExecutionComponent.prototype.executionTypeOptions;
|
|
424
|
-
/** @type {?} */
|
|
425
|
-
TotvsScheduleExecutionComponent.prototype.frequencyOptions;
|
|
426
|
-
/** @type {?} */
|
|
427
|
-
TotvsScheduleExecutionComponent.prototype.frequencyTypeOptions;
|
|
428
|
-
/** @type {?} */
|
|
429
|
-
TotvsScheduleExecutionComponent.prototype.weeklyOptions;
|
|
430
|
-
/** @type {?} */
|
|
431
|
-
TotvsScheduleExecutionComponent.prototype.zoomRpwServiceColumns;
|
|
432
|
-
/** @type {?} */
|
|
433
|
-
TotvsScheduleExecutionComponent.prototype.model;
|
|
434
|
-
/**
|
|
435
|
-
* @type {?}
|
|
436
|
-
* @private
|
|
437
|
-
*/
|
|
438
|
-
TotvsScheduleExecutionComponent.prototype.jsonObject;
|
|
439
|
-
/** @type {?} */
|
|
440
|
-
TotvsScheduleExecutionComponent.prototype.literals;
|
|
441
|
-
/** @type {?} */
|
|
442
|
-
TotvsScheduleExecutionComponent.prototype.poI18nService;
|
|
443
|
-
/** @type {?} */
|
|
444
|
-
TotvsScheduleExecutionComponent.prototype.rpwService;
|
|
445
|
-
/** @type {?} */
|
|
446
|
-
TotvsScheduleExecutionComponent.prototype.poNotification;
|
|
447
|
-
}
|
|
448
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2R0cy1iYWNrb2ZmaWNlLXV0aWwvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFzQixhQUFhLEVBQUUscUJBQXFCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDaEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRjtJQWtCSSx5Q0FDVyxhQUE0QixFQUM1QixVQUF5QyxFQUN6QyxjQUFxQztRQUZyQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUErQjtRQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFWdkMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWNwQyxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBRTdCLGFBQVEsR0FBUSxFQUFFLENBQUM7SUFWbkIsQ0FBQzs7OztJQVlELGtEQUFROzs7SUFBUjtRQUNJOzs7Ozs7O2VBT087UUFFUCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0Is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cnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUG9SYWRpb0dyb3VwT3B0aW9uLCBQb0kxOG5TZXJ2aWNlLCBQb05vdGlmaWNhdGlvblNlcnZpY2UsIFBvTG9va3VwQ29sdW1uIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBJU2NoZWR1bGVQYXJhbWV0ZXJzLCBTY2hlZHVsZVBhcmFtZXRlcnMgfSBmcm9tICcuL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVG90dnNTY2hlZHVsZUV4ZWN1dGlvblNlcnZpY2UgfSBmcm9tICcuL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvdHZzU2NoZWR1bGVFeGVjdXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnc2NoZWR1bGVFeGVjdXRpb25Gb3JtJywgeyBzdGF0aWM6IHRydWUgfSkgc2NoZWR1bGVFeGVjdXRpb25Gb3JtOiBOZ0Zvcm07XHJcblxyXG4gICAgQElucHV0KCkgcHJvZ3JhbU5hbWU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGV4dGVybmFsTmFtZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHJvZ3JhbUVNUzUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHByb2dyYW1WZXJzaW9uID0gJyc7XHJcbiAgICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBbXTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkUGFyYW1zID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgZW5kRXhlY3V0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBwb0kxOG5TZXJ2aWNlOiBQb0kxOG5TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBycHdTZXJ2aWNlOiBUb3R2c1NjaGVkdWxlRXhlY3V0aW9uU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgcG9Ob3RpZmljYXRpb246IFBvTm90aWZpY2F0aW9uU2VydmljZSkge1xyXG4gICAgfVxyXG5cclxuICAgIGV4ZWN1dGlvblR5cGVPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgZnJlcXVlbmN5T3B0aW9uczogQXJyYXk8UG9SYWRpb0dyb3VwT3B0aW9uPjtcclxuICAgIGZyZXF1ZW5jeVR5cGVPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgd2Vla2x5T3B0aW9uczogQXJyYXk8UG9SYWRpb0dyb3VwT3B0aW9uPjtcclxuICAgIHpvb21ScHdTZXJ2aWNlQ29sdW1uczogQXJyYXk8UG9Mb29rdXBDb2x1bW4+O1xyXG4gICAgbW9kZWw6IFNjaGVkdWxlUGFyYW1ldGVycztcclxuICAgIHByaXZhdGUganNvbk9iamVjdDogYW55ID0ge307XHJcblxyXG4gICAgbGl0ZXJhbHM6IGFueSA9IHt9O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8qIFZFUklGSUNBUiBDT01PIEZJQ0FSw4EgQSBUUkFEVcOHw4NPXHJcbiAgICAgICAgZm9ya0pvaW4oXHJcbiAgICAgICAgICAgICAgdGhpcy5wb0kxOG5TZXJ2aWNlLmdldExpdGVyYWxzKCksXHJcbiAgICAgICAgICAgICAgdGhpcy5wb0kxOG5TZXJ2aWNlLmdldExpdGVyYWxzKHsgY29udGV4dDogJ2dlbmVyYWxScHcnIH0pXHJcbiAgICAgICAgICApLnN1YnNjcmliZShsaXRlcmFscyA9PiB7XHJcbiAgICAgICAgICAgICAgbGl0ZXJhbHMubWFwKGl0ZW0gPT4gT2JqZWN0LmFzc2lnbih0aGlzLmxpdGVyYWxzLCBpdGVtKSApO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnRzKCk7XHJcbiAgICAgICAgICB9KTsqL1xyXG5cclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldHVwQ29tcG9uZW50cygpIHtcclxuICAgICAgICB0aGlzLmV4ZWN1dGlvblR5cGVPcHRpb25zID0gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiAnRXhlY3V0YXIgSG9qZScsIHZhbHVlOiAxIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBZ2VuZGFyIEV4ZWN1w6fDo28nLCB2YWx1ZTogMiB9XHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lPcHRpb25zID0gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiAnVW1hIHZleiBubyBkaWEnLCB2YWx1ZTogJ25vJyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnVsOhcmlhcyB2ZXplcyBubyBkaWEnLCB2YWx1ZTogJ3llcycgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VHlwZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdIb3JhKHMpJywgdmFsdWU6ICdob3VyJyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnTWludXRvKHMpJywgdmFsdWU6ICdtaW51dGUnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLndlZWtseU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdEb21pbmdvJywgdmFsdWU6ICdTdW5kYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTZWd1bmRhJywgdmFsdWU6ICdNb25kYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdUZXLDp2EnLCB2YWx1ZTogJ1R1ZXNkYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdRdWFydGEnLCB2YWx1ZTogJ1dlZG5lc2RheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1F1aW50YScsIHZhbHVlOiAnVGh1cnNkYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTZXh0YScsIHZhbHVlOiAnRnJpZGF5JyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnU8OhYmFkbycsIHZhbHVlOiAnU2F0dXJkYXknIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnpvb21ScHdTZXJ2aWNlQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgeyBwcm9wZXJ0eTogJ2NvZGUnLCBsYWJlbDogJ1NlcnZpZG9yJywgdHlwZTogJ3N0cmluZycsIHdpZHRoOiAnMjAlJyB9LFxyXG4gICAgICAgICAgICB7IHByb3BlcnR5OiAnbmFtZScsIGxhYmVsOiAnRGVzY3Jpw6fDo28nLCB0eXBlOiAnc3RyaW5nJywgd2lkdGg6ICc4MCUnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsID0gbmV3IFNjaGVkdWxlUGFyYW1ldGVycygpO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZXhlY3V0aW9uVHlwZSA9IDE7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZXBlYXRUeXBlID0gMTtcclxuICAgICAgICB0aGlzLm1vZGVsLnJlcGVhdEV4ZWN1dGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRTY2hlZHVsZVBhcmFtZXRlcnMoc2NoUGFyYW06IElTY2hlZHVsZVBhcmFtZXRlcnMpIHtcclxuICAgICAgICBpZiAoIXNjaFBhcmFtKSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMubW9kZWwgPSBzY2hQYXJhbTtcclxuICAgIH1cclxuXHJcbiAgICBmaWVsZFJwd1NlcnZpY2VGb3JtYXQodmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWUuY29kZX0gLSAke3ZhbHVlLm5hbWV9YDtcclxuICAgIH1cclxuXHJcbiAgICBpc0V4ZWN1dGlvblNjaGVkdWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID09PSAyKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1JlcGVhdEV4ZWN1dGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgaXNGcmVucXVlbmN5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC5mcmVxdWVuY3kgPT09ICd5ZXMnKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VSZXBlYXRFeGVjdXRpb24oKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0KSB7IHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCA9IGAke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9YDsgfVxyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJGaW5hbCkgeyB0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckZpbmFsID0gYCR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0SG91cnMoKSl9OiR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0TWludXRlcygpKX1gOyB9XHJcbiAgICAgICAgdGhpcy5tb2RlbC5zZWxlY3RXZWVrbHlzID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXlPZk1vbnRoID0gMDtcclxuICAgICAgICB0aGlzLm1vZGVsLmZyZXF1ZW5jeSA9ICdubyc7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5mcmVxdWVuY3lUeXBlID0gJ2hvdXInO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZnJlcXVlbmN5VmFsdWUgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZUV4ZWN1dGlvblR5cGUoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwuZXhlY0FwcG9pbnREYXRlID0gZGF0ZTtcclxuICAgICAgICB0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ciA9IGAke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9YDtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VUeXBlRnJlcXVlbmN5KCkge1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2ZVRhYihjb2RUYWI6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC5yZXBlYXRUeXBlID09PSBjb2RUYWIpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEFjdGl2ZVRhYihjb2RUYWI6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubW9kZWwucmVwZWF0VHlwZSA9IGNvZFRhYjtcclxuICAgIH1cclxuXHJcbiAgICBhZGRaZXJvKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgc3RyID0gYCR7bnVtfWA7XHJcbiAgICAgICAgaWYgKG51bSA8IDEwKSB7IHN0ciA9IGAwJHtudW19YDsgfVxyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcblxyXG4gICAgZXhlY3V0ZVNjaGVkdWxlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkUGFyYW1zKSB7IHJldHVybjsgfVxyXG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZSgpKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICB0aGlzLmpzb25PYmplY3QgPSB7fTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3Quc3RhdHVzID0gJ2FjdGl2ZSc7XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LnByb2Nlc3NJRCA9IHRoaXMucHJvZ3JhbU5hbWU7XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LnJlY3VycmVudCA9IHRoaXMubW9kZWwucmVwZWF0RXhlY3V0aW9uO1xyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIgPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZXhlY3V0aW9uVHlwZSA9PT0gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LmZpcnN0RXhlY3V0aW9uID0gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0keyhkYXRlLmdldE1vbnRoKCkgKyAxKX0tJHtkYXRlLmdldERhdGUoKX1UJHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRIb3VycygpKX06JHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRNaW51dGVzKCkpfTowMC4wMDBaYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZXhlY3V0aW9uVHlwZSA9PT0gMikge1xyXG4gICAgICAgICAgICB0aGlzLmpzb25PYmplY3QuZmlyc3RFeGVjdXRpb24gPSBgJHt0aGlzLm1vZGVsLmV4ZWNBcHBvaW50RGF0ZX1UJHt0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91cn06MDAuMDAwWmA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3MgPSBbXTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbMF0gPSB7IGNoYXZlOiAncnB3U2VydmVyJywgdmFsb3I6IHRoaXMubW9kZWwuZXhlY3V0aW9uU2VydmVyIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzFdID0geyBjaGF2ZTogJ1JQV19QUk9HUkFNJywgdmFsb3I6IHRoaXMuZXh0ZXJuYWxOYW1lIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzJdID0geyBjaGF2ZTogJ1JQV19QUkdfRU1TNScsIHZhbG9yOiB0aGlzLnByb2dyYW1FTVM1ID8gJ3llcycgOiAnbm8nIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzNdID0geyBjaGF2ZTogJ1JQV19QUkdfVkVSUycsIHZhbG9yOiB0aGlzLnByb2dyYW1WZXJzaW9uIH07XHJcblxyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1s0XSA9IHt9O1xyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1s0XS5wYXJhbWV0cm9zX25lZ29jaW8gPSB0aGlzLnBhcmFtZXRlcnM7XHJcblxyXG4gICAgICAgIC8vIEV4ZWN1dGEgaG9qZSBvdSBhZ2VuZGFkYVxyXG4gICAgICAgIHRoaXMucnB3U2VydmljZS5jcmVhdGVFeGVjdXRpb24odGhpcy5qc29uT2JqZWN0LCB0aGlzLmxvYWRpbmcpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uc3VjY2VzcygnQWdlbmRhbWVudG8gcmVhbGl6YWRvIGNvbSBzdWNlc3NvICEnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0RXhlY3V0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5kYWlseSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdtJylcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC53ZWVrbHkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG91cjogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnbScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRheXNPZldlZWs6IHRoaXMubW9kZWwuc2VsZWN0V2Vla2x5c1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0Lm1vbnRobHkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG91cjogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnbScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRheTogdGhpcy5tb2RlbC5kYXlPZk1vbnRoXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZyZW5xdWVuY3koKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LnJhbmdlRXhlY3V0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3k6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdGhpcy5tb2RlbC5mcmVxdWVuY3lUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5tb2RlbC5mcmVxdWVuY3lWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2VMaW1pdDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckZpbmFsLCAnaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwsICdtJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBFeGVjdXRhIGEgZGnDoXJpYSwgc2VtYW5hbCBvdSBtZW5zYWxcclxuICAgICAgICAgICAgdGhpcy5ycHdTZXJ2aWNlLmNyZWF0ZUV4ZWN1dGlvbih0aGlzLmpzb25PYmplY3QsIHRoaXMubG9hZGluZykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVuZEV4ZWN1dGlvbi5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEhvdXJPck1pbnV0ZSh2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnaCcpIHsgcmV0dXJuICt2YWx1ZS5zdWJzdHJpbmcoMCwgMik7IH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gJ20nKSB7IHJldHVybiArdmFsdWUuc3Vic3RyaW5nKDMsIDYpOyB9XHJcbiAgICB9XHJcblxyXG4gICAgY29tcGFyZUhvdXIoaG91ckluaXQ6IHN0cmluZywgaG91ckZpbmFsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoaG91ckluaXQgPT09IGhvdXJGaW5hbCkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgICBpZiAodGhpcy5nZXRIb3VyT3JNaW51dGUoaG91ckluaXQsICdoJykgPCB0aGlzLmdldEhvdXJPck1pbnV0ZShob3VyRmluYWwsICdoJykpIHsgcmV0dXJuIHRydWU7IH1cclxuICAgICAgICBpZiAodGhpcy5nZXRIb3VyT3JNaW51dGUoaG91ckluaXQsICdtJykgPiB0aGlzLmdldEhvdXJPck1pbnV0ZShob3VyRmluYWwsICdtJykpIHsgcmV0dXJuIGZhbHNlOyB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zY2hlZHVsZUV4ZWN1dGlvbkZvcm0udmFsaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignVmVyaWZpcXVlIGFzIGluY29uc2lzdMOqbmNpYXMgZW0gdGVsYS4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmV4ZWN1dGlvblNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdTZXJ2aWRvciBkZSBFeGVjdcOnw6NvIG7Do28gZm9pIGluZm9ybWFkby4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNFeGVjdXRpb25TY2hlZHVsZSgpICYmICghdGhpcy5tb2RlbC5leGVjQXBwb2ludERhdGUgfHwgIXRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBhIGRhdGEgZSBhIGhvcmEgcGFyYSBhZ2VuZGFtZW50byBkYSBleGVjdcOnw6NvLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIGEgaG9yYSBkZSBpbsOtY2lvIHBhcmEgYSBleGVjdcOnw6NvLicpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRUeXBlID09PSAyICYmICh0aGlzLm1vZGVsLnNlbGVjdFdlZWtseXMubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignSW5mb3JtYXIgb3MgZGlhcyBkYSBzZW1hbmEgcGFyYSBhIGV4ZWN1w6fDo28uJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDMgJiYgKCF0aGlzLm1vZGVsLmRheU9mTW9udGgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBvIGRpYSBwYXJhIGEgZXhlY3XDp8Ojby4nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGcmVucXVlbmN5KCkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21wYXJlSG91cih0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsIHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignSG9yYSBGaW0gZGV2ZSBzZXIgbWFpb3IgcXVlIEhvcmEgSW7DrWNpby4nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwuZnJlcXVlbmN5VmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBhIGZyZXF1w6puY2lhIGRlIGV4ZWN1w6fDo28gKEEgY2FkYSBob3JhL21pbnV0bykuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufVxyXG4iXX0=
|