myrta-ui 14.0.0-beta.3 → 14.0.0-beta.5
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/esm2020/lib/components/form/input-date-time/input-date-time.component.mjs +1 -1
- package/esm2020/lib/components/form/input-datepicker/input-datepicker.component.mjs +1 -1
- package/esm2020/lib/components/form/input-number/input-number.component.mjs +1 -1
- package/esm2020/lib/components/form/input-phone/input-phone.component.mjs +1 -1
- package/esm2020/lib/components/form/input-search/input-search.component.mjs +1 -1
- package/esm2020/lib/components/form/input-text/input-text.component.mjs +1 -1
- package/esm2020/lib/components/form/input-timepicker/input-timepicker.component.mjs +1 -1
- package/esm2020/lib/components/gallery/gallery.component.mjs +2 -2
- package/esm2020/lib/services/mrx-form-validator/mrx-form-validator.mjs +26 -2
- package/fesm2015/myrta-ui.mjs +34 -10
- package/fesm2015/myrta-ui.mjs.map +1 -1
- package/fesm2020/myrta-ui.mjs +34 -10
- package/fesm2020/myrta-ui.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -63,6 +63,9 @@ export class MrxFormValidator {
|
|
|
63
63
|
if (!silent && !this._errors[name]) {
|
|
64
64
|
this._errors[name] = requiredRes.message;
|
|
65
65
|
}
|
|
66
|
+
if (!this._isValid) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
66
69
|
break;
|
|
67
70
|
case ValidationTypesEnum.Email:
|
|
68
71
|
const emailRes = emailValidation(value, validations, key, this._invalidMessages);
|
|
@@ -70,6 +73,9 @@ export class MrxFormValidator {
|
|
|
70
73
|
if (!silent && !this._errors[name]) {
|
|
71
74
|
this._errors[name] = emailRes.message;
|
|
72
75
|
}
|
|
76
|
+
if (!this._isValid) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
73
79
|
break;
|
|
74
80
|
case ValidationTypesEnum.Pattern:
|
|
75
81
|
const patternRes = patternValidation(value, validations, key, this._invalidMessages);
|
|
@@ -77,6 +83,9 @@ export class MrxFormValidator {
|
|
|
77
83
|
if (!silent && !this._errors[name]) {
|
|
78
84
|
this._errors[name] = patternRes.message;
|
|
79
85
|
}
|
|
86
|
+
if (!this._isValid) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
80
89
|
break;
|
|
81
90
|
case ValidationTypesEnum.MinLength:
|
|
82
91
|
const minLengthRes = minLengthValidation(value, validations, key, this._invalidMessages);
|
|
@@ -84,6 +93,9 @@ export class MrxFormValidator {
|
|
|
84
93
|
if (!silent && !this._errors[name]) {
|
|
85
94
|
this._errors[name] = minLengthRes.message;
|
|
86
95
|
}
|
|
96
|
+
if (!this._isValid) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
87
99
|
break;
|
|
88
100
|
case ValidationTypesEnum.MaxLength:
|
|
89
101
|
const maxLengthRes = maxLengthValidation(value, validations, key, this._invalidMessages);
|
|
@@ -91,6 +103,9 @@ export class MrxFormValidator {
|
|
|
91
103
|
if (!silent && !this._errors[name]) {
|
|
92
104
|
this._errors[name] = maxLengthRes.message;
|
|
93
105
|
}
|
|
106
|
+
if (!this._isValid) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
94
109
|
break;
|
|
95
110
|
case ValidationTypesEnum.MinValue:
|
|
96
111
|
const minValueRes = minValueValidation(value, validations, key, this._invalidMessages);
|
|
@@ -98,6 +113,9 @@ export class MrxFormValidator {
|
|
|
98
113
|
if (!silent && !this._errors[name]) {
|
|
99
114
|
this._errors[name] = minValueRes.message;
|
|
100
115
|
}
|
|
116
|
+
if (!this._isValid) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
101
119
|
break;
|
|
102
120
|
case ValidationTypesEnum.MaxValue:
|
|
103
121
|
const maxValueRes = maxValueValidation(value, validations, key, this._invalidMessages);
|
|
@@ -105,6 +123,9 @@ export class MrxFormValidator {
|
|
|
105
123
|
if (!silent && !this._errors[name]) {
|
|
106
124
|
this._errors[name] = maxValueRes.message;
|
|
107
125
|
}
|
|
126
|
+
if (!this._isValid) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
108
129
|
break;
|
|
109
130
|
case ValidationTypesEnum.Callback:
|
|
110
131
|
const callbackRes = callbackValidation(value, validations, key, this._invalidMessages);
|
|
@@ -112,6 +133,9 @@ export class MrxFormValidator {
|
|
|
112
133
|
if (!silent && !this._errors[name]) {
|
|
113
134
|
this._errors[name] = callbackRes.message;
|
|
114
135
|
}
|
|
136
|
+
if (!this._isValid) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
115
139
|
break;
|
|
116
140
|
}
|
|
117
141
|
}
|
|
@@ -150,11 +174,11 @@ export class MrxFormValidator {
|
|
|
150
174
|
}
|
|
151
175
|
}
|
|
152
176
|
isValid() {
|
|
153
|
-
this._isValid = true;
|
|
154
177
|
for (let key in this._validations) {
|
|
155
178
|
this.errors[key] = null;
|
|
156
179
|
this.validateField(this._fields[key], key, this._validations[key], true);
|
|
157
180
|
}
|
|
181
|
+
console.log(1, this._isValid);
|
|
158
182
|
return this._isValid;
|
|
159
183
|
}
|
|
160
184
|
// TODO Вырезать в будущем
|
|
@@ -180,4 +204,4 @@ export class MrxFormValidator {
|
|
|
180
204
|
return this._isValid;
|
|
181
205
|
}
|
|
182
206
|
}
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXJ4LWZvcm0tdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9zZXJ2aWNlcy9tcngtZm9ybS12YWxpZGF0b3IvbXJ4LWZvcm0tdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXZGLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFBWSxPQUE4QjtRQVZsQyxZQUFPLEdBQVEsRUFBRSxDQUFBO1FBQ2pCLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQTtRQUMvQixZQUFPLEdBQVEsRUFBRSxDQUFBO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUE7UUFDZixZQUFPLEdBQUcsS0FB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ZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBJRmllbGRzLCBJTWVzc2FnZXMsIElWYWxpZGF0aW9ucywgVmFsaWRhdGlvbnNUeXBlIH0gZnJvbSAnLi9tb2RlbHMvdmFsaWRhdGlvbnMtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm1WYWxpZGF0b3JPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMvdmFsaWRhdGlvbnMtc2V0dGluZ3MubW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWV0aG9kc0VudW0sIFZhbGlkYXRpb25UeXBlc0VudW0gfSBmcm9tICcuL21vZGVscy92YWxpZGF0aW9ucy10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IHJlcXVpcmVkVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvcmVxdWlyZWQudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IGVtYWlsVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvZW1haWwudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IHBhdHRlcm5WYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9wYXR0ZXJuLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBtYXhMZW5ndGhWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9tYXgtbGVuZ3RoLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBtaW5MZW5ndGhWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9taW4tbGVuZ3RoLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBtaW5WYWx1ZVZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL21pbi12YWx1ZS52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgbWF4VmFsdWVWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9tYXgtdmFsdWUudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IGNhbGxiYWNrVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvY2FsbGJhY2sudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IElOVkFMSURfTUVTU0FHRVMgfSBmcm9tICcuL2NvbnN0YW50cy9pbnZhbGlkLW1lc3NhZ2VzJztcclxuaW1wb3J0IHsgZ2V0U29ydGluZ1ZhbGlkYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1zb3J0aW5nLXZhbGlkYXRpb25zLmhlbHBlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgTXJ4Rm9ybVZhbGlkYXRvciB7XHJcbiAgcHJpdmF0ZSBfZmllbGRzOiBhbnkgPSBbXVxyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb25zOiBJVmFsaWRhdGlvbnMgPSB7fVxyXG4gIHByaXZhdGUgX2Vycm9yczogYW55ID0ge31cclxuICBwcml2YXRlIF9pc1ZhbGlkID0gdHJ1ZVxyXG4gIHByaXZhdGUgX2lzSW5pdCA9IGZhbHNlXHJcbiAgcHJpdmF0ZSBfbW9kZWxDbG9uZTogSUZpZWxkcyA9IHt9XHJcblxyXG4gIHByaXZhdGUgX21ldGhvZCA9ICdzdWJtaXQnXHJcbiAgcHJpdmF0ZSBfaW52YWxpZE1lc3NhZ2VzOiBJTWVzc2FnZXMgPSBJTlZBTElEX01FU1NBR0VTXHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBGb3JtVmFsaWRhdG9yT3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnM/Lm1ldGhvZCkge1xyXG4gICAgICB0aGlzLl9tZXRob2QgPSBvcHRpb25zLm1ldGhvZFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zPy5tZXNzYWdlcykge1xyXG4gICAgICB0aGlzLl9pbnZhbGlkTWVzc2FnZXMgPSB7Li4udGhpcy5faW52YWxpZE1lc3NhZ2VzLCAuLi5vcHRpb25zLm1lc3NhZ2VzfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlcnJvcnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldCBmaWVsZHMoZmllbGRzOiBhbnkpIHtcclxuICAgIHRoaXMuX2ZpZWxkcyA9IE9iamVjdC5hc3NpZ24oe30sIGZpZWxkcylcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmFtZXNVcGRhdGVkUHJvcGVydGllcyhvbGRNb2RlbDogYW55LCBuZXdNb2RlbDogYW55KTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgbmFtZXNVcGRhdGVkUHJvcGVydGllcyA9IFtdXHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIG5ld01vZGVsKSB7XHJcbiAgICAgIHN3aXRjaCAodHJ1ZSkge1xyXG4gICAgICAgIGNhc2UgQXJyYXkuaXNBcnJheShuZXdNb2RlbFtrZXldKTpcclxuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdNb2RlbFtrZXldKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkTW9kZWxba2V5XSkpIHtcclxuICAgICAgICAgICAgbmFtZXNVcGRhdGVkUHJvcGVydGllcy5wdXNoKGtleSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGlmIChuZXdNb2RlbFtrZXldICE9PSBvbGRNb2RlbFtrZXldKSB7XHJcbiAgICAgICAgICAgIG5hbWVzVXBkYXRlZFByb3BlcnRpZXMucHVzaChrZXkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5hbWVzVXBkYXRlZFByb3BlcnRpZXNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZChcclxuICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uczogVmFsaWRhdGlvbnNUeXBlLFxyXG4gICAgdmFsaWRhdGVFbXB0eVZhbHVlOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBzaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWxpZGF0ZUVtcHR5VmFsdWUgJiYgKHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLlJlcXVpcmVkOlxyXG4gICAgICAgICAgY29uc3QgcmVxdWlyZWRSZXMgPSByZXF1aXJlZFZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gcmVxdWlyZWRSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IHJlcXVpcmVkUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5FbWFpbDpcclxuICAgICAgICAgIGNvbnN0IGVtYWlsUmVzID0gZW1haWxWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IGVtYWlsUmVzLmlzVmFsaWRcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IGVtYWlsUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5QYXR0ZXJuOlxyXG4gICAgICAgICAgY29uc3QgcGF0dGVyblJlcyA9IHBhdHRlcm5WYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHBhdHRlcm5SZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gcGF0dGVyblJlcy5tZXNzYWdlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlc0VudW0uTWluTGVuZ3RoOlxyXG4gICAgICAgICAgY29uc3QgbWluTGVuZ3RoUmVzID0gbWluTGVuZ3RoVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgdmFsdWUsIHZhbGlkYXRpb25zLCBrZXksIHRoaXMuX2ludmFsaWRNZXNzYWdlc1xyXG4gICAgICAgICAgKVxyXG5cclxuICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBtaW5MZW5ndGhSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbWluTGVuZ3RoUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5NYXhMZW5ndGg6XHJcbiAgICAgICAgICBjb25zdCBtYXhMZW5ndGhSZXMgPSBtYXhMZW5ndGhWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IG1heExlbmd0aFJlcy5pc1ZhbGlkXHJcblxyXG4gICAgICAgICAgaWYgKCFzaWxlbnQgJiYgIXRoaXMuX2Vycm9yc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSBtYXhMZW5ndGhSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLk1pblZhbHVlOlxyXG4gICAgICAgICAgY29uc3QgbWluVmFsdWVSZXMgPSBtaW5WYWx1ZVZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gbWluVmFsdWVSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbWluVmFsdWVSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLk1heFZhbHVlOlxyXG4gICAgICAgICAgY29uc3QgbWF4VmFsdWVSZXMgPSBtYXhWYWx1ZVZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gbWF4VmFsdWVSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbWF4VmFsdWVSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLkNhbGxiYWNrOlxyXG4gICAgICAgICAgY29uc3QgY2FsbGJhY2tSZXMgPSBjYWxsYmFja1ZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gY2FsbGJhY2tSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gY2FsbGJhY2tSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0RmllbGRzKGZpZWxkczogSUZpZWxkcywgdmFsaWRhdGlvbnM6IElWYWxpZGF0aW9ucyk6IHZvaWQge1xyXG4gICAgdGhpcy5maWVsZHMgPSBjbG9uZURlZXAoZmllbGRzKVxyXG4gICAgdGhpcy5fdmFsaWRhdGlvbnMgPSB2YWxpZGF0aW9uc1xyXG4gICAgdGhpcy5fbW9kZWxDbG9uZSA9IGNsb25lRGVlcChmaWVsZHMpXHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHRoaXMuX3ZhbGlkYXRpb25zW2tleV0gPSBnZXRTb3J0aW5nVmFsaWRhdGlvbnNIZWxwZXIodmFsaWRhdGlvbnNba2V5XSlcclxuICAgICAgdGhpcy5lcnJvcnNba2V5XSA9IG51bGxcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pc0luaXQgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdE1vZGVsQ2hhbmdlZChmaWVsZHM6IElGaWVsZHMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWVcclxuICAgICAgdGhpcy5fbW9kZWxDbG9uZSA9IGNsb25lRGVlcChmaWVsZHMpXHJcblxyXG4gICAgICB0aGlzLmdldE5hbWVzVXBkYXRlZFByb3BlcnRpZXModGhpcy5fZmllbGRzLCBmaWVsZHMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG51bGxcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX21ldGhvZCA9PT0gVmFsaWRhdGlvbk1ldGhvZHNFbnVtLklucHV0KSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlRmllbGQoZmllbGRzW25hbWVdLCBuYW1lLCB0aGlzLl92YWxpZGF0aW9uc1tuYW1lXSwgdHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSBjbG9uZURlZXAoZmllbGRzKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXRGaWVsZENoYW5nZWQoZmllbGRzOiBJRmllbGRzLCBmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzSW5pdCkge1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZVxyXG5cclxuICAgICAgaWYgKGZpZWxkcy5oYXNPd25Qcm9wZXJ0eShmaWVsZE5hbWUpKSB7XHJcbiAgICAgICAgdGhpcy5fbW9kZWxDbG9uZVtmaWVsZE5hbWVdID0gZmllbGRzW2ZpZWxkTmFtZV1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fZXJyb3JzW2ZpZWxkTmFtZV0gPSBudWxsXHJcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZCh0aGlzLl9tb2RlbENsb25lW2ZpZWxkTmFtZV0sIGZpZWxkTmFtZSwgdGhpcy5fdmFsaWRhdGlvbnNbZmllbGROYW1lXSwgZmFsc2UpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlXHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3ZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JzW2tleV0gPSBudWxsXHJcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZCh0aGlzLl9maWVsZHNba2V5XSwga2V5LCB0aGlzLl92YWxpZGF0aW9uc1trZXldLCB0cnVlKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPINCS0YvRgNC10LfQsNGC0Ywg0LIg0LHRg9C00YPRidC10LxcclxuICBwdWJsaWMgaW5pdE1vZGVsQ2hhbmdlZEZyb21GaWVsZChmaWVsZDogYW55LCBmaWVsZE5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzSW5pdCkge1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZVxyXG4gICAgICB0aGlzLl9tb2RlbENsb25lW2ZpZWxkTmFtZV0gPSBmaWVsZFxyXG5cclxuICAgICAgdGhpcy5nZXROYW1lc1VwZGF0ZWRQcm9wZXJ0aWVzKHRoaXMuX2ZpZWxkcywgdGhpcy5fbW9kZWxDbG9uZSkuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbnVsbFxyXG5cclxuICAgICAgICBpZiAodGhpcy5fbWV0aG9kID09PSBWYWxpZGF0aW9uTWV0aG9kc0VudW0uSW5wdXQpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVGaWVsZCh0aGlzLl9tb2RlbENsb25lW25hbWVdLCBuYW1lLCB0aGlzLl92YWxpZGF0aW9uc1tuYW1lXSwgdHJ1ZSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLl9tb2RlbENsb25lXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPINCS0YvRgNC10LfQsNGC0Ywg0LIg0LHRg9C00YPRidC10LxcclxuICBwdWJsaWMgaXNIaWRkZW5WYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlXHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3ZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZCh0aGlzLl9maWVsZHNba2V5XSwga2V5LCB0aGlzLl92YWxpZGF0aW9uc1trZXldLCB0cnVlLCB0cnVlKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXJ4LWZvcm0tdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9zZXJ2aWNlcy9tcngtZm9ybS12YWxpZGF0b3IvbXJ4LWZvcm0tdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXZGLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsWUFBWSxPQUE4QjtRQVZsQyxZQUFPLEdBQVEsRUFBRSxDQUFBO1FBQ2pCLGlCQUFZLEdBQWlCLEVBQUUsQ0FBQTtRQUMvQixZQUFPLEdBQVEsRUFBRSxDQUFBO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUE7UUFDZixZQUFPLEdBQUcsS0FB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Q0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7aUJBQ2hGO1lBQ0gsQ0FBQyxDQUFDLENBQUE7U0FDSDtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLGFBQWE7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7UUFFcEIsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUE7U0FDL0U7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgSUZpZWxkcywgSU1lc3NhZ2VzLCBJVmFsaWRhdGlvbnMsIFZhbGlkYXRpb25zVHlwZSB9IGZyb20gJy4vbW9kZWxzL3ZhbGlkYXRpb25zLW9wdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBGb3JtVmFsaWRhdG9yT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzL3ZhbGlkYXRpb25zLXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbk1ldGhvZHNFbnVtLCBWYWxpZGF0aW9uVHlwZXNFbnVtIH0gZnJvbSAnLi9tb2RlbHMvdmFsaWRhdGlvbnMtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyByZXF1aXJlZFZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL3JlcXVpcmVkLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBlbWFpbFZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL2VtYWlsLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBwYXR0ZXJuVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvcGF0dGVybi52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgbWF4TGVuZ3RoVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvbWF4LWxlbmd0aC52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgbWluTGVuZ3RoVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvbWluLWxlbmd0aC52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgbWluVmFsdWVWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9taW4tdmFsdWUudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IG1heFZhbHVlVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvbWF4LXZhbHVlLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBjYWxsYmFja1ZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL2NhbGxiYWNrLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBJTlZBTElEX01FU1NBR0VTIH0gZnJvbSAnLi9jb25zdGFudHMvaW52YWxpZC1tZXNzYWdlcyc7XHJcbmltcG9ydCB7IGdldFNvcnRpbmdWYWxpZGF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy9nZXQtc29ydGluZy12YWxpZGF0aW9ucy5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1yeEZvcm1WYWxpZGF0b3Ige1xyXG4gIHByaXZhdGUgX2ZpZWxkczogYW55ID0gW11cclxuICBwcml2YXRlIF92YWxpZGF0aW9uczogSVZhbGlkYXRpb25zID0ge31cclxuICBwcml2YXRlIF9lcnJvcnM6IGFueSA9IHt9XHJcbiAgcHJpdmF0ZSBfaXNWYWxpZCA9IHRydWVcclxuICBwcml2YXRlIF9pc0luaXQgPSBmYWxzZVxyXG4gIHByaXZhdGUgX21vZGVsQ2xvbmU6IElGaWVsZHMgPSB7fVxyXG5cclxuICBwcml2YXRlIF9tZXRob2QgPSAnc3VibWl0J1xyXG4gIHByaXZhdGUgX2ludmFsaWRNZXNzYWdlczogSU1lc3NhZ2VzID0gSU5WQUxJRF9NRVNTQUdFU1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRm9ybVZhbGlkYXRvck9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zPy5tZXRob2QpIHtcclxuICAgICAgdGhpcy5fbWV0aG9kID0gb3B0aW9ucy5tZXRob2RcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucz8ubWVzc2FnZXMpIHtcclxuICAgICAgdGhpcy5faW52YWxpZE1lc3NhZ2VzID0gey4uLnRoaXMuX2ludmFsaWRNZXNzYWdlcywgLi4ub3B0aW9ucy5tZXNzYWdlc31cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZXJyb3JzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Vycm9yc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXQgZmllbGRzKGZpZWxkczogYW55KSB7XHJcbiAgICB0aGlzLl9maWVsZHMgPSBPYmplY3QuYXNzaWduKHt9LCBmaWVsZHMpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE5hbWVzVXBkYXRlZFByb3BlcnRpZXMob2xkTW9kZWw6IGFueSwgbmV3TW9kZWw6IGFueSk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IG5hbWVzVXBkYXRlZFByb3BlcnRpZXMgPSBbXVxyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiBuZXdNb2RlbCkge1xyXG4gICAgICBzd2l0Y2ggKHRydWUpIHtcclxuICAgICAgICBjYXNlIEFycmF5LmlzQXJyYXkobmV3TW9kZWxba2V5XSk6XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobmV3TW9kZWxba2V5XSkgIT09IEpTT04uc3RyaW5naWZ5KG9sZE1vZGVsW2tleV0pKSB7XHJcbiAgICAgICAgICAgIG5hbWVzVXBkYXRlZFByb3BlcnRpZXMucHVzaChrZXkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpZiAobmV3TW9kZWxba2V5XSAhPT0gb2xkTW9kZWxba2V5XSkge1xyXG4gICAgICAgICAgICBuYW1lc1VwZGF0ZWRQcm9wZXJ0aWVzLnB1c2goa2V5KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuYW1lc1VwZGF0ZWRQcm9wZXJ0aWVzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHZhbGlkYXRlRmllbGQoXHJcbiAgICB2YWx1ZTogc3RyaW5nLFxyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgdmFsaWRhdGlvbnM6IFZhbGlkYXRpb25zVHlwZSxcclxuICAgIHZhbGlkYXRlRW1wdHlWYWx1ZTogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgc2lsZW50OiBib29sZWFuID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmICghdmFsaWRhdGVFbXB0eVZhbHVlICYmICh2YWx1ZS5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB2YWxpZGF0aW9ucykge1xyXG4gICAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5SZXF1aXJlZDpcclxuICAgICAgICAgIGNvbnN0IHJlcXVpcmVkUmVzID0gcmVxdWlyZWRWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHJlcXVpcmVkUmVzLmlzVmFsaWRcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSByZXF1aXJlZFJlcy5tZXNzYWdlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5FbWFpbDpcclxuICAgICAgICAgIGNvbnN0IGVtYWlsUmVzID0gZW1haWxWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IGVtYWlsUmVzLmlzVmFsaWRcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IGVtYWlsUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLlBhdHRlcm46XHJcbiAgICAgICAgICBjb25zdCBwYXR0ZXJuUmVzID0gcGF0dGVyblZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gcGF0dGVyblJlcy5pc1ZhbGlkXHJcblxyXG4gICAgICAgICAgaWYgKCFzaWxlbnQgJiYgIXRoaXMuX2Vycm9yc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSBwYXR0ZXJuUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLk1pbkxlbmd0aDpcclxuICAgICAgICAgIGNvbnN0IG1pbkxlbmd0aFJlcyA9IG1pbkxlbmd0aFZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gbWluTGVuZ3RoUmVzLmlzVmFsaWRcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG1pbkxlbmd0aFJlcy5tZXNzYWdlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5NYXhMZW5ndGg6XHJcbiAgICAgICAgICBjb25zdCBtYXhMZW5ndGhSZXMgPSBtYXhMZW5ndGhWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IG1heExlbmd0aFJlcy5pc1ZhbGlkXHJcblxyXG4gICAgICAgICAgaWYgKCFzaWxlbnQgJiYgIXRoaXMuX2Vycm9yc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSBtYXhMZW5ndGhSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICghdGhpcy5faXNWYWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlc0VudW0uTWluVmFsdWU6XHJcbiAgICAgICAgICBjb25zdCBtaW5WYWx1ZVJlcyA9IG1pblZhbHVlVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgdmFsdWUsIHZhbGlkYXRpb25zLCBrZXksIHRoaXMuX2ludmFsaWRNZXNzYWdlc1xyXG4gICAgICAgICAgKVxyXG5cclxuICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBtaW5WYWx1ZVJlcy5pc1ZhbGlkXHJcblxyXG4gICAgICAgICAgaWYgKCFzaWxlbnQgJiYgIXRoaXMuX2Vycm9yc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSBtaW5WYWx1ZVJlcy5tZXNzYWdlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5NYXhWYWx1ZTpcclxuICAgICAgICAgIGNvbnN0IG1heFZhbHVlUmVzID0gbWF4VmFsdWVWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IG1heFZhbHVlUmVzLmlzVmFsaWRcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG1heFZhbHVlUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoIXRoaXMuX2lzVmFsaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLkNhbGxiYWNrOlxyXG4gICAgICAgICAgY29uc3QgY2FsbGJhY2tSZXMgPSBjYWxsYmFja1ZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gY2FsbGJhY2tSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gY2FsbGJhY2tSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICghdGhpcy5faXNWYWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXRGaWVsZHMoZmllbGRzOiBJRmllbGRzLCB2YWxpZGF0aW9uczogSVZhbGlkYXRpb25zKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IGNsb25lRGVlcChmaWVsZHMpXHJcbiAgICB0aGlzLl92YWxpZGF0aW9ucyA9IHZhbGlkYXRpb25zXHJcbiAgICB0aGlzLl9tb2RlbENsb25lID0gY2xvbmVEZWVwKGZpZWxkcylcclxuXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gdmFsaWRhdGlvbnMpIHtcclxuICAgICAgdGhpcy5fdmFsaWRhdGlvbnNba2V5XSA9IGdldFNvcnRpbmdWYWxpZGF0aW9uc0hlbHBlcih2YWxpZGF0aW9uc1trZXldKVxyXG4gICAgICB0aGlzLmVycm9yc1trZXldID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2lzSW5pdCA9IHRydWVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0TW9kZWxDaGFuZ2VkKGZpZWxkczogSUZpZWxkcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzSW5pdCkge1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZVxyXG4gICAgICB0aGlzLl9tb2RlbENsb25lID0gY2xvbmVEZWVwKGZpZWxkcylcclxuXHJcbiAgICAgIHRoaXMuZ2V0TmFtZXNVcGRhdGVkUHJvcGVydGllcyh0aGlzLl9maWVsZHMsIGZpZWxkcykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbnVsbFxyXG5cclxuICAgICAgICBpZiAodGhpcy5fbWV0aG9kID09PSBWYWxpZGF0aW9uTWV0aG9kc0VudW0uSW5wdXQpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVGaWVsZChmaWVsZHNbbmFtZV0sIG5hbWUsIHRoaXMuX3ZhbGlkYXRpb25zW25hbWVdLCB0cnVlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IGNsb25lRGVlcChmaWVsZHMpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdEZpZWxkQ2hhbmdlZChmaWVsZHM6IElGaWVsZHMsIGZpZWxkTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlXHJcblxyXG4gICAgICBpZiAoZmllbGRzLmhhc093blByb3BlcnR5KGZpZWxkTmFtZSkpIHtcclxuICAgICAgICB0aGlzLl9tb2RlbENsb25lW2ZpZWxkTmFtZV0gPSBmaWVsZHNbZmllbGROYW1lXVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9lcnJvcnNbZmllbGROYW1lXSA9IG51bGxcclxuICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKHRoaXMuX21vZGVsQ2xvbmVbZmllbGROYW1lXSwgZmllbGROYW1lLCB0aGlzLl92YWxpZGF0aW9uc1tmaWVsZE5hbWVdLCBmYWxzZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3ZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JzW2tleV0gPSBudWxsXHJcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZCh0aGlzLl9maWVsZHNba2V5XSwga2V5LCB0aGlzLl92YWxpZGF0aW9uc1trZXldLCB0cnVlKVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coMSwgdGhpcy5faXNWYWxpZCk7XHJcbiAgICByZXR1cm4gdGhpcy5faXNWYWxpZFxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETyDQktGL0YDQtdC30LDRgtGMINCyINCx0YPQtNGD0YnQtdC8XHJcbiAgcHVibGljIGluaXRNb2RlbENoYW5nZWRGcm9tRmllbGQoZmllbGQ6IGFueSwgZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWVcclxuICAgICAgdGhpcy5fbW9kZWxDbG9uZVtmaWVsZE5hbWVdID0gZmllbGRcclxuXHJcbiAgICAgIHRoaXMuZ2V0TmFtZXNVcGRhdGVkUHJvcGVydGllcyh0aGlzLl9maWVsZHMsIHRoaXMuX21vZGVsQ2xvbmUpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG51bGxcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX21ldGhvZCA9PT0gVmFsaWRhdGlvbk1ldGhvZHNFbnVtLklucHV0KSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlRmllbGQodGhpcy5fbW9kZWxDbG9uZVtuYW1lXSwgbmFtZSwgdGhpcy5fdmFsaWRhdGlvbnNbbmFtZV0sIHRydWUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5fbW9kZWxDbG9uZVxyXG4gIH1cclxuXHJcbiAgLy8gVE9ETyDQktGL0YDQtdC30LDRgtGMINCyINCx0YPQtNGD0YnQtdC8XHJcbiAgcHVibGljIGlzSGlkZGVuVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZVxyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzLl92YWxpZGF0aW9ucykge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlRmllbGQodGhpcy5fZmllbGRzW2tleV0sIGtleSwgdGhpcy5fdmFsaWRhdGlvbnNba2V5XSwgdHJ1ZSwgdHJ1ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5faXNWYWxpZFxyXG4gIH1cclxufVxyXG4iXX0=
|