@glowgreen/gg-questionnaire-v2 0.0.112 → 0.0.114
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/glowgreen-gg-questionnaire-v2.umd.js +6 -14
- package/bundles/glowgreen-gg-questionnaire-v2.umd.js.map +1 -1
- package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js +1 -1
- package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js.map +1 -1
- package/esm2015/lib/services/form-constructor.service.js +7 -15
- package/fesm2015/glowgreen-gg-questionnaire-v2.js +6 -14
- package/fesm2015/glowgreen-gg-questionnaire-v2.js.map +1 -1
- package/package.json +1 -1
|
@@ -19,8 +19,6 @@ export class FormConstructorService {
|
|
|
19
19
|
* @author Will Poulson
|
|
20
20
|
*/
|
|
21
21
|
generateFormsForQuestionnaire(questionnaire, currentQuestionnaire, currentQuestionnaireForm, additionalData, skipFilter) {
|
|
22
|
-
console.log('zero');
|
|
23
|
-
console.log(additionalData);
|
|
24
22
|
const sections = skipFilter ?
|
|
25
23
|
questionnaire.sections :
|
|
26
24
|
this.filterService.filterSections(questionnaire.sections, currentQuestionnaireForm, additionalData);
|
|
@@ -32,8 +30,6 @@ export class FormConstructorService {
|
|
|
32
30
|
return { sections: sections, forms: questionnaireForms };
|
|
33
31
|
}
|
|
34
32
|
generateFormsForSections(sections, currentQuestionnaireForm, additionalData) {
|
|
35
|
-
console.log('one');
|
|
36
|
-
console.log(additionalData);
|
|
37
33
|
const questionnaireForms = this.fb.group({});
|
|
38
34
|
for (const section of sections) {
|
|
39
35
|
const sectionForms = this.generateFormsForSection(section, currentQuestionnaireForm, additionalData);
|
|
@@ -49,8 +45,6 @@ export class FormConstructorService {
|
|
|
49
45
|
* @author Will Poulson
|
|
50
46
|
*/
|
|
51
47
|
generateFormsForSection(section, currentQuestionnaireForm, additionalData) {
|
|
52
|
-
console.log('two');
|
|
53
|
-
console.log(additionalData);
|
|
54
48
|
const sectionForms = this.fb.group({});
|
|
55
49
|
for (const question of section.questions) {
|
|
56
50
|
if (question.type === QuestionType.Info) {
|
|
@@ -70,16 +64,17 @@ export class FormConstructorService {
|
|
|
70
64
|
generateControlForQuestion(question, section, currentQuestionnaireForm, additionalData) {
|
|
71
65
|
const convertedValidators = this.convertValidators(question.validators);
|
|
72
66
|
let defaultValue = question.defaultValue ? question.defaultValue : null;
|
|
73
|
-
console.log('three');
|
|
74
|
-
console.log(additionalData);
|
|
75
67
|
if (defaultValue !== null) {
|
|
76
68
|
defaultValue = this.filterService.getValueForString(defaultValue, currentQuestionnaireForm, additionalData);
|
|
69
|
+
console.log('----');
|
|
70
|
+
console.log(defaultValue);
|
|
71
|
+
question.defaultValue = defaultValue;
|
|
72
|
+
currentQuestionnaireForm.setValue(defaultValue);
|
|
73
|
+
console.log('----');
|
|
77
74
|
}
|
|
78
|
-
console.log('default');
|
|
79
|
-
console.log(defaultValue);
|
|
80
75
|
const titleRegEx = /(\{\{([^\}]+)\}\})/gi;
|
|
81
76
|
let titlePlaceholdersFound = null;
|
|
82
|
-
console.log('
|
|
77
|
+
console.log('question');
|
|
83
78
|
console.log(question);
|
|
84
79
|
while ((titlePlaceholdersFound = titleRegEx.exec(question.title)) !== null) {
|
|
85
80
|
let titleReplacementValue = this.filterService.getValueForString(titlePlaceholdersFound[2], currentQuestionnaireForm, additionalData);
|
|
@@ -101,9 +96,6 @@ export class FormConstructorService {
|
|
|
101
96
|
});
|
|
102
97
|
question.subtitle = question.subtitle.replace(subTitleReplaceRe, subTitleReplacementValue);
|
|
103
98
|
}
|
|
104
|
-
console.log('final');
|
|
105
|
-
console.log(question);
|
|
106
|
-
console.log('====');
|
|
107
99
|
switch (question.type) {
|
|
108
100
|
case QuestionType.Repeater:
|
|
109
101
|
const newArray = this.fb.array([], convertedValidators);
|
|
@@ -263,4 +255,4 @@ FormConstructorService.ctorParameters = () => [
|
|
|
263
255
|
{ type: FormBuilder },
|
|
264
256
|
{ type: FilterService }
|
|
265
257
|
];
|
|
266
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2ctcXVlc3Rpb25uYWlyZS12Mi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQXdELFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBSTFILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBUS9ELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxFQUFlLEVBQ2YsYUFBNEI7UUFENUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFTDs7Ozs7O09BTUc7SUFDSSw2QkFBNkIsQ0FDbEMsYUFBNEIsRUFDNUIsb0JBQW1DLEVBQ25DLHdCQUFtQyxFQUNuQyxjQUF1QixFQUN2QixVQUFvQjtRQUdwQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFNUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFDM0IsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFdEcsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLElBQUksQ0FBQyxRQUFRLEtBQUssb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUYsSUFBSSxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM3RyxPQUFPLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsUUFBd0IsRUFBRSx3QkFBbUMsRUFBRSxjQUFjO1FBQzVHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixNQUFNLGtCQUFrQixHQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDckcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyx1QkFBdUIsQ0FBQyxPQUFnQixFQUFFLHdCQUFtQyxFQUFFLGNBQWM7UUFDbkcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTVCLE1BQU0sWUFBWSxHQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELEtBQUssTUFBTSxRQUFRLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN4QyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTtnQkFDdkMsU0FBUzthQUNWO1lBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDckgsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssMEJBQTBCLENBQUMsUUFBa0IsRUFBRSxPQUFnQixFQUFFLHdCQUFtQyxFQUFFLGNBQWM7UUFDMUgsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV4RSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFNUIsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQ3pCLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUNqRCxZQUFZLEVBQ1osd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxDQUFDO1NBQ25CO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFCLE1BQU0sVUFBVSxHQUFXLHNCQUFzQixDQUFDO1FBQ2xELElBQUksc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBRWxDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QixPQUFPLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDMUUsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUM5RCxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFDekIsd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVwRixxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQ25ELFFBQVEsRUFDUixVQUFTLEdBQUc7Z0JBQ1YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsQ0FBQyxDQUNGLENBQUM7WUFDRixRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsTUFBTSxhQUFhLEdBQVcsc0JBQXNCLENBQUM7UUFDckQsSUFBSSx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFFckMsT0FBTyxDQUFDLHlCQUF5QixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ25GLElBQUksd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FDakUseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEVBQzVCLHdCQUF3QixFQUN4QixjQUFjLENBQUMsQ0FBQztZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxRix3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQ3pELFFBQVEsRUFDUixVQUFTLEdBQUc7Z0JBQ1YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsQ0FBQyxDQUNGLENBQUM7WUFDRixRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUM7U0FDNUY7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckIsS0FBSyxZQUFZLENBQUMsUUFBUTtnQkFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3hELE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBRSx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBRW5JLElBQUksWUFBWSxJQUFJLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRTtvQkFDdEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO3dCQUUzQyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFFckQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7NEJBQ2hCLFNBQVM7eUJBQ1Y7d0JBRUQsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBRXBFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0QkFDdEIsU0FBUzt5QkFDVjt3QkFFRCxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDakUsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBRTdHLEtBQUssTUFBTSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRTs0QkFDdEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDM0QsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDL0IsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQzt5QkFDekU7d0JBRUQsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFOzRCQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUV4RCxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0NBQ3RCLDZFQUE2RTtnQ0FDN0UsU0FBUzs2QkFDVjs0QkFFRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDaEYsWUFBWSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzRCQUNoRCxZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO3lCQUN6RTtxQkFDRjtpQkFDRjtnQkFFRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDaEQsS0FBSyxZQUFZLENBQUMsU0FBUztnQkFDekIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDdkUsS0FBSyxZQUFZLENBQUMsTUFBTTtnQkFDdEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMscUNBQXFDO1lBQ2xIO2dCQUNFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0sseUJBQXlCLENBQUMsUUFBa0IsRUFBRSxtQkFBbUI7UUFDdkUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLGNBQWMsR0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxLQUFLLE1BQU0sYUFBYSxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUN4RSxjQUFjLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztTQUNyRTtRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFHRDs7Ozs7T0FLRztJQUNJLHdCQUF3QixDQUFDLFFBQWtCLEVBQUUsS0FBVztRQUM3RCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0RixPQUFPLENBQUMsR0FBRyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sYUFBYSxHQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsaUJBQWlCLEVBQUU7WUFDekQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxRixhQUFhLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssa0NBQWtDLENBQUMsZ0JBQWtDO1FBQzNFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsVUFBNEI7UUFDcEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxQyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsTUFBTSxtQkFBbUIsR0FBdUIsRUFBRSxDQUFDO1FBQ25ELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1lBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVELElBQUksa0JBQWtCLEVBQUU7Z0JBQ3RCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7UUFDRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGdCQUFnQixDQUFDLFNBQW9CO1FBQzNDLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRTtZQUN0QixLQUFLLGNBQWMsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDN0I7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksK0JBQStCLENBQUMsVUFBZSxFQUFFLFFBQXdCLEVBQUUsd0JBQW1DO1FBQ25ILEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzlCLEtBQUssTUFBTSxRQUFRLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDeEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxRQUFRLEVBQUU7b0JBQzNDLFNBQVM7aUJBQ1Y7Z0JBRUQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ2hELFNBQVM7aUJBQ1Y7Z0JBRUQsTUFBTSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBYyxDQUFDO2dCQUVuRyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDOUQsU0FBUztpQkFDVjtnQkFFRCx1RkFBdUY7Z0JBQ3ZGLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO29CQUN4QyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNsRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2lCQUM5QzthQUNGO1NBQ0Y7SUFDSCxDQUFDOzs7O1lBN1RGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBZFEsV0FBVztZQUtYLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgRm9ybUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb24nO1xuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZSc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4vZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92YWxpZGF0b3InO1xuaW1wb3J0IHsgVmFsaWRhdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy92YWxpZGF0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSZXBlYXRlclF1ZXN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBlYXRlci1xdWVzdGlvbic7XG5pbXBvcnQgeyBDaGVja2xpc3RJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jaGVja2xpc3QtaXRlbSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db25zdHJ1Y3RvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZVxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgZm9ybSBncm91cCBiYXNlZCBvbiB0aGUgcXVlc3Rpb25uYWlyZSBkYXRhLlxuICAgKiBUaGlzIGZvcm0gZ3JvdXAgaGFzIGJlZW4gZmlsdGVyZWQgZG93biBiYXNlZCBvbiB0aGUgY29uZGl0aW9ucyBvZiB0aGUgc2VjdGlvbnMgYW5kIHF1ZXN0aW9ucy5cbiAgICogQHBhcmFtIHF1ZXN0aW9ubmFpcmUgVGhlIHF1ZXN0aW9ubmFpcmUgZGF0YSB0byBidWlsZCB0aGUgZm9ybSBncm91cCBvbi5cbiAgICogQHJldHVybnMgQSBmaWx0ZWQgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm1zRm9yUXVlc3Rpb25uYWlyZShcbiAgICBxdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlLFxuICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlLFxuICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwLFxuICAgIGFkZGl0aW9uYWxEYXRhPzogT2JqZWN0LFxuICAgIHNraXBGaWx0ZXI/OiBib29sZWFuXG4gICk6IHtzZWN0aW9uczogQXJyYXk8U2VjdGlvbj47IGZvcm1zOiBGb3JtR3JvdXB9IHtcblxuICAgIGNvbnNvbGUubG9nKCd6ZXJvJyk7XG4gICAgY29uc29sZS5sb2coYWRkaXRpb25hbERhdGEpO1xuXG4gICAgY29uc3Qgc2VjdGlvbnMgPSBza2lwRmlsdGVyID9cbiAgICAgIHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMgOlxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclNlY3Rpb25zKHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSwgYWRkaXRpb25hbERhdGEpO1xuXG4gICAgY29uc3Qgbm9DaGFuZ2UgPSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gJiYgKHNlY3Rpb25zID09PSBjdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucyk7XG5cbiAgICBpZiAobm9DaGFuZ2UgJiYgIXNraXBGaWx0ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmVGb3JtcyA9IHRoaXMuZ2VuZXJhdGVGb3Jtc0ZvclNlY3Rpb25zKHNlY3Rpb25zLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sIGFkZGl0aW9uYWxEYXRhKTtcbiAgICByZXR1cm4ge3NlY3Rpb25zOiBzZWN0aW9ucywgZm9ybXM6IHF1ZXN0aW9ubmFpcmVGb3Jtc307XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRm9ybXNGb3JTZWN0aW9ucyhzZWN0aW9uczogQXJyYXk8U2VjdGlvbj4sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwLCBhZGRpdGlvbmFsRGF0YSkge1xuICAgIGNvbnNvbGUubG9nKCdvbmUnKTtcbiAgICBjb25zb2xlLmxvZyhhZGRpdGlvbmFsRGF0YSk7XG4gICAgY29uc3QgcXVlc3Rpb25uYWlyZUZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25Gb3JtcyA9IHRoaXMuZ2VuZXJhdGVGb3Jtc0ZvclNlY3Rpb24oc2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLCBhZGRpdGlvbmFsRGF0YSk7XG4gICAgICBxdWVzdGlvbm5haXJlRm9ybXMuYWRkQ29udHJvbChzZWN0aW9uLm5hbWUsIHNlY3Rpb25Gb3Jtcyk7XG4gICAgfVxuICAgIHJldHVybiBxdWVzdGlvbm5haXJlRm9ybXM7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGZvcm0gZ3JvdXAgYmFzZWQgb24gdGhlIHNlY3Rpb24gZGF0YS5cbiAgICogVGhpcyBmb3JtIGdyb3VwIGhhcyBiZWVuIGZpbHRlcmVkIGRvd24gYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgb2YgdGhlIHF1ZXN0aW9ucy5cbiAgICogQHBhcmFtIHNlY3Rpb24gVGhlIHNlY3Rpb24gZGF0YSB0byBidWlsZCB0aGUgZm9ybSBncm91cCBvbi5cbiAgICogQHJldHVybnMgQSBmaWx0ZXJlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbihzZWN0aW9uOiBTZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCwgYWRkaXRpb25hbERhdGEpOiBGb3JtR3JvdXAge1xuICAgIGNvbnNvbGUubG9nKCd0d28nKTtcbiAgICBjb25zb2xlLmxvZyhhZGRpdGlvbmFsRGF0YSk7XG5cbiAgICBjb25zdCBzZWN0aW9uRm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgIGlmIChxdWVzdGlvbi50eXBlID09PSBRdWVzdGlvblR5cGUuSW5mbykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlc3Rpb25Db250cm9sID0gdGhpcy5nZW5lcmF0ZUNvbnRyb2xGb3JRdWVzdGlvbihxdWVzdGlvbiwgc2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLCBhZGRpdGlvbmFsRGF0YSk7XG4gICAgICBzZWN0aW9uRm9ybXMuYWRkQ29udHJvbChxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbkNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gc2VjdGlvbkZvcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gYXN0cmFjdCBmb3JtIGNvbnRyb2wgYmFzZWQgb24gdGhlIHF1ZXN0aW9uIGRhdGEuXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24gZGF0YSB0byBidWlsZCB0aGUgYWJzdHJhY3QgY29udHJvbCBvbi5cbiAgICogQHJldHVybnMgQW4gYWJzdHJhY3QgY29udHJvbC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVDb250cm9sRm9yUXVlc3Rpb24ocXVlc3Rpb246IFF1ZXN0aW9uLCBzZWN0aW9uOiBTZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCwgYWRkaXRpb25hbERhdGEpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKHF1ZXN0aW9uLnZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWUgPSBxdWVzdGlvbi5kZWZhdWx0VmFsdWUgPyBxdWVzdGlvbi5kZWZhdWx0VmFsdWUgOiBudWxsO1xuXG4gICAgY29uc29sZS5sb2coJ3RocmVlJyk7XG4gICAgY29uc29sZS5sb2coYWRkaXRpb25hbERhdGEpO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldFZhbHVlRm9yU3RyaW5nKFxuICAgICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSxcbiAgICAgICAgYWRkaXRpb25hbERhdGEpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdkZWZhdWx0Jyk7XG4gICAgY29uc29sZS5sb2coZGVmYXVsdFZhbHVlKTtcblxuICAgIGNvbnN0IHRpdGxlUmVnRXg6IFJlZ0V4cCA9IC8oXFx7XFx7KFteXFx9XSspXFx9XFx9KS9naTtcbiAgICBsZXQgdGl0bGVQbGFjZWhvbGRlcnNGb3VuZCA9IG51bGw7XG5cbiAgICBjb25zb2xlLmxvZygnZGVmYXVsdCcpO1xuICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uKTtcblxuICAgIHdoaWxlICgodGl0bGVQbGFjZWhvbGRlcnNGb3VuZCA9IHRpdGxlUmVnRXguZXhlYyhxdWVzdGlvbi50aXRsZSkpICE9PSBudWxsKSB7XG4gICAgICBsZXQgdGl0bGVSZXBsYWNlbWVudFZhbHVlID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldFZhbHVlRm9yU3RyaW5nKFxuICAgICAgICB0aXRsZVBsYWNlaG9sZGVyc0ZvdW5kWzJdLFxuICAgICAgICBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKCdtMScpO1xuICAgICAgY29uc3QgdGl0bGVSZXBsYWNlUmUgPSBuZXcgUmVnRXhwKCdcXHtcXHsnICsgdGl0bGVQbGFjZWhvbGRlcnNGb3VuZFsyXSArICdcXH1cXH0nLCAnZycpO1xuXG4gICAgICB0aXRsZVJlcGxhY2VtZW50VmFsdWUgPSB0aXRsZVJlcGxhY2VtZW50VmFsdWUucmVwbGFjZShcbiAgICAgICAgL1xcd1xcUyovZyxcbiAgICAgICAgZnVuY3Rpb24odHh0KSB7XG4gICAgICAgICAgcmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHF1ZXN0aW9uLnRpdGxlID0gcXVlc3Rpb24udGl0bGUucmVwbGFjZSh0aXRsZVJlcGxhY2VSZSwgdGl0bGVSZXBsYWNlbWVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJUaXRsZVJlZ0V4OiBSZWdFeHAgPSAvKFxce1xceyhbXlxcfV0rKVxcfVxcfSkvZ2k7XG4gICAgbGV0IHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmQgPSBudWxsO1xuXG4gICAgd2hpbGUgKChzdWJUaXRsZVBsYWNlaG9sZGVyc0ZvdW5kID0gc3ViVGl0bGVSZWdFeC5leGVjKHF1ZXN0aW9uLnN1YnRpdGxlKSkgIT09IG51bGwpIHtcbiAgICAgIGxldCBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0VmFsdWVGb3JTdHJpbmcoXG4gICAgICAgIHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmRbMl0sXG4gICAgICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSxcbiAgICAgICAgYWRkaXRpb25hbERhdGEpO1xuICAgICAgY29uc29sZS5sb2coJ20yJyk7XG4gICAgICBjb25zdCBzdWJUaXRsZVJlcGxhY2VSZSA9IG5ldyBSZWdFeHAoJ1xce1xceycgKyBzdWJUaXRsZVBsYWNlaG9sZGVyc0ZvdW5kWzJdICsgJ1xcfVxcfScsICdnJyk7XG4gICAgICBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUgPSBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUucmVwbGFjZShcbiAgICAgICAgL1xcd1xcUyovZyxcbiAgICAgICAgZnVuY3Rpb24odHh0KSB7XG4gICAgICAgICAgcmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHF1ZXN0aW9uLnN1YnRpdGxlID0gcXVlc3Rpb24uc3VidGl0bGUucmVwbGFjZShzdWJUaXRsZVJlcGxhY2VSZSwgc3ViVGl0bGVSZXBsYWNlbWVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnZmluYWwnKTtcbiAgICBjb25zb2xlLmxvZyhxdWVzdGlvbik7XG4gICAgY29uc29sZS5sb2coJz09PT0nKTtcbiAgICBzd2l0Y2ggKHF1ZXN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgUXVlc3Rpb25UeXBlLlJlcGVhdGVyOlxuICAgICAgICBjb25zdCBuZXdBcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIGNvbnZlcnRlZFZhbGlkYXRvcnMpO1xuICAgICAgICBjb25zdCBjdXJyZW50QXJyYXkgPSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gPyAoY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmdldChbc2VjdGlvbi5uYW1lLCBxdWVzdGlvbi5uYW1lXSkgYXMgRm9ybUFycmF5KSA6IGZhbHNlO1xuXG4gICAgICAgIGlmIChjdXJyZW50QXJyYXkgJiYgcXVlc3Rpb24uZmlsdGVyZWRSZXBlYXRlclF1ZXN0aW9ucykge1xuICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjdXJyZW50QXJyYXkuY29udHJvbHMpIHtcblxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50QXJyYXkuY29udHJvbHMuaW5kZXhPZihjb250cm9sKTtcblxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRRdWVzdGlvbnMgPSBxdWVzdGlvbi5maWx0ZXJlZFJlcGVhdGVyUXVlc3Rpb25zW2luZGV4XTtcblxuICAgICAgICAgICAgaWYgKCFmaWx0ZXJlZFF1ZXN0aW9ucykge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRRdWVzdGlvbk5hbWVzID0gZmlsdGVyZWRRdWVzdGlvbnMubWFwKHggPT4geC5uYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0UXVlc3Rpb25zID0gcXVlc3Rpb24ucmVwZWF0ZXJRdWVzdGlvbnMuZmlsdGVyKHggPT4gIWZpbHRlcmVkUXVlc3Rpb25OYW1lcy5pbmNsdWRlcyh4Lm5hbWUpKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXJlZE91dFF1ZXN0aW9uIG9mIGZpbHRlcmVkT3V0UXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ29udHJvbCA9IGNvbnRyb2wuZ2V0KGZpbHRlcmVkT3V0UXVlc3Rpb24ubmFtZSk7XG4gICAgICAgICAgICAgIGNoaWxkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtdKTtcbiAgICAgICAgICAgICAgY2hpbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyZWRRdWVzdGlvbiBvZiBmaWx0ZXJlZFF1ZXN0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZENvbnRyb2wgPSBjb250cm9sLmdldChmaWx0ZXJlZFF1ZXN0aW9uLm5hbWUpO1xuXG4gICAgICAgICAgICAgIGlmIChjaGlsZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGEgdmFsdWUganVzdCBza2lwIGl0LCBubyBuZWVkIHRvIHJlZG8gdGhlIHZhbGlkYXRvcnMgZWFjaCB0aW1lLlxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9ycyA9IHRoaXMuY29udmVydFZhbGlkYXRvcnMoZmlsdGVyZWRRdWVzdGlvbi52YWxpZGF0b3JzKTtcbiAgICAgICAgICAgICAgY2hpbGRDb250cm9sLnNldFZhbGlkYXRvcnMoY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgIGNoaWxkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjdXJyZW50QXJyYXkgPyBjdXJyZW50QXJyYXkgOiBuZXdBcnJheTtcbiAgICAgIGNhc2UgUXVlc3Rpb25UeXBlLkNoZWNrbGlzdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVHcm91cEZvckNoZWNrbGlzdChxdWVzdGlvbiwgY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICBjYXNlIFF1ZXN0aW9uVHlwZS5TbGlkZXI6XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2woZGVmYXVsdFZhbHVlLCB7IHZhbGlkYXRvcnM6IGNvbnZlcnRlZFZhbGlkYXRvcnMgfSk7IC8vIFJlbW92ZSB1cGRhdGUgb24gYmx1ciBmb3Igc2xpZGVycy5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2woZGVmYXVsdFZhbHVlLCB7IHZhbGlkYXRvcnM6IGNvbnZlcnRlZFZhbGlkYXRvcnMsIHVwZGF0ZU9uOiAnYmx1cicgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgZm9ybSBncm91cCBmb3IgYSBjaGVja2xpc3QgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24uIE11c3QgYmUgb2YgdHlwZSBjaGVja2xpc3Qgb3IgZWxzZSBudWxsIGlzIHJldHVybmVkLlxuICAgKiBAcmV0dXJucyBBIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlR3JvdXBGb3JDaGVja2xpc3QocXVlc3Rpb246IFF1ZXN0aW9uLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKSB7XG4gICAgaWYgKHF1ZXN0aW9uLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5DaGVja2xpc3QgfHwgcXVlc3Rpb24uY2hlY2tsaXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja2xpc3RGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgZm9yIChjb25zdCBjaGVja2xpc3RJdGVtIG9mIHF1ZXN0aW9uLmNoZWNrbGlzdEl0ZW1zKSB7XG4gICAgICBjb25zdCBjaGVja2xpc3RJdGVtQ29udHJvbCA9IHRoaXMuZmIuY29udHJvbChudWxsLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgIGNoZWNrbGlzdEZvcm1zLmFkZENvbnRyb2woY2hlY2tsaXN0SXRlbS5uYW1lLCBjaGVja2xpc3RJdGVtQ29udHJvbCk7XG4gICAgfVxuICAgIHJldHVybiBjaGVja2xpc3RGb3JtcztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgZm9ybSB0ZW1wbGF0ZSBmb3IgYSByZXBlYXRlciBxdWVzdGlvbi5cbiAgICogQHBhcmFtIHF1ZXN0aW9uIFRoZSBxdWVzdGlvbi4gTXVzdCBiZSBvZiB0eXBlIHJlcGVhdGVyIG9yIGVsc2UgbnVsbCBpcyByZXR1cm5lZC5cbiAgICogQHJldHVybnMgQSBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcihxdWVzdGlvbjogUXVlc3Rpb24sIGluZGV4PzogYW55KTogRm9ybUdyb3VwIHtcbiAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLlJlcGVhdGVyIHx8IHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ1F1ZXN0aW9uIGlzbnQgYSByZXBlYXRlciBvciBoYXMgbm8gcXVlc3Rpb25zLCByZXR1cm5pbmcgbnVsbCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG5cbiAgICBmb3IgKGNvbnN0IHJlcGVhdGVyUXVlc3Rpb24gb2YgcXVlc3Rpb24ucmVwZWF0ZXJRdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJlcGVhdGVyUXVlc3Rpb25Db250cm9sID0gdGhpcy5nZW5lcmF0ZUNvbnRyb2xGb3JSZXBlYXRlclF1ZXN0aW9uKHJlcGVhdGVyUXVlc3Rpb24pO1xuICAgICAgcmVwZWF0ZXJGb3Jtcy5hZGRDb250cm9sKHJlcGVhdGVyUXVlc3Rpb24ubmFtZSwgcmVwZWF0ZXJRdWVzdGlvbkNvbnRyb2wpO1xuICAgIH1cblxuICAgIHJldHVybiByZXBlYXRlckZvcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGNvbnRyb2wgZm9yIGEgcmVwZWF0ZXJzIHF1ZXN0aW9uLlxuICAgKiBAcGFyYW0gcmVwZWF0ZXJRdWVzdGlvbiBBIHJlcGVhdGVyIHF1ZXN0aW9uLlxuICAgKiBAcmV0dXJucyBBbiBhYnN0cmFjdCBjb250cm9sLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbnRyb2xGb3JSZXBlYXRlclF1ZXN0aW9uKHJlcGVhdGVyUXVlc3Rpb246IFJlcGVhdGVyUXVlc3Rpb24pOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKHJlcGVhdGVyUXVlc3Rpb24udmFsaWRhdG9ycyk7XG4gICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbChudWxsLCB7IHZhbGlkYXRvcnM6IGNvbnZlcnRlZFZhbGlkYXRvcnMsIHVwZGF0ZU9uOiByZXBlYXRlclF1ZXN0aW9uLnR5cGUgPT09ICdzZWxlY3QnID8gJ2NoYW5nZScgOiAnYmx1cicgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgdmFsaWRhdG9ycyBpbnRvIGZvcm0gdmFsaWRhdG9ycy5cbiAgICogQHBhcmFtIHZhbGlkYXRvcnMgVGhlIHVuY292ZXJ0ZWQgYXJyYXkgb2YgdmFsaWRhdG9ycy5cbiAgICogQHJldHVybnMgQSBjb252ZXJlZCBhcnJheSBvZiBmb3JtIHZhbGlkYXRvcnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IEFycmF5PFZhbGlkYXRvcj4pOiBBcnJheTxWYWxpZGF0b3JGbj4ge1xuICAgIGlmICghdmFsaWRhdG9ycyB8fCB2YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3JzOiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3IgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3IodmFsaWRhdG9yKTtcbiAgICAgIGlmIChjb252ZXJ0ZWRWYWxpZGF0b3IpIHtcbiAgICAgICAgY29udmVydGVkVmFsaWRhdG9ycy5wdXNoKGNvbnZlcnRlZFZhbGlkYXRvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0ZWRWYWxpZGF0b3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc2luZ2xlIHZhbGlkYXRvciBpbnRvIGEgZm9ybSB2YWxpZGF0b3IuXG4gICAqIEBwYXJhbSB2YWxpZGF0b3IgVGhlIHVuY29udmVydGVkIHZhbGlkYXRvci5cbiAgICogQHJldHVybnMgQSBjb252ZXJ0ZWQgZm9ybSB2YWxpZGF0b3IuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWxpZGF0b3IodmFsaWRhdG9yOiBWYWxpZGF0b3IpOiBWYWxpZGF0b3JGbiB8IG51bGwge1xuICAgIHN3aXRjaCAodmFsaWRhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuUmVxdWlyZWQ6XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLnJlcXVpcmVkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIGZvcm1zIGZvciByZXBlYXRlcnMgZnJvbSBzYXZlZCBzdGF0ZS5cbiAgICogQHBhcmFtIHNhdmVkU3RhdGUgVGhlIHNhdmVkIHN0YXRlIHRvIGxvYWQuXG4gICAqIEBwYXJhbSBzZWN0aW9ucyBUaGUgc2VjdGlvbnMgYWxyZWFkeSBnZW5lcmF0ZWQgYnkgdGhlIGZvcm0gY29uc3RydWN0b3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0UmVwZWF0ZXJGcm9tc0Zyb21TdGF0ZShzYXZlZFN0YXRlOiBhbnksIHNlY3Rpb25zOiBBcnJheTxTZWN0aW9uPiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApIHtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgaWYgKHF1ZXN0aW9uLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVwZWF0ZXJBcnJheSA9IHNhdmVkU3RhdGVbc2VjdGlvbi5uYW1lXVtxdWVzdGlvbi5uYW1lXTtcbiAgICAgICAgaWYgKCFyZXBlYXRlckFycmF5IHx8IHJlcGVhdGVyQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBlYXRlckZvcm1BcnJheSA9IGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoW3NlY3Rpb24ubmFtZSwgcXVlc3Rpb24ubmFtZV0pIGFzIEZvcm1BcnJheTtcblxuICAgICAgICBpZiAocmVwZWF0ZXJGb3JtQXJyYXkuY29udHJvbHMubGVuZ3RoID09PSByZXBlYXRlckFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yIGVhY2ggaXRlbSB0aGF0IHVzZWQgdG8gYmUgdGhlcmUgcHVzaCBhIG5ldyBlbXB0eSB0ZW1wbGF0ZSB0aGVyZSB0byBiZSBwb3B1bGF0ZWQuXG4gICAgICAgIGZvciAoY29uc3QgcmVwZWF0ZXJJdGVtIG9mIHJlcGVhdGVyQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHJlcGVhdGVyQXJyYXkuaW5kZXhPZihyZXBlYXRlckl0ZW0pO1xuICAgICAgICAgIGNvbnN0IHJlcGVhdGVySXRlbVRlbXBsYXRlID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yUmVwZWF0ZXIocXVlc3Rpb24sIGluZGV4KTtcbiAgICAgICAgICByZXBlYXRlckZvcm1BcnJheS5wdXNoKHJlcGVhdGVySXRlbVRlbXBsYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2ctcXVlc3Rpb25uYWlyZS12Mi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQXdELFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBSTFILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBUS9ELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxFQUFlLEVBQ2YsYUFBNEI7UUFENUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFTDs7Ozs7O09BTUc7SUFDSSw2QkFBNkIsQ0FDbEMsYUFBNEIsRUFDNUIsb0JBQW1DLEVBQ25DLHdCQUFtQyxFQUNuQyxjQUF1QixFQUN2QixVQUFvQjtRQUVwQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUMzQixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV0RyxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsSUFBSSxDQUFDLFFBQVEsS0FBSyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxRixJQUFJLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FB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WSxDQUFDLENBQUM7b0JBQ2xELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDNUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7aUJBQzlDO2FBQ0Y7U0FDRjtJQUNILENBQUM7Ozs7WUFyVEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFkUSxXQUFXO1lBS1gsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzLCBGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWN0aW9uJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbm5haXJlJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3ZhbGlkYXRpb24tdHlwZS5lbnVtJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFJlcGVhdGVyUXVlc3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcGVhdGVyLXF1ZXN0aW9uJztcbmltcG9ydCB7IENoZWNrbGlzdEl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NoZWNrbGlzdC1pdGVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNvbnN0cnVjdG9yU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBmb3JtIGdyb3VwIGJhc2VkIG9uIHRoZSBxdWVzdGlvbm5haXJlIGRhdGEuXG4gICAqIFRoaXMgZm9ybSBncm91cCBoYXMgYmVlbiBmaWx0ZXJlZCBkb3duIGJhc2VkIG9uIHRoZSBjb25kaXRpb25zIG9mIHRoZSBzZWN0aW9ucyBhbmQgcXVlc3Rpb25zLlxuICAgKiBAcGFyYW0gcXVlc3Rpb25uYWlyZSBUaGUgcXVlc3Rpb25uYWlyZSBkYXRhIHRvIGJ1aWxkIHRoZSBmb3JtIGdyb3VwIG9uLlxuICAgKiBAcmV0dXJucyBBIGZpbHRlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgIHF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsXG4gICAgY3VycmVudFF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsXG4gICAgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXAsXG4gICAgYWRkaXRpb25hbERhdGE/OiBPYmplY3QsXG4gICAgc2tpcEZpbHRlcj86IGJvb2xlYW5cbiAgKToge3NlY3Rpb25zOiBBcnJheTxTZWN0aW9uPjsgZm9ybXM6IEZvcm1Hcm91cH0ge1xuICAgIGNvbnN0IHNlY3Rpb25zID0gc2tpcEZpbHRlciA/XG4gICAgICBxdWVzdGlvbm5haXJlLnNlY3Rpb25zIDpcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJTZWN0aW9ucyhxdWVzdGlvbm5haXJlLnNlY3Rpb25zLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sIGFkZGl0aW9uYWxEYXRhKTtcblxuICAgIGNvbnN0IG5vQ2hhbmdlID0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtICYmIChzZWN0aW9ucyA9PT0gY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMpO1xuXG4gICAgaWYgKG5vQ2hhbmdlICYmICFza2lwRmlsdGVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVzdGlvbm5haXJlRm9ybXMgPSB0aGlzLmdlbmVyYXRlRm9ybXNGb3JTZWN0aW9ucyhzZWN0aW9ucywgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLCBhZGRpdGlvbmFsRGF0YSk7XG4gICAgcmV0dXJuIHtzZWN0aW9uczogc2VjdGlvbnMsIGZvcm1zOiBxdWVzdGlvbm5haXJlRm9ybXN9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbnMoc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCwgYWRkaXRpb25hbERhdGEpIHtcbiAgICBjb25zdCBxdWVzdGlvbm5haXJlRm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuICAgICAgY29uc3Qgc2VjdGlvbkZvcm1zID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbihzZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sIGFkZGl0aW9uYWxEYXRhKTtcbiAgICAgIHF1ZXN0aW9ubmFpcmVGb3Jtcy5hZGRDb250cm9sKHNlY3Rpb24ubmFtZSwgc2VjdGlvbkZvcm1zKTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXN0aW9ubmFpcmVGb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgZm9ybSBncm91cCBiYXNlZCBvbiB0aGUgc2VjdGlvbiBkYXRhLlxuICAgKiBUaGlzIGZvcm0gZ3JvdXAgaGFzIGJlZW4gZmlsdGVyZWQgZG93biBiYXNlZCBvbiB0aGUgY29uZGl0aW9ucyBvZiB0aGUgcXVlc3Rpb25zLlxuICAgKiBAcGFyYW0gc2VjdGlvbiBUaGUgc2VjdGlvbiBkYXRhIHRvIGJ1aWxkIHRoZSBmb3JtIGdyb3VwIG9uLlxuICAgKiBAcmV0dXJucyBBIGZpbHRlcmVkIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlRm9ybXNGb3JTZWN0aW9uKHNlY3Rpb246IFNlY3Rpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwLCBhZGRpdGlvbmFsRGF0YSk6IEZvcm1Hcm91cCB7XG4gICAgY29uc3Qgc2VjdGlvbkZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zKSB7XG4gICAgICBpZiAocXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlLkluZm8pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2VuZXJhdGVDb250cm9sRm9yUXVlc3Rpb24ocXVlc3Rpb24sIHNlY3Rpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSwgYWRkaXRpb25hbERhdGEpO1xuICAgICAgc2VjdGlvbkZvcm1zLmFkZENvbnRyb2wocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb25Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb25Gb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGFzdHJhY3QgZm9ybSBjb250cm9sIGJhc2VkIG9uIHRoZSBxdWVzdGlvbiBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uIGRhdGEgdG8gYnVpbGQgdGhlIGFic3RyYWN0IGNvbnRyb2wgb24uXG4gICAqIEByZXR1cm5zIEFuIGFic3RyYWN0IGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbEZvclF1ZXN0aW9uKHF1ZXN0aW9uOiBRdWVzdGlvbiwgc2VjdGlvbjogU2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXAsIGFkZGl0aW9uYWxEYXRhKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3JzID0gdGhpcy5jb252ZXJ0VmFsaWRhdG9ycyhxdWVzdGlvbi52YWxpZGF0b3JzKTtcbiAgICBsZXQgZGVmYXVsdFZhbHVlID0gcXVlc3Rpb24uZGVmYXVsdFZhbHVlID8gcXVlc3Rpb24uZGVmYXVsdFZhbHVlIDogbnVsbDtcblxuXG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSBudWxsKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0VmFsdWVGb3JTdHJpbmcoXG4gICAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YSk7XG4gICAgICBjb25zb2xlLmxvZygnLS0tLScpO1xuICAgICAgY29uc29sZS5sb2coZGVmYXVsdFZhbHVlKTtcbiAgICAgIHF1ZXN0aW9uLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgY29uc29sZS5sb2coJy0tLS0nKTtcbiAgICB9XG5cblxuXG4gICAgY29uc3QgdGl0bGVSZWdFeDogUmVnRXhwID0gLyhcXHtcXHsoW15cXH1dKylcXH1cXH0pL2dpO1xuICAgIGxldCB0aXRsZVBsYWNlaG9sZGVyc0ZvdW5kID0gbnVsbDtcblxuICAgIGNvbnNvbGUubG9nKCdxdWVzdGlvbicpO1xuICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uKTtcblxuICAgIHdoaWxlICgodGl0bGVQbGFjZWhvbGRlcnNGb3VuZCA9IHRpdGxlUmVnRXguZXhlYyhxdWVzdGlvbi50aXRsZSkpICE9PSBudWxsKSB7XG4gICAgICBsZXQgdGl0bGVSZXBsYWNlbWVudFZhbHVlID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldFZhbHVlRm9yU3RyaW5nKFxuICAgICAgICB0aXRsZVBsYWNlaG9sZGVyc0ZvdW5kWzJdLFxuICAgICAgICBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKCdtMScpO1xuICAgICAgY29uc3QgdGl0bGVSZXBsYWNlUmUgPSBuZXcgUmVnRXhwKCdcXHtcXHsnICsgdGl0bGVQbGFjZWhvbGRlcnNGb3VuZFsyXSArICdcXH1cXH0nLCAnZycpO1xuXG4gICAgICB0aXRsZVJlcGxhY2VtZW50VmFsdWUgPSB0aXRsZVJlcGxhY2VtZW50VmFsdWUucmVwbGFjZShcbiAgICAgICAgL1xcd1xcUyovZyxcbiAgICAgICAgZnVuY3Rpb24odHh0KSB7XG4gICAgICAgICAgcmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHF1ZXN0aW9uLnRpdGxlID0gcXVlc3Rpb24udGl0bGUucmVwbGFjZSh0aXRsZVJlcGxhY2VSZSwgdGl0bGVSZXBsYWNlbWVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJUaXRsZVJlZ0V4OiBSZWdFeHAgPSAvKFxce1xceyhbXlxcfV0rKVxcfVxcfSkvZ2k7XG4gICAgbGV0IHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmQgPSBudWxsO1xuXG4gICAgd2hpbGUgKChzdWJUaXRsZVBsYWNlaG9sZGVyc0ZvdW5kID0gc3ViVGl0bGVSZWdFeC5leGVjKHF1ZXN0aW9uLnN1YnRpdGxlKSkgIT09IG51bGwpIHtcbiAgICAgIGxldCBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0VmFsdWVGb3JTdHJpbmcoXG4gICAgICAgIHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmRbMl0sXG4gICAgICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSxcbiAgICAgICAgYWRkaXRpb25hbERhdGEpO1xuICAgICAgY29uc29sZS5sb2coJ20yJyk7XG4gICAgICBjb25zdCBzdWJUaXRsZVJlcGxhY2VSZSA9IG5ldyBSZWdFeHAoJ1xce1xceycgKyBzdWJUaXRsZVBsYWNlaG9sZGVyc0ZvdW5kWzJdICsgJ1xcfVxcfScsICdnJyk7XG4gICAgICBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUgPSBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUucmVwbGFjZShcbiAgICAgICAgL1xcd1xcUyovZyxcbiAgICAgICAgZnVuY3Rpb24odHh0KSB7XG4gICAgICAgICAgcmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHF1ZXN0aW9uLnN1YnRpdGxlID0gcXVlc3Rpb24uc3VidGl0bGUucmVwbGFjZShzdWJUaXRsZVJlcGxhY2VSZSwgc3ViVGl0bGVSZXBsYWNlbWVudFZhbHVlKTtcbiAgICB9XG5cblxuICAgIHN3aXRjaCAocXVlc3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBRdWVzdGlvblR5cGUuUmVwZWF0ZXI6XG4gICAgICAgIGNvbnN0IG5ld0FycmF5ID0gdGhpcy5mYi5hcnJheShbXSwgY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcnJheSA9IGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSA/IChjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKSBhcyBGb3JtQXJyYXkpIDogZmFsc2U7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRBcnJheSAmJiBxdWVzdGlvbi5maWx0ZXJlZFJlcGVhdGVyUXVlc3Rpb25zKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIGN1cnJlbnRBcnJheS5jb250cm9scykge1xuXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRBcnJheS5jb250cm9scy5pbmRleE9mKGNvbnRyb2wpO1xuXG4gICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFF1ZXN0aW9ucyA9IHF1ZXN0aW9uLmZpbHRlcmVkUmVwZWF0ZXJRdWVzdGlvbnNbaW5kZXhdO1xuXG4gICAgICAgICAgICBpZiAoIWZpbHRlcmVkUXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFF1ZXN0aW9uTmFtZXMgPSBmaWx0ZXJlZFF1ZXN0aW9ucy5tYXAoeCA9PiB4Lm5hbWUpO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRPdXRRdWVzdGlvbnMgPSBxdWVzdGlvbi5yZXBlYXRlclF1ZXN0aW9ucy5maWx0ZXIoeCA9PiAhZmlsdGVyZWRRdWVzdGlvbk5hbWVzLmluY2x1ZGVzKHgubmFtZSkpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlcmVkT3V0UXVlc3Rpb24gb2YgZmlsdGVyZWRPdXRRdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRDb250cm9sID0gY29udHJvbC5nZXQoZmlsdGVyZWRPdXRRdWVzdGlvbi5uYW1lKTtcbiAgICAgICAgICAgICAgY2hpbGRDb250cm9sLnNldFZhbGlkYXRvcnMoW10pO1xuICAgICAgICAgICAgICBjaGlsZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXJlZFF1ZXN0aW9uIG9mIGZpbHRlcmVkUXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ29udHJvbCA9IGNvbnRyb2wuZ2V0KGZpbHRlcmVkUXVlc3Rpb24ubmFtZSk7XG5cbiAgICAgICAgICAgICAgaWYgKGNoaWxkQ29udHJvbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlJ3MgYSB2YWx1ZSBqdXN0IHNraXAgaXQsIG5vIG5lZWQgdG8gcmVkbyB0aGUgdmFsaWRhdG9ycyBlYWNoIHRpbWUuXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3JzID0gdGhpcy5jb252ZXJ0VmFsaWRhdG9ycyhmaWx0ZXJlZFF1ZXN0aW9uLnZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgICBjaGlsZENvbnRyb2wuc2V0VmFsaWRhdG9ycyhjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgICAgICAgICAgY2hpbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRBcnJheSA/IGN1cnJlbnRBcnJheSA6IG5ld0FycmF5O1xuICAgICAgY2FzZSBRdWVzdGlvblR5cGUuQ2hlY2tsaXN0OlxuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUdyb3VwRm9yQ2hlY2tsaXN0KHF1ZXN0aW9uLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgIGNhc2UgUXVlc3Rpb25UeXBlLlNsaWRlcjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbChkZWZhdWx0VmFsdWUsIHsgdmFsaWRhdG9yczogY29udmVydGVkVmFsaWRhdG9ycyB9KTsgLy8gUmVtb3ZlIHVwZGF0ZSBvbiBibHVyIGZvciBzbGlkZXJzLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbChkZWZhdWx0VmFsdWUsIHsgdmFsaWRhdG9yczogY29udmVydGVkVmFsaWRhdG9ycywgdXBkYXRlT246ICdibHVyJyB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBmb3JtIGdyb3VwIGZvciBhIGNoZWNrbGlzdCBxdWVzdGlvbi5cbiAgICogQHBhcmFtIHF1ZXN0aW9uIFRoZSBxdWVzdGlvbi4gTXVzdCBiZSBvZiB0eXBlIGNoZWNrbGlzdCBvciBlbHNlIG51bGwgaXMgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIEEgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVHcm91cEZvckNoZWNrbGlzdChxdWVzdGlvbjogUXVlc3Rpb24sIGNvbnZlcnRlZFZhbGlkYXRvcnMpIHtcbiAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLkNoZWNrbGlzdCB8fCBxdWVzdGlvbi5jaGVja2xpc3RJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrbGlzdEZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IGNoZWNrbGlzdEl0ZW0gb2YgcXVlc3Rpb24uY2hlY2tsaXN0SXRlbXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrbGlzdEl0ZW1Db250cm9sID0gdGhpcy5mYi5jb250cm9sKG51bGwsIGNvbnZlcnRlZFZhbGlkYXRvcnMpO1xuICAgICAgY2hlY2tsaXN0Rm9ybXMuYWRkQ29udHJvbChjaGVja2xpc3RJdGVtLm5hbWUsIGNoZWNrbGlzdEl0ZW1Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoZWNrbGlzdEZvcm1zO1xuICB9XG5cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBmb3JtIHRlbXBsYXRlIGZvciBhIHJlcGVhdGVyIHF1ZXN0aW9uLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uLiBNdXN0IGJlIG9mIHR5cGUgcmVwZWF0ZXIgb3IgZWxzZSBudWxsIGlzIHJldHVybmVkLlxuICAgKiBAcmV0dXJucyBBIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVGb3Jtc0ZvclJlcGVhdGVyKHF1ZXN0aW9uOiBRdWVzdGlvbiwgaW5kZXg/OiBhbnkpOiBGb3JtR3JvdXAge1xuICAgIGlmIChxdWVzdGlvbi50eXBlICE9PSBRdWVzdGlvblR5cGUuUmVwZWF0ZXIgfHwgcXVlc3Rpb24ucmVwZWF0ZXJRdWVzdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnUXVlc3Rpb24gaXNudCBhIHJlcGVhdGVyIG9yIGhhcyBubyBxdWVzdGlvbnMsIHJldHVybmluZyBudWxsJyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCByZXBlYXRlckZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcblxuICAgIGZvciAoY29uc3QgcmVwZWF0ZXJRdWVzdGlvbiBvZiBxdWVzdGlvbi5yZXBlYXRlclF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgcmVwZWF0ZXJRdWVzdGlvbkNvbnRyb2wgPSB0aGlzLmdlbmVyYXRlQ29udHJvbEZvclJlcGVhdGVyUXVlc3Rpb24ocmVwZWF0ZXJRdWVzdGlvbik7XG4gICAgICByZXBlYXRlckZvcm1zLmFkZENvbnRyb2wocmVwZWF0ZXJRdWVzdGlvbi5uYW1lLCByZXBlYXRlclF1ZXN0aW9uQ29udHJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcGVhdGVyRm9ybXM7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgY29udHJvbCBmb3IgYSByZXBlYXRlcnMgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSByZXBlYXRlclF1ZXN0aW9uIEEgcmVwZWF0ZXIgcXVlc3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIGFic3RyYWN0IGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbEZvclJlcGVhdGVyUXVlc3Rpb24ocmVwZWF0ZXJRdWVzdGlvbjogUmVwZWF0ZXJRdWVzdGlvbik6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9ycyA9IHRoaXMuY29udmVydFZhbGlkYXRvcnMocmVwZWF0ZXJRdWVzdGlvbi52YWxpZGF0b3JzKTtcbiAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKG51bGwsIHsgdmFsaWRhdG9yczogY29udmVydGVkVmFsaWRhdG9ycywgdXBkYXRlT246IHJlcGVhdGVyUXVlc3Rpb24udHlwZSA9PT0gJ3NlbGVjdCcgPyAnY2hhbmdlJyA6ICdibHVyJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiB2YWxpZGF0b3JzIGludG8gZm9ybSB2YWxpZGF0b3JzLlxuICAgKiBAcGFyYW0gdmFsaWRhdG9ycyBUaGUgdW5jb3ZlcnRlZCBhcnJheSBvZiB2YWxpZGF0b3JzLlxuICAgKiBAcmV0dXJucyBBIGNvbnZlcmVkIGFycmF5IG9mIGZvcm0gdmFsaWRhdG9ycy5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydFZhbGlkYXRvcnModmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yPik6IEFycmF5PFZhbGlkYXRvckZuPiB7XG4gICAgaWYgKCF2YWxpZGF0b3JzIHx8IHZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnM6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xuICAgIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvciA9IHRoaXMuY29udmVydFZhbGlkYXRvcih2YWxpZGF0b3IpO1xuICAgICAgaWYgKGNvbnZlcnRlZFZhbGlkYXRvcikge1xuICAgICAgICBjb252ZXJ0ZWRWYWxpZGF0b3JzLnB1c2goY29udmVydGVkVmFsaWRhdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRlZFZhbGlkYXRvcnM7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzaW5nbGUgdmFsaWRhdG9yIGludG8gYSBmb3JtIHZhbGlkYXRvci5cbiAgICogQHBhcmFtIHZhbGlkYXRvciBUaGUgdW5jb252ZXJ0ZWQgdmFsaWRhdG9yLlxuICAgKiBAcmV0dXJucyBBIGNvbnZlcnRlZCBmb3JtIHZhbGlkYXRvci5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydFZhbGlkYXRvcih2YWxpZGF0b3I6IFZhbGlkYXRvcik6IFZhbGlkYXRvckZuIHwgbnVsbCB7XG4gICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5SZXF1aXJlZDpcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGUgZm9ybXMgZm9yIHJlcGVhdGVycyBmcm9tIHNhdmVkIHN0YXRlLlxuICAgKiBAcGFyYW0gc2F2ZWRTdGF0ZSBUaGUgc2F2ZWQgc3RhdGUgdG8gbG9hZC5cbiAgICogQHBhcmFtIHNlY3Rpb25zIFRoZSBzZWN0aW9ucyBhbHJlYWR5IGdlbmVyYXRlZCBieSB0aGUgZm9ybSBjb25zdHJ1Y3Rvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RSZXBlYXRlckZyb21zRnJvbVN0YXRlKHNhdmVkU3RhdGU6IGFueSwgc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCkge1xuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLlJlcGVhdGVyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBlYXRlckFycmF5ID0gc2F2ZWRTdGF0ZVtzZWN0aW9uLm5hbWVdW3F1ZXN0aW9uLm5hbWVdO1xuICAgICAgICBpZiAoIXJlcGVhdGVyQXJyYXkgfHwgcmVwZWF0ZXJBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcGVhdGVyRm9ybUFycmF5ID0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmdldChbc2VjdGlvbi5uYW1lLCBxdWVzdGlvbi5uYW1lXSkgYXMgRm9ybUFycmF5O1xuXG4gICAgICAgIGlmIChyZXBlYXRlckZvcm1BcnJheS5jb250cm9scy5sZW5ndGggPT09IHJlcGVhdGVyQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgZWFjaCBpdGVtIHRoYXQgdXNlZCB0byBiZSB0aGVyZSBwdXNoIGEgbmV3IGVtcHR5IHRlbXBsYXRlIHRoZXJlIHRvIGJlIHBvcHVsYXRlZC5cbiAgICAgICAgZm9yIChjb25zdCByZXBlYXRlckl0ZW0gb2YgcmVwZWF0ZXJBcnJheSkge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVwZWF0ZXJBcnJheS5pbmRleE9mKHJlcGVhdGVySXRlbSk7XG4gICAgICAgICAgY29uc3QgcmVwZWF0ZXJJdGVtVGVtcGxhdGUgPSB0aGlzLmdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcihxdWVzdGlvbiwgaW5kZXgpO1xuICAgICAgICAgIHJlcGVhdGVyRm9ybUFycmF5LnB1c2gocmVwZWF0ZXJJdGVtVGVtcGxhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -335,8 +335,6 @@ class FormConstructorService {
|
|
|
335
335
|
* @author Will Poulson
|
|
336
336
|
*/
|
|
337
337
|
generateFormsForQuestionnaire(questionnaire, currentQuestionnaire, currentQuestionnaireForm, additionalData, skipFilter) {
|
|
338
|
-
console.log('zero');
|
|
339
|
-
console.log(additionalData);
|
|
340
338
|
const sections = skipFilter ?
|
|
341
339
|
questionnaire.sections :
|
|
342
340
|
this.filterService.filterSections(questionnaire.sections, currentQuestionnaireForm, additionalData);
|
|
@@ -348,8 +346,6 @@ class FormConstructorService {
|
|
|
348
346
|
return { sections: sections, forms: questionnaireForms };
|
|
349
347
|
}
|
|
350
348
|
generateFormsForSections(sections, currentQuestionnaireForm, additionalData) {
|
|
351
|
-
console.log('one');
|
|
352
|
-
console.log(additionalData);
|
|
353
349
|
const questionnaireForms = this.fb.group({});
|
|
354
350
|
for (const section of sections) {
|
|
355
351
|
const sectionForms = this.generateFormsForSection(section, currentQuestionnaireForm, additionalData);
|
|
@@ -365,8 +361,6 @@ class FormConstructorService {
|
|
|
365
361
|
* @author Will Poulson
|
|
366
362
|
*/
|
|
367
363
|
generateFormsForSection(section, currentQuestionnaireForm, additionalData) {
|
|
368
|
-
console.log('two');
|
|
369
|
-
console.log(additionalData);
|
|
370
364
|
const sectionForms = this.fb.group({});
|
|
371
365
|
for (const question of section.questions) {
|
|
372
366
|
if (question.type === QuestionType.Info) {
|
|
@@ -386,16 +380,17 @@ class FormConstructorService {
|
|
|
386
380
|
generateControlForQuestion(question, section, currentQuestionnaireForm, additionalData) {
|
|
387
381
|
const convertedValidators = this.convertValidators(question.validators);
|
|
388
382
|
let defaultValue = question.defaultValue ? question.defaultValue : null;
|
|
389
|
-
console.log('three');
|
|
390
|
-
console.log(additionalData);
|
|
391
383
|
if (defaultValue !== null) {
|
|
392
384
|
defaultValue = this.filterService.getValueForString(defaultValue, currentQuestionnaireForm, additionalData);
|
|
385
|
+
console.log('----');
|
|
386
|
+
console.log(defaultValue);
|
|
387
|
+
question.defaultValue = defaultValue;
|
|
388
|
+
currentQuestionnaireForm.setValue(defaultValue);
|
|
389
|
+
console.log('----');
|
|
393
390
|
}
|
|
394
|
-
console.log('default');
|
|
395
|
-
console.log(defaultValue);
|
|
396
391
|
const titleRegEx = /(\{\{([^\}]+)\}\})/gi;
|
|
397
392
|
let titlePlaceholdersFound = null;
|
|
398
|
-
console.log('
|
|
393
|
+
console.log('question');
|
|
399
394
|
console.log(question);
|
|
400
395
|
while ((titlePlaceholdersFound = titleRegEx.exec(question.title)) !== null) {
|
|
401
396
|
let titleReplacementValue = this.filterService.getValueForString(titlePlaceholdersFound[2], currentQuestionnaireForm, additionalData);
|
|
@@ -417,9 +412,6 @@ class FormConstructorService {
|
|
|
417
412
|
});
|
|
418
413
|
question.subtitle = question.subtitle.replace(subTitleReplaceRe, subTitleReplacementValue);
|
|
419
414
|
}
|
|
420
|
-
console.log('final');
|
|
421
|
-
console.log(question);
|
|
422
|
-
console.log('====');
|
|
423
415
|
switch (question.type) {
|
|
424
416
|
case QuestionType.Repeater:
|
|
425
417
|
const newArray = this.fb.array([], convertedValidators);
|