@glowgreen/gg-questionnaire-v2 0.0.111 → 0.0.112
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 +17 -0
- 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 +18 -1
- package/fesm2015/glowgreen-gg-questionnaire-v2.js +17 -0
- package/fesm2015/glowgreen-gg-questionnaire-v2.js.map +1 -1
- package/package.json +1 -1
|
@@ -19,6 +19,8 @@ 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);
|
|
22
24
|
const sections = skipFilter ?
|
|
23
25
|
questionnaire.sections :
|
|
24
26
|
this.filterService.filterSections(questionnaire.sections, currentQuestionnaireForm, additionalData);
|
|
@@ -30,6 +32,8 @@ export class FormConstructorService {
|
|
|
30
32
|
return { sections: sections, forms: questionnaireForms };
|
|
31
33
|
}
|
|
32
34
|
generateFormsForSections(sections, currentQuestionnaireForm, additionalData) {
|
|
35
|
+
console.log('one');
|
|
36
|
+
console.log(additionalData);
|
|
33
37
|
const questionnaireForms = this.fb.group({});
|
|
34
38
|
for (const section of sections) {
|
|
35
39
|
const sectionForms = this.generateFormsForSection(section, currentQuestionnaireForm, additionalData);
|
|
@@ -45,6 +49,8 @@ export class FormConstructorService {
|
|
|
45
49
|
* @author Will Poulson
|
|
46
50
|
*/
|
|
47
51
|
generateFormsForSection(section, currentQuestionnaireForm, additionalData) {
|
|
52
|
+
console.log('two');
|
|
53
|
+
console.log(additionalData);
|
|
48
54
|
const sectionForms = this.fb.group({});
|
|
49
55
|
for (const question of section.questions) {
|
|
50
56
|
if (question.type === QuestionType.Info) {
|
|
@@ -64,13 +70,20 @@ export class FormConstructorService {
|
|
|
64
70
|
generateControlForQuestion(question, section, currentQuestionnaireForm, additionalData) {
|
|
65
71
|
const convertedValidators = this.convertValidators(question.validators);
|
|
66
72
|
let defaultValue = question.defaultValue ? question.defaultValue : null;
|
|
73
|
+
console.log('three');
|
|
74
|
+
console.log(additionalData);
|
|
67
75
|
if (defaultValue !== null) {
|
|
68
76
|
defaultValue = this.filterService.getValueForString(defaultValue, currentQuestionnaireForm, additionalData);
|
|
69
77
|
}
|
|
78
|
+
console.log('default');
|
|
79
|
+
console.log(defaultValue);
|
|
70
80
|
const titleRegEx = /(\{\{([^\}]+)\}\})/gi;
|
|
71
81
|
let titlePlaceholdersFound = null;
|
|
82
|
+
console.log('default');
|
|
83
|
+
console.log(question);
|
|
72
84
|
while ((titlePlaceholdersFound = titleRegEx.exec(question.title)) !== null) {
|
|
73
85
|
let titleReplacementValue = this.filterService.getValueForString(titlePlaceholdersFound[2], currentQuestionnaireForm, additionalData);
|
|
86
|
+
console.log('m1');
|
|
74
87
|
const titleReplaceRe = new RegExp('\{\{' + titlePlaceholdersFound[2] + '\}\}', 'g');
|
|
75
88
|
titleReplacementValue = titleReplacementValue.replace(/\w\S*/g, function (txt) {
|
|
76
89
|
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
@@ -81,12 +94,16 @@ export class FormConstructorService {
|
|
|
81
94
|
let subTitlePlaceholdersFound = null;
|
|
82
95
|
while ((subTitlePlaceholdersFound = subTitleRegEx.exec(question.subtitle)) !== null) {
|
|
83
96
|
let subTitleReplacementValue = this.filterService.getValueForString(subTitlePlaceholdersFound[2], currentQuestionnaireForm, additionalData);
|
|
97
|
+
console.log('m2');
|
|
84
98
|
const subTitleReplaceRe = new RegExp('\{\{' + subTitlePlaceholdersFound[2] + '\}\}', 'g');
|
|
85
99
|
subTitleReplacementValue = subTitleReplacementValue.replace(/\w\S*/g, function (txt) {
|
|
86
100
|
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
87
101
|
});
|
|
88
102
|
question.subtitle = question.subtitle.replace(subTitleReplaceRe, subTitleReplacementValue);
|
|
89
103
|
}
|
|
104
|
+
console.log('final');
|
|
105
|
+
console.log(question);
|
|
106
|
+
console.log('====');
|
|
90
107
|
switch (question.type) {
|
|
91
108
|
case QuestionType.Repeater:
|
|
92
109
|
const newArray = this.fb.array([], convertedValidators);
|
|
@@ -246,4 +263,4 @@ FormConstructorService.ctorParameters = () => [
|
|
|
246
263
|
{ type: FormBuilder },
|
|
247
264
|
{ type: FilterService }
|
|
248
265
|
];
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2ctcXVlc3Rpb25uYWlyZS12Mi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQXdELFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBSTFILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBUS9ELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxFQUFlLEVBQ2YsYUFBNEI7UUFENUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFTDs7Ozs7O09BTUc7SUFDSSw2QkFBNkIsQ0FDbEMsYUFBNEIsRUFDNUIsb0JBQW1DLEVBQ25DLHdCQUFtQyxFQUNuQyxjQUF1QixFQUN2QixVQUFvQjtRQUVwQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUMzQixhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUV0RyxNQUFNLFFBQVEsR0FBRyx3QkFBd0IsSUFBSSxDQUFDLFFBQVEsS0FBSyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxRixJQUFJLFFBQVEsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMzQixPQUFPLElBQUksQ0FB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LFFBQVEsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO2dCQUN4QyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFFBQVEsRUFBRTtvQkFDM0MsU0FBUztpQkFDVjtnQkFFRCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDaEQsU0FBUztpQkFDVjtnQkFFRCxNQUFNLGlCQUFpQixHQUFHLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFjLENBQUM7Z0JBRW5HLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsTUFBTSxFQUFFO29CQUM5RCxTQUFTO2lCQUNWO2dCQUVELHVGQUF1RjtnQkFDdkYsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7b0JBQ3hDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2xELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDNUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7aUJBQzlDO2FBQ0Y7U0FDRjtJQUNILENBQUM7Ozs7WUF6U0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFkUSxXQUFXO1lBS1gsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzLCBGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWN0aW9uJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9xdWVzdGlvbm5haXJlJztcbmltcG9ydCB7IFF1ZXN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3F1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBWYWxpZGF0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3ZhbGlkYXRpb24tdHlwZS5lbnVtJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFJlcGVhdGVyUXVlc3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcGVhdGVyLXF1ZXN0aW9uJztcbmltcG9ydCB7IENoZWNrbGlzdEl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NoZWNrbGlzdC1pdGVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNvbnN0cnVjdG9yU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBmb3JtIGdyb3VwIGJhc2VkIG9uIHRoZSBxdWVzdGlvbm5haXJlIGRhdGEuXG4gICAqIFRoaXMgZm9ybSBncm91cCBoYXMgYmVlbiBmaWx0ZXJlZCBkb3duIGJhc2VkIG9uIHRoZSBjb25kaXRpb25zIG9mIHRoZSBzZWN0aW9ucyBhbmQgcXVlc3Rpb25zLlxuICAgKiBAcGFyYW0gcXVlc3Rpb25uYWlyZSBUaGUgcXVlc3Rpb25uYWlyZSBkYXRhIHRvIGJ1aWxkIHRoZSBmb3JtIGdyb3VwIG9uLlxuICAgKiBAcmV0dXJucyBBIGZpbHRlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlRm9ybXNGb3JRdWVzdGlvbm5haXJlKFxuICAgIHF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsXG4gICAgY3VycmVudFF1ZXN0aW9ubmFpcmU6IFF1ZXN0aW9ubmFpcmUsXG4gICAgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXAsXG4gICAgYWRkaXRpb25hbERhdGE/OiBPYmplY3QsXG4gICAgc2tpcEZpbHRlcj86IGJvb2xlYW5cbiAgKToge3NlY3Rpb25zOiBBcnJheTxTZWN0aW9uPjsgZm9ybXM6IEZvcm1Hcm91cH0ge1xuICAgIGNvbnN0IHNlY3Rpb25zID0gc2tpcEZpbHRlciA/XG4gICAgICBxdWVzdGlvbm5haXJlLnNlY3Rpb25zIDpcbiAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJTZWN0aW9ucyhxdWVzdGlvbm5haXJlLnNlY3Rpb25zLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sIGFkZGl0aW9uYWxEYXRhKTtcblxuICAgIGNvbnN0IG5vQ2hhbmdlID0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtICYmIChzZWN0aW9ucyA9PT0gY3VycmVudFF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMpO1xuXG4gICAgaWYgKG5vQ2hhbmdlICYmICFza2lwRmlsdGVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVzdGlvbm5haXJlRm9ybXMgPSB0aGlzLmdlbmVyYXRlRm9ybXNGb3JTZWN0aW9ucyhzZWN0aW9ucywgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLCBhZGRpdGlvbmFsRGF0YSk7XG4gICAgcmV0dXJuIHtzZWN0aW9uczogc2VjdGlvbnMsIGZvcm1zOiBxdWVzdGlvbm5haXJlRm9ybXN9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbnMoc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCwgYWRkaXRpb25hbERhdGEpIHtcbiAgICBjb25zdCBxdWVzdGlvbm5haXJlRm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuICAgICAgY29uc3Qgc2VjdGlvbkZvcm1zID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbihzZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sIGFkZGl0aW9uYWxEYXRhKTtcbiAgICAgIHF1ZXN0aW9ubmFpcmVGb3Jtcy5hZGRDb250cm9sKHNlY3Rpb24ubmFtZSwgc2VjdGlvbkZvcm1zKTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXN0aW9ubmFpcmVGb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgZm9ybSBncm91cCBiYXNlZCBvbiB0aGUgc2VjdGlvbiBkYXRhLlxuICAgKiBUaGlzIGZvcm0gZ3JvdXAgaGFzIGJlZW4gZmlsdGVyZWQgZG93biBiYXNlZCBvbiB0aGUgY29uZGl0aW9ucyBvZiB0aGUgcXVlc3Rpb25zLlxuICAgKiBAcGFyYW0gc2VjdGlvbiBUaGUgc2VjdGlvbiBkYXRhIHRvIGJ1aWxkIHRoZSBmb3JtIGdyb3VwIG9uLlxuICAgKiBAcmV0dXJucyBBIGZpbHRlcmVkIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlRm9ybXNGb3JTZWN0aW9uKHNlY3Rpb246IFNlY3Rpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwLCBhZGRpdGlvbmFsRGF0YSk6IEZvcm1Hcm91cCB7XG4gICAgY29uc3Qgc2VjdGlvbkZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zKSB7XG4gICAgICBpZiAocXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlLkluZm8pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2VuZXJhdGVDb250cm9sRm9yUXVlc3Rpb24ocXVlc3Rpb24sIHNlY3Rpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSwgYWRkaXRpb25hbERhdGEpO1xuICAgICAgc2VjdGlvbkZvcm1zLmFkZENvbnRyb2wocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb25Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb25Gb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGFzdHJhY3QgZm9ybSBjb250cm9sIGJhc2VkIG9uIHRoZSBxdWVzdGlvbiBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uIGRhdGEgdG8gYnVpbGQgdGhlIGFic3RyYWN0IGNvbnRyb2wgb24uXG4gICAqIEByZXR1cm5zIEFuIGFic3RyYWN0IGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbEZvclF1ZXN0aW9uKHF1ZXN0aW9uOiBRdWVzdGlvbiwgc2VjdGlvbjogU2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXAsIGFkZGl0aW9uYWxEYXRhKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3JzID0gdGhpcy5jb252ZXJ0VmFsaWRhdG9ycyhxdWVzdGlvbi52YWxpZGF0b3JzKTtcbiAgICBsZXQgZGVmYXVsdFZhbHVlID0gcXVlc3Rpb24uZGVmYXVsdFZhbHVlID8gcXVlc3Rpb24uZGVmYXVsdFZhbHVlIDogbnVsbDtcblxuICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IHRoaXMuZmlsdGVyU2VydmljZS5nZXRWYWx1ZUZvclN0cmluZyhcbiAgICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgICBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCB0aXRsZVJlZ0V4OiBSZWdFeHAgPSAvKFxce1xceyhbXlxcfV0rKVxcfVxcfSkvZ2k7XG4gICAgbGV0IHRpdGxlUGxhY2Vob2xkZXJzRm91bmQgPSBudWxsO1xuXG4gICAgd2hpbGUgKCh0aXRsZVBsYWNlaG9sZGVyc0ZvdW5kID0gdGl0bGVSZWdFeC5leGVjKHF1ZXN0aW9uLnRpdGxlKSkgIT09IG51bGwpIHtcbiAgICAgIGxldCB0aXRsZVJlcGxhY2VtZW50VmFsdWUgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0VmFsdWVGb3JTdHJpbmcoXG4gICAgICAgIHRpdGxlUGxhY2Vob2xkZXJzRm91bmRbMl0sXG4gICAgICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSxcbiAgICAgICAgYWRkaXRpb25hbERhdGEpO1xuXG4gICAgICBjb25zdCB0aXRsZVJlcGxhY2VSZSA9IG5ldyBSZWdFeHAoJ1xce1xceycgKyB0aXRsZVBsYWNlaG9sZGVyc0ZvdW5kWzJdICsgJ1xcfVxcfScsICdnJyk7XG5cbiAgICAgIHRpdGxlUmVwbGFjZW1lbnRWYWx1ZSA9IHRpdGxlUmVwbGFjZW1lbnRWYWx1ZS5yZXBsYWNlKFxuICAgICAgICAvXFx3XFxTKi9nLFxuICAgICAgICBmdW5jdGlvbih0eHQpIHtcbiAgICAgICAgICByZXR1cm4gdHh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcXVlc3Rpb24udGl0bGUgPSBxdWVzdGlvbi50aXRsZS5yZXBsYWNlKHRpdGxlUmVwbGFjZVJlLCB0aXRsZVJlcGxhY2VtZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1YlRpdGxlUmVnRXg6IFJlZ0V4cCA9IC8oXFx7XFx7KFteXFx9XSspXFx9XFx9KS9naTtcbiAgICBsZXQgc3ViVGl0bGVQbGFjZWhvbGRlcnNGb3VuZCA9IG51bGw7XG5cbiAgICB3aGlsZSAoKHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmQgPSBzdWJUaXRsZVJlZ0V4LmV4ZWMocXVlc3Rpb24uc3VidGl0bGUpKSAhPT0gbnVsbCkge1xuICAgICAgbGV0IHN1YlRpdGxlUmVwbGFjZW1lbnRWYWx1ZSA9IHRoaXMuZmlsdGVyU2VydmljZS5nZXRWYWx1ZUZvclN0cmluZyhcbiAgICAgICAgc3ViVGl0bGVQbGFjZWhvbGRlcnNGb3VuZFsyXSxcbiAgICAgICAgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YSk7XG5cbiAgICAgIGNvbnN0IHN1YlRpdGxlUmVwbGFjZVJlID0gbmV3IFJlZ0V4cCgnXFx7XFx7JyArIHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmRbMl0gKyAnXFx9XFx9JywgJ2cnKTtcbiAgICAgIHN1YlRpdGxlUmVwbGFjZW1lbnRWYWx1ZSA9IHN1YlRpdGxlUmVwbGFjZW1lbnRWYWx1ZS5yZXBsYWNlKFxuICAgICAgICAvXFx3XFxTKi9nLFxuICAgICAgICBmdW5jdGlvbih0eHQpIHtcbiAgICAgICAgICByZXR1cm4gdHh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgcXVlc3Rpb24uc3VidGl0bGUgPSBxdWVzdGlvbi5zdWJ0aXRsZS5yZXBsYWNlKHN1YlRpdGxlUmVwbGFjZVJlLCBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUpO1xuICAgIH1cblxuXG4gICAgc3dpdGNoIChxdWVzdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIFF1ZXN0aW9uVHlwZS5SZXBlYXRlcjpcbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSB0aGlzLmZiLmFycmF5KFtdLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgICAgY29uc3QgY3VycmVudEFycmF5ID0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtID8gKGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoW3NlY3Rpb24ubmFtZSwgcXVlc3Rpb24ubmFtZV0pIGFzIEZvcm1BcnJheSkgOiBmYWxzZTtcblxuICAgICAgICBpZiAoY3VycmVudEFycmF5ICYmIHF1ZXN0aW9uLmZpbHRlcmVkUmVwZWF0ZXJRdWVzdGlvbnMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgY3VycmVudEFycmF5LmNvbnRyb2xzKSB7XG5cbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gY3VycmVudEFycmF5LmNvbnRyb2xzLmluZGV4T2YoY29udHJvbCk7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUXVlc3Rpb25zID0gcXVlc3Rpb24uZmlsdGVyZWRSZXBlYXRlclF1ZXN0aW9uc1tpbmRleF07XG5cbiAgICAgICAgICAgIGlmICghZmlsdGVyZWRRdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUXVlc3Rpb25OYW1lcyA9IGZpbHRlcmVkUXVlc3Rpb25zLm1hcCh4ID0+IHgubmFtZSk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE91dFF1ZXN0aW9ucyA9IHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zLmZpbHRlcih4ID0+ICFmaWx0ZXJlZFF1ZXN0aW9uTmFtZXMuaW5jbHVkZXMoeC5uYW1lKSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyZWRPdXRRdWVzdGlvbiBvZiBmaWx0ZXJlZE91dFF1ZXN0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZENvbnRyb2wgPSBjb250cm9sLmdldChmaWx0ZXJlZE91dFF1ZXN0aW9uLm5hbWUpO1xuICAgICAgICAgICAgICBjaGlsZENvbnRyb2wuc2V0VmFsaWRhdG9ycyhbXSk7XG4gICAgICAgICAgICAgIGNoaWxkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbHRlcmVkUXVlc3Rpb24gb2YgZmlsdGVyZWRRdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRDb250cm9sID0gY29udHJvbC5nZXQoZmlsdGVyZWRRdWVzdGlvbi5uYW1lKTtcblxuICAgICAgICAgICAgICBpZiAoY2hpbGRDb250cm9sLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhIHZhbHVlIGp1c3Qgc2tpcCBpdCwgbm8gbmVlZCB0byByZWRvIHRoZSB2YWxpZGF0b3JzIGVhY2ggdGltZS5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKGZpbHRlcmVkUXVlc3Rpb24udmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgIGNoaWxkQ29udHJvbC5zZXRWYWxpZGF0b3JzKGNvbnZlcnRlZFZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgICBjaGlsZENvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3VycmVudEFycmF5ID8gY3VycmVudEFycmF5IDogbmV3QXJyYXk7XG4gICAgICBjYXNlIFF1ZXN0aW9uVHlwZS5DaGVja2xpc3Q6XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlR3JvdXBGb3JDaGVja2xpc3QocXVlc3Rpb24sIGNvbnZlcnRlZFZhbGlkYXRvcnMpO1xuICAgICAgY2FzZSBRdWVzdGlvblR5cGUuU2xpZGVyOlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKGRlZmF1bHRWYWx1ZSwgeyB2YWxpZGF0b3JzOiBjb252ZXJ0ZWRWYWxpZGF0b3JzIH0pOyAvLyBSZW1vdmUgdXBkYXRlIG9uIGJsdXIgZm9yIHNsaWRlcnMuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKGRlZmF1bHRWYWx1ZSwgeyB2YWxpZGF0b3JzOiBjb252ZXJ0ZWRWYWxpZGF0b3JzLCB1cGRhdGVPbjogJ2JsdXInIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGZvcm0gZ3JvdXAgZm9yIGEgY2hlY2tsaXN0IHF1ZXN0aW9uLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uLiBNdXN0IGJlIG9mIHR5cGUgY2hlY2tsaXN0IG9yIGVsc2UgbnVsbCBpcyByZXR1cm5lZC5cbiAgICogQHJldHVybnMgQSBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUdyb3VwRm9yQ2hlY2tsaXN0KHF1ZXN0aW9uOiBRdWVzdGlvbiwgY29udmVydGVkVmFsaWRhdG9ycykge1xuICAgIGlmIChxdWVzdGlvbi50eXBlICE9PSBRdWVzdGlvblR5cGUuQ2hlY2tsaXN0IHx8IHF1ZXN0aW9uLmNoZWNrbGlzdEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tsaXN0Rm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3QgY2hlY2tsaXN0SXRlbSBvZiBxdWVzdGlvbi5jaGVja2xpc3RJdGVtcykge1xuICAgICAgY29uc3QgY2hlY2tsaXN0SXRlbUNvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2wobnVsbCwgY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICBjaGVja2xpc3RGb3Jtcy5hZGRDb250cm9sKGNoZWNrbGlzdEl0ZW0ubmFtZSwgY2hlY2tsaXN0SXRlbUNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gY2hlY2tsaXN0Rm9ybXM7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGZvcm0gdGVtcGxhdGUgZm9yIGEgcmVwZWF0ZXIgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24uIE11c3QgYmUgb2YgdHlwZSByZXBlYXRlciBvciBlbHNlIG51bGwgaXMgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIEEgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm1zRm9yUmVwZWF0ZXIocXVlc3Rpb246IFF1ZXN0aW9uLCBpbmRleD86IGFueSk6IEZvcm1Hcm91cCB7XG4gICAgaWYgKHF1ZXN0aW9uLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlciB8fCBxdWVzdGlvbi5yZXBlYXRlclF1ZXN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdRdWVzdGlvbiBpc250IGEgcmVwZWF0ZXIgb3IgaGFzIG5vIHF1ZXN0aW9ucywgcmV0dXJuaW5nIG51bGwnKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcGVhdGVyRm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuXG4gICAgZm9yIChjb25zdCByZXBlYXRlclF1ZXN0aW9uIG9mIHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCByZXBlYXRlclF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2VuZXJhdGVDb250cm9sRm9yUmVwZWF0ZXJRdWVzdGlvbihyZXBlYXRlclF1ZXN0aW9uKTtcbiAgICAgIHJlcGVhdGVyRm9ybXMuYWRkQ29udHJvbChyZXBlYXRlclF1ZXN0aW9uLm5hbWUsIHJlcGVhdGVyUXVlc3Rpb25Db250cm9sKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVwZWF0ZXJGb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBjb250cm9sIGZvciBhIHJlcGVhdGVycyBxdWVzdGlvbi5cbiAgICogQHBhcmFtIHJlcGVhdGVyUXVlc3Rpb24gQSByZXBlYXRlciBxdWVzdGlvbi5cbiAgICogQHJldHVybnMgQW4gYWJzdHJhY3QgY29udHJvbC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVDb250cm9sRm9yUmVwZWF0ZXJRdWVzdGlvbihyZXBlYXRlclF1ZXN0aW9uOiBSZXBlYXRlclF1ZXN0aW9uKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3JzID0gdGhpcy5jb252ZXJ0VmFsaWRhdG9ycyhyZXBlYXRlclF1ZXN0aW9uLnZhbGlkYXRvcnMpO1xuICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2wobnVsbCwgeyB2YWxpZGF0b3JzOiBjb252ZXJ0ZWRWYWxpZGF0b3JzLCB1cGRhdGVPbjogcmVwZWF0ZXJRdWVzdGlvbi50eXBlID09PSAnc2VsZWN0JyA/ICdjaGFuZ2UnIDogJ2JsdXInIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFuIGFycmF5IG9mIHZhbGlkYXRvcnMgaW50byBmb3JtIHZhbGlkYXRvcnMuXG4gICAqIEBwYXJhbSB2YWxpZGF0b3JzIFRoZSB1bmNvdmVydGVkIGFycmF5IG9mIHZhbGlkYXRvcnMuXG4gICAqIEByZXR1cm5zIEEgY29udmVyZWQgYXJyYXkgb2YgZm9ybSB2YWxpZGF0b3JzLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBBcnJheTxWYWxpZGF0b3I+KTogQXJyYXk8VmFsaWRhdG9yRm4+IHtcbiAgICBpZiAoIXZhbGlkYXRvcnMgfHwgdmFsaWRhdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yRm4+ID0gW107XG4gICAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9yID0gdGhpcy5jb252ZXJ0VmFsaWRhdG9yKHZhbGlkYXRvcik7XG4gICAgICBpZiAoY29udmVydGVkVmFsaWRhdG9yKSB7XG4gICAgICAgIGNvbnZlcnRlZFZhbGlkYXRvcnMucHVzaChjb252ZXJ0ZWRWYWxpZGF0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29udmVydGVkVmFsaWRhdG9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIHNpbmdsZSB2YWxpZGF0b3IgaW50byBhIGZvcm0gdmFsaWRhdG9yLlxuICAgKiBAcGFyYW0gdmFsaWRhdG9yIFRoZSB1bmNvbnZlcnRlZCB2YWxpZGF0b3IuXG4gICAqIEByZXR1cm5zIEEgY29udmVydGVkIGZvcm0gdmFsaWRhdG9yLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VmFsaWRhdG9yKHZhbGlkYXRvcjogVmFsaWRhdG9yKTogVmFsaWRhdG9yRm4gfCBudWxsIHtcbiAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICBjYXNlIFZhbGlkYXRpb25UeXBlLlJlcXVpcmVkOlxuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5yZXF1aXJlZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoZSBmb3JtcyBmb3IgcmVwZWF0ZXJzIGZyb20gc2F2ZWQgc3RhdGUuXG4gICAqIEBwYXJhbSBzYXZlZFN0YXRlIFRoZSBzYXZlZCBzdGF0ZSB0byBsb2FkLlxuICAgKiBAcGFyYW0gc2VjdGlvbnMgVGhlIHNlY3Rpb25zIGFscmVhZHkgZ2VuZXJhdGVkIGJ5IHRoZSBmb3JtIGNvbnN0cnVjdG9yLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdFJlcGVhdGVyRnJvbXNGcm9tU3RhdGUoc2F2ZWRTdGF0ZTogYW55LCBzZWN0aW9uczogQXJyYXk8U2VjdGlvbj4sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwKSB7XG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHNlY3Rpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zKSB7XG4gICAgICAgIGlmIChxdWVzdGlvbi50eXBlICE9PSBRdWVzdGlvblR5cGUuUmVwZWF0ZXIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcGVhdGVyQXJyYXkgPSBzYXZlZFN0YXRlW3NlY3Rpb24ubmFtZV1bcXVlc3Rpb24ubmFtZV07XG4gICAgICAgIGlmICghcmVwZWF0ZXJBcnJheSB8fCByZXBlYXRlckFycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVwZWF0ZXJGb3JtQXJyYXkgPSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKSBhcyBGb3JtQXJyYXk7XG5cbiAgICAgICAgaWYgKHJlcGVhdGVyRm9ybUFycmF5LmNvbnRyb2xzLmxlbmd0aCA9PT0gcmVwZWF0ZXJBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZvciBlYWNoIGl0ZW0gdGhhdCB1c2VkIHRvIGJlIHRoZXJlIHB1c2ggYSBuZXcgZW1wdHkgdGVtcGxhdGUgdGhlcmUgdG8gYmUgcG9wdWxhdGVkLlxuICAgICAgICBmb3IgKGNvbnN0IHJlcGVhdGVySXRlbSBvZiByZXBlYXRlckFycmF5KSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSByZXBlYXRlckFycmF5LmluZGV4T2YocmVwZWF0ZXJJdGVtKTtcbiAgICAgICAgICBjb25zdCByZXBlYXRlckl0ZW1UZW1wbGF0ZSA9IHRoaXMuZ2VuZXJhdGVGb3Jtc0ZvclJlcGVhdGVyKHF1ZXN0aW9uLCBpbmRleCk7XG4gICAgICAgICAgcmVwZWF0ZXJGb3JtQXJyYXkucHVzaChyZXBlYXRlckl0ZW1UZW1wbGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2ctcXVlc3Rpb25uYWlyZS12Mi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQXdELFVBQVUsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBSTFILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBUS9ELE1BQU0sT0FBTyxzQkFBc0I7SUFFakMsWUFDVSxFQUFlLEVBQ2YsYUFBNEI7UUFENUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFTDs7Ozs7O09BTUc7SUFDSSw2QkFBNkIsQ0FDbEMsYUFBNEIsRUFDNUIsb0JBQW1DLEVBQ25DLHdCQUFtQyxFQUNuQyxjQUF1QixFQUN2QixVQUFvQjtRQUdwQixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFNUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFDM0IsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFdEcsTUFBTSxRQUFRLEdBQUcsd0JBQXdCLElBQUksQ0FBQyxRQUFRLEtBQUssb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUYsSUFBSSxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDM0IsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM3RyxPQUFPLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsUUFBd0IsRUFBRSx3QkFBbUMsRUFBRSxjQUFjO1FBQzVHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QixNQUFNLGtCQUFrQixHQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDckcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyx1QkFBdUIsQ0FBQyxPQUFnQixFQUFFLHdCQUFtQyxFQUFFLGNBQWM7UUFDbkcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTVCLE1BQU0sWUFBWSxHQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELEtBQUssTUFBTSxRQUFRLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN4QyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTtnQkFDdkMsU0FBUzthQUNWO1lBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDckgsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssMEJBQTBCLENBQUMsUUFBa0IsRUFBRSxPQUFnQixFQUFFLHdCQUFtQyxFQUFFLGNBQWM7UUFDMUgsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV4RSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFNUIsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQ3pCLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUNqRCxZQUFZLEVBQ1osd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxDQUFDO1NBQ25CO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFCLE1BQU0sVUFBVSxHQUFXLHNCQUFzQixDQUFDO1FBQ2xELElBQUksc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBRWxDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0QixPQUFPLENBQUMsc0JBQXNCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDMUUsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUM5RCxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsRUFDekIsd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUVwRixxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQ25ELFFBQVEsRUFDUixVQUFTLEdBQUc7Z0JBQ1YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsQ0FBQyxDQUNGLENBQUM7WUFDRixRQUFRLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsTUFBTSxhQUFhLEdBQVcsc0JBQXNCLENBQUM7UUFDckQsSUFBSSx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFFckMsT0FBTyxDQUFDLHlCQUF5QixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ25GLElBQUksd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FDakUseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEVBQzVCLHdCQUF3QixFQUN4QixjQUFjLENBQUMsQ0FBQztZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMxRix3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQ3pELFFBQVEsRUFDUixVQUFTLEdBQUc7Z0JBQ1YsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbkUsQ0FBQyxDQUNGLENBQUM7WUFDRixRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUM7U0FDNUY7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDckIsS0FBSyxZQUFZLENBQUMsUUFBUTtnQkFDeEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3hELE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDLENBQUMsQ0FBRSx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBRW5JLElBQUksWUFBWSxJQUFJLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRTtvQkFDdEQsS0FBSyxNQUFNLE9BQU8sSUFBSSxZQUFZLENBQUMsUUFBUSxFQUFFO3dCQUUzQyxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFFckQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7NEJBQ2hCLFNBQVM7eUJBQ1Y7d0JBRUQsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBRXBFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTs0QkFDdEIsU0FBUzt5QkFDVjt3QkFFRCxNQUFNLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDakUsTUFBTSxvQkFBb0IsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBRTdHLEtBQUssTUFBTSxtQkFBbUIsSUFBSSxvQkFBb0IsRUFBRTs0QkFDdEQsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDM0QsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDL0IsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQzt5QkFDekU7d0JBRUQsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFOzRCQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUV4RCxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0NBQ3RCLDZFQUE2RTtnQ0FDN0UsU0FBUzs2QkFDVjs0QkFFRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQzs0QkFDaEYsWUFBWSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzRCQUNoRCxZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO3lCQUN6RTtxQkFDRjtpQkFDRjtnQkFFRCxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDaEQsS0FBSyxZQUFZLENBQUMsU0FBUztnQkFDekIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDdkUsS0FBSyxZQUFZLENBQUMsTUFBTTtnQkFDdEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMscUNBQXFDO1lBQ2xIO2dCQUNFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQy9GO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0sseUJBQXlCLENBQUMsUUFBa0IsRUFBRSxtQkFBbUI7UUFDdkUsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxNQUFNLGNBQWMsR0FBYyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxLQUFLLE1BQU0sYUFBYSxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDbkQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUN4RSxjQUFjLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztTQUNyRTtRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFHRDs7Ozs7T0FLRztJQUNJLHdCQUF3QixDQUFDLFFBQWtCLEVBQUUsS0FBVztRQUM3RCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN0RixPQUFPLENBQUMsR0FBRyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sYUFBYSxHQUFjLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsaUJBQWlCLEVBQUU7WUFDekQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxRixhQUFhLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFFO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssa0NBQWtDLENBQUMsZ0JBQWtDO1FBQzNFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsVUFBNEI7UUFDcEQsSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUMxQyxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsTUFBTSxtQkFBbUIsR0FBdUIsRUFBRSxDQUFDO1FBQ25ELEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1lBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVELElBQUksa0JBQWtCLEVBQUU7Z0JBQ3RCLG1CQUFtQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7UUFDRCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGdCQUFnQixDQUFDLFNBQW9CO1FBQzNDLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRTtZQUN0QixLQUFLLGNBQWMsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDN0I7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksK0JBQStCLENBQUMsVUFBZSxFQUFFLFFBQXdCLEVBQUUsd0JBQW1DO1FBQ25ILEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzlCLEtBQUssTUFBTSxRQUFRLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDeEMsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxRQUFRLEVBQUU7b0JBQzNDLFNBQVM7aUJBQ1Y7Z0JBRUQsTUFBTSxhQUFhLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ2hELFNBQVM7aUJBQ1Y7Z0JBRUQsTUFBTSxpQkFBaUIsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBYyxDQUFDO2dCQUVuRyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDOUQsU0FBUztpQkFDVjtnQkFFRCx1RkFBdUY7Z0JBQ3ZGLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFO29CQUN4QyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNsRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzVFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2lCQUM5QzthQUNGO1NBQ0Y7SUFDSCxDQUFDOzs7O1lBN1RGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBZFEsV0FBVztZQUtYLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgRm9ybUFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb24nO1xuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZSc7XG5pbXBvcnQgeyBRdWVzdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gJy4vZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9yIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy92YWxpZGF0b3InO1xuaW1wb3J0IHsgVmFsaWRhdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy92YWxpZGF0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSZXBlYXRlclF1ZXN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBlYXRlci1xdWVzdGlvbic7XG5pbXBvcnQgeyBDaGVja2xpc3RJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jaGVja2xpc3QtaXRlbSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Db25zdHJ1Y3RvclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZVxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgZm9ybSBncm91cCBiYXNlZCBvbiB0aGUgcXVlc3Rpb25uYWlyZSBkYXRhLlxuICAgKiBUaGlzIGZvcm0gZ3JvdXAgaGFzIGJlZW4gZmlsdGVyZWQgZG93biBiYXNlZCBvbiB0aGUgY29uZGl0aW9ucyBvZiB0aGUgc2VjdGlvbnMgYW5kIHF1ZXN0aW9ucy5cbiAgICogQHBhcmFtIHF1ZXN0aW9ubmFpcmUgVGhlIHF1ZXN0aW9ubmFpcmUgZGF0YSB0byBidWlsZCB0aGUgZm9ybSBncm91cCBvbi5cbiAgICogQHJldHVybnMgQSBmaWx0ZWQgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm1zRm9yUXVlc3Rpb25uYWlyZShcbiAgICBxdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlLFxuICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlOiBRdWVzdGlvbm5haXJlLFxuICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwLFxuICAgIGFkZGl0aW9uYWxEYXRhPzogT2JqZWN0LFxuICAgIHNraXBGaWx0ZXI/OiBib29sZWFuXG4gICk6IHtzZWN0aW9uczogQXJyYXk8U2VjdGlvbj47IGZvcm1zOiBGb3JtR3JvdXB9IHtcblxuICAgIGNvbnNvbGUubG9nKCd6ZXJvJyk7XG4gICAgY29uc29sZS5sb2coYWRkaXRpb25hbERhdGEpO1xuXG4gICAgY29uc3Qgc2VjdGlvbnMgPSBza2lwRmlsdGVyID9cbiAgICAgIHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMgOlxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclNlY3Rpb25zKHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSwgYWRkaXRpb25hbERhdGEpO1xuXG4gICAgY29uc3Qgbm9DaGFuZ2UgPSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gJiYgKHNlY3Rpb25zID09PSBjdXJyZW50UXVlc3Rpb25uYWlyZS5zZWN0aW9ucyk7XG5cbiAgICBpZiAobm9DaGFuZ2UgJiYgIXNraXBGaWx0ZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmVGb3JtcyA9IHRoaXMuZ2VuZXJhdGVGb3Jtc0ZvclNlY3Rpb25zKHNlY3Rpb25zLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sIGFkZGl0aW9uYWxEYXRhKTtcbiAgICByZXR1cm4ge3NlY3Rpb25zOiBzZWN0aW9ucywgZm9ybXM6IHF1ZXN0aW9ubmFpcmVGb3Jtc307XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRm9ybXNGb3JTZWN0aW9ucyhzZWN0aW9uczogQXJyYXk8U2VjdGlvbj4sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwLCBhZGRpdGlvbmFsRGF0YSkge1xuICAgIGNvbnNvbGUubG9nKCdvbmUnKTtcbiAgICBjb25zb2xlLmxvZyhhZGRpdGlvbmFsRGF0YSk7XG4gICAgY29uc3QgcXVlc3Rpb25uYWlyZUZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25Gb3JtcyA9IHRoaXMuZ2VuZXJhdGVGb3Jtc0ZvclNlY3Rpb24oc2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLCBhZGRpdGlvbmFsRGF0YSk7XG4gICAgICBxdWVzdGlvbm5haXJlRm9ybXMuYWRkQ29udHJvbChzZWN0aW9uLm5hbWUsIHNlY3Rpb25Gb3Jtcyk7XG4gICAgfVxuICAgIHJldHVybiBxdWVzdGlvbm5haXJlRm9ybXM7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGZvcm0gZ3JvdXAgYmFzZWQgb24gdGhlIHNlY3Rpb24gZGF0YS5cbiAgICogVGhpcyBmb3JtIGdyb3VwIGhhcyBiZWVuIGZpbHRlcmVkIGRvd24gYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgb2YgdGhlIHF1ZXN0aW9ucy5cbiAgICogQHBhcmFtIHNlY3Rpb24gVGhlIHNlY3Rpb24gZGF0YSB0byBidWlsZCB0aGUgZm9ybSBncm91cCBvbi5cbiAgICogQHJldHVybnMgQSBmaWx0ZXJlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbihzZWN0aW9uOiBTZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCwgYWRkaXRpb25hbERhdGEpOiBGb3JtR3JvdXAge1xuICAgIGNvbnNvbGUubG9nKCd0d28nKTtcbiAgICBjb25zb2xlLmxvZyhhZGRpdGlvbmFsRGF0YSk7XG5cbiAgICBjb25zdCBzZWN0aW9uRm9ybXM6IEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgIGlmIChxdWVzdGlvbi50eXBlID09PSBRdWVzdGlvblR5cGUuSW5mbykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcXVlc3Rpb25Db250cm9sID0gdGhpcy5nZW5lcmF0ZUNvbnRyb2xGb3JRdWVzdGlvbihxdWVzdGlvbiwgc2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLCBhZGRpdGlvbmFsRGF0YSk7XG4gICAgICBzZWN0aW9uRm9ybXMuYWRkQ29udHJvbChxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbkNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gc2VjdGlvbkZvcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gYXN0cmFjdCBmb3JtIGNvbnRyb2wgYmFzZWQgb24gdGhlIHF1ZXN0aW9uIGRhdGEuXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24gZGF0YSB0byBidWlsZCB0aGUgYWJzdHJhY3QgY29udHJvbCBvbi5cbiAgICogQHJldHVybnMgQW4gYWJzdHJhY3QgY29udHJvbC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVDb250cm9sRm9yUXVlc3Rpb24ocXVlc3Rpb246IFF1ZXN0aW9uLCBzZWN0aW9uOiBTZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCwgYWRkaXRpb25hbERhdGEpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKHF1ZXN0aW9uLnZhbGlkYXRvcnMpO1xuICAgIGxldCBkZWZhdWx0VmFsdWUgPSBxdWVzdGlvbi5kZWZhdWx0VmFsdWUgPyBxdWVzdGlvbi5kZWZhdWx0VmFsdWUgOiBudWxsO1xuXG4gICAgY29uc29sZS5sb2coJ3RocmVlJyk7XG4gICAgY29uc29sZS5sb2coYWRkaXRpb25hbERhdGEpO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldFZhbHVlRm9yU3RyaW5nKFxuICAgICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSxcbiAgICAgICAgYWRkaXRpb25hbERhdGEpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdkZWZhdWx0Jyk7XG4gICAgY29uc29sZS5sb2coZGVmYXVsdFZhbHVlKTtcblxuICAgIGNvbnN0IHRpdGxlUmVnRXg6IFJlZ0V4cCA9IC8oXFx7XFx7KFteXFx9XSspXFx9XFx9KS9naTtcbiAgICBsZXQgdGl0bGVQbGFjZWhvbGRlcnNGb3VuZCA9IG51bGw7XG5cbiAgICBjb25zb2xlLmxvZygnZGVmYXVsdCcpO1xuICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uKTtcblxuICAgIHdoaWxlICgodGl0bGVQbGFjZWhvbGRlcnNGb3VuZCA9IHRpdGxlUmVnRXguZXhlYyhxdWVzdGlvbi50aXRsZSkpICE9PSBudWxsKSB7XG4gICAgICBsZXQgdGl0bGVSZXBsYWNlbWVudFZhbHVlID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmdldFZhbHVlRm9yU3RyaW5nKFxuICAgICAgICB0aXRsZVBsYWNlaG9sZGVyc0ZvdW5kWzJdLFxuICAgICAgICBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0sXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhKTtcbiAgICAgIGNvbnNvbGUubG9nKCdtMScpO1xuICAgICAgY29uc3QgdGl0bGVSZXBsYWNlUmUgPSBuZXcgUmVnRXhwKCdcXHtcXHsnICsgdGl0bGVQbGFjZWhvbGRlcnNGb3VuZFsyXSArICdcXH1cXH0nLCAnZycpO1xuXG4gICAgICB0aXRsZVJlcGxhY2VtZW50VmFsdWUgPSB0aXRsZVJlcGxhY2VtZW50VmFsdWUucmVwbGFjZShcbiAgICAgICAgL1xcd1xcUyovZyxcbiAgICAgICAgZnVuY3Rpb24odHh0KSB7XG4gICAgICAgICAgcmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHF1ZXN0aW9uLnRpdGxlID0gcXVlc3Rpb24udGl0bGUucmVwbGFjZSh0aXRsZVJlcGxhY2VSZSwgdGl0bGVSZXBsYWNlbWVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJUaXRsZVJlZ0V4OiBSZWdFeHAgPSAvKFxce1xceyhbXlxcfV0rKVxcfVxcfSkvZ2k7XG4gICAgbGV0IHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmQgPSBudWxsO1xuXG4gICAgd2hpbGUgKChzdWJUaXRsZVBsYWNlaG9sZGVyc0ZvdW5kID0gc3ViVGl0bGVSZWdFeC5leGVjKHF1ZXN0aW9uLnN1YnRpdGxlKSkgIT09IG51bGwpIHtcbiAgICAgIGxldCBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUgPSB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0VmFsdWVGb3JTdHJpbmcoXG4gICAgICAgIHN1YlRpdGxlUGxhY2Vob2xkZXJzRm91bmRbMl0sXG4gICAgICAgIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSxcbiAgICAgICAgYWRkaXRpb25hbERhdGEpO1xuICAgICAgY29uc29sZS5sb2coJ20yJyk7XG4gICAgICBjb25zdCBzdWJUaXRsZVJlcGxhY2VSZSA9IG5ldyBSZWdFeHAoJ1xce1xceycgKyBzdWJUaXRsZVBsYWNlaG9sZGVyc0ZvdW5kWzJdICsgJ1xcfVxcfScsICdnJyk7XG4gICAgICBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUgPSBzdWJUaXRsZVJlcGxhY2VtZW50VmFsdWUucmVwbGFjZShcbiAgICAgICAgL1xcd1xcUyovZyxcbiAgICAgICAgZnVuY3Rpb24odHh0KSB7XG4gICAgICAgICAgcmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIHF1ZXN0aW9uLnN1YnRpdGxlID0gcXVlc3Rpb24uc3VidGl0bGUucmVwbGFjZShzdWJUaXRsZVJlcGxhY2VSZSwgc3ViVGl0bGVSZXBsYWNlbWVudFZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnZmluYWwnKTtcbiAgICBjb25zb2xlLmxvZyhxdWVzdGlvbik7XG4gICAgY29uc29sZS5sb2coJz09PT0nKTtcbiAgICBzd2l0Y2ggKHF1ZXN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgUXVlc3Rpb25UeXBlLlJlcGVhdGVyOlxuICAgICAgICBjb25zdCBuZXdBcnJheSA9IHRoaXMuZmIuYXJyYXkoW10sIGNvbnZlcnRlZFZhbGlkYXRvcnMpO1xuICAgICAgICBjb25zdCBjdXJyZW50QXJyYXkgPSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gPyAoY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmdldChbc2VjdGlvbi5uYW1lLCBxdWVzdGlvbi5uYW1lXSkgYXMgRm9ybUFycmF5KSA6IGZhbHNlO1xuXG4gICAgICAgIGlmIChjdXJyZW50QXJyYXkgJiYgcXVlc3Rpb24uZmlsdGVyZWRSZXBlYXRlclF1ZXN0aW9ucykge1xuICAgICAgICAgIGZvciAoY29uc3QgY29udHJvbCBvZiBjdXJyZW50QXJyYXkuY29udHJvbHMpIHtcblxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50QXJyYXkuY29udHJvbHMuaW5kZXhPZihjb250cm9sKTtcblxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRRdWVzdGlvbnMgPSBxdWVzdGlvbi5maWx0ZXJlZFJlcGVhdGVyUXVlc3Rpb25zW2luZGV4XTtcblxuICAgICAgICAgICAgaWYgKCFmaWx0ZXJlZFF1ZXN0aW9ucykge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRRdWVzdGlvbk5hbWVzID0gZmlsdGVyZWRRdWVzdGlvbnMubWFwKHggPT4geC5uYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0UXVlc3Rpb25zID0gcXVlc3Rpb24ucmVwZWF0ZXJRdWVzdGlvbnMuZmlsdGVyKHggPT4gIWZpbHRlcmVkUXVlc3Rpb25OYW1lcy5pbmNsdWRlcyh4Lm5hbWUpKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWx0ZXJlZE91dFF1ZXN0aW9uIG9mIGZpbHRlcmVkT3V0UXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ29udHJvbCA9IGNvbnRyb2wuZ2V0KGZpbHRlcmVkT3V0UXVlc3Rpb24ubmFtZSk7XG4gICAgICAgICAgICAgIGNoaWxkQ29udHJvbC5zZXRWYWxpZGF0b3JzKFtdKTtcbiAgICAgICAgICAgICAgY2hpbGRDb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiB0cnVlLCBlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsdGVyZWRRdWVzdGlvbiBvZiBmaWx0ZXJlZFF1ZXN0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZENvbnRyb2wgPSBjb250cm9sLmdldChmaWx0ZXJlZFF1ZXN0aW9uLm5hbWUpO1xuXG4gICAgICAgICAgICAgIGlmIChjaGlsZENvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGEgdmFsdWUganVzdCBza2lwIGl0LCBubyBuZWVkIHRvIHJlZG8gdGhlIHZhbGlkYXRvcnMgZWFjaCB0aW1lLlxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9ycyA9IHRoaXMuY29udmVydFZhbGlkYXRvcnMoZmlsdGVyZWRRdWVzdGlvbi52YWxpZGF0b3JzKTtcbiAgICAgICAgICAgICAgY2hpbGRDb250cm9sLnNldFZhbGlkYXRvcnMoY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgIGNoaWxkQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjogdHJ1ZSwgZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjdXJyZW50QXJyYXkgPyBjdXJyZW50QXJyYXkgOiBuZXdBcnJheTtcbiAgICAgIGNhc2UgUXVlc3Rpb25UeXBlLkNoZWNrbGlzdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVHcm91cEZvckNoZWNrbGlzdChxdWVzdGlvbiwgY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICBjYXNlIFF1ZXN0aW9uVHlwZS5TbGlkZXI6XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2woZGVmYXVsdFZhbHVlLCB7IHZhbGlkYXRvcnM6IGNvbnZlcnRlZFZhbGlkYXRvcnMgfSk7IC8vIFJlbW92ZSB1cGRhdGUgb24gYmx1ciBmb3Igc2xpZGVycy5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmNvbnRyb2woZGVmYXVsdFZhbHVlLCB7IHZhbGlkYXRvcnM6IGNvbnZlcnRlZFZhbGlkYXRvcnMsIHVwZGF0ZU9uOiAnYmx1cicgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgZm9ybSBncm91cCBmb3IgYSBjaGVja2xpc3QgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24uIE11c3QgYmUgb2YgdHlwZSBjaGVja2xpc3Qgb3IgZWxzZSBudWxsIGlzIHJldHVybmVkLlxuICAgKiBAcmV0dXJucyBBIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlR3JvdXBGb3JDaGVja2xpc3QocXVlc3Rpb246IFF1ZXN0aW9uLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKSB7XG4gICAgaWYgKHF1ZXN0aW9uLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5DaGVja2xpc3QgfHwgcXVlc3Rpb24uY2hlY2tsaXN0SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja2xpc3RGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgZm9yIChjb25zdCBjaGVja2xpc3RJdGVtIG9mIHF1ZXN0aW9uLmNoZWNrbGlzdEl0ZW1zKSB7XG4gICAgICBjb25zdCBjaGVja2xpc3RJdGVtQ29udHJvbCA9IHRoaXMuZmIuY29udHJvbChudWxsLCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgIGNoZWNrbGlzdEZvcm1zLmFkZENvbnRyb2woY2hlY2tsaXN0SXRlbS5uYW1lLCBjaGVja2xpc3RJdGVtQ29udHJvbCk7XG4gICAgfVxuICAgIHJldHVybiBjaGVja2xpc3RGb3JtcztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyB0aGUgZm9ybSB0ZW1wbGF0ZSBmb3IgYSByZXBlYXRlciBxdWVzdGlvbi5cbiAgICogQHBhcmFtIHF1ZXN0aW9uIFRoZSBxdWVzdGlvbi4gTXVzdCBiZSBvZiB0eXBlIHJlcGVhdGVyIG9yIGVsc2UgbnVsbCBpcyByZXR1cm5lZC5cbiAgICogQHJldHVybnMgQSBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcihxdWVzdGlvbjogUXVlc3Rpb24sIGluZGV4PzogYW55KTogRm9ybUdyb3VwIHtcbiAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLlJlcGVhdGVyIHx8IHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ1F1ZXN0aW9uIGlzbnQgYSByZXBlYXRlciBvciBoYXMgbm8gcXVlc3Rpb25zLCByZXR1cm5pbmcgbnVsbCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG5cbiAgICBmb3IgKGNvbnN0IHJlcGVhdGVyUXVlc3Rpb24gb2YgcXVlc3Rpb24ucmVwZWF0ZXJRdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IHJlcGVhdGVyUXVlc3Rpb25Db250cm9sID0gdGhpcy5nZW5lcmF0ZUNvbnRyb2xGb3JSZXBlYXRlclF1ZXN0aW9uKHJlcGVhdGVyUXVlc3Rpb24pO1xuICAgICAgcmVwZWF0ZXJGb3Jtcy5hZGRDb250cm9sKHJlcGVhdGVyUXVlc3Rpb24ubmFtZSwgcmVwZWF0ZXJRdWVzdGlvbkNvbnRyb2wpO1xuICAgIH1cblxuICAgIHJldHVybiByZXBlYXRlckZvcm1zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIGNvbnRyb2wgZm9yIGEgcmVwZWF0ZXJzIHF1ZXN0aW9uLlxuICAgKiBAcGFyYW0gcmVwZWF0ZXJRdWVzdGlvbiBBIHJlcGVhdGVyIHF1ZXN0aW9uLlxuICAgKiBAcmV0dXJucyBBbiBhYnN0cmFjdCBjb250cm9sLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNvbnRyb2xGb3JSZXBlYXRlclF1ZXN0aW9uKHJlcGVhdGVyUXVlc3Rpb246IFJlcGVhdGVyUXVlc3Rpb24pOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKHJlcGVhdGVyUXVlc3Rpb24udmFsaWRhdG9ycyk7XG4gICAgcmV0dXJuIHRoaXMuZmIuY29udHJvbChudWxsLCB7IHZhbGlkYXRvcnM6IGNvbnZlcnRlZFZhbGlkYXRvcnMsIHVwZGF0ZU9uOiByZXBlYXRlclF1ZXN0aW9uLnR5cGUgPT09ICdzZWxlY3QnID8gJ2NoYW5nZScgOiAnYmx1cicgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgdmFsaWRhdG9ycyBpbnRvIGZvcm0gdmFsaWRhdG9ycy5cbiAgICogQHBhcmFtIHZhbGlkYXRvcnMgVGhlIHVuY292ZXJ0ZWQgYXJyYXkgb2YgdmFsaWRhdG9ycy5cbiAgICogQHJldHVybnMgQSBjb252ZXJlZCBhcnJheSBvZiBmb3JtIHZhbGlkYXRvcnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IEFycmF5PFZhbGlkYXRvcj4pOiBBcnJheTxWYWxpZGF0b3JGbj4ge1xuICAgIGlmICghdmFsaWRhdG9ycyB8fCB2YWxpZGF0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3JzOiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRvciBvZiB2YWxpZGF0b3JzKSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRWYWxpZGF0b3IgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3IodmFsaWRhdG9yKTtcbiAgICAgIGlmIChjb252ZXJ0ZWRWYWxpZGF0b3IpIHtcbiAgICAgICAgY29udmVydGVkVmFsaWRhdG9ycy5wdXNoKGNvbnZlcnRlZFZhbGlkYXRvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb252ZXJ0ZWRWYWxpZGF0b3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc2luZ2xlIHZhbGlkYXRvciBpbnRvIGEgZm9ybSB2YWxpZGF0b3IuXG4gICAqIEBwYXJhbSB2YWxpZGF0b3IgVGhlIHVuY29udmVydGVkIHZhbGlkYXRvci5cbiAgICogQHJldHVybnMgQSBjb252ZXJ0ZWQgZm9ybSB2YWxpZGF0b3IuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWxpZGF0b3IodmFsaWRhdG9yOiBWYWxpZGF0b3IpOiBWYWxpZGF0b3JGbiB8IG51bGwge1xuICAgIHN3aXRjaCAodmFsaWRhdG9yLnR5cGUpIHtcbiAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGUuUmVxdWlyZWQ6XG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLnJlcXVpcmVkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIGZvcm1zIGZvciByZXBlYXRlcnMgZnJvbSBzYXZlZCBzdGF0ZS5cbiAgICogQHBhcmFtIHNhdmVkU3RhdGUgVGhlIHNhdmVkIHN0YXRlIHRvIGxvYWQuXG4gICAqIEBwYXJhbSBzZWN0aW9ucyBUaGUgc2VjdGlvbnMgYWxyZWFkeSBnZW5lcmF0ZWQgYnkgdGhlIGZvcm0gY29uc3RydWN0b3IuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0UmVwZWF0ZXJGcm9tc0Zyb21TdGF0ZShzYXZlZFN0YXRlOiBhbnksIHNlY3Rpb25zOiBBcnJheTxTZWN0aW9uPiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApIHtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgaWYgKHF1ZXN0aW9uLnR5cGUgIT09IFF1ZXN0aW9uVHlwZS5SZXBlYXRlcikge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVwZWF0ZXJBcnJheSA9IHNhdmVkU3RhdGVbc2VjdGlvbi5uYW1lXVtxdWVzdGlvbi5uYW1lXTtcbiAgICAgICAgaWYgKCFyZXBlYXRlckFycmF5IHx8IHJlcGVhdGVyQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBlYXRlckZvcm1BcnJheSA9IGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQoW3NlY3Rpb24ubmFtZSwgcXVlc3Rpb24ubmFtZV0pIGFzIEZvcm1BcnJheTtcblxuICAgICAgICBpZiAocmVwZWF0ZXJGb3JtQXJyYXkuY29udHJvbHMubGVuZ3RoID09PSByZXBlYXRlckFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRm9yIGVhY2ggaXRlbSB0aGF0IHVzZWQgdG8gYmUgdGhlcmUgcHVzaCBhIG5ldyBlbXB0eSB0ZW1wbGF0ZSB0aGVyZSB0byBiZSBwb3B1bGF0ZWQuXG4gICAgICAgIGZvciAoY29uc3QgcmVwZWF0ZXJJdGVtIG9mIHJlcGVhdGVyQXJyYXkpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHJlcGVhdGVyQXJyYXkuaW5kZXhPZihyZXBlYXRlckl0ZW0pO1xuICAgICAgICAgIGNvbnN0IHJlcGVhdGVySXRlbVRlbXBsYXRlID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yUmVwZWF0ZXIocXVlc3Rpb24sIGluZGV4KTtcbiAgICAgICAgICByZXBlYXRlckZvcm1BcnJheS5wdXNoKHJlcGVhdGVySXRlbVRlbXBsYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -335,6 +335,8 @@ 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);
|
|
338
340
|
const sections = skipFilter ?
|
|
339
341
|
questionnaire.sections :
|
|
340
342
|
this.filterService.filterSections(questionnaire.sections, currentQuestionnaireForm, additionalData);
|
|
@@ -346,6 +348,8 @@ class FormConstructorService {
|
|
|
346
348
|
return { sections: sections, forms: questionnaireForms };
|
|
347
349
|
}
|
|
348
350
|
generateFormsForSections(sections, currentQuestionnaireForm, additionalData) {
|
|
351
|
+
console.log('one');
|
|
352
|
+
console.log(additionalData);
|
|
349
353
|
const questionnaireForms = this.fb.group({});
|
|
350
354
|
for (const section of sections) {
|
|
351
355
|
const sectionForms = this.generateFormsForSection(section, currentQuestionnaireForm, additionalData);
|
|
@@ -361,6 +365,8 @@ class FormConstructorService {
|
|
|
361
365
|
* @author Will Poulson
|
|
362
366
|
*/
|
|
363
367
|
generateFormsForSection(section, currentQuestionnaireForm, additionalData) {
|
|
368
|
+
console.log('two');
|
|
369
|
+
console.log(additionalData);
|
|
364
370
|
const sectionForms = this.fb.group({});
|
|
365
371
|
for (const question of section.questions) {
|
|
366
372
|
if (question.type === QuestionType.Info) {
|
|
@@ -380,13 +386,20 @@ class FormConstructorService {
|
|
|
380
386
|
generateControlForQuestion(question, section, currentQuestionnaireForm, additionalData) {
|
|
381
387
|
const convertedValidators = this.convertValidators(question.validators);
|
|
382
388
|
let defaultValue = question.defaultValue ? question.defaultValue : null;
|
|
389
|
+
console.log('three');
|
|
390
|
+
console.log(additionalData);
|
|
383
391
|
if (defaultValue !== null) {
|
|
384
392
|
defaultValue = this.filterService.getValueForString(defaultValue, currentQuestionnaireForm, additionalData);
|
|
385
393
|
}
|
|
394
|
+
console.log('default');
|
|
395
|
+
console.log(defaultValue);
|
|
386
396
|
const titleRegEx = /(\{\{([^\}]+)\}\})/gi;
|
|
387
397
|
let titlePlaceholdersFound = null;
|
|
398
|
+
console.log('default');
|
|
399
|
+
console.log(question);
|
|
388
400
|
while ((titlePlaceholdersFound = titleRegEx.exec(question.title)) !== null) {
|
|
389
401
|
let titleReplacementValue = this.filterService.getValueForString(titlePlaceholdersFound[2], currentQuestionnaireForm, additionalData);
|
|
402
|
+
console.log('m1');
|
|
390
403
|
const titleReplaceRe = new RegExp('\{\{' + titlePlaceholdersFound[2] + '\}\}', 'g');
|
|
391
404
|
titleReplacementValue = titleReplacementValue.replace(/\w\S*/g, function (txt) {
|
|
392
405
|
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
@@ -397,12 +410,16 @@ class FormConstructorService {
|
|
|
397
410
|
let subTitlePlaceholdersFound = null;
|
|
398
411
|
while ((subTitlePlaceholdersFound = subTitleRegEx.exec(question.subtitle)) !== null) {
|
|
399
412
|
let subTitleReplacementValue = this.filterService.getValueForString(subTitlePlaceholdersFound[2], currentQuestionnaireForm, additionalData);
|
|
413
|
+
console.log('m2');
|
|
400
414
|
const subTitleReplaceRe = new RegExp('\{\{' + subTitlePlaceholdersFound[2] + '\}\}', 'g');
|
|
401
415
|
subTitleReplacementValue = subTitleReplacementValue.replace(/\w\S*/g, function (txt) {
|
|
402
416
|
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
403
417
|
});
|
|
404
418
|
question.subtitle = question.subtitle.replace(subTitleReplaceRe, subTitleReplacementValue);
|
|
405
419
|
}
|
|
420
|
+
console.log('final');
|
|
421
|
+
console.log(question);
|
|
422
|
+
console.log('====');
|
|
406
423
|
switch (question.type) {
|
|
407
424
|
case QuestionType.Repeater:
|
|
408
425
|
const newArray = this.fb.array([], convertedValidators);
|